V-Model: An Improvement of Waterfall
What is V-Model ?
V-Model is a Software development Life Cycle (SDLC) that emphasizes the concept of “Verification and Validation”. In each step of development in V-Model, there will be a corresponding testing phase that will be validating such a process. Testing Phases will be planned in parallel with the development of the stage which they are supposed to be tested against and will be joined at the bottom by the actual coding process, Hence the name V-Model. It is also considered to be an extended form of Waterfall Model since one step cannot be done without the completion of a previous process first.
Each verification process in V-Model SDLC and their parallel testing counterpart.
Requirement Gathering ← →Acceptance Testing
- In the process of gathering requirements for the system to meet its client’s expectation, a testing phase involved in the finished product in a real user environment will be planned. Acceptance Testing may conclude the overall client experience of the entire system as a complete product.
System Analysis ← → System Testing
- While System Design is on the way to plan out how the system components will be and how they will interact with each other to run the entire system. System Testing phase should be on the construction of the tests based on the system design itself, including software-hardware communication testing, external services and communication testing etc.
Software Design ← →Integration Testing
- A technical phase of software design where the concept and plan will be implemented into smaller modules to accomplish each functionality and requirement of the project itself. A blueprint for Integration Test of each component and their architectural design will be planned at the same time.
Module Design ← →Unit Testing
- A lower level design to help guarantee that the basic component in each module works properly in order to eliminate any fault in fundamental functionality that higher level component will be based on. A Unit Testing will be designed to validate each type of scenario that each module might face and to ensure that the system can handle each one appropriately on the code level.
Coding
- An actual implementation of a code. Coding will be done based on the design of the aforementioned components and modules.
After the coding has been done. A V-Model will process to do the testing in reverse order going from Unit Testing → Integration Testing → System Testing and Acceptance Testing, Thus complete a V-like shape cycle of Verification (Down), Coding (Joint) and Validation (Up) with the planning of Validation being done simultaneously with the verification phase.
Who is responsible for the test ?
Layer : Assignee
Layer 4 — User acceptance testing (UAT) : SA + Tester
Layer 3 — System testing : Developer or SA + Tester
Layer 2 — Integration testing [Class-to-Class] : Developer
Layer 1 — Unit testing or Component testing [Method] : Developer
V-Model: Pros & Cons
Advantages
- Less bugs: Do testing in every layer
- Provide an explanation of problems involved in detail.
- Emphasizes the importance of testing and makes sure that testing is planned.
Disadvantages
- A bit complicated when comparing with other methods.
V-Model: Comparison
V-Model vs. Waterfall Model
Since v-model is an extended version of waterfall. It shares similar characteristics to each other, for example, processes are executed sequentially, and requirement is needed in the beginning. But there are some different between them.
- V-Model tests at the first stage. while Waterfall tests after the development stage.
- V-Model costs higher. Since the process is more complex than waterfall. development cost is expensive.
V-Model vs. Agile
- V-Model has 2 phases while Agile works in form of sprint.
- V-model doesn’t allow development and testing to happen concurrently. V-model split the verification and validation apart from each other not like to Agile which development and testing will be done in each sprint.
- V-model less interact with the end user. The only process that end user involves with is the requirement gathering. Unlike agile, end user will participate in every sprint.
Authors
Jirapat Kulratkhemmawan, SUPHAVICH WONGWACHIRAPORN, Thossakrai Nakkasem — 3rd-year students, Software Engineering KMITL.
References
#SoftwareEngineeringKMITL