In this model we follow the sequential path of process which is similar to waterfall model with more emphasis on testing by making it a stage in parallel with coding. The benefits of this model are easy to understood, specific deliverables in each phase, more suitable for smaller project.
V- Model is a Software Development process which can be considered as an extension to Waterfall model. Instead of moving down linearly as in water fall model, here after coding phase the process is bent upwards to form a V- Shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.
V-Model consists of two main types of activities verification activities and validation activities. In the Verification activities, all the requirements are verified along with the reviews, processes and walkthroughs while in the validation activities, all development is validated though different types of testing.
The below diagram shows the typical V-Model
The V-model consists of a number of phases. The Verification Phases are on the left hand side of the V, the Coding Phase is at the bottom of the V and the Validation Phases are on the right hand side of the V.
1. Verification phases of V-model
Verification phase in a v-model consist of following phases
In requirement analysis phase, the requirements of the proposed system are collected by analyzing the needs of the users. These requirements can be Functional as well as non- functional requirements. It is one which the business analysts use to communicate their understanding of the system back to the users
Functional Requirements: These specify the functions that a system or system component must be able to perform.
Non Functional Requirements: Non-functional requirements specify system’s quality characteristics/attributes like performance/security/availability etc.
In this stage User Acceptance Test Plan is created by the testing team.
System designers review the user requirements document and understand the proposed system requirements and its intended functions.
During this phase, all the possibilities and the techniques are finalized to build the product or the software. Here all the functional issues are pointed out and proper resolutions are finalized.
The functional specification document contains general system information, data flows, system diagrams and sample design.
At the same time, testing team work on the System Test Plan to validate the same.
High-Level design is the stage of the life cycle when a logical view of the solution to the customer requirements is arrived at. It gives the solution arrived at with a high level of abstraction.
During this phase, testing team prepares the Integration Test Plan based on the high level design documents.
Detailed design/ Program specification
During detailed design, all the code, module level designs are completed along with the necessary codes and algorithms.
Once each of the module is defined specifically the programmer starts with the coding activities. Here all the dependencies, data related specifications, interfaces, reuse components and tools are specified.
At the same time, testing team prepares the Unit Test Plan.
2. Validation phases of V-model
Validation phases of a V- model consist of following phases.
In Low level design or detail design an entire module is broken down in to smaller units or module. Unit testing is done on each and every code and module to check their functionalities.
The planning for the same happens during the low level design phase and the test cases will be derived out of the program specifications.
In the V-model of software development, unit testing implies the first stage of dynamic testing process.
This phase involves analyzing of the written code with the intention of elimination errors. The programmer should also make sure he follows the intended coding standards. The type of testing done during this phase is white box testing. It is done using the Unit test design prepared during the module design phase. This may be carried out by software developers.
Once unit testing is done on individual modules all modules are integrated/combined together to develop the final product. After that the combined final product is tested.
Here all the data transfer between individual modules will be tested and end to end process will be covered. Dummy modules like stubs and drivers are used in order to integration testing when a part of unit tested module is not ready.
Integration testing is carried out based on Integration test plan prepared during high level design.
System test is carried out to validate the software system against the all the functional specifications specified in the requirement document.
Test team can start with the system test planning while the development team is working on the functional specification. During this, testing team compares the system specifications against the actual system and note all the deviations if any. It is carried on an integrated system and end to end testing is carried out.
This type of testing is a black box testing
User acceptance testing
Acceptance testing is one of the last phases of testing which is typically done the customer or the end-users of the software. They check the system responses for all the requirements and confirm the acceptability of the software. User Acceptance Testing is done after the System testing.
Advantages of Using V-Model in a project
Following are the advantages of using V-Model methodology in a software development process.
1. This model helps in identifying the discrepancies earlier in life cycle.
2. Reduces cost of fix due to earlier detection of errors
3. In this model, development and testing procedures slowly converge from start to finish, which indicates that as the development team attempts to implement a solution, the test team concurrently develops a process to eliminate or minimize the risk.
4. Testing and development teams work closely to reduce the chances of errors and increase the acceptability of the end product.