SDLC V-Shaped Model and Phases

V-Shaped Model:

In software development, the V-model represents a development process that may be considered an extension of the waterfall model, and is an example of the more general V-model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. 

The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.

Verification Phases and Validation Phases:

There are several Verification & Validation phases in the V Model, each of these are explained in detail below,

  • Verification: Business Requirements analysis >> System Design>> Architectural Design >> Module Design
  • Validation: Unit Testing>> Integration Testing >>Acceptance Tests >> System Testing.
  • Join: The Coding phase

V-Model – Verification Phases:

There are several Verification phases in the V-Model, each of these are explained in detail below.

Business Requirement Analysis:

This is the first phase in the development cycle where the product requirements are understood from the customer’s perspective. This phase involves detailed communication with the customer to understand his expectations and exact requirements. 

Another component unique to the V-Model is that during each design stage, the corresponding tests are also designed to be implemented later during the testing stages. Thus, during the requirements phase, acceptance tests are designed.

System Design:

Once you have the clear and detailed product requirements, it is time to design the complete system. This next stage is used to generate a specification document that will outline all technical components such as the data layers, business logic, and so on.

The system design will have the understanding and detailing of the complete hardware and communication setup for the product under development. The system test plan is developed based on the system design. Doing this at an earlier stage leaves more time for the actual test execution later.

Architectural Design:

The process of designing or creating a blueprint for the hardware, software and network layout of the system under development. Also known as High Level Design (HLD). 

The data transfer and communication between the internal modules and with the outside world (other systems) is clearly understood and defined in this stage. With this information, integration tests can be designed and documented during this stage.

Module Design:

This is the step where a detailed design of the system is generated and all the parts making up the system are specified. At this point, the software engineer also checks to confirm that the system under development will be compatible with other external systems already being used by the customer. Also known as Low Level Design (LLD).  

V-Model -Validation Phases:

The different Validation Phases in a V-Model are explained in detail below.

Unit Testing:

Unit tests designed in the module design phase are executed on the code during this validation phase. Unit testing is the testing at code level and helps eliminate bugs or errors in code are removed and tested for at a very early stage, though all defects cannot be uncovered by unit testing.

Integration Testing:

Integration testing is associated with the architectural design phase. Integration tests are performed to test the coexistence and communication of the internal modules and architectural designs are accurate and that all the software’s functionalities have been captured in the design. 

System Testing:

System testing is directly associated with the system design phase. System tests check the entire system functionality and the communication of the system under development with external systems. Most of the software and hardware compatibility issues can be uncovered during this system test execution.

Acceptance Testing:

Acceptance testing is associated with the business requirement analysis phase and involves testing the product in a user environment. Acceptance tests uncover the compatibility issues with the other systems available in the user environment. It also discovers non-functional issues such as load and performance defects in the actual user environment.

V-Model -joins:

Coding Phase:

The actual coding of the system modules designed in the design phase is taken up in the Coding phase. The best suitable programming language is decided based on the system and architectural requirements.

The coding is performed based on the coding guidelines and standards. The code goes through numerous code reviews and is optimized for best performance before the final build is checked into the repository.

V-Model – Pros and Cons:

The advantages of the V-Model method are as follows −

  • Simple and easy to use.
  • Testing activities like planning test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model.
  • This is a highly-disciplined model and Phases are completed one at a time.
  • Works well for smaller projects where requirements are very well understood.
  • Proactive defect tracking – that is defects are found at an early stage.
  • Avoids the downward flow of the defects.
  • Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.

The disadvantages of the V-Model method are as follows −

  • Very rigid and least flexible. 
  • High risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • If any changes happen midway, then the test documents along with requirement documents have to be updated.
  •  Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • Once an application is in the testing stage, it is difficult to go back and change the functionality.
  • No working software is produced until late during the life cycle.