Skip to main content

02 - Waterfall Model: Classic Sequential Approach

Detailed analysis of Waterfall model: the 5 phases (requirements, design, implementation, testing, maintenance), variants, advantages and when to avoid it.

What do you think about this article?

At a Glance

Detailed analysis of Waterfall model: the 5 phases (requirements, design, implementation, testing, maintenance), variants, advantages and when to avoid it.

The Waterfall Model: Classic Sequential Approach

The Waterfall model is one of the oldest and most traditional software development methodologies. Characterized by a sequential and linear approach, it divides the project into distinct phases that must be completed before moving to the next one.

🎯 What You'll Learn

  • The 5 phases of the Waterfall model in detail
  • Phase gate reviews and quality control
  • Advantages and disadvantages with real examples
  • Variants: V-Model and Sashimi Model
  • When to use (and when to avoid) Waterfall
  • Common anti-patterns and how to avoid them

History and Origins

The Waterfall model has origins in the 1950s-1960s, inspired by traditional engineering practices (construction, mechanical). The term "Waterfall" was coined in 1970 by Winston W. Royce in his famous paper "Managing the Development of Large Software Systems".

📜 Interesting Historical Fact

Irony: Winston Royce proposed the Waterfall model as an example of a sub-optimal approach that needed feedback loops! Over time, however, it was adopted literally without his recommendations for iteration.

The 5 Phases of Waterfall

The classic model consists of 5 sequential phases. Each phase produces specific deliverables and must be completed before moving to the next:

Complete Waterfall Flow
┌─────────────────────────────────────────────────┐
│ 1. REQUIREMENTS ANALYSIS                        │
├─────────────────────────────────────────────────┤
│ Input:  Business needs, stakeholders            │
│ Output: Requirements Specification Document     │
│         (SRS - Software Requirements Spec)      │
│ Duration: 2-4 weeks (typical)                   │
└─────────────────────────────────────────────────┘
              ↓ (Phase Gate Review)
┌─────────────────────────────────────────────────┐
│ 2. SYSTEM DESIGN                                │
├─────────────────────────────────────────────────┤
│ Input:  SRS Document                            │
│ Output: Design Document (HLD, LLD)              │
│         - High-Level Design (architecture)      │
│         - Low-Level Design (components)         │
│         - Database schema, API specs            │
│ Duration: 3-6 weeks                             │
└─────────────────────────────────────────────────┘
              ↓ (Design Review)
┌─────────────────────────────────────────────────┐
│ 3. IMPLEMENTATION                               │
├─────────────────────────────────────────────────┤
│ Input:  Design Documents                        │
│ Output: Working Code, Unit Tests                │
│ Duration: 60-70% of total time                  │
└─────────────────────────────────────────────────┘
              ↓ (Code Review)
┌─────────────────────────────────────────────────┐
│ 4. TESTING & VERIFICATION                       │
├─────────────────────────────────────────────────┤
│ Input:  Compiled Code                           │
│ Output: Test Reports, Bug Fixes                 │
│ Levels: Unit → Integration → System → UAT       │
│ Duration: 15-25% of total time                  │
└─────────────────────────────────────────────────┘
              ↓ (QA Gate)
┌─────────────────────────────────────────────────┐
│ 5. DEPLOYMENT & MAINTENANCE                     │
├─────────────────────────────────────────────────┤
│ Input:  Tested Software                         │
│ Output: Production System, User Documentation   │
│ Activities: Release, Training, Bug fixing       │
│ Duration: Ongoing (product lifecycle)           │
└─────────────────────────────────────────────────┘

Phase 1: Requirements Analysis

The most critical phase of Waterfall. Here all system requirements are collected and documented before starting design.

📋 Main Activities

  • Stakeholder interviews
  • Business process analysis
  • Feasibility study
  • Project scope definition
  • Competitive analysis
  • Constraint identification (budget, time)

📄 Key Deliverables

  • SRS Document (Software Requirements Specification)
  • Use Case Diagrams
  • Functional Requirements (FR)
  • Non-Functional Requirements (NFR)
  • Domain terminology glossary
  • Stakeholder sign-off

⚠️ Typical Challenges

  • Requirements Freeze: Requirements are "frozen" too early
  • Ambiguity: Unclear documentation leads to different interpretations
  • Scope Creep: Temptations to add requirements in later phases
  • Analysis Paralysis: Too much time spent on analysis

Phase 2: System Design

