1
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
2
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.
3
Scope of Software Engineering
Historical Aspects:– 1967, a NATO group coined the term “Software Engi
neering”
– 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”.
4
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.
5
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
6
Scope of Software Engineering
Requirement 2%Specification 4%Planning 1%Design 6%Module Coding 5%Module Testing 7%Integration 8%Maintenance 76%
Maintenance67%
Approximate relative costs of the phases of the software life cycle.
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.
7
Scope of Software Engineering
Specification and Design Aspects– Software professionals are humans, and humans ca
n 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%.
8
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 includ
e 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.
9
Scope of Software Engineering Several techniques have been suggested to help solve th
e 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 separati
on 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 t
hat operate of those data. --> More Promising!
10
Scope of Software Engineering
Structured Paradigm Requirement Phase Specification (Analysis) Phase
Planning Phase Design Phase Implementation Phase
Integration Phase Maintenance Phase
Retirement
Object-Oriented Paradigm Requirement Phase Object-Oriented Analysis Phase Planning Phase Object-Oriented Design Phase Object-Oriented Programming Pha
se Integration Phase Maintenance Phase
Retirement
Comparison of life cycles of structures paradigm and object-oriented paradigm.