Life Cycle Models: Dr. Bharat Singh
Life Cycle Models: Dr. Bharat Singh
1
Contents
Feasibility Study
Coding
Integration and
Testing
Maintenance
4
Relative Effort for Phases
• Phases between feasibility
study and testing 60
− known as development 50
Relative Effort
phases.
40
• Among all life cycle phases 30
− maintenance phase
consumes maximum effort. 20
10
• Among development
phases, 0
Maintnce
Design
Coding
Test
Req. Sp
− testing phase consumes the
maximum effort.
5
Classical Waterfall Model
(CONT.)
6
Classical Waterfall Model
(CONT.)
7
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.
8
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.
9
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.
10
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
− requirements specification. 11
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. 12
Requirements Gathering
15
Requirements Analysis (CONT.)
• Engineers doing
requirements analysis and
specification:
−are designated as analysts.
16
Design
• Design phase transforms
requirements specification:
− into a form suitable for
implementation in some
programming language.
17
Design
• In technical terms:
− during design phase, software
architecture is derived from the
SRS document.
• Two design approaches:
− traditional approach,
− object oriented approach.
18
Traditional Design Approach
19
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.
20
Structured Analysis (CONT.)
22
Object Oriented Design
• Object structure
− further refined to obtain the
detailed design.
• OOD has several advantages:
− lower development effort,
− lower development time,
− better maintainability.
24
Implementation
• Purpose of implementation
phase (aka coding and unit
testing phase):
−translate software design into
source code.
25
Implementation
27
Integration and System
Testing
• Different modules are integrated in
a planned manner:
− modules are almost never integrated
in one shot.
− Normally integration is carried out
through a number of steps.
• During each integration step,
− the partially integrated system is
tested.
28
Integration and System
Testing
M1 M2
M3 M4
29
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.
32
Iterative Waterfall Model
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.
34
Iterative Waterfall Model
(CONT.)
35
Iterative Waterfall Model
(CONT.)
36
Iterative Waterfall Model
(CONT.)
Feasibility Study
Req. Analysis
Design
Coding
Testing
Maintenance
37
Iterative Waterfall Model
(CONT.)
38
Phase containment of
errors
• Reason: rework must be carried out not
only to the design but also to code and
test phases.
• The principle of detecting errors as close to
its point of introduction as possible:
− is known as phase containment of errors.
• Iterative waterfall model is by far the most
widely used model.
− Almost every other model is derived from the
waterfall model.
39
Classical Waterfall Model
(CONT.)
40
Iterative Waterfall Model
(CONT.)
• An improved version of the traditional
Waterfall Model, combining the
structured, sequential approach
• Allows for revisions and feedback at each
phase.
• A refined and reliable final product.
• Allows for continuous improvement,
ensuring that the software meets evolving
business needs while minimizing risks and
costs.
V-Model (Verification and
Validation)
V-Model (Verification and Validation)
43
V-Model (Verification and Validation)
44
V-Model (Verification and Validation)
45
V-Model (Verification and Validation)
49
Prototyping Model (CONT.)
50
Prototyping Model (CONT.)
51
Prototyping Model (CONT.)
Build Prototype
Refine Implement
Requirements
Test
Maintain
53
Prototyping Model (CONT.)
C
A AB A
B
59
Necessary Conditions for
Implementing of Evolutionary
Model
• Customer needs are clear and been explained in
deep to the developer team.
• There might be small changes required in separate
parts but not a major change.
• As it requires time, so there must be some time
left for the market constraints.
• Risk is high and continuous targets to achieve and
report to customer repeatedly.
• It is used when working on a technology is new
and requires time to learn.
60
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.
61
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.
62
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.
63
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.
64
RAPID APPLICATION DEVELOPMENT
(RAD)
RAPID APPLICATION
DEVELOPMENT (RAD)
66
RAPID APPLICATION
DEVELOPMENT (RAD)
67
RAPID APPLICATION
DEVELOPMENT (RAD)
68
RAPID APPLICATION
DEVELOPMENT (RAD)
RAPID APPLICATION
DEVELOPMENT (RAD)
71
RAPID APPLICATION
DEVELOPMENT (RAD)
72
RAPID APPLICATION
DEVELOPMENT (RAD)
73
RAPID APPLICATION
DEVELOPMENT (RAD)
• Development takes place in a series of short cycles or iterations.
• At any time, the development team focuses on the present iteration
only, and therefore plans are made for one increment at a time.
• The time planned for each iteration is called a time box.
• Each iteration is planned to enhance the implemented functionality of
the application by only a small amount.
• During each time box, a quick-and-dirty prototype-style software for
some functionality is developed.
• The customer evaluates the prototype and gives feedback on the
specific improvements that may be necessary. The prototype is refined
based on the customer feedback.
• The development team almost always includes a
customer representative to clarify the
requirements. 74
RAPID APPLICATION
DEVELOPMENT (RAD)
• Application characteristics that render RAD
unsuitable
− Generic products (wide distribution)
− Requirement of optimal performance and/or
reliability
− Lack of similar products
− Monolithic entity- uses one code base to perform
multiple business functions.
• Though RAD is expected to lead to faster software
development compared to the traditional models (such as
the prototyping model), the quality and reliability would be
inferior. 75
Spiral Model
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.
77
Spiral Model (CONT.)
78
Spiral Model (CONT.)
Customer
Evaluation of Develop Next
Prototype Level of Product
79
Spiral Model (CONT.)
80
Objective Setting (First
Quadrant)
82
Spiral Model (CONT.)
85
Comparison of Different Life Cycle
Models (CONT.)
87
Agile Model
• Businesses now operate in a global, rapidly
changing environment.
• Plan-driven software development processes
are not geared to rapid software
development.
− As the requirements change or as requirements
problems are discovered, the system design or
implementation has to be reworked and retested.
• Therefore, for business systems in particular,
development processes that focus on rapid
software development and delivery are
essential. 88
Agile Model
• Rapid software development became known as
agile development or agile methods.
• So, the main aim of the Agile model is to
facilitate quick project completion.
• These agile methods are designed to produce
useful software quickly.
• Agility is achieved by fitting the process to the
project and removing activities that may not be
essential for a specific project.
89
Agile Model
• All of the agile methods that have been proposed
share a number of common characteristics:
− The processes of specification, design and
implementation are interleaved. The user requirements
document is an outline definition of the most important
characteristics of the system.
− The system is developed in a series of increments. End-users and
other system stakeholders are involved in specifying and evaluating
each increment.
− Extensive tool support is used to support the
development process. Tools that may be used include
automated testing tools, tools to support configuration
management, and system integration and tools to
automate user interface production. 90
Agile Model
• particularly successful for two kinds of system
development.
− 1. Product development where a software company is developing a
small or medium-sized product for sale. Virtually all software
products and apps are now developed using an agile approach.
− 2. Custom system development within an organization, where there
is a clear commitment from the customer to become involved in the
development process and where there are few external
stakeholders and regulations that affect the software.
91
Agile Model
92
Plan-driven and agile
development
• Plan-driven development
− A plan-driven approach to software engineering is based around
separate development stages with the outputs to be produced
at each of these stages planned in advance.
− Not necessarily waterfall model – plan-driven, incremental
development is possible
− Iteration occurs within activities.
• Agile development
− Specification, design, implementation and testing are inter-
leaved and the outputs from the development process are
decided through a process of negotiation during the software
development process.
93
Plan-driven and agile
specification
94
Agile Development Techniques
• Crystal
• ATERN (DSDM) Dynamic Systems Development technique
• Extreme Programming (XP)
• Pair programming
• Rapid Application Development (RAD)
• Scrum
• Lean project Development
− Kanban
95
Agile Development Techniques
• Extreme Programming (XP). The name was
coined by Kent Beck (Beck 1998)
− the approach was developed by pushing
recognized good practice, such as iterative
development, to “extreme” levels.
− In XP, requirements are expressed as scenarios
(called user stories), which are implemented
directly as a series of tasks.
96
Extreme programming
98
The extreme programming
release cycle
99
Testing in XP
103
Test automation
104
XP testing difficulties
106
Pair programming
107
Advantages of pair
programming
111
The Sprint cycle
113
Teamwork in Scrum
• Key roles and responsibilities
• The team members assume three basic
roles:
− product owner,
− scrum master,
− team member.
114
Teamwork in Scrum
• Key roles and responsibilities
• product owner
• The product owner is responsible for communicating the
customer’s perspective of the software to the
development team
• The product owner in consultation with the team
members defines the features of the software to be
developed in the next sprint, decides on the release
dates, and also may reprioritize the required features
that are yet to be developed if necessary
115
Teamwork in Scrum
• Key roles and responsibilities
• Team member.
− A scrum team usually consists of cross-
functional team members with expertise in
areas such as quality assurance,
programming, user interface design, and
testing.
116
Teamwork in Scrum
• The ‘Scrum master’ is a facilitator who arranges daily
meetings, tracks the backlog of work to be done,
records decisions, measures progress against the
backlog and communicates with customers and
management outside of the team.
• The whole team attends short daily meetings where all
team members share information, describe their
progress since the last meeting, problems that have
arisen and what is planned for the following day.
− This means that everyone on the team knows what is going on
and, if problems arise, can re-plan short-term work to cope with
them.
117
Scrum
• Three main artifacts form an important
part of the scrum methodology.
• These are:
− product backlog,
− sprint backlog,
− sprint burndown chart.
118
Scrum Artifacts
• Product Backlog
− document that is periodically updated and reprioritized.
− contains a prioritized listing of all the features that are yet to be
developed.
− written in the form of user stories.
− new features may get added to the product backlog and some
features may even get deleted.
• Sprint Backlog
− The team identifies one or more features (user stories) from the
product backlog
− From sprint backlog lists, the tasks that are identified and
committed by the team to develop and complete during the
ensuing sprint.
119
Scrum
• Sprint Burndown Chart
− The sprint burndown chart is used as a tool
to visualize the progress made and the work
remaining to be undertaken on a daily basis.
− daily stand-up meeting
120
Scrum benefits
123
Lean Principle
• The central theme of Lean is to achieve overall process
efficiency through elimination of various things that
cause waste of work and introduce delays.
• Lean development can be summarized by seven
principles, very close in concept to lean manufacturing
principles:
− Eliminate waste
− Amplify learning
− Decide as late as possible
− Deliver as fast as possible
− Empower the team
− Build in integrity
− Optimize the whole 124
Lean Principle
• Eliminate waste-
− Project managers have regular meetings to discover and reduce waste. It could be in the
form of redundant code, unclear requirements, or insufficient testing. Degrade code quality,
increase development time and effort.
• Amplify learning-
− extensive code review and cross-team meetings.
127
Kanban
128
Scaling agile methods
• Agile methods have proved to be successful for
small and medium sized projects that can be
developed by a small co-located team.
• It is sometimes argued that the success of these
methods comes because of improved
communications which is possible when
everyone is working together.
• Scaling up agile methods involves changing
these to cope with larger, longer projects where
there are multiple development teams, perhaps
working in different locations.
129
Large systems
development
130
Large system development
131
Scaling out and scaling up
• ‘Scaling up’ is concerned with using agile
methods for developing large software systems
that cannot be developed by a small team.
• ‘Scaling out’ is concerned with how agile
methods can be introduced across a large
organization with many years of software
development experience.
• When scaling agile methods it is essential to
maintain agile fundamentals
− Flexible planning, frequent system releases,
continuous integration, test-driven development and
132
good team communications.
Scaling up to large
systems
133
Scaling out to large
companies
• Project managers who do not have experience of agile methods
may be reluctant to accept the risk of a new approach.
• Large organizations often have quality procedures and
standards that all projects are expected to follow and, because
of their bureaucratic nature, these are likely to be incompatible
with agile methods.
• Agile methods seem to work best when team members have a
relatively high skill level. However, within large organizations,
there are likely to be a wide range of skills and abilities.
• There may be cultural resistance to agile methods, especially in
those organizations that have a long history of using
conventional systems engineering processes.
134