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.
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.
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.