Professional Documents
Culture Documents
Intro To Software Engineering
Intro To Software Engineering
Reference to Chapter 1/2/3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997.
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
Requirement 2%
Specification 4%
Planning 1%
Design 6%
Module Coding 5%
Module Testing 7%
Integration 8%
Maintenance 76%
Maintenance
67%
Object-Oriented Paradigm
An object is a unified software component that incorporates both data and
actions that operate of those data.
10
Object-Oriented Paradigm
Requirement Phase
Specification (Analysis) Phase
Requirement Phase
Object-Oriented Analysis
Phase
Planning Phase
Object-Oriented Design Phase
Object-Oriented
Programming Phase
Integration Phase
Maintenance Phase
Retirement
Planning Phase
Design Phase
Implementation Phase
Integration Phase
Maintenance Phase
Retirement
11
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
14
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
17
Waterfall Model
Requirement
Verify
Specification
Verify
Planning
Verify
Design
Verify
Implementation
Testing
Integration
Development
Testing
Operation Mode
Maintenance
Retirement
Somnuk Keretho/Kasetsart University
18
19
Verify
Verify
Planning
Verify
Design
Verify
Implementation
Testing
Integration
Development
Testing
Operation Mode
Maintenance
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
Development
Operation Mode
Maintenance
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
Progress
through steps
Evaluate alternatives,
identify, resolve risks
Determine
objectives,
alternatives,
constraints
Risk
Analysis
Risk
Analysis
Commitment
Prototype 1 Prototype 2
Review
Partition
Risk
Analysis
Risk
Analysis
Prototype 3
Operational
Prototype
Development Plan
Concept of
Operation
Requirement
Validation
Software
Product
Design
Detailed
Design
Software
Requirements
Code
Unit
Test
Design validation
and verification
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.
25
26
Functional Composition
Logic Programming
Structured Development
Object Orientation
27
Functional Development
A problem is expressed in termed of a set of
mathematical functions.
e.g. Double(x) = Add(x, x).
28
Logic Programming
Consists of a problem description only.
e.g. Factorial(0) = 1.
Factorial(N) = N x Factorial(N -1).
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.
30
Object Orientation
31
Tools for OO
Rambaugh (OMT)
Coad-Yourdon
Booch
UML
32
Languages for OO
C++
Smalltalk
Eiffel
Object C
Object Pascal
Java
33
34