Software Development Life Cycle (SDLC)

While learning programming languages, I used to think that what is the need to learn theoretical concepts like project management, SDLC models, and so on.

Only when I started working as a software developer, did I understand how things work in reality and how the theory that I learned was no more just a theoretical concept in real projects.

Software Development Life Cycle (SDLC) is one such concept that is taught in most IT or computer science courses.

If you are a software developer or a coding enthusiast & if you are reading this, you would feel like “I know to code. I am good at data structures. Why do I need to know this?”

Yes, you would be good at coding, but you still need to know this.

When you know such concepts, you are actually aware of the context of what you are building or the processes that are being followed.

The good part is the fact that these concepts are not rocket science. They are simple.

Anyone working in the IT industry should have a basic understanding of SDLC.

Let us understand SDLC (Software development life cycle) in detail.

What is SDLC?

Software development life cycle (SDLC) is a process that helps in developing high-quality software in less time and less cost. It is a step-by-step systematic process of software development.

As the name itself speaks, it encompasses all the stages of software – right from the ideation till delivery to end-users and even the maintenance.

The software development life cycle consists of 7 key stages. These stages are also known as the 7 phases of SDLC or the 7 steps of software development.

This SDLC framework is also known as the software development process or application development life cycle.

It is the detailed plan of the documentation, design, development, testing, and maintenance of the software.

Why is SDLC important for software development?

Good software cannot be built without a good plan. Having a plan or roadmap of the entire flow helps in devising high-quality software.

SDLC gives a proper clarity of all the stages that are involved in the development of software. It acts as a basis for planning, estimation, and tracking the progress of the entire project.

Software development life cycle helps in improving the visibility of the entire project and enhances customer relations. It also helps in decreasing any potential risks and improves the development speed.

Phases of Software Development Life Cycle (SDLC Phases)

There are 7 phases of SDLC:

  1. Planning
  2. Requirements Gathering & Analysis
  3. Design
  4. Development
  5. Testing
  6. Deployment
  7. Maintenance

Let us understand the 7 phases of SDLC in detail.

#1. Planning

Any software is built for a purpose. The purpose can be as simple as automating some small billing process to as complicated as building software for some critical healthcare device that is going to be used on millions of patients.

Software is not built just by randomly beginning the coding. It requires proper planning.

Any software is built to either solve a problem, automate a manual process or optimize the existing tool/process.

In order to build software, what software is to be built should be understood very clearly.

A few questions that need to be answered:

What is the purpose of the software?
What is the problem it is solving?
Whether it is feasible to build the software that the team is planning to build?

So, proper planning is needed.

The first phase in the SDLC process is the planning phase. It is one of the most critical phases as a project/product cannot be successful without a proper plan.

This phase involves the evaluation of the terms of the project, the key stakeholders that will work on the project, the project schedule/timelines, and the cost-benefit evaluation.

#2. Requirements Gathering & Analysis

Once the planning phase is done, a lot of requirements are known. But that is not enough. Requirements need to be collected in a proper manner and documented.

In the planning stage, the requirements are not defined in a proper manner. They are just defined at a macro level. In order to build great software, a proper software requirements specification (SRS) should be documented.

SRS is a detailed document that contains all the information regarding the product or the software that is to be built. This document further helps in the next phases of SDLC.

Not all the requirements are documented. Not all the requirements can be fulfilled. It is this very phase in the SDLC where the feasibility of the requirements is checked.

The software vendor and client can go through multiple discussions and versions of SRS before finalizing the final requirements document. This ensures that the client requirements are properly captured, analyzed and documented.

Also, the client is aware well in advance about what all requirements are feasible and what are not.

#3. Design

Once the requirements gathering and analysis is done, the system design is made. It is the phase that detail down the requirements further. The design phase of SDLC defines the entire architecture of the system.

A few things that get covered in this phase are the User Interface, System Architecture, Database Design, Network Diagrams, relationships & Dependencies between modules, etc.

The SRS document that was written in the earlier phase is converted into logical designs.

Designs can be of 2 types – High-Level Design (HLD) and Low-Level Design (LLD). HLD is the design of the entire system at a top-level or macro-level. While LLD is further detailing of HLD, that is the micro-level design.

HLD describes the overall system while LLD illustrates the individual modules and the relationship between them.

You can learn more about HLD and LLD here – Difference between High-Level Design & Low-Level Design

#4. Development

Once the requirements are finalized and the design is ready, development can be started. This is the SDLC phase where the actual development of the proposed software takes place.

The development team gets properly documented requirements & designs. This reduces ambiguity and the development team knows what they have to build.

The developers must write code as per the best coding standards and also use source code management tools like Github or Bitbucket. Using such a tool helps in managing big projects and tracking changes done during the tenure of the project.

The developers should not write the code but also ensure that they write proper comments and do unit testing.

This phase is one of the longest phases in the SDLC. In case the developer wants to understand some requirement, he or she connects with the business analyst that was involved in capturing and documenting the requirements.

#5. Testing

Good software is the one that meets customer expectations and has no bugs. In an ideal scenario, it is impossible to create a perfect 100% bug-free software. It is always possible to reduce the bugs and improve the overall software quality.

Due to this reason testing of the software is extremely important. Testing is a very critical phase in the software development life cycle.

The testing team refers to the SRS document in order to check whether the software is working as per the customer’s expectations or not.

#6. Deployment

Once the software is tested, it is deployed either on the UAT or production environment depending on the requirements.

If the software is deployed in the UAT environment, the customer tests it in order to see whether it is meeting their expectations or not. Once the UAT sign-off is done, the software gets deployed to the production environment.

After the software is successfully deployed, the end-users can start using the software.

#7. Maintenance

When the end-users start using the software in real time, they might discover bugs that were not discovered in any of the previous SDLC phases.

These bugs are fixed on an on-going basis. This particular phase in which the development team fixes the bugs discovered post deployment is the maintenance phase of SDLC.

This phase not just involves bug-fixes but also feature enhancements and software upgrades.

SDLC Models

There are various SDLC models that are widely used. A few software development life cycle models are:

  1. Waterfall Model
  2. Iterative Model
  3. Spiral Model
  4. V-Model
  5. Big Bang Model
  6. Agile Model

2 thoughts on “Software Development Life Cycle (SDLC)”

Leave a Comment