What is V-Model?

V-Model known as Verification and Validation model for software development process.

It is an extension of the waterfall model and is based on associating a test phase corresponding to each development phase. The next phase can only begin after the previous phase has been completed.

As seen in the figure, Verification stages are on one side of the V shape and Validation stages are on the other side, while the development stage is in the combination of the two.

V-Model Verification Stages

Requirement Analysis

It is the stage where the requirements are understood from the customer’s point of view. “Acceptance Test Design Planning” is performed at this stage, as the requirements can be used as input for acceptance testing.

System Design

Contains all hardware and communication details for the product under development. The system test plan is made in accordance with the system design.

Architectural Design

System design is divided into modules that require different functionality. This is also called “High Level Design”.

Module Design

At this stage, the detailed design is specified for all system modules, which is also called “Low Level Design”.

Development/Coding Phase

The most appropriate programming language is decided according to the system and architectural requirements, and the coding of the system modules designed during the design phase is carried out.

V-Model Validation Stages

Unit Testing

Unit testing is testing at the code level and helps eliminate bugs at an early stage, but not all bugs can be discovered by unit testing.

Integration Testing

Integration tests are performed to test the coexistence and communication of internal modules within the system.

System Testing

System tests check all system functionality and communication of the system under development with external systems. Most software and hardware compatibility issues can be discovered during the system test run.

Acceptance Testing

Acceptance tests reveal compatibility issues with other systems in the user environment. It also discovers non-functional issues such as load and performance errors in the real user environment.

When should we use V-Model development?

  • If the requirements are well defined and clearly documented. (or able to)
  • If the product definition is fixed.
  • Small-medium sized projects
  • If the technology used is not dynamic. (if you will not change your framework/SDK in the middle of the project)
  • If there is no unclear or undefined requirement.

Using V-Model makes your project’s progress in a very systematic way. Your testing starts with the project’s first days. And it is very effective way achieving good traceability for your project.

But in some cases, such as;

  • Large/complex projects
  • Functional prototypes needed on the way of development
  • If you need to be flexible with your clients needs

V-Model won’t be good for you. Due to its design, you can not change something in midway through, the entire documentation needs to be upgraded. (requirements, designs, tests..)

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store