Introduction to Software Engineering

  • Systematic Disciplined Quantifiable approach to development, operation, maintenance and retirement of Software (IEEE Definition)
  • 1968 – NATO Conference in Germany
  • Multi-person construction of multi version software (parnas)
  • A discipline that deals with the building of software systems that are so large that they are built by a team or teams of engineers (Ghezzi, Jhazayeri, Mandrioli)


A discipline that aims at producing fault- free software that is delivered on time within budget which meets the end- user’s requirements. Furthermore, it aims in producing easily modifiable software when the user needs change. (Schach)

Historical Aspects:

• 1967, a NATO group coined the term “Software Engineering”

• 1968 NATO Software Engineering Conference concurred that “Software production should be an engineering-like activity”.

• Using philosophies and paradigms of established engineering disciplines to solve “Software Crisis: that the quality of software was generally unacceptably low and that deadlines and cost limits were not being met”.

Scope of Software Engineering:

Economic Aspects

• Software Engineering v.s. Computer Science

• The computer scientist investigates several ways

to produce software, some good and some bad.

• But the software engineer is interested in only those techniques that make sound economic sense.

For example: A coding technique that can execute very efficiently but with higher maintenance cost may not be a good choice.

Maintenance Aspects

• Software Life Cycle / Software Process

• Requirements Phase

• Specification (Analysis) Phase

• Planning Phase

• Design Phase

• Implementation Phase

• Integration Phase

• Maintenance Phase (highest cost among all these phases)

• Corrective, Perfective, and Adaptive Maintenance

• Retirement

Scope of Software Engineering

Maintenance is so important, a major aspect of software engineering consists of techniques, tools, and practices that lead to a reduction in maintenance cost.

Approximate relative costs of the phases of the software life cycle.


Specification and Design Aspects

• Software professionals are humans, and humans can make error.

• The fact that so many faults are introduced early in the software life cycle, highlights another important aspects of software engineering, namely, techniques that yield better specifications and designs.

• For example, reducing specification and design faults by 10% will reduce the overall number of faults by 6-7%. Scope of Software Engineering

Team Programming Aspects

• Most software being developed and maintained by a team of software engineers

• Scope of software engineering must also include techniques for ensuring that teams are properly organized and managed.

• For example, team programming leads to interface problems among code components and communication problems among team members.

Several techniques have been suggested to help solve the software crisis.

~1975-1985: Structured Paradigm

• Structured Systems Analysis, Composite/Structured Design, Structured Programming, Structured Testing

• Lead to major improvements for software industry.

• But only good for small programs (say, 5,000-50,000 lines of codes)

• Not scale well with today larger programs (say, 500.000-5,000,000 LOC)

• Not so good in software maintenance aspects, (for instance, because of the separation of action-oriented and data-oriented in structured paradigm).

Object-Oriented Paradigm

• An object is a unified software component that incorporates both data and actions that operate of those data.


  • Set of instructions that run on a piece of hardware
  • Programs + documentation + test drivers + analysis and design documents

How can you systematically develop software?

How do you make this process cost-effective?


  • Process by which tradeoffs can be analyzed.
  • Optimization in one dimension might cause some other factor to be suboptimal.

Three Major dimensions

• Project Cycle time

• Cost

• Quality of the software

For a project that is already delayed, employing more number of people further delays the process

Characteristics of Software

Does not wear out

• However it becomes obsolete

Needs to be custom built

• Software ICs – reality?

Maintenance costs are high

Software productivity

• Average to expert programmer 25:1

Bug fixing cost is nonlinear Mythical Man-month (Fred Brooks)

  • Published in 1975, republished in 1995.
  • Marge programming projects suffer management problems different in kind than smaller ones, due to division of labour
  • Critical need is the preservation of conceptual integrity of the product itself
  • The difficulties that are inherent in software development
  • Nurturing great architects and designers