Software Engineering | SDLC V-Model
The V-model is an SDLC model where the process executes sequentially in a V-shape. It is also known as the Verification and Validation model. It is based on the association of a testing phase for each corresponding development stage. The development of each step is directly associated with the testing phase. The next phase starts only after the completion of the previous phase, i.e., for each development activity, there is a testing activity corresponding to it.
The V-Model is a software development life cycle (SDLC) model that provides a systematic and visual representation of the software development process. It is based on the idea of a “V” shape, with the two legs of the “V” representing the progression of the software development process from requirements gathering and analysis to design, implementation, testing, and maintenance.
V-Model Design:
The requirements gathering and analysis phase of the V-Model is the first phase. During this phase, the project team gathers and analyzes the customer’s requirements for the software to determine the scope of the project.
Design: In the design phase, we develop the software architecture and design, including high-level and detailed designs.
Implementation:The software builds based on the design in the implementation phase.
Testing: In the testing phase, the software is tested to ensure that it meets the customer’s requirements and is of high quality.
Deployment: In the deployment phase, the software is deployed and used.
Maintenance: “in the maintenance phase, we maintain the software to ensure that it continues to meet the customer’s needs and expectations.
We often use the V-Model in safety-critical systems, such as aerospace and defense systems, because it emphasizes thorough testing and clearly defines the steps involved in the software development process. The following illustration depicts the different phases in a V-Model of the SDLC.”
Verification Phases:
It involves a static analysis technique (review) done without executing code. It is the process of evaluating the product development phase to find whether specified requirements are met.
There are several Verification phases in the V-Model:
Business Requirement Analysis:
This is the first step of the designation of the development cycle where product requirement needs to be cured from the customer’s perspective. These phases include proper communication with the customer to understand the customer’s requirements. These are critical activities that need to be handled properly, as most of the time, customers need to learn precisely what they want, and they are still deciding about it at that time. Then, we use an acceptance test design planning, done at the time of business requirement. It will be used as an input for acceptance testing.
System Design:
The system’s design will start when we are clear with the product requirements; we must design the system completely. This understanding will be at the beginning of the product development process. These will be beneficial for the future execution of test cases.
Architectural Design:
In this stage, architectural specifications are comprehended and designed. Usually, several technical approaches are put out, and the ultimate choice is made after considering both the technical and financial viability. The system architecture is further divided into modules that each handle a distinct function. Another name for this is High high-level design (HLD).
Data exchange and communication between the internal modules and external systems are well understood and defined. Integration tests can be created and documented during this phase using the information provided.
Module Design:
This phase, known as Low-Level Design (LLD), specifies the comprehensive internal design for every system module. Compatibility between the design and other external systems, as well as other modules in the system architecture, is crucial. Unit tests are a critical component of any development process since they assist in identifying and eradicating the majority of mistakes and flaws at an early stage. These unit tests may now be created based on the internal module designs.
Coding Phase:
The Coding step involves writing the code for the system modules created during the Design phase. The system and architectural requirements determine which programming language is most appropriate.
When performing the coding, we follow the coding standards and principles. We undergo many code reviews and optimize the code for optimal performance before checking the final build into the repository.
Validation Phases:
It involves dynamic analysis techniques (functional and non-functional) and testing done by executing code. Validation is the process of evaluating the software after the completion of the development phase to determine whether the software meets the customer’s expectations and requirements.So, the V-Model contains Verification phases on one side and Validation phases on the other. The coding phase joins the verification and Validation phases in a V-shape. Thus, it is called V-Model.
There are several Validation phases in the V-Model:
Unit Testing:
During the module design phase, developers develop Unit Testing Plans. Developers execute these Unit Test Plans to eliminate code or unit-level bugs.
Integration testing:
After completing unit testing, we perform Integration testing. We integrate the modules in integration testing and test the system. We perform Integration testing in the Architecture design phase. This test verifies the communication of modules among themselves.
System Testing:
System testing tests the complete application’s functionality, inter-dependency, and communication. It tries the functional and non-functional requirements of the developed application.
User Acceptance Testing (UAT):
The user performs UAT in a user environment that resembles the production environment. UAT verifies if the delivered system meets the user’s requirements and is ready for use in the real world.
Design Phase:
Requirement Analysis: This phase contains detailed communication with the customer to understand their requirements and expectations.
System Design: This phase contains the system design and the complete hardware and communication setup for developing the product.
Architectural Design: System design, which is part of architectural design, breaks down into modules and adds different functionalities. We clearly understand the data transfer and communication between the internal modules and the outside world (other systems).
Module Design: In this phase, the system breaks down into small modules. The detailed design of modules is specified, also known as Low-Level Design (LLD).
Testing Phases:
Unit Testing:During the module design phase, developers develop Unit Test Plans. Developers execute these Unit Test Plans to eliminate code or unit-level bugs.
Integration testing: After completing unit testing, we perform Integration testing. We integrate the modules in integration testing and test the system. We perform Integration testing in the Architecture design phase. This test verifies the communication of modules among themselves.
System Testing: System testing tests the complete application’s functionality, inter-dependency, and communication. It tries the functional and non-functional requirements of the developed application.
User Acceptance Testing (UAT):UAT which is performed in a user environment that resembles the production environment, verifies that the delivered system meets the user’s requirements and is ready for use in the real world.
Industrial Challenge:
As the industry has evolved, the technologies have become more complex, increasingly faster, and forever changing. However, a set of fundamental principles and concepts remains as applicable today as when IT was in its infancy.
Accurately define and refine user requirements.
Design and build an application according to the authorized user requirements.
Validate that the application they had made adhered to the official business requirements.
Advantages:
This highly disciplined model completes Phases one at a time.
The V-Model uses for small projects where the project requirements are precise.
This model focuses on verification and validation activities early in the life cycle, thereby enhancing the probability of building an error-free and good-quality product.
It enables project management to track progress accurately.
Emphasis on Testing: The V-Model strongly emphasizes testing, which helps ensure the software’s quality and reliability.
Improved Traceability: The V-Model provides a clear link between the requirements and the final product, making it easier to trace and manage changes to the software.
Better Communication: The V-Model’s precise structure helps improve communication between the customer and the development team.
Disadvantages:
High risk and uncertainty.
It could be better for complex and object-oriented projects.
It is only suitable for projects where requirements are precise and contain a high risk of changing.
This model does not support the iteration of phases.
It needs to be able to handle concurrent events.
Inflexibility: The V-Model is a linear and sequential model, making it difficult to adapt to changing requirements or unexpected events.
Time-Consuming: The V-Model can be time-consuming, as it requires a lot of documentation and testing.