Transforms requirements into a detailed technical blueprint. Divided into High-Level Design (architecture) and Low-Level Design (implementation details).

Design Document Structure
📐 HIGH-LEVEL DESIGN (HLD)
├─ System architecture (e.g.: 3-tier, microservices)
├─ UML diagrams (Class, Component, Deployment)
├─ Technology choices (languages, frameworks, database)
├─ Integrations and external APIs
└─ Security architecture

🔧 LOW-LEVEL DESIGN (LLD)
├─ Details of each module/component
├─ Algorithms and data structures
├─ Detailed database schema (ERD)
├─ API specifications (REST, GraphQL)
└─ Interface design (mockups, wireframes)

🏛️ Practical Example: E-commerce System

Layer Technologies Components
Frontend Angular, React Product Catalog, Shopping Cart, Checkout
Backend Node.js, Java Spring Order Service, Payment Service, User Service
Database PostgreSQL, Redis Users, Products, Orders, Cache
Infrastructure AWS, Docker Load Balancer, CDN, S3 Storage

Phase 3: Implementation

The actual coding phase. Developers translate design documents into working code following defined standards.

💻 Best Practices

  • Coding Standards: Shared conventions (Lint, formatters)
  • Version Control: Git with branching strategy
  • Code Reviews: Mandatory peer reviews
  • Unit Testing: Minimum coverage (e.g.: 80%)
  • Documentation: Javadoc, README, inline comments

📊 Quality Metrics

  • Code Coverage (Unit tests)
  • Cyclomatic Complexity
  • Code Duplication
  • Technical Debt ratio
  • Build success rate
Example: Coding Standard Document
// ✅ Naming Conventions
class UserService {{ '{' }} {{ '}' }}        // PascalCase for classes
function getUserById() {{ '{' }} {{ '}' }}    // camelCase for functions
const MAX_RETRY = 3;          // UPPER_CASE for constants

// ✅ File Organization
src/
├── components/
├── services/
├── models/
├── utils/
└── tests/

// ✅ Error Handling
try {{ '{' }}
  await fetchUser(id);
{{ '}' }} catch (error) {{ '{' }}
  logger.error('User fetch failed', {{ '{' }} id, error {{ '}' }});
  throw new UserNotFoundError(id);
{{ '}' }}

Phase 4: Testing & Verification

Systematic testing at multiple levels to verify that the software meets requirements. In Waterfall, testing occurs after implementation completion.

Testing Levels
🧪 1. UNIT TESTING
   ├─ Tests individual functions/methods
   ├─ Executed by: Developers
   ├─ Tools: JUnit, Jest, pytest
   └─ Coverage: 80-90%

🔗 2. INTEGRATION TESTING
   ├─ Tests interaction between modules
   ├─ Executed by: QA Team
   ├─ Focus: API, Database, Services
   └─ Approaches: Big Bang, Top-Down, Bottom-Up

🖥️ 3. SYSTEM TESTING
   ├─ Tests complete system end-to-end
   ├─ Executed by: QA Team
   ├─ Types: Functional, Performance, Security
   └─ Environment: Staging (simulates production)

👤 4. USER ACCEPTANCE TESTING (UAT)
   ├─ Customer verification
   ├─ Executed by: End users, Business analysts
   ├─ Criteria: SRS requirements satisfaction
   └─ Output: Sign-off for Go-Live

🎯 Test Plan Document

Essential document that specifies:

  • Test Strategy: General approach (manual, automated, mixed)
  • Test Cases: Specific scenarios to test with expected results
  • Test Data: Dataset for tests (mock, staging data)
  • Entry/Exit Criteria: When to start and when to consider complete
  • Defect Management: Bug tracking and resolution process

Phase 5: Deployment & Maintenance

Software release to production and ongoing support. Includes user training, bug fixing, and updates.

🚀 Deployment Activities

  • Production environment setup
  • Data migration (if necessary)
  • Go-live planning and rollout
  • User training and documentation
  • Post-deployment monitoring
  • Rollback plan (in case of issues)

🔧 Maintenance Types

  • Corrective: Bug fixing
  • Adaptive: Adaptations to new environments
  • Perfective: Performance improvements
  • Preventive: Refactoring, tech debt

Phase Gate Reviews

Phase gates are critical checkpoints between phases. Each phase must be formally approved before proceeding to the next.

Phase Gate Review Process
📋 PHASE COMPLETED
    ↓
