In the initial days of the software development life cycle, software used to be created using an Adhoc model – the ‘Build and fix’ model. In this model, the software application is created without any design specification. The development team builds the application and deliver it to the customer. The customer evaluates the software and provides feedback to the development team. Based on the feedback, the developers fix the issues and again deliver the software to the customer. This process goes on until the software is considered fit to use in production.
Although this approach is good for smaller applications, there are several issues in this approach like – no defined processes, no documentation, maintenance is very difficult, higher cost and low-quality deliverable in case of larger projects, etc.
This gave way to more defined software development models like the Waterfall model, Spiral model, V model, RAD model, etc. In this tutorial, we will briefly talk about these models but before that let’s see what is Software Development Life Cycle and its various phases.
What is SDLC?
SDLC stands for “Software Development Life Cycle”. It describes the various phases involved in the software development process using which we can create and maintain a software application efficiently.
The software development life cycle starts with the requirement gathering phase and after that, based on the requirements are defined and design specifications are created. The high and low-level designs created in the design-specification phase lead to the implementation phase. In the implementation phase, coding is done. This phase leads to a software product that is required to be tested in order to validate its business requirements. After successful testing(product with no high priority bugs), the software is deployed to the client.
Now, let’s see the different software development life cycle phases in detail.
Phases of SDLC
The following are the different phases of the Software Development Life Cycle.
Requirement Gathering & Analysis
Requirement gathering is one of the most critical phases of SDLC. This phase marks the basis of the whole software development process. All the business requirements are gathered from the client in this phase. A formal document is created which defines the purpose of the product and marks the guidelines for the other phases of the life cycle.
Software design or we can say a layout is prepared in this phase according to the requirements specified in the previous step (requirement gathering). In this phase, the requirements are broken down into multiple modules like login module, signup module, main functionality, etc. This design document is considered as the input for the next implementation phase.
In this phase, the actual development gets started. The developer writes code using different languages and platforms, depending on the need of the product. The main stakeholder in this phase is the development team.
After the completion of the development phase, testing begins. Here testers test the software and provide appropriate feedback to the developing team. The tester checks whether the software developed fulfills the specified requirements as stated in the requirement phase. Both functional and non-functional testing are performed in this phase before the final delivery to the client.
After the testing gets completed, the product is handed over to the client. This phase involves making the software product live in the production environment.
In this phase, the maintenance of the software product is taken care of. It involves making changes to the software that are required to make it operational with the change in infrastructure, configuration, etc, over a period of time.
Software Development Life Cycle Models
Depending on the requirement, budget, criticality, and various other factors, we can choose between the various SDLC models. Let’s briefly check some of the most widely used SDLC models.
The waterfall model is one of the earliest models of the Software Development Life Cycle. The different phases in the waterfall model progress sequentially downwards, resembling a waterfall, hence the name – “Waterfall Model”. Once a phase of the development cycle gets completed, there is no way to go back to that phase again in order to correct it or make any desired change.
Waterfall Model Advantages
- It is easy to understand and implement.
- There are specific deliverables in each phase of the life cycle.
- All the activities to be performed in each phase are clearly defined.
- It is perfectly suitable for short projects where all the requirements are predefined and understood clearly.
Waterfall Model Disadvantages
- As this model requires freezing of requirements, hence, it not suitable for projects in which changes in requirements are possible or inevitable.
- The working model is only visible in the later phases of the life cycle i.e. after the implementation phase.
- Any correction or update required in the previous phase is not possible.
In the case of the Iterative model, we start with the implementation of a small set of software requirements to develop the first version of the software. After that, we iteratively implement and incorporate new changes resulting in the creation of new versions of the software until the complete system gets created and deployed.
Iterative Model Advantages
- Working functionality can be developed very quickly.
- It is easier to test and develop due to smaller iterations.
- Customer’s feedback can be incorporated easily in the new versions.
- Risks can be identified and resolved during iterations.
Iterative Model Disadvantages
- Comparatively more resources are required in this model.
- It is not advisable to use this model in smaller projects.
- Adherence to the project deadline is very difficult because of the multiple versions due to either change in requirements or due incorporation of the client’s feedback.
In the case of the prototype model, a working model of the application is created with limited functionality. The prototype is then shown to the customer to get the feedback. This helps in better requirement understanding.
Prototype Model Advantages
- Customer satisfaction gets improved as they can see the working software pretty early in the initial phases.
- It is easier to figure out any missing requirements and incorporate them.
- The developed prototype can also be reused by developers in the project.
Prototype Model Disadvantages
- There can be a lack of documentation, since, both the development team as well as the customer rely on the evaluation and feedback of the prototype.
- Overall cost and time can increase due to prototype creation and evaluation.
- There can be uncertainty in the number of iterations that may be required before the prototype gets finally accepted by the customer.
V Model is also known as the Verification and Validation model. In this model, the testing phase goes in parallel with the development phase. As we can see in the diagram, the testing activities start in parallel with the development activities.
V Model Advantages
- Each phase of development is tested before moving to the next phase, hence there is a higher rate of success.
- It avoids defect leakage to the later phases as each phase is verified explicitly.
- The model has clear and defined steps. So, it is easier to implement.
V Model Disadvantages
- The testing team starts in parallel with development. Hence, the overall budget and resource usage increases.
- Change in requirement are difficult to incorporate.
- The working model of the software is only available in the later phases of the development.
The spiral model is the combination of the iterative software development model and the waterfall model. The most important feature of the model is that even after the project starts, it has the ability to manage and mitigate unknown risks. Hence, it is advisable to use this model for large and complex projects.
This model has four stages – planning, risk analysis, engineering, and the review phase. A project passes through all these stages repeatedly.
Spiral Model Advantages
- The spiral model is perfect for projects that are large and complex in nature as continuous prototyping and evaluation help in mitigating any risk.
- Because of its risk handling ability, the model is best suited for projects which are very critical like software projects related to health domain, space exploration, etc.
- Since customer gets to see a prototype in each phase, so there are higher chances of customer satisfaction.
Spiral Model Disadvantages
- Because of the prototype development and risk analysis in each phase, it is very expensive and time taking.
- It is not suitable for a simpler and smaller project because of the multiple phases.
- Project deadlines can be missed since the number of phases is unknown in the beginning and frequent prototyping and risk analysis can make things worse.
Software development models have evolved over the years from the initial “build and fix” model to Spiral, V and Agile models, which are more suited for the complex business needs and processes. So, depending on the budget, requirement, risk and time, we can choose between the available models.
This concludes our tutorial on the software development life cycle, its phases and some of the popular SDLC models. Let us know in the comments for any query or suggestion.
Kuldeep is the founder and lead author of ArtOfTesting. He is skilled in test automation, performance testing, big data, and CI-CD. He brings his decade of experience to his current role where he is dedicated to educating the QA professionals. You can find him on LinkedIn.