SDLC

Software Development Life Cycle

Last updated on

In the initial days of the software development life cycle (SDLC), 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 specifications. The development team builds the application and delivers 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.

Build and fix model
Build and fix Model

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 deliverables 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, Agile, etc. In this tutorial, we will briefly talk about these models but before that let’s see what is SDLC or 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.

SDLC Phases
SDLC Phases

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 that defines the purpose of the product and marks the guidelines for the other phases of the life cycle.

Designing

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.

Implementation

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.

Testing

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.

Deployment

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.

Maintenance

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

Choosing the right SDLC model depends on multiple factors like the requirements, budget, criticality of the software product, etc. Apart from this, there is also an individual’s preference for the SDLC model.

The ArtOfTesting team conducted a poll in December 2023 to find out the most preferred SDLC model among the popular models. More than 2000 software developers and testers participated in the poll. Below are the results for the same.

best sdlc model

We can clearly see that with 83% votes Agile Methodology is the most preferred approach to software development. Let’s study the Agile and other models now, starting with the Waterfall model.

Waterfall Model

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

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.

Iterative Model

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

Iterative Model Advantages

  • Working functionality can be developed very quickly.
  • It is easier to test and develop due to smaller iterations.
  • Customer feedback can be incorporated easily into 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 changes in requirements or due incorporation of the client’s feedback.


Prototype Model

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

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

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 increase.
  • Changes in requirements are difficult to incorporate.
  • The working model of the software is only available in the later phases of development.


Spiral Model

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 the health domain, space exploration, etc.
  • Since the customer gets to see a prototype in each phase, 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-consuming.
  • 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.


Agile Methodology

Agile methodology is an iterative and incremental approach to software development. In Agile, we have small incremental builds provided in multiple iterations to the end users for their feedback. Based on the feedback and priority, changes are incorporated in the upcoming iterations of the build.

Agile Methodology Advantages

  1. It is suited for projects where requirements and the end product are not very clear.
  2. It promotes customer satisfaction as their feedback and changes are continuously embraced.
  3. It reduces risk factors as early deliverables are made visible to the end-users.
  4. Exhaustive planning is not required at the beginning of the development process.
  5. It is easy to manage with minimal rules and more flexibility.

Agile Methodology Disadvantages

  1. Since it is highly customer-centric, it can pose a problem when the customer does not have a clear understanding of the product and process.
  2. Lack of formal documentation and designing leads to a very high dependency on individuals for training and other tasks.
  3. For complex projects, the resource requirement and effort are difficult to estimate.
  4. Frequent deliverables, feedback, and collaboration can be very demanding for some customers.
  5. Because of the ever-evolving features, there is always a risk of the ever-lasting project.


Conclusion

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 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 SDLC – software development life cycle, its phases, and some of the popular SDLC models. Let us know in the comments for any queries or suggestions.

7 thoughts on “Software Development Life Cycle”

  1. Excuse me, but is the V Model infographic really correct? I feel like Unit Testing and Acceptance Testing should switch places. That way they can correspond to their preparation phases.

    Reply

Leave a Comment