Scope of Software Engineering
Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University Email:
[email protected] URL: http://www.cpe.ku.ac.th/~sk
1
What is Software Engineering?
Software engineering is a discipline whose aim is the production of fault-free software, that is delivered on time, within budget, and satisfies the user’s needs.
Reference to Chapter 1 of “Software Engineering with JAVA”, S.R. Schach, McGraw-Hill, 1997. 2
Scope of Software Engineering
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”.
3
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, since maintenance occupies a lot of resources of the whole life cycle.
4
Scope of Software Engineering
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
5
Scope of Software Engineering
Maintenance is so important that a major aspect of software engineering consists of techniques, tools, and practices that lead to a reduction in maintenance cost.
Maintenance 67%
Requirement 2% Specification 4% Planning 1% Design 6% Module Coding 5% Module Testing 7% Integration 8% Maintenance 76%
Approximate relative costs of the phases of the software life cycle.
6
Scope of Software Engineering
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%.
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.
8
Scope of Software Engineering
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 up 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. --> More Promising!
9
Scope of Software Engineering
Structured Paradigm
Object-Oriented Paradigm
Requirement Phase Specification (Analysis) Phase Planning Phase Design Phase Implementation Phase Integration Phase Maintenance Phase Retirement
Requirement Phase Object-Oriented Analysis Phase Planning Phase Object-Oriented Design Phase Object-Oriented Programming Phase Integration Phase Maintenance Phase Retirement
Comparison of life cycles of structures paradigm and object-oriented paradigm. 10