Software Development Life Cycle (SDLC)
A Software Development Life Cycle (SDLC) is basically a series of steps, or phases that provides software development models and manages the life cycle of software application. A software development process involves various approaches.
These approaches are used during the software development process and are also called software development models. Example of these development models are waterfall model, incremental model and an iterative model. Now, each of these development models follows a life cycle to ensure the success of a software development process.
Table of Contents
Software development life cycle (SDLC) models consist of phases of the software development and the execution order for these phases. Each phase delivers an outcome which is required by the next phase in the life cycle. Also, requirements are gathered to create a design.
In the development phase code is written considering the design. Then, testing is performed on software after coding and development to verify the product of the design implementation against the requirements.
Every software development life cycle model consists of six phases as depicted in Figure:
Benefits of the SDLC Process
- The SDLC improves the quality of a product by making it cost-efficient, effective, and productive.
- At the end of each stage, a proper review is created that allows maximum management control.
- It helps in creating detailed system documentation.
- This documentation helps in assuring that system requirements can be traced back to the specified needs of the organization.
- The products can be reviewed to check whether they conform to the user’s requirements or not. Further changes can be made if the product is not as per the requirements to meet the customer’s requirements.
Now, let us discuss these phases in the following section:
Requirement Gathering and Analysis
In this phase, meetings are held by managers, stakeholders, and users for determining the requirements such as:
- Who will use the system?
- How will they use the system?
- What data should be the input?
- What data should be the output?
These requirements are further analyzed for their validity. It is also identified whether these requirements could be incorporated into the system to be developed or not.
In the end, a Software Requirement Specification (SRS) document is prepared to be used as guidelines for the next phase of the model.
In this phase, the system and software design is prepared, with the help of the SRS document. System design is created for specifying hardware and system requirements. It also defines overall system architecture. This system design specification is used as input to the next phase.
After receiving system design documents, the task is divided in modules, and development of the software is initiated. The software developer writes code for the software required for this phase. It is also the longest phase of SDLC.
Once the coding is done the software goes through the testing phase. In this phase, the product is checked against the requirements to ensure that the product is working in accordance with the requirements.
Also, in this phase different types of testing such as unit testing, integration testing, system testing and acceptance testing are performed.
In this phase, the final product after testing is delivered and deployed at the customer site.
After the deployment of the software at the client site the customers start using the developed product. When customers use the product many problems come up and need to be resolved. In this phase, the developed product is maintained by taking care of the problems.
SDLC IMPLEMENTATION Two popular ways to implement SDLC are using two types of SDLC – waterfall and agile. The main difference between these two models is that the waterfall model is a sequential process model and comes with a well-detailed plan and requirements.
The agile model does not have strict guidelines like the waterfall model; adjustments can be made throughout the process.
Agile software development gives advantages that a waterfall model does not address. The waterfall model is based on sequential processes whereas the agile model focuses on the ability to adjust and respond time for changing requirements. In the agile model, we can make changes to the completed phase which is not possible in the waterfall model.