The waterfall model is well suited for small projects where the requirements are well-defined. However, even in ideal settings, there are times when a higher emphasis needs to be placed on testing the software. In this instance, the closely related V-Model may be the best alternative.
- Understanding of SDLC phases.
- Familiarity with the Waterfall Model.
What is the V-Model?
The V-Model, often referred to as the "Verification and Validation Model", focuses on sequential development with a heavy emphasis on testing. The model is represented in a
V shape to show how each of the design phases (Verification) aligns with a corresponding testing phase (Validation).
Many people view this model as an alteration on the waterfall model as the next phase is not entered until the previous phase has been completed.
> In practice, an experienced development team might find themselves using a waterfall model with more extensive testing that actually makes the V-Model nearly indistinguishable from the Waterfall model.
<div style="width:100%; margin:auto;text-align:center;"> <img src="https://www.devmaking.com/img/topics/sdlc/SDLC_v-model_01.png" alt="v-shaped SDLC model" style="max-width:95%;">
The V-Model can be condensed to 3 major tasks:
The verification phase of development involves gathering requirements, and designing various levels of the system. In this time, no code is written, similar to the waterfall model.
- Requirements Analysis: involves gathering information from the client about the desired system functionality. Requirements are gathered and the development team can begin designing the application from here.
- System Design: After requirements have been gathered, the documents are studied, and a specification document is produced which outlines the hardware and software specifications, including how the software will be organized and diagrams that model the solutions.
- Architecture Design: The architecture design phase breaks down the system design to a more granular level, specifying the high-level design of the system. The specifics of architecture design entail what modules will be needed, how they will interact with each other, and more diagrams which model relationships within the system.
- Module Design: Once more, the design of the system is made more granular, specifying the low-level design of the system. Module design takes the architecture design and breaks it down into models that a programmer can understand and implement. This includes pseudocode, entity relation diagrams, and API specifications among other helpful documents.
Once the system has been completely designed, a working piece of software is created based on the design documents.
Once the resulting software has been implemented, the validation phase begins. As mentioned earlier, each phase of validation corresponds to testing a particular phase of the verification process.
- Unit Testing: unit tests of the module design are created which test the implemented methods to detect the presence of any defects in the software that need to be fixed. While the modules can be tested manually, modern solutions exist that test the code directly to help speed this process up.
- Integration Testing: This phase of testing corresponds with the architecture design phase to ensure that the tested and functioning modules interact among themselves in a way that meets the requirements.
- System Testing: The system testing phase corresponds to the system design phase to ensure the entire application specifications have been adequately met. These differ from previous tests in that systems tests deal with performance, stress, regression, and security testing.
- Acceptance Testing: Once all previous testing is completed, the resulting software is tested against the initial project requirements to ensure that the application performs all of the functions that the client requested. Additionally, this phase takes care of making sure the software is implemented in a way that the client can begin using.
- Like the Waterfall model, the V-Model is very easy to manage.
- Works well for small projects where requirements are unlikely to change over time.
- Places an emphasis on testing to ensure robust software is produced.
- Is not flexible to changing requirements.
- Not well-suited for large, complex projects with unknown elements.
- Strict adherence to completing one phase at a time without a prototype brings high risk of elements not functioning as planned.
- The above point also brings to light that no working software is presented until later in development.
When to use the V-Model
- When requirements are well-designed and unlikely to change.
- If management is inexperienced.
- The project is relatively small or straightforward.