🔍 REVIEW MEETING
├─ Participants: Project Manager, Tech Lead, Stakeholder
├─ Agenda: Deliverable presentation, Q&A
└─ Duration: 1-3 hours
    ↓
✅ EVALUATION
├─ Deliverables complete?
├─ Acceptable quality?
├─ Risks identified?
└─ Budget and timeline respected?
    ↓
⚖️ DECISION
├─ ✅ GO: Proceed to next phase
├─ ⚠️ CONDITIONAL GO: Proceed with reservations
└─ ❌ NO-GO: Return and fix

Waterfall Variants

V-Model (Verification & Validation)

Waterfall extension that emphasizes testing. Each development phase has a corresponding testing phase.

V-Model Structure
Requirements ←─────────→ User Acceptance Testing
      ↓                              ↑
System Design ←─────────→ System Testing
      ↓                              ↑
Architecture  ←─────────→ Integration Testing
      ↓                              ↑
Module Design ←─────────→ Unit Testing
      ↓                              ↑
    Implementation (Vertex of V)

Sashimi Model

Variant that allows partial overlap between adjacent phases, like overlapping sashimi slices. More flexible than pure Waterfall.

Waterfall Advantages

✅ Waterfall Pros

Advantage Explanation Ideal Scenario
Simplicity Easy to understand and manage Junior teams, simple projects
Clear Structure Well-defined phases and milestones Management reporting
Documentation Complete and detailed Regulated sectors, handover
Predictability Estimable timeline and costs Fixed budgets, contracts
Quality Gates Rigorous quality control Mission-critical projects

Disadvantages and Limitations

❌ Waterfall Cons

Disadvantage Impact Mitigation
Rigidity Difficult to manage changes Formal Change Request (expensive)
Late Testing Bugs discovered late are expensive Introduce early testing
No Working Software No value until the end Prototypes in early phases
Customer Disconnect Customer sees product only at the end Periodic demos, stakeholder engagement
Risk Concentration Risks emerge late Continuous risk assessment

When to Use Waterfall

✅ Waterfall is Appropriate When:

  • Clear and Stable Requirements: Well-defined projects from the start
  • Mature Technology: Proven tech stack, few technical risks
  • Regulated Industries: Aerospace, medical, finance (compliance)
  • Short Projects: Timeline < 6 months, limited scope
  • Distributed Teams: Little interaction possible, documented handoffs
  • Fixed Budget: Fixed-price contract requires detailed planning
Examples of Successful Waterfall Projects
✈️ AEROSPACE SECTOR
├─ Avionics control software
├─ Fixed requirements and rigorous certifications
└─ Change after deployment = catastrophe

🏥 MEDICAL SECTOR
├─ Medical device software (FDA approval)
├─ Exhaustive documentation mandatory
└─ Requirements → test traceability

🏗️ INFRASTRUCTURE PROJECTS
├─ Legacy database migration
├─ Detailed data migration plan
└─ Complex rollback, planning required

When to Avoid Waterfall

❌ Waterfall is NOT Suitable When:

  • Uncertain Requirements: Innovative projects, market validation needed
  • Dynamic Market: Aggressive competition, critical time-to-market
  • Long Projects: > 12 months, too much change risk
  • Startup/MVP: Need to iterate rapidly
  • New Technologies: High learning curve, technical risks
  • Involved Customer: Stakeholders want to see continuous progress

Common Anti-Patterns

Typical errors in Waterfall application that lead to project failure:

🚫 Anti-Patterns to Avoid

1. Pure Waterfall

Problem: Applying the model too rigidly without feedback loops. Even Royce recommended iterations!

Solution: Introduce intermediate checkpoints and prototyping.

2. Big Design Up Front (BDUF)

Problem: Spending months on very detailed design that then becomes obsolete.

Solution: "Just enough" design, iterative refinement.

3. Documentation Over Communication

Problem: Writing hundreds of pages of documents that nobody reads.

Solution: Essential documentation + direct communication.

4. Late Integration

Problem: Integrating all components only at the end (Integration Hell).

Solution: Continuous Integration even in Waterfall.

5. No Customer Involvement

Problem: Customer absent after requirements, final surprise.

Solution: Periodic demos to key stakeholders.

Waterfall vs Agile: Direct Comparison

Criterion Waterfall Agile
Philosophy Plan-driven Value-driven
Phases Sequential, no overlap Overlapping iterations
Requirements Fixed at the start Emergent, evolving
Testing Separate phase at the end Continuous, every iteration
Deliverables Final Big Bang Frequent increments
Customer Initial and final involvement Continuous collaboration
Changes Formal Change Request Continuous backlog refinement
Team Specialized roles (silos) Cross-functional, self-organizing
Risk Management Upfront planning Continuous mitigation
Success Metric On time, on budget Customer value delivered

