340 likes | 1.25k Views
Scope of Software Engineering. Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University Email: sk@nontri.ku.ac.th URL: http://www.cpe.ku.ac.th/~sk. What is Software Engineering?.
E N D
Scope of Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University Email: sk@nontri.ku.ac.th URL: http://www.cpe.ku.ac.th/~sk
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.
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”.
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 economicsense. 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.
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
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. Maintenance67% Approximate relative costs of the phases of the software life cycle.
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%.
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.
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!
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 Phase • Integration Phase • Maintenance Phase • Retirement Comparison of life cycles of structures paradigm and object-oriented paradigm.