The V-model is a software development methodology where every design phase on the left side of a “V” shape has a directly corresponding testing phase on the right side. Unlike the traditional waterfall approach, which treats testing as something that happens only after development is complete, the V-model pairs each stage of planning with a specific type of testing from the very beginning. The result is a structured, sequential process where test planning happens in parallel with design, and defects are caught earlier.
How the V Shape Works
The name comes from the shape of the process when drawn as a diagram. The left side of the V flows downward through increasingly detailed design phases, starting broad (what does the user need?) and ending narrow (how should each individual module work?). The bottom of the V is where actual coding happens. Then the right side flows upward through testing phases that mirror the left, starting narrow (does each module work?) and ending broad (does the whole system meet the user’s original needs?).
The left side is called verification: confirming the system is being built correctly at each level of detail. The right side is validation: confirming that what was built actually solves the user’s problem. That distinction matters. Verification asks “are we building it right?” while validation asks “are we building the right thing?”
The Four Design Phases
The process starts with requirements analysis, where the team gathers and documents what users actually need the software to do. This is also when user acceptance test plans are written, so the criteria for “done” are defined before any design work begins.
System design comes next. The team studies the requirements document and plans the overall structure of the software, deciding how the system will be organized at a high level. System test documents are prepared during this phase.
Architecture design (sometimes called high-level design) breaks the system into distinct modules, each handling a specific function. The team defines how these modules will communicate with each other and with external systems. Multiple technical approaches are typically evaluated, and the final choice considers both technical and financial feasibility. Integration test plans are written here.
Module design (or low-level design) specifies the internal workings of each individual module in enough detail that a programmer can start coding directly. Unit test plans are developed at this stage, based on each module’s internal design. This is the last phase before actual coding begins.
The Four Testing Phases
After coding, the right side of the V begins. Each testing phase directly corresponds to its paired design phase.
- Unit testing maps to module design. Each individual module is tested in isolation to catch bugs at the code level. Because the test plans were written during module design, testers already know exactly what each piece of code should do.
- Integration testing maps to architecture design. This verifies that modules built and tested independently can actually work together, communicating and exchanging data as the architecture intended.
- System testing maps to system design. The complete, integrated software is tested against both functional requirements (does it do what it should?) and non-functional requirements (is it fast enough, secure enough, reliable enough?).
- User acceptance testing maps to requirements analysis. This is performed in an environment that resembles the real production setup, using realistic data. It answers the final question: does the delivered system actually meet the needs users described at the very start?
Why Test Plans Are Written During Design
The V-model’s defining feature is that test planning happens on the left side of the V, not the right. When a team writes user acceptance tests during requirements analysis, they’re forced to think concretely about what “meeting the user’s needs” actually looks like before a single line of code exists. The same principle applies at every level: integration tests written during architecture design expose vague or contradictory interface definitions early, and unit tests written during module design clarify ambiguous logic before coding starts.
This early test planning is what separates the V-model from a standard waterfall process. In waterfall, testing is an afterthought. In the V-model, every design decision is immediately tied to a way of verifying that decision later. Defects in requirements or design documents can surface weeks or months before they would in a test-last approach.
Where the V-Model Is Used
The V-model originated in software development but has become the standard process framework for safety-critical systems in several industries. Automotive safety standards like ISO 26262, which governs electrical and electronic systems in passenger cars, are explicitly built on the V-model. The standard uses it to define a process that ensures functional safety before a system goes into operation. After defining a system’s functional specifications, teams perform hazard analysis and risk assessment, then proceed through hardware and software development in parallel runs of the V-model.
Avionics is another domain where the V-model is deeply embedded. In both automotive and aerospace, the consequences of software failure can be catastrophic, so the rigorous documentation and traceability the V-model provides aren’t just helpful, they’re required by regulators.
Beyond safety-critical domains, the V-model works well for any project where requirements are stable and well-understood before development begins. Government contracts, infrastructure software, and medical device development all tend toward V-model approaches because they share certain characteristics: fixed budgets, regulatory oversight, and requirements that won’t change mid-project.
Strengths and Limitations
The V-model’s biggest strength is discipline. Every deliverable has a corresponding test. Every phase produces documentation that feeds later phases. Nothing is left vague or assumed. For teams working under regulatory requirements, this traceability is essential.
The biggest limitation is rigidity. The V-model assumes requirements are complete and correct at the start. If users change their minds, or if the team discovers midway through that the original requirements missed something important, the sequential structure makes it expensive to go back. There’s no built-in mechanism for iterating on earlier phases based on what you learn later.
This is the core tradeoff against agile methodologies. Agile thrives on evolving requirements and frequent delivery of working software, but often produces less documentation and can struggle to meet the planning standards that regulators expect. The V-model delivers thorough documentation and clear accountability, but prevents the software from evolving once the process is underway. Some organizations, particularly in medical device development, have experimented with hybrid approaches that combine agile’s flexibility with the V-model’s documentation rigor.
The W-Model: An Evolution
The W-model extends the V-model concept by integrating testing activities throughout the entire development process rather than concentrating them on the right side of the V. Where the V-model’s testing phases happen sequentially after coding, the W-model runs continuous feedback loops so that testing results can influence design and requirements as the project progresses.
This parallel testing approach addresses two of the V-model’s main weaknesses. First, it catches defects even earlier, since testing isn’t waiting for coding to finish. Second, it accommodates changing requirements without requiring the kind of significant rework that a strict V-model demands. The W-model is essentially what happens when teams take the V-model’s core insight (pair every design phase with a testing phase) and remove the constraint that one side must finish before the other begins.

