Introduction — The Software Crisis
In 1968, NATO convened a conference in Garmisch, Germany to address a growing problem: software projects were failing at alarming rates. Budgets exploded, deadlines slipped by years, and delivered systems routinely didn't work as intended. The attendees gave this phenomenon a name — the "software crisis".
The problem wasn't bad programmers. The problem was that software had grown from small utility programs into massive systems — air traffic control, banking networks, military command systems — without any corresponding evolution in how those systems were planned, built, and delivered. Hardware engineers had blueprints, manufacturing processes, and quality standards. Software engineers had… improvisation.
The response to this crisis was the birth of Software Development Lifecycle (SDLC) models — structured frameworks that defined the stages software should pass through from conception to retirement. Each model represented a different philosophy about how to manage complexity, risk, and change.
Why Understanding These Models Matters Today
You might think: "We're Agile now, why study Waterfall?" Three reasons:
- Context — Agile was a reaction against these models. You can't understand the reaction without understanding what it was reacting to.
- Regulated industries — Healthcare, aerospace, defence, nuclear, and financial systems still mandate structured lifecycle documentation. If you work in these sectors, you'll use variants of these models.
- Hybrid reality — Most real-world teams use a hybrid. Understanding the pure forms lets you recognise the tradeoffs in your own process.
The Waterfall Model
The Waterfall model is the granddaddy of all SDLC models and perhaps the most misunderstood. It was first formally described by Winston Royce in his 1970 paper "Managing the Development of Large Software Systems" — though, ironically, Royce presented it as an example of a flawed process that needed feedback loops.
Despite Royce's warnings, the industry latched onto the sequential diagram and adopted it wholesale. The US Department of Defence codified it in DOD-STD-2167 (1985), making it the mandatory standard for defence contracts for decades.
The Five Stages
flowchart TD
A[Requirements Analysis] --> B[System Design]
B --> C[Implementation / Coding]
C --> D[Verification / Testing]
D --> E[Deployment & Maintenance]
style A fill:#132440,color:#fff
style B fill:#16476A,color:#fff
style C fill:#3B9797,color:#fff
style D fill:#16476A,color:#fff
style E fill:#132440,color:#fff
| Phase | Activities | Output |
|---|---|---|
| Requirements | Gather all functional and non-functional requirements; stakeholder interviews; create Requirements Specification document | SRS (Software Requirements Specification) |
| Design | Translate requirements into architecture; database design; interface specifications; module decomposition | Design Document (HLD + LLD) |
| Implementation | Write code according to design specs; unit testing at module level | Source code, unit test results |
| Verification | Integration testing, system testing, acceptance testing against requirements | Test reports, defect logs |
| Maintenance | Deploy to production; fix bugs; apply patches; handle change requests | Production system, maintenance logs |
Strengths and Weaknesses
Strengths:
- Simplicity — Easy to understand and manage. Each phase has clear entry/exit criteria.
- Documentation — Produces comprehensive documentation at every stage, critical for regulated industries.
- Milestone clarity — Progress is easy to measure: "We're in Phase 3" tells everyone exactly where the project stands.
- Works for stable requirements — When requirements truly don't change (missile firmware, regulatory compliance systems), sequential works fine.
Weaknesses:
- No feedback until late — Users don't see working software until after the Verification phase. By then, fixing requirements errors is catastrophically expensive.
- Assumes perfect knowledge — The model assumes you can fully specify requirements upfront. For most software, this is fiction.
- Late testing — Defects found during Verification may require redesign, creating costly rework loops the model doesn't account for.
- Change resistance — Any requirement change after Phase 1 triggers cascading updates through Design, Implementation, and Testing.
When Waterfall Still Makes Sense
- Defence contracts — Fixed requirements from government RFPs; extensive documentation required for audits
- Embedded systems with hardware dependencies — When the software interfaces with physical hardware that cannot be changed after manufacturing
- Regulatory compliance projects — SOX compliance, HIPAA implementations where requirements are defined by law
- Migration/replacement projects — Replacing System A with System B where all requirements are inherited from the existing system
The FBI Virtual Case File Disaster (2000–2005)
The FBI's Virtual Case File (VCF) project is a textbook example of Waterfall failure in a domain with evolving requirements. After 9/11, requirements for the case management system changed dramatically — but the Waterfall process couldn't accommodate those changes. The project spent $170 million over five years before being scrapped entirely. The replacement system (Sentinel) eventually succeeded using an Agile approach.
Lesson: Waterfall assumed stable requirements. The post-9/11 world changed requirements faster than the sequential process could absorb them. The model was wrong for the context — not bad in absolute terms, but catastrophically mismatched to a volatile environment.
The V-Model (Verification & Validation)
The V-Model emerged in the late 1980s as an extension of Waterfall that addressed one of its critical flaws: late testing. Instead of treating testing as a single phase after implementation, the V-Model maps every development phase to a corresponding testing phase, creating a "V" shape where the left side represents development and the right side represents validation.
Verification = "Are we building the product right?" (Does the code match the design?)
Validation = "Are we building the right product?" (Does the product meet user needs?)
The V Shape — Development Mirrors Testing
The key insight of the V-Model is that test planning begins at the same time as the corresponding development activity. When you write requirements, you simultaneously write acceptance test criteria. When you design architecture, you plan system tests. This eliminates the "Oh no, how do we test this?" surprise at the end.
flowchart LR
subgraph Development ["Development (Left Side)"]
direction TB
R[Requirements Analysis] --> AD[Architecture Design]
AD --> DD[Detailed Design]
DD --> C[Coding]
end
subgraph Testing ["Testing (Right Side)"]
direction TB
UT[Unit Testing] --> IT[Integration Testing]
IT --> ST[System Testing]
ST --> AT[Acceptance Testing]
end
R -.->|"Validates"| AT
AD -.->|"Validates"| ST
DD -.->|"Validates"| IT
C -.->|"Validates"| UT
| Development Phase | Corresponding Test Phase | What's Validated |
|---|---|---|
| Requirements Analysis | Acceptance Testing | Does the final system meet business needs? |
| Architecture Design | System Testing | Does the full system work as designed? |
| Detailed Design | Integration Testing | Do modules interact correctly? |
| Coding | Unit Testing | Does each unit function as specified? |
Strengths:
- Early test planning — Test cases are written alongside development, catching ambiguities early
- Traceability — Every requirement links to a test. Nothing is untested.
- Higher quality — Defects caught at the right abstraction level (integration bugs in integration testing, not acceptance testing)
Weaknesses:
- Still sequential — You can't go back and change requirements without cascading through both sides of the V
- Rigid — Like Waterfall, it assumes stable requirements
- No working software until coding is complete — Stakeholders still wait until the right side of the V to see anything
The V-Model dominates in industries like automotive (ISO 26262), medical devices (IEC 62304), and avionics (DO-178C) where traceability between requirements and test evidence is legally mandated.
The Sashimi Model (Overlapping Waterfall)
Named after the Japanese presentation of sliced fish where each piece slightly overlaps the next, the Sashimi Model (also called the "Waterfall with Overlapping Phases" model) was described by Peter DeGrace in 1990. It acknowledges that in practice, phases don't have clean boundaries — design starts before requirements are fully finalised, coding begins before design is complete, and testing starts before all code is written.
Think of it as pragmatic Waterfall. Instead of strict phase gates, phases overlap by 10-30%, allowing:
- Early feedback — Designers can flag requirement ambiguities while requirements are still being finalised
- Parallelism — Teams aren't idle waiting for the previous phase to complete
- Smoother knowledge transfer — The handoff between phases is gradual, not abrupt
When it's useful:
- Teams in regulated industries who want some flexibility without fully abandoning sequential governance
- Projects with mostly-stable requirements but a few areas of uncertainty
- Organisations transitioning from strict Waterfall toward more iterative approaches
Risks:
- Overlap boundaries become ambiguous — when does "requirements" end and "design" begin?
- Milestone tracking becomes harder since phases don't have clean start/end dates
- Can degenerate into uncontrolled scope creep if overlap isn't managed
The Incremental Model
The Incremental Model delivers the system in a series of increments, each of which adds new functionality to the previous delivery. Think of it as building a house room by room — each room is fully complete and usable when delivered, and you keep adding rooms until the house is finished.
The key characteristic is that each increment is a fully functional subset of the final system. Users can start using the system after the first increment, even though it doesn't have all features yet.
Example: E-Commerce Platform Built Incrementally
| Increment | Features Delivered | User Can Now… | Timeline |
|---|---|---|---|
| Increment 1 | Product catalog, search, category browsing | Browse and search products | Month 1-3 |
| Increment 2 | Shopping cart, user accounts, wishlists | Create accounts, save items | Month 4-5 |
| Increment 3 | Payment processing, order management, email notifications | Complete purchases | Month 6-8 |
| Increment 4 | Reviews, ratings, recommendation engine | Write reviews, get personalised suggestions | Month 9-10 |
Strengths:
- Early value delivery — Users get working software from Increment 1, not after 10 months
- Reduced risk — Each increment is smaller and therefore easier to estimate, develop, and test
- Prioritisation — Highest-value features are delivered first; lower-priority features can be cut if budget runs out
- Feedback incorporation — User feedback from Increment 1 can influence Increment 3's design
Weaknesses:
- Architecture must support extension — The initial architecture must accommodate future increments without major refactoring
- Integration complexity — Each increment must integrate cleanly with previous ones
- Total cost may be higher — The overhead of multiple deliveries (testing, deployment, documentation updates) adds up
The Iterative Model
The Iterative Model builds the entire system in rough form first, then refines it through successive iterations. Each iteration passes through all development phases (requirements, design, code, test) but produces a progressively more complete and polished version of the whole system.
The crucial difference from incremental: in the iterative model, you have a complete but rough version of the whole system early on. In the incremental model, you have a polished but partial version early on.
The Mona Lisa Analogy
This is the most intuitive way to understand the distinction:
Iterative = Sketch the entire painting lightly → add shading everywhere → add colour everywhere → refine details everywhere. At every stage you can see the whole painting, but it gets progressively better.
Incremental = Paint the eyes perfectly → paint the nose perfectly → paint the mouth perfectly → paint the background perfectly. Each piece is done to final quality, but you only see the whole picture at the end.
| Aspect | Iterative | Incremental |
|---|---|---|
| What each cycle produces | Refined version of the whole system | New feature added to the system |
| Early deliveries | Complete but rough | Polished but partial |
| Risk profile | Technical risk resolved early (architecture validated) | Business risk resolved early (highest-value features first) |
| Best for | Unclear requirements, R&D, prototyping | Well-understood features, known priority order |
| Analogy | Sculpting from a block of marble | Building with LEGO bricks |
Strengths of Iterative:
- Handles uncertainty — Perfect when you don't fully understand the requirements upfront
- Architecture validation — Technical risks are surfaced early because you build the whole skeleton first
- User feedback on the whole — Users can react to the complete system concept, not just isolated features
Weaknesses of Iterative:
- Requires disciplined scope management — Without clear iteration goals, refinement can go on forever
- Early versions may disappoint users — A rough prototype can undermine confidence if stakeholders expect polished output
- Architecture changes between iterations are costly — If the skeleton was wrong, rebuilding it affects everything
The Spiral Model
Proposed by Barry Boehm in 1986, the Spiral Model is fundamentally risk-driven. Unlike other models that are driven by phases or features, the Spiral Model's core question at every loop is: "What is the biggest risk right now, and how do we mitigate it?"
The model is represented as a spiral starting from the centre and working outward. Each loop through the spiral represents one iteration of the project, and each loop passes through four quadrants:
The Four Quadrants
flowchart TD
A["1. Determine Objectives\n(Requirements, constraints,\nalternatives)"] --> B["2. Identify & Resolve Risks\n(Risk analysis, prototyping,\nsimulation)"]
B --> C["3. Develop & Test\n(Design, code, test,\nintegrate)"]
C --> D["4. Plan Next Iteration\n(Review, commitment,\npartitioning)"]
D --> A
style A fill:#132440,color:#fff
style B fill:#BF092F,color:#fff
style C fill:#3B9797,color:#fff
style D fill:#16476A,color:#fff
| Quadrant | Purpose | Activities |
|---|---|---|
| 1. Determine Objectives | Define what this iteration should achieve | Gather requirements for this loop; identify constraints; generate alternatives |
| 2. Identify & Resolve Risks | Find and mitigate the biggest risks | Risk analysis; build prototypes to test unknowns; conduct simulations; create benchmarks |
| 3. Develop & Test | Build and validate this iteration's increment | Detailed design, coding, integration, testing based on the model chosen (could be Waterfall, iterative, etc. within this quadrant) |
| 4. Plan Next Iteration | Decide what comes next | Review progress; get stakeholder sign-off; plan scope for next loop; decide if project should continue |
Key characteristics:
- Each loop increases in scope and detail — Loop 1 might be a feasibility study, Loop 2 a prototype, Loop 3 an MVP, Loop 4 the production system
- Risk analysis is mandatory every loop — If risk analysis reveals a "show-stopper", the project can be cancelled early with minimal loss
- Meta-model quality — Quadrant 3 can use any other model for its development. You might use Waterfall within one loop and iterative within another
Strengths:
- Excellent risk management — Risks are identified and mitigated before they become expensive problems
- Flexible — Can incorporate elements of any other model within its loops
- Kill-switch built in — At the end of each loop, stakeholders can decide to stop if risk/reward isn't favourable
- Progressive commitment — Investment increases only as confidence increases
Weaknesses:
- Complex to manage — Requires experienced project managers who understand risk modelling
- Expensive — Risk analysis, prototyping, and formal reviews add overhead
- Not suitable for small projects — The overhead isn't justified for a 3-person, 3-month project
- Risk assessment requires expertise — If risks are misidentified, the entire model breaks down
NASA's Space Shuttle Software — Spiral in Action
NASA's Space Shuttle onboard software (approximately 420,000 lines of code) used a Spiral-like approach for its development lifecycle. Each mission cycle represented a "loop" — new mission requirements were gathered, risks analysed (with particular attention to safety-critical scenarios), software developed and exhaustively tested, and the next mission planned. The result was one of the most reliable software systems ever built: across 135 missions, the last 3 software versions contained just one error each. The extensive risk analysis and testing in each loop justified the high cost ($35M/year for 260 staff) because a single software failure meant loss of crew.
Lesson: The Spiral Model's overhead is justified when the cost of failure is catastrophic. For life-critical systems, rigorous risk analysis every iteration is an investment, not a cost.
The Unified Process (RUP)
The Rational Unified Process (RUP), developed by Rational Software (later acquired by IBM) in the late 1990s, attempted to combine the best of all previous models into a comprehensive, configurable framework. It is both iterative and incremental, organised into four sequential phases with multiple iterations within each.
The Four Phases
| Phase | Goal | Key Milestone | Typical Duration |
|---|---|---|---|
| Inception | Define scope, business case, major risks, rough architecture | Lifecycle Objectives Milestone | ~10% of effort |
| Elaboration | Validate architecture, mitigate major risks, detail critical use cases | Lifecycle Architecture Milestone | ~30% of effort |
| Construction | Build the full system incrementally; most coding happens here | Initial Operational Capability | ~50% of effort |
| Transition | Deploy to users; training; bug fixes; performance tuning | Product Release | ~10% of effort |
Key characteristics:
- Iterative within each phase — Elaboration might have 2-3 iterations; Construction might have 4-6
- Architecture-centric — The architecture is validated in Elaboration before Construction begins at scale
- Use-case driven — Requirements are captured as use cases; development is prioritised by critical use cases
- Risk-focused — Like Spiral, highest risks are tackled earliest (in Inception and Elaboration)
Strengths:
- Combines iterative benefits with structured phase gates
- Architecture is proven before major investment in Construction
- Well-documented with extensive tooling support (IBM Rational tools)
Weaknesses:
- Heavyweight — extensive documentation and ceremony
- Expensive tooling and training costs
- Often over-applied (using the full RUP for small projects is like using a crane to hang a picture)
Comprehensive Model Comparison
The following table compares all seven models across the dimensions that matter most when choosing an approach:
| Dimension | Waterfall | V-Model | Sashimi | Incremental | Iterative | Spiral | RUP |
|---|---|---|---|---|---|---|---|
| Flexibility | Very Low | Low | Low-Medium | Medium | High | High | Medium-High |
| Risk Handling | Poor | Poor | Poor | Moderate | Good | Excellent | Good |
| Documentation | Extensive | Extensive | Moderate | Moderate | Light | Extensive | Extensive |
| Testing Timing | End | Parallel planning | Overlapping | Per increment | Per iteration | Per loop | Per iteration |
| Team Size | Any | Medium-Large | Medium | Any | Small-Medium | Large | Large |
| Feedback Speed | Very Slow | Slow | Slow | Moderate | Fast | Moderate | Moderate |
| Best For | Fixed requirements, regulated | Safety-critical, medical, automotive | Mostly-stable with minor uncertainty | Feature-driven delivery, known scope | Unclear requirements, R&D, prototyping | High-risk, large-budget systems | Enterprise systems, complex domains |
| Working software | At the end | At the end | At the end | After each increment | After each iteration | After each loop | After each iteration |
| Change cost | Very High | High | High | Medium | Low-Medium | Low | Medium |
How to Choose a Model — Decision Framework
Choosing an SDLC model isn't about fashion or preference — it's about matching the model's characteristics to your project's constraints. Here's a decision framework:
flowchart TD
A{"Are requirements\nwell-understood\nand stable?"} -->|Yes| B{"Is regulatory\ndocumentation\nmandated?"}
A -->|No| C{"Is the project\nhigh-risk or\nlarge-budget?"}
B -->|Yes| D{"Is traceability\nbetween requirements\nand tests required?"}
B -->|No| E["Incremental Model"]
D -->|Yes| F["V-Model"]
D -->|No| G["Waterfall"]
C -->|Yes| H["Spiral Model"]
C -->|No| I{"Do you need\nearly working\nsoftware?"}
I -->|Yes| J{"Are features\nwell-defined\nin priority order?"}
I -->|No| K["Iterative Model"]
J -->|Yes| L["Incremental Model"]
J -->|No| M["Iterative Model"]
style F fill:#3B9797,color:#fff
style G fill:#132440,color:#fff
style H fill:#BF092F,color:#fff
style E fill:#3B9797,color:#fff
style K fill:#16476A,color:#fff
style L fill:#3B9797,color:#fff
style M fill:#16476A,color:#fff
Decision Factors to Consider
- Requirements stability — How likely are requirements to change? Higher volatility → more iterative models.
- Risk level — Is this a novel system with unknown technical risks? → Spiral or Iterative.
- Regulatory requirements — Must you produce traceability matrices, test evidence, design rationale? → V-Model or Waterfall.
- Time to first delivery — Do stakeholders need working software quickly? → Incremental or Iterative.
- Team experience — Is the team experienced with the domain and technology? Less experience → more structure.
- Project size — Spiral and RUP overhead is only justified for large projects (>20 developers, >12 months).
- Budget certainty — Fixed-price contracts favour Waterfall/V-Model; time-and-materials favour iterative approaches.
Exercises
Match the Model to the Scenario
For each of the following scenarios, choose the most appropriate SDLC model and explain why:
- Scenario A: A hospital needs a new patient records system. Regulatory requirements (HIPAA, HL7 FHIR) are fixed and well-documented. The system must pass a formal audit before go-live. The project has 18 months and a fixed budget.
- Scenario B: A startup is building a new social media app. They have a rough idea of features but expect to pivot based on early user feedback. They need something live within 8 weeks.
- Scenario C: A defence contractor is building a new radar processing system. The technology is unproven, failure could endanger lives, and the budget is $200M over 5 years.
- Scenario D: A bank wants to add online loan applications to their existing internet banking platform. The requirements are clear (derived from the paper-based process), and they want to deliver features monthly.
Suggested answers: A → V-Model (regulated, traceability needed), B → Iterative (unclear requirements, fast feedback needed), C → Spiral (high risk, large budget, safety-critical), D → Incremental (clear features, phased delivery).
Post-Mortem Analysis — Critique a Failed Project
Read the following simplified project summary, then answer the questions below:
A government agency contracted a vendor to build a citizen services portal. The vendor used strict Waterfall. Requirements gathering took 6 months and produced a 400-page SRS. Development took 18 months. When the system was delivered for user acceptance testing, citizens found the interface confusing and many workflows didn't match how they actually interacted with government services. The agency requested 47 change requests. The vendor quoted $4M additional cost and 8 months additional time for the changes. The project was eventually cancelled.
- What was the fundamental mismatch between the model and the project context?
- At what point could a different model have prevented the failure?
- Which model(s) would you recommend instead, and why?
- What one practice (regardless of model) would have most reduced the risk of this outcome?
Design a Hybrid Model
You're the lead engineer for a medium-sized team (12 developers) building a new internal HR system for a multinational corporation. The constraints are:
- Core requirements (payroll, leave management) are well-understood and fixed by labour law
- Advanced features (performance reviews, learning platform) are unclear and will evolve
- The system must integrate with 3 existing enterprise systems (ERP, Active Directory, finance)
- The CTO wants to see something working within 3 months
- There is no regulatory audit requirement, but the company follows ISO 27001 for information security
Task: Design a hybrid SDLC approach that combines elements from 2-3 models. Explain which model you'd use for which part of the project and why.
Model Evolution Timeline
Create a timeline showing the evolution of SDLC models from 1968 to 2001 (when the Agile Manifesto was published). For each model, note:
- Year introduced
- Key author/origin
- What problem it solved compared to its predecessor
- What new problem it introduced
Hint: The progression should include: NATO Conference (1968) → Waterfall/Royce (1970) → Prototyping (late 1970s) → Spiral/Boehm (1986) → V-Model (late 1980s) → RUP (1998) → Agile Manifesto (2001)
Bonus: Identify the common thread — what single capability improved with each model generation?
Conclusion & Next Steps
Classical SDLC models represent humanity's first systematic attempts to bring engineering rigour to software development. Each model was a response to the failures of its predecessor:
- Waterfall brought order to chaos but was too rigid
- V-Model fixed the testing gap but remained sequential
- Sashimi added practical flexibility to Waterfall
- Incremental delivered value earlier but needed stable requirements
- Iterative handled uncertainty but needed discipline
- Spiral managed risk brilliantly but was complex and expensive
- RUP combined everything but was often too heavyweight
The common thread across this evolution is the increasing ability to handle change and provide faster feedback. Each model relaxed one more constraint of its predecessor, trading documentation and predictability for adaptability and speed.
But even the most flexible classical model — the Spiral — was designed for large teams with formal processes. By the late 1990s, a group of practitioners felt that software development needed something fundamentally different: a philosophy that embraced change rather than merely tolerating it.
Next in the Series
In Part 3: Agile Methodologies — Scrum, Kanban & Lean Startup, we'll explore the Agile Manifesto, its four values and twelve principles, and how Scrum, Kanban, and XP translate those principles into daily practice. You'll see why Agile conquered the industry — and where it still falls short.