The V-Model, also called the Verification and Validation Model, is an SDLC model that extends the sequential approach of the Waterfall Model by explicitly associating development activities with corresponding testing activities.
It is called the V-Model because the development and testing activities are commonly represented in the shape of the letter V.
The central idea is:
Every development phase has a corresponding testing/validation activity.
This makes the V-Model particularly important for understanding the relationship between development, verification, validation, and testing.
What Is the V-Model? #
The V-Model is a software development lifecycle model in which:
- Development activities are performed on the left side.
- Testing activities are planned and performed on the right side.
- The bottom of the V represents implementation.
- Each development phase is associated with a corresponding testing level.
A simplified representation is:

The exact phases may differ between textbooks and implementations, but the fundamental principle remains the same:
Development activities are mapped to corresponding testing activities.
Why Is It Called the V-Model? #
The model is traditionally represented in a V shape.
The left side represents verification-oriented development activities, while the right side represents validation/testing activities.
The V shape emphasizes the relationship between each development stage and its corresponding test stage.
Verification and Validation #
Before understanding the V-Model further, we need to understand two important terms.
Verification #
Verification asks:
“Are we building the product right?”
It checks whether software artifacts are being developed according to specified requirements, designs, standards, and procedures.
Examples include:
- Reviews
- Inspections
- Walkthroughs
- Static analysis
Validation #
Validation asks:
“Are we building the right product?”
It checks whether the developed software satisfies its intended requirements and user needs.
Examples include:
- System testing
- Acceptance testing
- User evaluation
Easy Memory Trick #
Verification → Product right
Validation → Right product
Structure of the V-Model #
The V-Model can be divided into two sides.
Left Side — Verification #
The left side focuses primarily on defining and verifying what will be built.
Typical activities include:
- Requirements analysis
- System design
- Architectural design
- Module/component design
Bottom — Implementation #
At the bottom of the V is:
Coding / Implementation
This is where the actual software is constructed.
Right Side — Validation #
The right side focuses on testing the implemented software.
Typical activities include:
- Unit testing
- Integration testing
- System testing
- Acceptance testing
Relationship Between Development and Testing #
One of the most important concepts in the V-Model is the relationship between development phases and testing phases.
A common mapping is:
| Development Phase | Corresponding Testing Phase |
|---|---|
| Requirements Analysis | Acceptance Testing |
| System Design | System Testing |
| Architecture Design | Integration Testing |
| Module Design | Unit Testing |
| Implementation | Coding |
This mapping is extremely important for examination questions.
1. Requirements Analysis → Acceptance Testing #
During requirements analysis, the team determines what the customer needs.
Acceptance testing later checks whether the final system satisfies those requirements.
For example:
Requirement:
Students must be able to submit an examination before the examination deadline.
Acceptance testing can verify this behavior from the user’s perspective.
Therefore:
Requirements ↔ Acceptance Testing
2. System Design → System Testing #
System design defines the overall behavior and structure of the system.
System testing evaluates the complete integrated software against its specified system-level requirements.
For example, an online examination system may need to verify:
Login
↓
Exam Selection
↓
Question Display
↓
Answer Submission
↓
Evaluation
↓
Result
The complete system is tested as a whole.
Therefore:
System Design ↔ System Testing
3. Architecture Design → Integration Testing #
Architecture defines how major components interact.
Integration testing checks whether those components work correctly together.
For example:
The objective is to determine whether the components communicate correctly.
Therefore:
Architecture Design ↔ Integration Testing
4. Module Design → Unit Testing #
Module or component design defines individual software components.
Unit testing tests these individual components.
For example:
def calculate_total(price, quantity):
return price * quantity
A unit test can verify whether this function produces the expected result.
Therefore:
Module Design ↔ Unit Testing
Complete V-Model Diagram #
For revision, remember this structure:
Real-Life Example: Online Banking System #
Suppose a bank wants to develop an online banking application.
The system should allow customers to:
- Login
- View account balance
- Transfer money
- Download statements
- Manage beneficiaries
Let’s see how the V-Model can be applied.
Step 1: Requirements Analysis #
The bank specifies:
A customer must be able to transfer money from one account to another after successful authentication.
The requirement is documented.
Step 2: System Design #
The team designs the complete banking system.
For example:
Mobile/Web Client
↓
Authentication
↓
Banking Service
↓
Transaction Service
↓
Database
Step 3: Architecture Design #
The team determines how major services communicate.
For example:
Authentication Service
↓
Account Service
↓
Transaction Service
↓
Notification Service
Step 4: Module Design #
Individual components are designed.
For example:
validate_user()
check_balance()
transfer_money()
generate_statement()
Step 5: Implementation #
Developers write the actual code.
Step 6: Unit Testing #
Individual functions are tested.
Example:
transfer_money()
↓
Unit Test
↓
Expected Result
Step 7: Integration Testing #
The team verifies interactions between services.
For example:
Authentication
↓
Account Service
↓
Transaction Service
Step 8: System Testing #
The complete banking application is tested.
Step 9: Acceptance Testing #
The bank verifies that the complete system satisfies its business requirements.
Important Characteristic: Testing Is Planned Early #
One of the major ideas behind the V-Model is that testing activities are associated with development activities from the beginning.
Testing is not simply something that is considered after all coding is finished.
For example:
Requirement
↓
Think about Acceptance Test
↓
System Design
↓
Think about System Test
↓
Architecture Design
↓
Think about Integration Test
↓
Module Design
↓
Think about Unit Test
↓
Implementation
This encourages early consideration of how requirements will eventually be verified and validated.
V-Model vs Waterfall Model #
The V-Model is closely related to the Waterfall approach, but it makes the relationship between development and testing more explicit.
| Waterfall Model | V-Model |
|---|---|
| Sequential development | Sequential development |
| Testing generally follows implementation phases | Testing activities are explicitly mapped to development phases |
| Testing may appear later in the lifecycle | Test planning is associated with earlier development activities |
| Simple lifecycle representation | Strong emphasis on verification and validation |
| Useful when requirements are stable | Useful when requirements are stable and testing/validation must be systematically planned |
A simplified comparison:
The V-Model can therefore be understood as a more explicit verification and validation-oriented representation of sequential development.
Advantages of the V-Model #
1. Testing Is Considered Early #
Test planning is associated with development activities from the beginning.
This can help identify ambiguities in requirements and designs earlier.
2. Clear Structure #
Each development activity has a corresponding testing activity.
This makes the model relatively easy to understand and manage.
3. Strong Documentation #
Like traditional sequential models, the V-Model typically uses formal documentation.
This can be useful for:
- Maintenance
- Auditing
- Compliance
- Knowledge transfer
4. Easy Progress Tracking #
The clearly defined phases provide identifiable milestones.
5. Useful for Stable Requirements #
When requirements are well understood and relatively stable, the structured approach can be useful.
Disadvantages of the V-Model #
1. Difficult to Handle Changing Requirements #
If requirements change substantially, several corresponding development and testing artifacts may need to be changed.
Requirement Change
↓
Design Change
↓
Implementation Change
↓
Test Change
↓
Re-testing
2. Limited Flexibility #
The model is more rigid than highly iterative approaches.
Projects with continuously evolving requirements may find this structure restrictive.
3. Working Software Appears Relatively Late #
Users generally do not receive a complete working product early in the lifecycle.
4. Changes Can Be Expensive #
As development progresses, significant changes may affect multiple artifacts and test activities.
5. Not Ideal for Highly Uncertain Projects #
If the team does not understand the requirements or technology sufficiently at the beginning, the sequential structure can create difficulties.
When Should the V-Model Be Used? #
The V-Model can be appropriate when:
- Requirements are well understood.
- Requirements are relatively stable.
- Verification and validation are important.
- Testing needs to be systematically planned.
- Documentation is important.
- The project has formal quality requirements.
- The development environment is relatively predictable.
The suitability of any process model depends on the project’s specific characteristics.
When Is the V-Model Less Suitable? #
It can be less suitable when:
- Requirements change frequently.
- The product is expected to evolve continuously.
- Users need frequent working versions.
- Significant experimentation is required.
- The technology is highly uncertain.
- Rapid feedback is central to development.
V-Model in Software Engineering Exams #
The V-Model is frequently tested through questions about phase relationships.
The most important mapping to remember is:
Requirements Analysis
↕
Acceptance Testing
System Design
↕
System Testing
Architecture Design
↕
Integration Testing
Module Design
↕
Unit Testing
Memory Pattern #
Think:
Requirements → Acceptance
System → System
Architecture → Integration
Module → Unit
Common Exam Traps #
Trap 1: “Testing starts only after coding.” #
This does not capture the V-Model correctly.
The model emphasizes early association and planning of testing activities with development phases.
Trap 2: “V-Model is completely flexible.” #
Incorrect.
It is generally considered more structured and sequential than iterative approaches.
Trap 3: “V-Model is suitable for constantly changing requirements.” #
Generally not ideal.
Stable and well-understood requirements are a better fit.
Trap 4: Confusing Unit and Integration Testing #
Remember:
Unit → Individual component
Integration → Interaction between components
Quick Revision Table #
| Concept | Key Point |
|---|---|
| V-Model | Verification and Validation Model |
| Shape | V |
| Left side | Development / verification activities |
| Bottom | Implementation |
| Right side | Testing / validation activities |
| Requirements | ↔ Acceptance Testing |
| System Design | ↔ System Testing |
| Architecture Design | ↔ Integration Testing |
| Module Design | ↔ Unit Testing |
| Main strength | Early test planning + structured V&V |
| Main limitation | Less flexible for changing requirements |
| Best suited | Relatively stable, well-understood requirements |
Frequently Asked Questions #
What is the V-Model? #
The V-Model is a sequential SDLC model that explicitly associates development phases with corresponding testing phases.
Why is it called the Verification and Validation Model? #
Because it emphasizes both verification of development artifacts and validation of the resulting software.
What is the relationship between requirements and acceptance testing? #
Requirements define what the system is expected to provide, while acceptance testing evaluates whether the final system satisfies those requirements.
Which testing corresponds to module design? #
Unit Testing.
Which testing corresponds to architecture design? #
Integration Testing.
Which testing corresponds to system design? #
System Testing.
Which testing corresponds to requirements analysis? #
Acceptance Testing.
One-Minute Revision #
Remember the V-Model like this:
DEVELOPMENT
Requirements ───────────── Acceptance Testing
\ /
\ /
System Design ───────────── System Testing
\ /
\ /
Architecture ───────── Integration Testing
\ /
\ /
Module Design ─────── Unit Testing
\ /
\ /
IMPLEMENTATION
The most important idea is:
Each major development phase has a corresponding testing phase.
Conclusion #
The V-Model provides a structured approach to software development by explicitly connecting development activities with verification and validation activities.
Its most important characteristic is not simply the V-shaped diagram. The important concept is the relationship between development phases and corresponding testing activities.
The core mappings are:
Requirements ↔ Acceptance Testing
System Design ↔ System Testing
Architecture Design ↔ Integration Testing
Module Design ↔ Unit Testing
The V-Model works particularly well when requirements are sufficiently stable and systematic verification and validation are important. Its sequential structure, however, can make substantial changes more difficult and costly.