Waterfall Model is the first process model introduced in Software Engineering. Waterfall Model is strictly sequential and uses the top-down approach. Phases of waterfall model do not overlap each other.
In Waterfall Model, each phase should be fully completed before the next phase begin. The output of the each phase serves as the input for the next phase sequentially. Waterfall model is not incremental and iterative. Any changes or revision to the requirements or design during the process is very difficult to handle in the waterfall model.
Sequential phases in Waterfall Model are,
- Requirement Analysis
Business requirements and specifications are gathered during this phase. Once the requirements are gathered, it will be analyzed by a group of individuals to make sure the possibility of incorporating software development with the requirements gathered. Requirements are documented in Business Requirement Documentation.
Requirement Specification documents created in the requirement analysis phase serves as the input for the design phase of the software. High-level design (HLD) and Low-level design (LLD) are designed with the help of the requirements gathered in the first phase of the software development.
- Implementation & Coding
Design documents created in the design phase serves as the input for the implementation/coding phase by developers to build the software product. The main focus of this phase is development. Entire design will be broken into modules and developers will work on individual modules, then they will integrate the separate modules into one system finally.
Working software developed in the implementation & coding phase serves as the input for the Testing phase. Working software is used for testing. The main focus of this phase is to ensure quality and to validate the tests against the customer requirements to make sure the product satisfies the customer needs.
User Acceptance test results created in the testing phase serves as the input for the Deployment phase. Once the product is successfully tested, the software product can be released or deployed to the customers for their usage. If any changes or enhancements required for the software is also conveyed to the team so that the changes will be incorporated in their subsequent releases.
Deployed software, Customer’s review, Live Production environment and Data serves as the input for the Maintenance phase. Once the product is used by customers, the issues faced by them are addressed during the maintenance phase. Handling of bugs those are missed in the testing phase are taken care of during this phase.
All these phases are carried out steadily downwards throughout the process model. At the end of each phase, vigorous reviews take place to ensure there is no ambiguity. Each phase begins only when the previous phase is fully complete. Phases do not overlap each other in the waterfall model.
Read : Agile Model
Advantages of Waterfall Model
- Simple and Easy to understand
- Clearly defined project scope, technology, task and phases
- Effective when project is small
- Extensive planning is required
- Easy to manage because phases are completed one at a time
- Well understood deliverables and tasks
- Well defined review process
- Results are documented
Disadvantages of Waterfall Model
- Revision and changes to requirements/design is nightmare
- Ineffective model for complex projects
- Testing phase is not started until the development is complete
- High amounts of risk and uncertainty
- Not suitable for projects with changing requirements
- Not an iterative and incremental model
- Incredibly rigid and inflexible
So, Waterfall Model is better?
When it comes down to it, neither Waterfall Model nor any other model is strictly better than the others. The Waterfall Model is suitable for static projects where changes and revision of requirements and design will be unlikely to occur. There is no better or worse model. It’s up to you to decide which process model is better suited based on the projects and your needs.
Here are some hand-picked articles that you should read next?
- Software Development Life Cycle
- Software Testing Life Cycle
- Verification Vs Validation
- Quality Assurance Vs Quality Control
In my next post will learn about Agile Model.