SDLC With V-Model as an Example
Tags: softwareengineering, sdlc, vcycle, codequality
Published: 2022-11-16 18:51:10

Hi, I'm Ahmed Gamal Youssef, a Software Developer at Luxoft Egypt. Here I would like to provide a brief knowledge about SDLC including V-Cycle or V-Model as an example in a theoretical way.

## SDLC

Software Development Life Cycle (SDLC) is a process aims to produce a high-quality software that meets or exceeds customer expectations, SDLC has the following stages:

1. Requirements analysis and definition
2. Software architectural design
3. Software development
4. Testing
5. Deployment

### Requirements analysis and definition

Requirements analysis are concerned with discovering and detailing the specific requirements of a system, Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer. This is done through an SRS (Software Requirement Specification) document which consists of all the product Software requirements to be designed and developed during the project life cycle.

### Software architectural design

During this phase, architects define the components of the project and how they relate to and interact with each other. This provides the framework for understanding how the project functions when completed. architects also create the integration tests in this phase, creating tests Scenarios that allow the team to ensure the individual systems within the project can communicate and interact with each other correctly.

### Software development

During this phase, developers define the Low-level design also called Software Detailed Design for each architecture component, which is aimed at defining the logic upon which the system shall be built and interact internally, then they start writing Code.

### Testing

During this stage tester perform testing of the product where product defects are reported, tracked, fixed and retested again until the product reaches the quality standards defined in the project requirements.

### Deployment
 
Once Your Application is tested and ready to be deployed it is released formally in the appropriate market, Deployment is differs based on your product type 

There are various of SDLC Models like Waterfall, Iterative, Spiral, V-Model ...etc.
we are going to discuss the V-Model one.

## V-Model

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6pw8e67wkrbm3pruk1sh.PNG)

V-Model also known as Verification and Validation model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage.
The model relies on a sequential approach this means the next phase starts only after completion of the previous phase.

In Software development if you are developing the Whole product then your team will have a system analyst and system design engineers who are responsible for SYS.2 Requirements and system Architecture above dash line in the V-Model, but if your product is a binary that will be integrated somehow in the whole system as you are just developing 3rd party library then your team will start their work from below dash line from SWE1 to SWE6 and each SWE will be illustrated.

### SWE.1 Software Requirements Analysis

During this phase, requirement Engineer communicates with the customer to understand their needs and expectations. This allows him to determine the exact requirements of a project. then he lists all the customer's requirements for the project, so their team has a clear set of guidelines to follow. 

### SWE.6 Software Qualification Test

Also known as Functional or Acceptance Test, the testing team develops the tests scenarios that covers all software requirements from SWE.1, These tests focus on making sure the completed project meets all the client's requirements. Some types of system tests you may perform during this stage include stress testing, load testing and regression testing.

### SWE.2 Software Architectural Design

During this phase, architect defines the components of the project and how they relate to and interact with each other. This provides the framework for understanding how the project functions when completed. 

### SWE.5 Software Integration Test

During integration testing stage, Integration testing is associated with the architectural design phase. Integration tests are performed to test the coexistence and communication of the internal modules within the system.

### SWE.3 Software Detailed Design and Unit Construction

During Software Detailed Design stage, developers need to design every module of the software components separately with its low level or Detailed design that's why sometime this step called LLD (Low Level Design) or SDD (Software Detailed Design).

### SWE.4 Software Unit Verification

During the development of module design, unit testing is carried out. This plan is executed for eliminating bugs that are found in code at the development of your software.

## Requirements Traceability

Requirements Management is One of the keys to delivering high-quality products is to get the requirements right and the second one is to trace the execution for this requirement to check that it is already covered in the Whole cycle, in other words Requirements traceability refers to the ability to describe and follow the life of a requirement using something called Requirements Traceability Matrix (RTM).

### Types of Requirements Traceability

There are three types of Requirements Traceability forward, backward, and bidirectional traceability.

1- Forward Traceability

Forward traceability is used to map the requirements to the test cases. this ensures that every requirement is being tested from top to bottom sometimes it is called Downstream Traceability.

2- Backward Traceability

Backward traceability is used to map the test cases to the requirements. this ensures that every test case is being Linked from bottom to up with Requirements sometimes it is called Upstream Traceability.

3- Bidirectional traceability

Bidirectional traceability essentially combines forward and backward traceability into one document. This type is useful because it establishes that each requirement has relating test cases. 

Finally, there are a lot of tools currently in the IT industry that can help in generating Traceability like SpiraTeam, codeBeamer, Modern Requirements and Visure Requirements.

## Conclusion

In this article, we learned About SDLC and V-Model with its different SWEs levels then how can we ensure that we are really covering Downstream links from Requirements to Source code and till Qualification tests. Thank you for reading and hope you have enjoyed it as well. Stay tuned for updates regarding my next articles (by subscribing). Feel free to comment with your questions.

## References

1- https://www.automotivespice.com/ 
2- https://sourceforge.net/software/compare/Matrix-Requirements-Medical-vs-SpiraTeam-vs-Visure-Requirements-vs-codeBeamer/