Software development activity goes through a number of phases. The different models of software development have more or less the same phases, but it is the sequencing of these phases, which makes the different software development models stand apart from one another. While there are some models, where one can go back to the previous phase, there are some, where it is not possible. Similarly in some models, testing phases starts at the end of the development phase, while in some it is a simultaneous process. The two most commonly used software development models are the waterfall and the V model. They are among the oldest models in software development. In the waterfall model vs. V model debate, no doubt there are going to be people, who will prefer one over the other.
The V model is often said to be an extension of the waterfall model. Unlike the waterfall model, the activities in this model are vent into a 'V' shape, with coding at the lower tip of the 'V'. Every phase in the software development cycle has a corresponding phase in the testing cycle. Therefore, this model is often also termed as the verification and validation model. Where verification side is the development side and validation consists of the testing activities. The activities which fall under the verification side are as follows:
- Requirement Analysis: Information about the proposed system is gathered from the end user, using which the software requirement specification document is prepared, that makes for the base of the software to be prepared.
- System Design: It is also known as functional design, the aim of which is to prepare functional design of the software. In case of any functionality, that is not feasible the same is intimated to the user.
- Architecture Design: Once the system design is in place, the architecture required for the system is made, which is often also referred to as high level design. It is here the interface relationship, database tables, their dependencies, etc. are all worked upon.
- Coding: After the system architecture is in place starts the coding stage. For coding, the entire system is broken up into small modules, which in turn are later integrated to form the entire system.
After the verification side comes the validation side of the V model. Let's see the phases, which are a part of the validation side.
- Unit Testing: This is the first phase of the validation side, where small modules developed are tested, to check if they are fit for purpose.
- Integration Testing: Once the modules are ready, they are integrated upon which testing is carried out. It helps in determining faults in the interface and the interaction between two different modules.
- System Testing: It is in this phase, that the actual is tested against the system specification. In this phase the testing is carried out from the perspective of the end user. Also there are chances that some of the functionality are visible only after the entire system has been integrated completely.
- User Acceptance Testing: The aim of this testing is to check, if the system is in line with the software requirement specification. It helps in determining whether the developed software is according to the acceptance criteria and whether the system is to be accepted or not. Also this phase of testing is carried out in simulated real time environment.
The oldest model in software development is the waterfall model. It has its origin in the manufacturing and the construction industry. This model was adopted in the field of software development, as there was no model available then. The formal description of this model was made by Winston W. Royce, but he did not name the model as waterfall model. This model follows a sequential flow, where the progress is like that of waterfall from one step to another. The different phases of the waterfall model are as follows:
- Requirement Gathering and Analysis: In this phase the requirements of the client are gathered, and an analysis of the same conducted, using which requirement specification document is created. This document is used as the base for creating the system.
- Design: This is an important phase, where the entire software is designed, taking the software requirement specifications into consideration. The system architecture along with the hardware and software specifications required are worked upon.
- Implementation: After the design stage comes the implementation stage, where the code for the software is written. When the modules are ready, unit tests are carried out on them, which helps in checking, if there are problems with the software. In case of defects, the code is fixed, before proceeding to the next stage.
- Testing and Debugging: After the software has been developed completely, it is passed onto the testers. They run different tests on the software and the defects, if any are fixed.
- Delivery: Once the software has been passed forward, after debugging, starts the implementation of the software at the client side. The client is given a thorough insight into the software, so he is able to use the software.
- Maintenance: After the software has been installed, the client uses the software and may ask for changes. The changes and general maintenance of the software are taken care of in this phase.
Waterfall Model Vs. V Model
The main difference between waterfall model and V model is that in waterfall model, the testing activities are carried out after the development activities are over. On the other hand in V model, testing activities start with the first stage itself. In other words, waterfall model is a continuous process, while the V model is a simultaneous process. As compared to a software made using waterfall model, the number of defects in the software made using V model are less. This is due to the fact, that there are testing activities, which are carried out simultaneously in V model. Therefore, waterfall model is used, when the requirements of the user are fixed. If the requirements of the user are uncertain and keep changing, then V model is the better alternative. Also making changes in the software in waterfall model is a difficult task, and also proves to be a costly affair. The vice versa is true of the V model. At this stage, I would like to bring it to your notice, that any defects in the software cannot be determined, till the software reaches the testing phase. However, defects are noticed in the initial phases, due to which they can be corrected easily.
From the above discussion, it is clear that each of the models can be used depending on the system they are being developed for. Therefore, one can choose either waterfall model or V model taking the software and the user requirements into consideration. Often, for smaller systems, it is recommended that one use the waterfall model and for the bigger systems use the V model.