Você está na página 1de 34

Introduction to 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

Somnuk Keretho/Kasetsart University

Outline of this presentation


Scope of Software Engineering Object-Oriented Software Development Software Process Software Life-Cycle Models Object Orientation Software Quality Assessment

Reference to Chapter 1/2/3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997.
2

Somnuk Keretho/Kasetsart University

Scope of 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 users needs.

Somnuk Keretho/Kasetsart University

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.
Somnuk Keretho/Kasetsart University

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.

Somnuk Keretho/Kasetsart University

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

Somnuk Keretho/Kasetsart University

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.

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.

Somnuk Keretho/Kasetsart University

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%.

Somnuk Keretho/Kasetsart University

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.

Somnuk Keretho/Kasetsart University

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 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.

Somnuk Keretho/Kasetsart University

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 Phase Integration Phase Maintenance Phase Retirement

Comparison of life cycles of structures paradigm and object-oriented paradigm.


Somnuk Keretho/Kasetsart University

11

Object-Oriented Software Development


Three key words.
Software Development Object Orientation

Let us look at each in turn

Somnuk Keretho/Kasetsart University

12

Software
Programs Documentation during the development of programs (e.g. specification) Primary aids for running the programs (e.g. user manuals) Secondary aids for running the programs (e.g. key boards overlays)
Software is not just programs!
Somnuk Keretho/Kasetsart University

13

Software Life Cycle


Software is like humans. It has a life cycle. Software in a system is conceptualized first. It becomes obsolescent at the end. The period in between is called the software life cycle.

Somnuk Keretho/Kasetsart University

14

Software Life Cycle Models


Build-and-Fix Model Waterfall Model Rapid prototyping model Incremental Model Spiral Model Concurrent Development Model Formal Methods Model
For the first four items, please refer to Chapter 3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997.
Somnuk Keretho/Kasetsart University

15

Built-and-Fix Model
Unfortunately, many s/w products are developed with built-and-fix model. Without specification or any attempt in design, just build a product, and reworked as many times needed to satisfy the customer. Unsatisfactory for any size of s/w development, we better specify the various phases of software process.
16

Somnuk Keretho/Kasetsart University

Why use a life cycle model?


Life cycle model breaks down the development process into phases or stages. This is because software development is complex. Breaking down the development process makes it easier to manage. Each phase can be performed in various ways.

Somnuk Keretho/Kasetsart University

17

Waterfall Model
Requirement
Verify

Changed Requirements verify


Verify

Specification

Planning

Verify

Design

Verify

Implementation

Testing

Integration Development Maintenance

Testing

Operation Mode Retirement


Somnuk Keretho/Kasetsart University

18

Rapid Prototyping Model


A rapid prototype is a working model that is functionally equivalent to a subset of the product (internal structure is not concerned yet). The sole use of rapid prototyping is to determine what the clients real needs are, construct the rapid prototype as rapidly as possible to speed up the s/w development process.

Somnuk Keretho/Kasetsart University

19

Rapid Prototyping Model


Rapid Prototype Specification
Verify

Changed Requirements verify

Verify

Planning

Verify

Design

Verify

Implementation

Testing

Integration Development Maintenance

Testing

Operation Mode Retirement


Somnuk Keretho/Kasetsart University

20

Incremental Model
The s/w product is designed, implemented, integrated, and tested as a series of incremental builds, where a build consists of code pieces from various modules interacting to provide a specific functional capability. It is sometimes necessary to re-specify, re-design, re-code, or at worst, throw away what has already been completed and start again.
Somnuk Keretho/Kasetsart University

21

Incremental Model
Requirement
Verify

Specification

Verify

Planning

Verify

Architectural Design

Verify

For each build:


Perform detailed design, implementation, and integration. Test. Deliver to client.

Development Maintenance

Operation Mode Retirement


Somnuk Keretho/Kasetsart University

22

Spiral Model
The idea of minimizing risk via the use of prototypes and other means is the concept underlying the spiral model. A simplified spiral model is as a waterfall model with each phase preceded by risk analysis.
Before commencing each phase, an attempt is made to control (resolve) the risks. If it is impossible to resolve all the significant risks at a stage, then the project is immediately terminated.
Somnuk Keretho/Kasetsart University

23

Full Spiral Model [Boehm, IEEE 1998]


Cumulative cost Determine objectives, alternatives, constraints
Risk Analysis Risk Analysis

Progress through steps

Evaluate alternatives, identify, resolve risks


Risk Analysis

Commitment Review Partition


Requirement plan life-cycle plan

Risk Analysis Prototype 1 Prototype 2 Concept of Operation Software Requirements Software Product Design Prototype 3

Operational Prototype

Simulations, models, benchmarks Detailed Design Code Unit Test

Development Plan

Requirement Validation Design validation and verification

Plan next phase


Integration and Test Plan

Implementation

Acceptance Test

Integration Test

Develop, verify next-level product Somnuk Keretho/Kasetsart University

24

Software Development
Software is developed using a life cycle model. Just a life cycle model is insufficient for development. We need:
A broad philosophy A set of tools which support the philosophy. A language which supports the philosophy.

Somnuk Keretho/Kasetsart University

25

Software Development Paradigm


A paradigm provides a general approach to work during each phase of the life cycle model. A paradigm is a broad philosophy. A paradigm is not a specific model.

Somnuk Keretho/Kasetsart University

26

Some Software Development Paradigms


Functional Composition Logic Programming Structured Development Object Orientation

Somnuk Keretho/Kasetsart University

27

Functional Development
A problem is expressed in termed of a set of mathematical functions.
e.g. Double(x) = Add(x, x).

An algorithm is not specified. Language such as Miranda, Gofer, Haskell support this paradigm. Poor execution speed.

Somnuk Keretho/Kasetsart University

28

Logic Programming
Consists of a problem description only.
e.g. Factorial(0) = 1. Factorial(N) = N x Factorial(N -1).

Doesnt describe how to solve the problem. Languages Prolog & Lisp support this paradigm.

Somnuk Keretho/Kasetsart University

29

Structured Development
Also called SASD, SADT & Functional Decomposition. Breaks the system into processes & decomposes them. Languages C, Fortran, Pascal, Cobol, Basic and a lot more support this paradigm. By far the most popular paradigm.

Somnuk Keretho/Kasetsart University

30

Object Orientation
Most recent paradigm. Treats a problem as a collection of objects. Becoming very popular now. More and more languages support this paradigm now.

Somnuk Keretho/Kasetsart University

31

Tools for OO
Rambaugh (OMT) Coad-Yourdon Booch UML

Somnuk Keretho/Kasetsart University

32

Languages for OO
C++ Smalltalk Eiffel Object C Object Pascal Java

Somnuk Keretho/Kasetsart University

33

Software Quality Assessment


CMM by SEI ISO 9000

Somnuk Keretho/Kasetsart University

34

Você também pode gostar