Have you noticed it? SDLC is on every project management job description. Everyone wants you to know how to develop software applications. But let’s be clear on what is the SDLC:
SDLC (Software Development Life Cycle) is the process of getting through the initiation, requirements collection, design, implementation, testing and deployment stages of a project to produce an application or service.
So, why do you need to understand SDLC?
Understanding of Software Development Life Cycle makes the process of project management efficient.
But there’s a real problem here:
With so many different frameworks and project management approaches, life cycles are confusing.
Therefore, here you’ll get more clarity on this topic and you’ll find an example of SDLC below.
Let’s start with a definition.
Definition of SDLC in Project Management?
When I googled the “software development life cycle definition” I found different variants.
Some say it’s a framework. Some say it’s a process or an approach.
All in all, it’s a life cycle:
“A project life cycle is the series of phases that a project passes through from its start to its completion. A project phase is a collection of logically related project activities that culminates in the completion of one or more deliverables.” – PMBOK® Guide
So, it’s just a number of phases you need to get through.
At this level, we are not talking about how to organize the phases and work within. It’s covered by the project management approach.
Why Do You Need a Project Life Cycle?
I want to point out four major benefits of organizing a project into phases:
- To make the project manageable.
- To separate work that has distinct and unrelated to other phases in nature.
- To make the project more predictable.
- To create project checkpoints.
So, if you want more details I have a separate article here:
Common Phases in Software Development
Here are some common phases of software development:
- Project Initiation
- Concept Development
- Requirements Definition
- Hand-off, Closure, Support
And here’s the trick:
Each organization develops a software development life cycle that suits its needs.
Therefore, you may find different titles in different companies.
Project SDLC Phases vs Project Management Process
There’s a bit of confusion here.
You see, Project Management Process is described by five process groups:
- Monitoring and Controlling
Each phase, if it’s big enough, can run through all these process groups.
However, if a project is small process groups can coincide with phases.
Or a process group will cover several phases at once.
Likewise, on tiny projects, there’ll be only one phase at all.
Examples of Software Development Life Cycles
Phases in the life cycle can go in strict sequence, they can overlap, or go in a parallel.
So, it’s important to understand:
That’s why you can (and should) manage different phases with different approaches. We’ll talk about it in a minute.
Large Project Software Development Life Cycle
Large projects can include phases that are bigger than the projects you currently manage.
So, if you feel like such approaches are outdated don’t be too narrowminded.
Keep in mind, the waterfall approach still has its place. It has its pros and cons.
But quite often you will notice that even the plan-driven life cycle will have iterations and increments.
Even on large projects, there’s a need for quick feedback between different phases.
Small Project SDLC Phases
Small projects are harder to dissect into phases because they overlap with the project management process.
For agile projects, there’s still a place for phases where you should use plan-driven approaches.
Act as if You Have all the SDLC Phases
Some of you may think that you don’t have all these phases.
Therefore, it feels like you have only one distinctive phase.
All the project fits in there.
Or you may work in an agile environment, and you perceive as if your project starts with the Sprint 1.
However, here’s what I suggest:
Try to imagine that you do have all these phases.
And each phase has its exit criteria. For example, something you need to create or achieve to move forward.
Most of phases – you can close immediately because you have predefined processes and tools.
Some of the phases will stack one upon another, and you’ll grind through them in iterations.
And there’ll be phases where you do not participate.
But they do exist.
So, people impact your project there.
Now we’ll review each possible phase of SDLC.
Review of SDLC Phases
Again do NOT focus too much on the titles. The work and its nature are of importance here.
Keep in mind that before Project Management Phases start there’s a whole process of finding clients and selling them your services.
In large enterprise companies, the process isn’t that far from the client-vendor relationship. It’s just an internal process of selecting which project to invest money.
1. Project Initiation Phase
After the contract is signed, you get into the initiation phase.
Here you need to define what’s the goal of a project, and it’s success criteria.
Even if you under Times and Materials contract it’s vital to get through this phase.
Therefore, you need to create a Project Charter. At least you need to define the key information that it has.
You can learn more about Project Charter here:
The second important step is to identify key stakeholders.
You’ll need a lot of input on many aspects of software development:
- User Interface
- User Experience
- Technical limitations
- Hardware specifics
- Development environment
- Software architecture
Therefore, don’t expect to get all the details from your clients and customers. You’ll need to include internal expertise. Including outside of your team.
Learn more about how to identify and work with stakeholders here:
Once you have a glimpse of the project and its goals you can continue to the next phase.
2. Concept Development Phase
There are many different ways to develop software applications.
I prefer to follow the design-first approach.
So, how it works?
First of all, you need to develop a conceptual design and wireframes for future application.
It shouldn’t be fully detailed. But it should provide a framework for future Requirement Definition activities.
However, it gives tangible results to your stakeholders.
They’ll be more engaged in the whole project when a difficult process of software development is simplified to images of the future product.
Another aspect of the Concept Development Phase is technical.
Sometimes the required product is totally unique. Or it has specific requirements that don’t have analogs. And no available solution will provide the desired outcome.
So, you need to develop a brand new technological concept.
You’ll need to curate the top subject matter experts in your field to generate ideas and solutions.
Therefore, most of the times it’s a gateway phase.
If you do have an acceptable solution, you’ll continue the project. If the solution requires resources and time beyond constraints, you may need to cancel the project.
3. Planning Phase
In large IT projects you’ll need to create a full Project Management Plan. So, if you face such a task check out these articles:
However, in the beginning, you’ll work on smaller projects. Planning will be simple there.
Here’s the truth:
Many software development vendors develop a custom project management approach.
It’s naturally formed in the process of company growth.
So, you’ll need to follow either an utterly custom approach or a variation of Scrum or Kanban.
In this case, project planning boils down to:
- Identifying project scope
- Estimates of time and costs
- Setting milestones
Sometimes you’ll need to identify required resources and expertise.
All other aspects of project management will be predefined by the customs of this organization.
Therefore, at the end of this phase, you’ll either have a Project Management Plan.
Or you’ll commit to delivering specific scope by the specific deadline. While the rest’s the internal problem.
4. Requirements Definition Phase
After you planned how to manage the project, you need to find out what you need to develop.
In this phase you can use all the available options to define requirements:
- Focus Groups
- Questionaries and Surveys
- Document Analysis
- Mind Mapping
- User Stories
There’s no specific approach to collecting requirements.
In the end, you need requirements that software engineers will understand.
Sometimes simple tweaks in requirements can cause a significant change in required efforts. For sure, you do want to keep an eye on such opportunities to simplify the future product.
After that, you may want to incorporate high-level feasibility analysis here.
That’s why you may often see the Requirements Traceability Matrix on software projects. Even in an agile environment.
5. Design Phase
Again there are at least two aspects here:
- Technical Architecture
- UI/UX Design
During this phase, you need to analyze the collected requirements. After that, develop an architecture that’ll support them.
Also, you need User Interface that’ll make the application or service usable.
The results of this phase are:
- Workflow diagrams
- Architecture Description Documentation
- List of technologies, frameworks, and libraries
Once you have it all collected, you can start writing code to implement the requirements.
6. Development Phase
In this phase, you get into the day-to-day execution of the project plan.
Software Developers will set up working environments and will start writing code.
You’ll do the actual work here following one of the selected frameworks.
For the sake of better quality and engaged stakeholders, you can do it in an iterative and incremental manner.
What does that mean?
You’ll develop a working piece of the application. You’ll show it to the stakeholders.
After that, stakeholders will provide feedback. You’ll integrate changes to the project.
The cycle repeats.
However, there’s a catch:
Such an approach doesn’t exempt you from delivering the project on-time and within budget.
So, your clients may still have hard deadlines and constraints.
7. Integration Phase
Nowadays, you’ll rarely see an application that doesn’t integrate with other services or applications.
In enterprise environments, you’ll often see that employees’ data and credentials are stored in a separate service. You may need to integrate with it to get access to the database of the employees.
The storage space’s often outsourced to one of the third-party providers like Amazon, Dropbox, etc. So, you need to integrate with it.
All-in-all, you need to integrate your piece of software with the business processes of the company or a market you sell the app.
This phase usually requires a lot of collaboration. It can be time-consuming.
So, you better plan this one ahead of time. Pay close attention to the possible risks and integration requirements of other services.
Quite often, integration’s a part of development.
However, if there are a lot of efforts involved, it’s better to get it done in a separate phase.
8. Testing Phase
This phase also referred to as Acceptance testing. Or final testing.
You need to understand that you should be testing your application continuously from the beginning. Moreover, you need to prevent defects in the process of development.
Ideally, your application should be stable and without serious defects all the time.
So, it’s a matter of Quality Assurance that you planned and executed in all previous phases.
Here you need to certify that the version of the application you’re testing is of the required quality.
It doesn’t mean that the application has no defects. They are present, but they don’t prevent people from using the application.
You do need to provide the list of all known defects in the application as part of the quality certificate.
9. Deployment Phase
The software doesn’t work without hardware. Be that a server, your PC or Mac, or a mobile device you need to deliver your application or service there.
Moreover, the deployment of a big and complex application can be a project in itself.
You need to set up servers, upload your application, connect it with all the other services and servers.
In regards to mobile devices and desktops, you need to create an installer for the application. You may also need to submit this installer to the market (App Store, Google Play, etc.)
All in all, the result of this phase is your application or service available to the end users.
If you find it hard to understand this process check out this article:
10. Maintenance Phase
The application’s maintained and supported throughout its whole lifetime. It’s a part of a product life cycle that goes beyond the project life cycle.
However, quite often you may see a relatively short phase for maintenance.
During this period a part of the project team continues to work with the application after it gets to the users.
They are here to address any critical defects that were missed.
After a few months when the application’s used and “tested” by thousands of users the project team is release and the product is handed off to a separate support team.
11. Hand-off, Closure, Support Phases
Hand-off can also require a lot of efforts.
You need to collect all the generated knowledge about the application and its specifics. After that, you need to transfer this knowledge to the support team.
Also, you may need to create documentation, specific capabilities to administrate the service and so on.
If that is the case, you do need to identify such requirements early on.
Also, think about the hand-off process at the beginning of the project.
Software Development Life Cycle and Project Management Approaches
Software Development Life Cycle in Project Management is the structure of a project.
SDLC is NOT a framework.
SDLC doesn’t equal Scrum or Kanban.
Project Management approach can be different in different phases of the Life Cycle.
So, here’s what you need to take away from this article:
- Always break down your project into phases
- Identify the ways the phases interact and overlap
- Do have a clear picture of the Project SDLC