2 LifeCycle
2 LifeCycle
1
Classical Waterfall Model
• Classical waterfall model
divides life cycle into phases:
− feasibility study,
− requirements analysis and
specification,
− design,
− coding and unit testing,
− integration and system testing,
− maintenance.
2
Classical Waterfall Model
Feasibility Study
Req. Analysis
Design
Coding
Testing
Maintenance
3
Relative Effort for Phases
• Phases between
feasibility study and 60
testing 50 Relative Effort
− known as development 40
phases.
30
• Among all life cycle
20
phases
− maintenance phase 10
Maintnce
Design
Req. Sp
consumes maximum 0
Coding
Test
effort.
• Among development
phases,
− testing phase consumes
the maximum effort. 4
Classical Waterfall Model
(CONT.)
5
Classical Waterfall Model
(CONT.)
6
Feasibility Study
• Main aim of feasibility study:determine
whether developing the product
− financially worthwhile
− technically feasible.
• First roughly understand what the
customer wants:
− different data which would be input to the
system,
− processing needed on these data,
− output data to be produced by the system,
− various constraints on the behavior of the
system.
7
Activities during Feasibility
Study
• Work out an overall
understanding of the problem.
• Formulate different solution
strategies.
• Examine alternate solution
strategies in terms of:
∗ resources required,
∗ cost of development, and
∗ development time.
8
Activities during Feasibility
Study
• Perform a cost/benefit analysis:
− to determine which solution is the
best.
− you may determine that none
of the solutions is feasible
due to:
∗ high cost,
∗ resource constraints,
∗ technical reasons.
9
Requirements Analysis and
Specification
• Aim of this phase:
− understand the exact
requirements of the
customer,
− document them properly.
• Consists of two distinct
activities:
− requirements gathering and
analysis
10
Goals of Requirements
Analysis
• Collect all related data from
the customer:
− analyze the collected data to
clearly understand what the
customer wants,
− find out any inconsistencies
and incompleteness in the
requirements,
− resolve all inconsistencies
and incompleteness. 11
Requirements Gathering
14
Requirements Analysis (CONT.)
• Engineers doing
requirements analysis
and specification:
−are designated as
analysts.
15
Design
• Design phase transforms
requirements
specification:
− into a form suitable for
implementation in some
programming language.
16
Design
• In technical terms:
− during design phase,
software architecture is
derived from the SRS
document.
• Two design approaches:
− traditional approach,
− object oriented approach.
17
Traditional Design Approach
18
Structured Analysis
Activity
• Identify all the functions to be
performed.
• Identify data flow among the
functions.
• Decompose each function
recursively into sub-functions.
− Identify data flow among the
subfunctions as well.
19
Structured Analysis (CONT.)
• Object structure
− further refined to obtain the
detailed design.
• OOD has several
advantages:
− lower development effort,
− lower development time,
− better maintainability.
23
Implementation
• Purpose of
implementation phase
(aka coding and unit
testing phase):
− translate software design
into source code.
24
Implementation
M1 M2
M3 M4
28
System Testing
• Corrective maintenance:
− Correct errors which were not discovered
during the product development phases.
• Perfective maintenance:
− Improve implementation of the system
− enhance functionalities of the system.
• Adaptive maintenance:
− Port software to a new environment,
∗ e.g. to a new computer or to a new operating
system.
31
Iterative Waterfall Model
• Classical waterfall model is
idealistic:
− assumes that no defect is
introduced during any
development activity.
− in practice:
∗ defects do get introduced in
almost every phase of the life
cycle.
32
Iterative Waterfall Model
(CONT.)
33
Iterative Waterfall Model
(CONT.)
Feasibility Study
Req. Analysis
Design
Coding
Testing
Maintenance
35
Iterative Waterfall Model
(CONT.)
38
Classical Waterfall Model
(CONT.)
• Metaphor of mathematical
theorem proving:
− A mathematician presents a
proof as a single chain of
deductions,
∗ even though the proof might
have come from a convoluted
set of partial attempts, blind
alleys and backtracks.
39
Prototyping Model
• Before starting actual
development,
− a working prototype of the system
should first be built.
• A prototype is a toy
implementation of a system:
− limited functional capabilities,
− low reliability,
− inefficient performance.
40
Reasons for developing a
prototype
• Illustrate to the customer:
− input data formats, messages,
reports, or interactive dialogs.
• Examine technical issues
associated with product
development:
− Often major design decisions
depend on issues like:
∗ response time of a hardware
controller,
41
∗ efficiency of a sorting algorithm, etc.
Prototyping Model (CONT.)
Build Prototype
Requirements Customer
Quick Design Evaluation of Customer Design
Gathering Prototype satisfied
Refine Implement
Requirements
Test
Maintain
45
Prototyping Model (CONT.)
C
A AB A
B
50
Advantages of Evolutionary
Model
• Users get a chance to experiment with
a partially developed system:
− much before the full working version is
released,
• Helps finding exact user
requirements:
− much before fully working system is
developed.
• Core modules get tested thoroughly:
− reduces chances of errors in final
product.
51
Disadvantages of
Evolutionary Model
• Often, difficult to subdivide
problems into functional
units:
− which can be incrementally
implemented and delivered.
− evolutionary model is useful
for very large problems,
∗ where it is easier to find
modules for incremental
implementation. 52
Evolutionary Model with
Iteration
• Many organizations use a
combination of iterative
and incremental
development:
− a new release may include
new functionality
− existing functionality from
the current release may also
have been modified. 53
Evolutionary Model with
iteration
• Several advantages:
− Training can start on an earlier
release
∗ customer feedback taken into
account
− Markets can be created:
∗ for functionality that has never been
offered.
− Frequent releases allow
developers to fix unanticipated
problems quickly. 54
Spiral Model
• Proposed by Boehm in 1988.
• Each loop of the spiral represents a
phase of the software process:
− the innermost loop might be concerned
with system feasibility,
− the next loop with system requirements
definition,
− the next one with system design, and so
on.
• There are no fixed phases in this
model, the phases shown in the
figure are just examples. 55
Spiral Model (CONT.)
Determine Identify &
Objectives Resolve Risks
Customer
Evaluation of Develop Next
Prototype Level of Product
57
Objective Setting (First
Quadrant)
62
Comparison of Different Life Cycle
Models (CONT.)
64
Summary
• A fundamental necessity
while developing any large
software product:
− adoption of a life cycle
model.
65
Summary
66