- 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)
• 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:
• 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.
• 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
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).
• 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
• 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
• 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