In this article, I will describe the waterfall model and
understand it in a better way myself too.
Waterfall Model is a sequential process model used in SDLC
in which sequence of activities flows from top to bottom in a linear manner
with next activity starting once previous activity is completed. Normally, The
Output of the first activity acts as an input to the subsequent phase in
waterfall model, also changes in the analysis can be traced back to previous phases if any change is identified in later phases of SDLC.
Waterfall model can
also be described as a document driven approach as communication depends on the
quality and quantity of documentation.
This was first of the
models used in Software Engineering provided by Winston W. Royce in an article
published in 1970. Since the Software Industry evolved a lot in the past 40
years, new models and methodologies have also evolved which covers the
shortcoming of Traditional waterfall model, but some or other features of
waterfall Model are used in various other software methodologies. Therefore it
is useful to understand the waterfall model before discussing other models.
Different Phases in Waterfall Model are described in the
section below:
a. Requirement Analysis:
In this phase, the requirements are
understood from the client and analyzed. To Understand requirement , customer
are consulted, the feasibility of the requirements are understood and based on
all the inputs, business requirement specification is developed and is signed
off by client as an agreement between client and supplier on the agreed
functionality.
b. System Design:
Before starting with system
design, all the requirements are freeze in the requirement phase. The
requirement documents acts as an input to this phase and based on this a system
design is prepared in this phase.
c. Architecture Design:
The system design is analysed
and an architecture design dividing requirement into module based on
functionality is developed. The input for this phase is the system requirement
documents and output helps in preparation of low level design for the projects.
d. Low Level Design:
In this phase, low level design at
module level is developed which acts as input to coding phase. The high level design
or Architecture design acts as input to this phase.
e. Coding:
The Low level design is implemented to
code. All the code is merged together and various modules are integrated
together to form a system as defined in System design.
f. Testing:
When Coding is completed, the code is
passed on for testing and various testing types are conducted on the code and
the defects are passed on to development team . Based on the defect impact,
there needs to be changes implemented at code level or can impact the previous
levels. The more the impacted phases, more will be the cost of fix.
g. Operations and Maintenance:
Once testing is completed,
the system goes to Production. Support and maintenance team helps in maintenance
of the product.
|
Waterfall Model |
Where to Use Waterfall Model:
Waterfall model is most
useful to be followed in projects where:
a. Requirement is very well documented and
probability of requirement changes is low.
b. Expertise of resources is available to ensure
each phase is completed with minimum gaps and rework.
c. The time span of the project is short.
d. The Project is stable with minimal requirement changes
Waterfall Model Positives:
a. Easy to understand and manage as the milestones
in project are defined and mostly at a time only one phase is active, so needs
to manage one phase only at times.
b. Processes are well defined.
c. Documentation is done properly for each of the
stages in the life cycle.
d. Developing a culture of analysis before coding
as there is thorough analysis from requirement to design to coding.
Waterfall Model Negatives:
a. The major negative of the model is the risk and
uncertainty associated with the model which can arise due to below reason:
a. Requirement change at a later stage.
b. Since the application is not developed till a
major part of life cycle, Actual feedback on functionality happens late in the
life cycle
c. The cost of fixes is high if uncovered late in
the life cycle
b. Most of the defects are uncovered in system
testing phase which results in a lot of rework and at times changes in the
design, which can impact the timeline and acts as major threat to the success
of the project.
c. At times, the testing time shrinks in the
waterfall model due to delay in earlier stages of model. This can led to
defects escaping the testing phase, which if uncovered in production can result
in higher costs and can impact business too.
Conclusion:
Waterfall model was first of the
model to be used in Software development model and acted as a basic framework
to track and relate various phases of development. With time, various new
models of Software development life cycle evolved, for e.g. V-Model, Iterative model,
agile Model and so on, but somewhere we can see glimpses of waterfall in each
of the models. Hence Understanding the most basic of models is highly useful
before going to understand newer model that evolved over the years in SDLC.