Software Engineering Principles and Practices / Software Process Models

Waterfall Model

Think of the Waterfall model like a physical staircase: you can only move down to the next step once you’ve finished the one above. There is no "going back" up the stairs once you’ve moved on.

📋 The Sequential Phases

In a classic Waterfall approach, the project moves through these stages in a strict order:

  1. Requirements Analysis: All possible requirements of the system to be developed are captured in this phase and documented in a Requirements Specification document.

  2. System Design: The requirements from the first phase are studied and the system design is prepared. This helps in specifying hardware and system requirements and defining the overall system architecture.

  3. Implementation: With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase.

  4. Integration and Testing: All the units developed in the implementation phase are integrated into a system and tested for any faults or failures.

  5. Deployment of System: Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.

  6. Maintenance: There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released.


✅ When to Use Waterfall?

Despite being considered "old school," Waterfall is still highly effective in specific scenarios:

  • When the requirements are very well documented, clear, and fixed.

  • When the product definition is stable.

  • When the project is short and low risk.

  • When the technology is understood and is not dynamic.

  • When there are no ambiguous requirements.


❌ The Disadvantages (Why Agile was born)

The Waterfall model has several significant drawbacks in the modern, fast-paced world:

  • No Turning Back: High amounts of risk and uncertainty because it is difficult to go back to a previous phase to change something (e.g., if a requirement changes in the middle of coding).

  • No Working Software until late: You don't see a working version of the software until the very end of the cycle.

  • High Risk for Long Projects: If the project takes 2 years, by the time you finish, the customer’s needs might have completely changed.

  • The "Testing Trap": Testing only happens at the end. If a major design flaw is found during testing, it can be catastrophic for the budget and timeline.


📊 Waterfall vs. Modern Reality

Feature

Waterfall Expectation

Real-World Reality

Requirements

Known 100% at the start.

Change constantly.

Feedback

Only at the very end.

Needed continuously.

Risk

Managed by planning.

Managed by iterating.

💡 Waterfall is often compared to Construction Engineering (Building a bridge). You can't change the foundation once the 10th floor is built. Software, however, is usually more like Gardening—it grows and needs constant pruning.