What is Waterfall Model?
Waterfall model is the classic Software Development Life Cycle method practiced in software development process. As the name "waterfall" describes, this development is flowing downwards steadily like waterfall, i.e., proceeds from one phase to another phase. This process is a sequential process or a linear process where in the output of one phase is input of another phase. So previous phase becomes important to be completed before we move to next phase.
Here is the diagram that describes all phases of waterfall model.
Requirement Gathering and Analysis Phase:
This is the first phase where requirements to produce a product are gathered and analyzed. This is the phase which involves customer. All information about the entire process are identified to be designed and delivered here.
The requirements from the earlier phase are documented and converted into technical design. Like what hardware, system software, technology, language are used etc. are specified.
Output from Design phase are used and implemented to achieve the goal. They are split in program units. These program units are developed independently and functionally tested. This is called Unit Testing.
Here all program units which are developed in implement phase are integrated and tested together to see end product has all desired functionalities required.
Once Test phase is successfully completed, it is deployed in customer environments and product is released.
If any changes are required in client environments then they are upgraded and released as patches to fix any issues that come up after deployment.
Waterfall Model Pros:
1. Simple, easy to understand and use.
2. All phases are clearly documented and understood well in the beginning of software development life cycle
3. Since each phase has to be completed before we move to next phase issues will be identified and corrected in initial phase itself.
4. Since requirements are well understood and analyzed in beginning of project customer involvement in later phases is minimized.
5. High Visibility - The output of each stage gives more visibility on where we stand on progress of development.
6. This approach has control over deadline as work is distributed to teams in each stage.
Waterfall Model cons:
1. Not Flexible. Because this is a rigid model, Requirements cannot be changed throughout the cycle.
2. With rapid change in technology day by day we cannot have control to change the hardware and system requirements. Since system and hardware requirements are set up by customers in the beginning.
3. Small change in one phase leads to big change in each phase, as these phases are dependent on one another and eventually more time is consumed
4. If assumptions about implementations are wrong then estimated time for each phases exceeds and fails to meet deadline.
5. Resource idle time might increase as they have to be idle until previous stage is completely done. Therefore it is expensive.
6. Difficult to see the progress within phases.
7. Challenges, major issues, bottlenecks are identified in last stages in integration testing. So no visibility of these in the beginning and high risk.
8. Product/Software deliverables are at the end of cycle.
When to Choose waterfall Approach?
1. Choose this approach for small projects.
2. This method is best suited for products which has stable definition.
3. This is best approach when the requirements are very well known and are not fluctuating.
4. Use this approach when Process has clear objectives and solutions.
5. Use when you want to conserve the resources