Title: Software Life Cycle Models
1Software Life Cycle Models
Alan M. Davis University Of Colorado
- EEL 6887 Software Engineering Life Cycle Control
-
- Presented by
- MOHAMMED HAROON SHARIFF
- 02/15/06
2References
- Software Life Cycle Models Alan M. Davis,
University of Colorado - A Strategy for Comparing Alternative Software
Development Life Cycle Models Davis, A M, E H
Bersoff, and E R Comer, IEEE Trans. Software Eng. - Alternative Software Life cycle Models , in
Aerospace Eng. Comer E - Software Engineering Principles and Practice
Van Vliet - Capability Maturity Model for Software Mark
C P, Bill C, Mary B C, Charles V W. - Lecture 2 Dr. Workman.
- www.images.google.com
3Overview
- Introduction
- Definition of a Life Cycle Model
- Choices for a Life Cycle Model
- Different Life Cycle Models
- Selecting Life Cycle Models
- Summary
- Conclusion
4Introduction
- In the 1970s the first Software Life Cycle
Model was developed by Winston Royce, it was
called the Waterfall Model . This was used as the
primary life cycle in the industry for over
twenty years. - As time progressed increasing demands, budget
and time constraints led to the invent of newer
life cycles. Many other life cycle models have
been proposed in the last two decades which claim
to be better than the Waterfall model. - The new life cycles have their own way to
develop software more rapidly, or incrementally ,
or in a evolutionary manner, or they precede
full-scale development with some kind of rapid
prototype. - This paper gives an insight into the different
software life cycle models that have been
developed. It gives an approach to evaluate and
contrast these different life cycle models, but
emphasizes that all of them just provide another
view to the basic software development process.
5What is a Life Cycle Model ?
- Definition A software life cycle model is a
view of the activities - that occur during the software development
- To elaborate on the definition a software life
cycle model is a - model that helps us understand the various
activities and characteristics - while developing a software. It is not an actual
method in which one can - develop a software but it is a procedure which
helps us look at the on - going software development . In short
- It illustrates all the important development
phases - It defines the main functions to be
accomplished in each phase - Helps the management keep a track of
development progress - It gives reference model to define the software
development process
6Choices for a Life Cycle Model
- Using different life cycle models is just a
different way of looking at the manner in which
the software can be developed. There can be many
such views in which the same software project can
be looked at i.e.. the software can be modeled
using various life cycles such as the waterfall
model, incremental development, evolutionary
development, prototyping, spiral, etc - Although each life cycle model has its own
views to develop software , the models discussed
in this paper are more complementary than
exclusionary. - Thus it is not wise decision to assign a single
life cycle model to which a software project
should adhere to. -
7Different Life Cycle Models
- The different life cycle models are
- Waterfall Model
- Incremental Development Model
- Evolutionary Development Model
- Requirements Prototyping Model
- Spiral Model
- Concurrent Model
8Waterfall Model
- The waterfall model is one of the first models
developed . It serves as a building block for
most of the later life cycle models. - It has a very simple concept where it views the
entire software development process as a
sequence of phases (figure 1) . - Each phase has a set of goals and activities that
need to be accomplished in that phase . - Development progress can be seen as a flow from
one phase to the next represented by the forward
arrows. The backward arrows represent feedback to
the previous phases. - There is no constraints that activities from the
current phase only should be done in that phase.
- Also a complete cycle of execution of all the
phases might lead either to the complete system
or just a part of it. - The primary advantage of the waterfall model is
that it helps the management to keep track of the
overall project progress.
9Waterfall Model
10Waterfall Model
- To summarize the waterfall model emphasizes and
recommends - the following practices
- Planning of a project before starting to
developing it. - Specifying a systems desired external behavior
before proceeding to its internal architecture. - Documentation at the end of each activity or
goal. - Have a complete design of the system before
moving onto the coding phase. - System should be tested on completion to verify
that it meets the requirements.
11Incremental Development Model
- Building large complex systems leads to a lot of
risks, to reduce these risks only a subset of the
system is built . - Each increment of development results in
capturing an increasing subset of requirements. - One method to implement incremental development
is to maintain a separate requirements document
for each increment of development. - Another way to implement incremental development
is to maintain one document with all requirements
and the increment in which that requirement will
be implemented. - The incremental model can be used in combination
with the waterfall model as it does not specify a
particular way in which each increment should be
completed.
12Incremental Development Model
13Incremental Development and Waterfall models
14Incremental Development Model
- Important benefits of this model are
- As you build the system in small increments the
risk is lowered. - Implementing system functionality in parts
ensures that the requirements planned for next
increment are accurate. - Reduction in time to develop each increment
reduces the possibility of change in user
requirements. - If at any stage a major error is found,
development can be continued just by moving back
to the previous stage. - Development errors made in one increment can be
rectified before beginning the next increment.
15Evolutionary Development Model
- Here we build the system in increments but it is
assumed that the complete requirements are not
know initially. - All requirements are examined and only those
which are completely understood and selected. - An increment of the system is built using only
the above selected complete requirements. - This system is given to the user to deploy and
provide feedback. - The requirements are updated based on the user
feedback and the second increment is developed
and given to the user. - This process is repeated indefinitely to get the
complete system. - The Evolutionary Model can be used in combination
with the waterfall and the incremental models.
16Evolutionary Development Model
17Requirements Prototyping Model
- In this life cycle a prototype of the system is
built to learn more details about the systems
requirements. - A quick prototype is built and handed over to the
user requesting for the prototypes pros and cons. - The developer updates this feedback into the
actual requirements specification document of the
real system. - This process is continued till the complete
system is developed. - It is useful to develop complex systems where the
requirements are difficult to arrive at. - It can be used along with the other life cycle
models, but its use should precede the other
models. - In contrast to evolutionary prototyping here a
prototype is built using the least understood
requirements.
18Requirements Prototyping Model
19Spiral Model
- This is also called a meta-life cycle model as
the development process is iterative. - The first step here is to define the required
goals. - Next all the possible methods to accomplish these
goals are analyzed and the best method is
selected. - The above selected method is deployed.
- After completion of the method , the results are
reviewed to complete the first spiral. - Now the next spiral is started, and this process
goes on till the systems is complete. - The spiral model is compatible with the other
life cycle models.
20Spiral Model
21Spiral Model
- To summarize the Spiral Model recommends the
following practices
- Identify the problem you want to solve before
attempting to solve it. - Find all the possible solutions to the problem.
- Choose the optimal solution to the problem and
use it to solve the problem. - Review results from the above solution.
- Never make an assumption that the system being
built is the exact system the user needs. - Calculate to amount of risk you are going to
tolerate.
22Concurrent Model
- The Concurrent Model also provides a
meta-description of the model like the Spiral
model. - Here multiply software development activities are
done simultaneously and are represented by Harel
statecharts. - When most of the requirements are done, we move
on to give the design phase more time. - During design any changes in requirements are
re-baselined which in turn might or might not
affect the design. - If any component is well defined the detailed
design of that component can be done. Further
even coding, integration and testing also can be
done even if design of other components is not
complete. - Occasionally multiple versions of the same
product can be developed concurrently.
23Selecting Life Cycle Models
- All the above mentioned life cycles are
compatible with each other, - but every project must identify which view is
beneficiary in its unique - situation. A study was done by Linda
AlexanderALE91 after which she - proposed 23 criteria based on the project and its
application. She created - Ideal Profiles of projects compatible with
each life cycle. Project managers - had to create an ideal profile for their project
and select the life cycle that - closely matches it. A few of the criteria are
- Maturity of the application
- Problem and the solutions complexity
- Usefulness of early functionality
- Fuzziness and frequency of changes in user
requirements - Availability of time and money
- Risk tolerance of project
- Importance of meeting deadlines and budget
24Summary
- The waterfall model is the basic model from which
most of the other models were derived. - All the life cycle models are compatible with
each other and can be deployed together in the
same project. - Hence using multiple software development models
during the lifetime of the project can increase
its efficiency. - Project profiles can be created and its matching
ideal profile can be chosen to help decide which
life cycle model is more fruitful.
25Conclusion
- The author emphasizes that each model is not
particularly different, but they provide
different views of the same basic software
development process. - All the software development life cycles serve
as tools to monitor the activities and overall
progress of software development. Each life cycle
has an extent to which it reflects the software
development. On one hand the waterfall model
gives a gross idea of development progress,
whereas the concurrent model gives an actual idea
of development progress. - These models are used as tools by the project
manager and the management to keep track of
development. - Most of the life cycle models help to achieve
CMM level 2. Repeated use of these models will
help to achieve CMM level 3.
26Questions ?