The Waterfall model is one of the earliest and most traditional software development life cycle (SDLC) models. It is a linear and sequential approach to software development, where each phase must be completed before the next phase begins.
Key Characteristics:
- Linear and Sequential: Each phase depends on the deliverables of the previous one and corresponds to a specialization of tasks.
- Documentation-Driven: Detailed documentation is produced at each phase and often serves as the primary means of communication between phases.
- Rigid Structure: Changes are difficult to implement once a phase is completed and approved, making it less flexible compared to iterative models.
Stages of the Waterfall Model:

- Requirement Analysis:
- Collecting comprehensive requirements from stakeholders.
- Documenting requirements in a requirement specification document.
- System Design:
- Converting requirements into system design.
- Creating system architecture and design documents.
- Implementation (or Coding):
- Dividing the system design into small units or modules and coding them.
- Integrating all the modules together after unit testing.
- Integration and Testing:
- Testing the integrated system to ensure it meets the specified requirements.
- Performing different types of testing like system testing, integration testing, and acceptance testing.
- Deployment:
- Deploying the completed product to the production environment.
- Ensuring it is functional in the real-world setting.
- Maintenance:
- Performing ongoing maintenance tasks such as bug fixing, updates, and enhancements.
- Managing changes and new requirements post-deployment.
Advantages of the Waterfall Model:
- Simplicity and Ease of Use: The straightforward, sequential approach is easy to understand and manage.
- Clear Milestones: Each phase has clear objectives and deliverables, making progress easy to track.
- Well-Documented: Comprehensive documentation helps in better understanding and communication of requirements and designs.
- Structured Approach: The model is disciplined and the process is well-defined, which is beneficial for projects with fixed requirements.
Disadvantages of the Waterfall Model:
- Lack of Flexibility: Difficult to accommodate changes once the project is in the later stages.
- Late Testing: Testing phase comes late in the development cycle, increasing the risk of encountering significant issues late in the process.
- Customer Involvement: Limited customer involvement during the development process, which may lead to a product that does not fully meet customer needs.
- Assumes Requirements are Fixed: It assumes that all requirements can be gathered upfront, which is often not the case in real-world projects.
When to Use the Waterfall Model:
- Projects with well-understood and stable requirements.
- Projects where requirements are not expected to change.
- Shorter projects where the simplicity of the Waterfall model can be an advantage.
- Projects that require thorough documentation and where the team is familiar with the domain.
Ajink Gupta Answered question

[…] Q3 a) Describe the waterfall model and evolutionary process model. […]