Scope of Software Engineering
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
Software engineering is a discipline whose aim is the production of fault-free software, that is delivered on time, within budget, and satisfies the users needs.
Reference to Chapter 1 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997. 2
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
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
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
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.
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
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