A waterfall process model is considered as a dominant software development model used by software engineers from last three decades. This model divides the entire process of software development into a number of independent stages. Further, these independent stages are carried out in a sequential manner to obtain the final product (software).
In this section, we will be discussing the waterfall model, phases of the waterfall model, situations in which the waterfall model must be used, the advantages and disadvantages of the waterfall process model.
Content: Waterfall Process Model
- What is Waterfall Process Model?
- Phases of Waterfall Model
- When to Use Waterfall Model?
- Advantages & Disadvantages
- Key Takeaways
What is Waterfall Process Model?
The waterfall process model has obtained its name as ‘waterfall model’ as each stage construct a well-defined product or output which is passed onto the next stage as an input just like a stream of water. Once the stream of water, falls down it cannot flow back up. Similarly, once the product of a stage is passed to the next stage it cannot be reverted.
So, we can say that this entire software development process behaves like a series of tiny waterfalls and this is why this model is termed as the ‘waterfall model’.
Waterfall Model divides the entire process of software development into a definite number of stages. These stages are then carried out in a sequence one after another. Every stage produces a well-defined product which is forwarded as an input to the next stage.
Each stage continues processing until the final product of that stage is obtained, before switching to the next stage. Well, the waterfall model does not describe what methodology should be used at each of its stages nor does it describes any notation for the products produced at each stage. Let us move towards the phases/stages of the waterfall model.
Phases of Waterfall Model
The phases/steps/stages of waterfall model vary from author to author & people to people, though the overall approach is the same. The phases of the waterfall model that we will study are as follow:
1. Requirement Analysis
Being the first phase at this stage, the software engineer first understands the requirement of the client. What is actually the problem of the client and what solution does it require for his problem.
The software engineer documents these requirements of the client in SRS (Software Requirement Specification) document which can also be considered as a contract between client and developers. This avoids any dispute between the client and developers in future.
At this stage, the developers schedule the time for modelling, coding, testing & deployment of the software. The developer team also estimate the cost of each phase in this stage. They also plan regarding the hardware requirement and thus the system architecture is planned at this stage.
In this stage, the requirements specified in the above are analyzed and are transformed into logical models that can be implemented using a programming language.
In this stage, the logical models are constructed by developing small programs which are also called units. These small program units are integrated to form the software.
At this stage, the developed software is tested initially by the software engineers and then by a set of customers. Testing is done to verify whether the developed software meets the client requirement or not. At this stage, it is made sure that the client should not face any problem while installing and using the software.
After final testing, the software is released to the customer or to the market. Along with the deployment of the software, the maintenance of the software is also provided to keep the software functional and up to date.
When to Use Waterfall Model?
The Waterfall model must be used when the client is able to specify all his requirements at once plus his requirements must be stable and the developer team should able to understand all the requirements of their client at the starting of software development.
But, this doesn’t happen as it is difficult for anyone to state all the requirement at once. However, a strict waterfall model requires that all the requirement should be specified explicitly as the water once felled from a waterfall cannot go up. Similarly, in a strict waterfall model once the stage is completed we cannot go back.
To resolve the need of the strict waterfall model, a variation in the waterfall model was introduce known as ‘feedback between the adjoining stages’.
The feedback between the adjoining stages allows correcting the problem uncovered in the previous stage by taking feedback from the current stage. Like, in the testing stage if an error is detected of the coding stage it can be resolved by going back to the coding stage.
Advantages and Disadvantages of Waterfall Model
Advantages of the Waterfall Model
- Waterfall model divides the entire process of software development into finite independent stages. This makes the controlling of each stage easier.
- Only one stage is processed at a time and this avoids confusion.
- Waterfall model works best for the smaller projects.
- The requirements are stable and known to the developer at the starting of the project.
- Client intervention is minimum during software development.
- Waterfall model is simple and easy to implement.
Disadvantages of Waterfall Model
- A strict waterfall model doesn’t allow going back once the stage is completed. If any problem is determined at any of the stages which discovers the mistake of the earlier stage, it’s too late to rectify.
- It is difficult to state all the requirements explicitly at the starting which causes natural uncertainty at the beginning of the project.
- The client must have patience as he will be able to see the working model only during the deployment stage and if any problem is detected at that time it is too late to modify due to the rigidity of the waterfall model.
- Waterfall model is difficult to implement in a complex project.
- As the testing stage come very late it becomes difficult and challenging to determine the problems uncovered at early stages.
- Waterfall model is a popular software development model from the last three decades.
- The waterfall model divides the entire process of software development into definite independent stages.
- Each stage is well defined and produces a precise output which is passed on to the next stage as an input.
- The stages of the waterfall model are requirement analysis, planning, modelling, coding, testing & deployment.
- In the requirement analysis, it is expected that the client should specify all the requirements explicitly.
- In the planning stage, the planning is done in the context of scheduling the remaining stages, estimating the cost of each stage, determining the hardware to be used.
- In the modelling stage, based on analysis done above, logical models are designed and programming language is determined to construct these logical models.
- In the coding stage, the logical model is implemented by developing small programs which are integrated to form the entire software.
- In the testing stage, the software developed is tested in the customer-friendly environment to verify that there are no flaws remaining in the software.
- In the deployment stage, the product or the software is handed over to the client.
So this is all about the waterfall model, despite its drawbacks the waterfall model has been used from years. It is good to implement the waterfall model in small projects or where the requirements are specified explicitly and are stable.