# V-Model

It is a highly disciplined SDLC framework that has a parallel testing phase for each development step.

The V-Model is an extension of the Waterfall model where development and testing are performed sequentially. It is also known as the Validation or Verification model.

V-Model Flowchart

# Comparison of Waterfall vs. V-Model

Consider the following sequence of steps:

  • Business Requirement Gathering Phase: Gathering as much information as possible about the details and specifications of the software desired by the client.

  • Design Phase: Planning the programming language to be used, the database, etc. It should fit the project, as well as high-level functions and architecture.

  • Construction Phase: After the Design, we proceed to actually build the software code.

  • Testing Phase: Afterward, we test the software to verify that it has been created according to the specifications provided by the client.

  • Implementation Phase: It implements the application in the designated environment.

  • Maintenance Phase: Once the system is ready for use, it may be necessary to change the code later depending on user requests.

All these steps constitute the WATERFALL development model.

# Issues with the Waterfall Model

As you can see, testing is only performed after the implementation is completed. However, when working on a large project where systems are complex, it's easy to overlook key details in the initial phase. In such cases, a completely incorrect product will be delivered to the client, and there is the possibility of starting the entire project over.

In this way, the costs of correcting defects increase as we progress in the SDLC. The earlier they are detected, the cheaper they will be to fix.

# Solution: V-Model

To address these conflicts, the V-Model was developed so that each development phase has a corresponding testing phase.

In addition to the V-Model, there are other categories of iterative development where each phase adds functionality to the project in stages. Each stage comprises an independent group of cycles for testing and development.

Examples of these iterative methods are Agile Development and Rapid Application Development.