Best Practices for Modern Waterfall

How to apply Waterfall effectively in the modern context:

🎯 Practical Recommendations

1. Introduce Prototyping
  • Create UI/UX prototypes in requirements phase
  • Proof of Concept for high technical risks
  • Interactive mockups for customer validation
2. Implement Continuous Integration
  • Setup CI/CD pipeline even in Waterfall
  • Automated builds and test suites
  • Continuous integration testing (not just at the end)
3. Stakeholder Checkpoints
  • Monthly or bi-weekly demos even during implementation
  • Early feedback limits final surprises
  • Build trust and continuous alignment
4. Risk-Driven Development
  • Address highest technical risks first
  • Spike solutions for uncertainties
  • Regularly updated risk register
5. Living Documentation
  • Updated documents (not "write once")
  • Collaborative wikis instead of static Word/PDF
  • Diagrams generated from code (e.g.: PlantUML)

Case Study: Successful Waterfall Project

📘 Real Case: Core Banking System

Context:

  • National bank, migration from COBOL legacy system to Java
  • Clear requirements and rigorous compliance
  • Timeline: 18 months, Budget: €5M

Why Waterfall:

  • Regulated sector (complete audit trail)
  • Fixed requirements (Central Bank specifications)
  • Distributed team (offshore development)
  • Zero tolerance for production errors

Phases Executed:

  • Requirements (3 months): 400+ pages of SRS, committee approved
  • Design (4 months): Microservices architecture, 50+ API specs
  • Implementation (8 months): 6 parallel teams, rigorous code reviews
  • Testing (2 months): 10,000+ test cases, UAT with real users
  • Deployment (1 month): Cutover weekend, tested rollback plan

Outcome:

  • ✅ On-time and on-budget delivery
  • ✅ Zero critical bugs in production
  • ✅ Compliance audit passed 100%
  • ✅ High user satisfaction (effective training)

Lessons Learned:

  • Waterfall can work in appropriate context
  • Communication is critical even with heavy documentation
  • Test automation saved the project (regression suite)

Evolution: From Waterfall to Hybrid Methods

Many modern organizations adopt hybrid approaches that take the best from Waterfall and Agile:

Water-Scrum-Fall

  • Requirements phase (Waterfall)
  • Iterative development (Scrum sprints)
  • Testing & Deployment phase (Waterfall)
  • Common in enterprise with rigid governance

Wagile (Waterfall + Agile)

  • Upfront waterfall planning
  • Agile execution with sprints
  • Traditional reporting to management
  • Gradual transition to pure Agile

Conclusions

The Waterfall model, despite criticism in the Agile era, remains valid and necessary in specific contexts. The key is not "Waterfall vs Agile" but when to use each.

💡 Key Takeaways

  • Waterfall is sequential: 5 distinct phases with phase gates
  • Excellent for projects with stable requirements and regulated sectors
  • Heavy documentation is a feature, not a bug (in certain contexts)
  • Main anti-patterns: excessive rigidity, late testing, no customer feedback
  • Modern Waterfall includes prototyping, CI/CD, and stakeholder engagement
  • V-Model and hybrid approaches mitigate pure Waterfall limitations

📚 Next Article

In the next article, we'll explore Agile Methodology: the 4 values of the Manifesto, the 12 principles, and how the iterative approach revolutionizes software development.

Frequently asked questions

What is the Waterfall model in software development?

The Waterfall model is one of the oldest and most traditional software development methodologies, characterized by a sequential and linear approach.

Why was the term "Waterfall" coined for this methodology?

The term "Waterfall" was coined in 1970 by Winston W. Royce in his famous paper "Managing the Development of Large Software Systems".

What are the five phases of the Waterfall model?

The classic model consists of 5 sequential phases: Requirements Analysis, System Design, Implementation, Testing & Verification, and Deployment & Maintenance.

Why is it recommended to introduce intermediate checkpoints and prototyping in Waterfall application?

This is because applying the model too rigidly without feedback loops can lead to project failure.

Sources and further reading

Commenti

Caricamento commenti...

Sign in to comment

Discuss this article in the community

Join the Telegram group to discuss with other developers, ask questions and share your experiences.

Did you like this article?

Explore other content on the blog or discover my projects