Have you noticed?
Software Development Life Cycle is on every job description for a Project Manager.
Everyone wants you to know how to develop software applications.
That is true.
Understanding of SDLC can make the whole process more efficient.
But there is a real problem here:
With so many different frameworks and project management approaches, life cycles are so confusing.
So, I will bring more clarity to this topic and will show examples of SDLC below.
Definition of a SDLC?
When I googled “software development life cycle definition” I found different variants.
Some say it is a framework. Some say it is a process or an approach.
All in all, it is 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 is 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 is 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 nature.
- To make the project more predictable.
- To create project checkpoints.
If you want more details I have a separate article here:
Phases in Software Development
Here are some common phases of the software development:
- Project Initiation
- Concept Development
- Requirements Definition
- Hand-off, Closure, Support
Here is the trick.
Each organization develops a software development life cycle that suits its needs.
You may find different titles in different companies.
Project Phases vs Project Management Process
There is a bit of confusion here.
Project Management Process is described by five process groups:
- Monitoring and Controlling
Each phase, if it is 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.
On tiny projects, there will be 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.
What’s important to understand:
You can (and should) manage different phases with different approaches. We will talk about it in a minute.
Large Project Life Cycle
Large projects can include phases that are bigger than projects you currently manage.
If you feel like such approaches are outdated don’t be too narrowminded.
Waterfall still has its place. It has its pros and cons.
But quite often you will notice that even plan-driven life cycle will have iterations and increments.
Even on large projects, there is a need for quick feedback between different phases.
Smal Project Life Cycle
Small projects are harder to dissect into phases because they overlap with project management process.
For agile projects, there is still a place for phases where you should use plan-driven approaches.
Act as if You Have all the Phases
Some of you may think that you don’t have all these phases.
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 is what I suggest.
Try to imagine that you do have all these phases. And each phase has it exit criteria. Something you need to create or achieve to move forward.
Most of them you can close immediately because you have predefined processes and tools.
Some of them will stack one upon another, and you will grind through them in iterations.
And there will be phases where you do not participate.
But they exist.
And people impact your project there.
So, now we will 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 is 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 is just an internal process of selecting in which project to invest money.
After the contract is signed, you get into initiation phase.
Here you need to define what is the goal of a project, and it’s success criteria.
Even if you under Times and Materials contract it is vital to get through this phase. You do need to focus the efforts of your team.
So, 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 will need a lot of input on many aspects of software development:
- User Interface
- User Experience
- Technical limitations
- Hardware specifics
- Development environment
- Software architecture
Do not expect to get all the details from your clients and customers. You will 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.
There are many different ways to develop software applications.
I prefer to follow design first approach.
In this phase, you need to develop a conceptual design and wireframes of the future application.
It should not be fully detailed. But it should provide a framework for future Requirement Definition activities.
It also gives tangible results to your stakeholders.
They will 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 Concept development 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 will need to curate the top subject matter experts in your field to generate ideas and solutions.
Sometimes it is a gateway phase.
If you do have an acceptable solution, you will continue the project. If the solution requires resources and time beyond constraints, you may need to cancel the project.
In really large IT projects you will need to create a full Project Management Plan. If you do face such a task check out these articles:
However, in the beginning, you will work on smaller projects. Planning will be simple there.
Here is the truth:
Many software development vendors develop a custom project management approach. It is naturally formed in the process of the company growth.
So, you will 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, and setting milestones.
Sometimes you will need to identify required resources and expertise.
All other aspects of project management will be predefined by the customs of this organization.
At the end of this phase, you will either have a Project Management Plan.
Or you will commit to delivering specific scope by the specific deadline. While the rest is the internal problem.
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 is 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.
You may want to incorporate high-level feasibility analysis here.
For sure, you do want to keep an eye on such opportunities to simplify the future product.
You may often see Requirements Traceability Matrix on software projects. Even in an agile environment.
Again there are at least two aspects here:
- Technical Architecture
- UI/UX Design
During this phase, you need to analyze collected requirements. Then, develop an architecture that will support them. Also, you need User Interface that will 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.
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 will do the actual work here following one of the selected frameworks.
For the sake of better quality and engaged stakeholders, you will do it in an iterative and incremental manner.
What does that mean?
You will develop a working piece of the application. You will show it to the stakeholders. They will provide feedback. You will integrate changes to the project.
The cycle repeats.
However, there is a catch.
Such approach doesn’t exempt you from delivering the project on-time and within budget. Your clients may still have hard deadlines and constraints.
Nowadays, you will rarely see an application that doesn’t integrate with other services or applications.
In enterprise environments, you will 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 is 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 is a part of development.
However, if there are a lot of efforts involved, it is better to get it done in a separate phase.
This phase also referred as Acceptance testing. Or final testing.
You need to understand that you should be testing your application continuously from the beginning. You need to fix and prevent defects in the process of development.
Ideally, your application should be stable and without serious defects all the time.
So, it is 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 are testing is of the required quality.
It doesn’t mean that 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.
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.
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.)
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:
What are the Technical Skill of a Software Development Project Manager?
The application is maintained and supported throughout its whole lifetime. It is a part of a product life cycle that goes beyond 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 is used and “tested” by thousands of users the project team is release and the product is handed-off to a separate support team.
Hand-off, Closure, Support
Hand-off can also require a lot of efforts.
You need to collect all the generated knowledge about the application and its specifics. You need to transfer this knowledge to the support team.
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 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 a 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 is what you need to take away from this article:
Always break down your project into phases. Always identify the ways the phases interact and overlap. Always have a clear picture of the Project Life Cycle.