# SDLC

The five phases of the software development lifecycle (requirements, design, code, test, deploy), and how Agile and test-driven development change their order.

Novice · Unit Testing · Updated October 29, 2026

The Software Development Lifecycle consists of 5 major parts.

![SDLC](https://fsdtrainingmedia.blob.core.windows.net/public/images/2026/09/02ab8fc584bf40d4b37da563fd865b2e.png "SDLC")

These are the 5 major parts of any SDLC. It is important to note that some programming methodologies may re-arrange the order of these arrows; for instance, Test-Driven Development (TDD) would place **Test** before **Code**.

You may also see diagrams that include additional arrows, or the flow of the arrows may be depicted as a loop instead of a circle. But in the end, the goal of all software development is to release working software to the end user.

We will discuss each part of the SDLC as a phase. However, in modern software methodologies like Agile, the mindset of development is not about compartmentalizing each phase into its own specific step, which is performed once and never repeated. Rather, we approach software development as a continual flow of development, where we strive to improve the software with each cycle of the SDLC. In other words, we continually perform all the steps in the SDLC.

The following 5 phases of software development are critical to ensuring the successful release of your software.

## Requirement Gathering

This is the learning phase. It is impossible to develop software for requirements that you do not understand. Do not gather requirements with a pre-determined idea of what you want to build. You must approach this with an open mind to listen and learn.

Here, you should not only get a high-level understanding of the software you are to build, but you should also become intimately familiar with the usage requirements. This means that you may have to get out of your comfort zone to ask questions that may seem trivial or to risk appearing like you don’t understand the business.

There is no room for assumptions in software development. You must have a clear definition of what the stakeholders expect from you. You may be able to correctly assume just one fact: that your assumptions are wrong.

## Software Design

Once you have gathered your requirements, you can begin to plan your software. You may use diagrams, flow charts, user scenarios, and more.

In the past, such as with a Waterfall SDLC, the design documents were required to be exact – written to the finest detail so that they could be handed off to the development team to write code. Today, in agile development environments this is not the case. However, design documents still play a critical role in helping to guide the software.

Diagrams help you to better understand the requirements and translate them into code. Agile prefers working software over extensive documentation, but it is important to understand that this does not mean that Agile completely removes documentation. Design documents are still a critical part of any SDLC.

## Code

Writing the software is arguably the most “fun” part of the SDLC. Developers love getting their hands in the code and making things work. This is where developers convert the requirements into working software applications.

## Test

Historically, testing software comes after writing the code. Developers hand off their software to a Quality Assurance (QA) team and the QA team tries to break the application.

![Code first testing](https://fsdtrainingmedia.blob.core.windows.net/public/images/2026/09/47ff837ac9704095b71b2722647a4eca.png "Code first testing")

Over the past several years, development teams have used a slightly different approach to testing. The shift has been to develop software with testing in mind. This is called shift-left development, because the testing phase moves to the left on the timeline. Test-Driven Development (TDD) is one popular way to work this way.

![Shift Left or Test-Driven Development](https://fsdtrainingmedia.blob.core.windows.net/public/images/2026/09/85a74f658dff43189de157500bb9ee9b.png "Shift Left or Test-Driven Development")

It may seem counter-intuitive to test your software before it is written. But TDD is a shift in development mindset. We use the software requirements to design the tests, then we let the tests drive the development of the software.

## Deploy

Getting your software application to the end user. Unless your application makes it to the intended end user, all of your efforts have been in vain.

Today, many software companies have a team dedicated to deploying software. They are called the DevOps team. Their purpose is to move production-ready software to servers where end users can access it.

## Key terms

- Software Development Lifecycle (SDLC)
- [Agile](https://www.ask-codey.com/glossary/agile)
- [Test-Driven Development](https://www.ask-codey.com/glossary/test-driven-development)

Source: https://www.ask-codey.com/lessons/sdlc
