SDLC: Software Development Life Cycle Phases and Methodologies
SDLC is not a new concept. If anything, it seems to have fallen out of the popular development lexicon in recent years. But SDLC can be an extremely useful tool for development leaders who need to organize and optimize their teams at a high-level.
Read on to discover what SDLC is, its phases, possible methodologies, and tips for implementing it.
What is SDLC?
SDLC is an acronym for software development life cycle. If you ask five development managers exactly what that means, you’ll probably get five different answers. “I have no idea what you’re talking about” might even be one of them.
Generally speaking, SDLC is about breaking down your software development workflow into essential steps or “phases,” from ideation through to delivery. SDLC is used to help development teams optimize their workflow and make it scalable while ensuring quality. Once SDLC is defined, it’s usually documented in a place that’s accessible for product teams, developers, and other collaborators.
Benefits of SDLC
Documenting the phases of the development process has several advantages:
- It gives your developers a “map” to follow for each new sprint or epic.
- It highlights where your workflow is weakest or where the greatest risks lie (e.g. resource gaps, bottlenecks), making it easier to anticipate them and thus address them before they happen.
- If the involvement of other teams or stakeholders is required, their impact on timelines or approvals can be planned for.
Used effectively, SDLC can speed up the development process and even reduce costs.
The number of SDLC phases may vary according to the preferences of the development lead or company, but most SDLC examples use six or seven phases. They are as follows.
- Information gathering and analysis
- Maintenance (variable)
1. Information gathering and analysis
The first of the SDLC phases is about deciding what it is you’re going to develop. This part of the process is typically led by product managers. If you’re developing for clients, this will likely involve meetings to discuss their needs, goals, and expectations. If you’re developing in-house, this may involve a market analysis or a competitor analysis, customer interviews, and a thorough examination of your company goals. At a high-level, you need to know what problems you’re trying to address and how.
During your first phase of SDLC mapping, outline the following:
- The information required to ideate, choose, and plan development projects
- How to find and/or collect that information
- Which stakeholders need to be involved in information gathering, information analysis, and project selection
This phase may conclude with a feasibility study to make sure your team can accomplish what you set out to do.
Once you’ve looked at the data and chosen what to develop, it’s time to plan out your build. This second SDLC phase is usually a collaborative effort executed by the product managers and development leads. Together, they need to identify a few factors:
- Who will lead the project
- The expected outputs or deliverables
- The number of developers required
- Approximately how many hours the project will take
- The budget required to make it happen
- Any other project-specific considerations
If you’re developing for clients, you may be restricted to specific schedules or budgets, while in-house you can typically prioritize as you see fit.
All of this information should be captured in a project plan. It might be beneficial to build out this plan in your development tool of choice — commonly Jira, GitHub, or GitLab.
No mystery here! The third phase of SDLC focuses on designing the product you’ll be developing. But this phase goes beyond strictly visual design. It covers:
- Architecture: What programming language are you using to build your product? What are the best practices of the industry you’re building for? This also covers questions regarding the use of templates.
- User Interface: How do you expect potential users will interact with the product? How will you go about making that easier for them?
- Platforms: What will your product run on? Here, a game developer would ask themselves which consoles they’ll be publishing for, while a mobile developer will decide whether they’ll make an app for Apple, Android, or both.
- Programming: You’ve already figured out the programming language, but now how will you overcome programming challenges during the development process?
- Communications: What assets will your product have to communicate with? A central server? Other applications? How will this happen?
- Security: How will you secure your product against potential bad actors? Do you have to abide by certain security requirements? Will you be getting access to sensitive user information that must be protected?
This is almost like putting together the architectural plans and interior design of a new house before you build it. Except your architects and designers are your ux/ui team and developers.
The design phase might also involve the creation of a very limited prototype. This depends on your team and your tool stack; it’s more common in website development and app development, where functionality is limited and can easily be designed using no-code or low-code solutions before development begins.
This is the all-important “software development” part of the software development life cycle. At this point you should have provided your developers with the project plan, designs, and any other information they need to move forward with the build. With this in hand, they can get down to work.
This phase of SDLC might be your bread and butter. But consider how the project moves between different members of your team (e.g. front-end and back-end developers, web and mobile developers) to surface and address any dependencies that might slow the team down.
Your developers have finished coding? Time to put it through the ringer. The testing phase of SDLC is about quality assurance. Your process at this stage will depend heavily on whether you have a dedicated QA team or other built-in testing systems.
Test-driven development and automated testing have lifted much of the burden off of developers during this phase of the process. Unit tests run in the background and catch component issues while integration tests ensure all the pieces of your product work together globally.
Still, nothing beats a good old-fashioned pre-launch testing session. Get your QA team together to try out the product, log bugs and performance issues, and generally push the code to breaking point. Then, send it back to the developers to fix everything before retesting. Your SDLC needs to be very clear about the standards to hit for deployment.
Your product is ready to see the light of day. But, as you’re well aware, that’s not as simple as the click of a button. There’s a lot to consider:
- Who leads deployment? And who gives the final approval before launch?
- Do you limit access to only select users for further quality assurance or do you roll it to everyone in production?
- How do you monitor performance in the minutes, hours, and days after launch?
- What is your process if there are issues with the deployment?
Deployment is far and away the riskiest SDLC phase. Make sure every member of your team is intimately aware of how to go about it.
This final SDLC phase is where there tends to be the most variability. Some developers don’t feel that maintenance should be seen as a phase in the SDLC process, but rather something that is ongoing. Others feel like maintenance needs to be a part of SDLC planning, because development doesn’t end when the product is deployed.
No matter which side you sit on, it’s important to acknowledge that all software requires maintenance. As a team you need to plan for that, which involves knowing:
- Who is in charge of maintenance for each product
- How often — and when — maintenance is required
- What the maintenance process looks like in your organization
- What to do if a product has a bug or an issue
While this is likely ingrained in your development team’s day-to-day, it can be useful to take a step back and examine your maintenance phase from a high-level. You may find opportunities to reduce the required resources or speed up the process.
SDLC is about capturing all of the steps in your development process, but there are many different ways you can actually approach, organize, and execute those steps. Here are four of the most common SDLC methodologies.
Agile / Scrum methodology
Agile, much like SDLC, is a term that has been transformed and manipulated to the point where nearly everyone defines it differently. It all started with the Agile manifesto, which laid out principles for effective software development. These include being flexible and responding to change over following a plan, and collaborating with stakeholders and customers.
These principles evolved into many different methodologies. But typically when someone says they use an Agile methodology they’re referring to Scrum. Widely-used by developers, Scrum is a cyclical approach to development. Projects are executed in sprints, which are typically short two- to four-week periods during which each developer focuses on a single project at a time. Initiatives are pulled from a backlog (phase one), planned (phase two), and then developed during a sprint (phases three to six). Because sprints follow one after the other, many users of this methodology wouldn’t include phase seven (maintenance) in their SDLC planning.
Waterfall is a tried and true linear approach to projects. When implemented, each phase of your SDLC follows sequentially.
Many teams like how straightforward Waterfall is. It makes development projects extremely easy to track from ideation through deployment. It’s also a logical choice when each phase of your SDLC is dependent on the completion of the previous phase.
That can be a double-edged sword, however, since Waterfall doesn’t really lend itself to the quick execution of projects. Your developers can’t get started on coding until the design phase is done, even if they know about some of the components they’ll have to build. Or maybe they can’t start coding even with the design, as they’re stuck waiting for various internal approvals to come through. Waterfall can create bottlenecks in your SDLC process.
While the iterative methodology might not have the same degree of name recognition, many teams naturally approach development in this way.
The iterative methodology involves quickly producing a version of the product and then improving it iteratively in subsequent versions. You may produce five or a dozen versions before you get the product right. That makes this methodology a bit difficult to map out in your SDLC, but it’s still a favored option for small, rapidly-moving teams.
This methodology is similar to the waterfall model; it represents the dependencies of each phase in your SDLC. The main difference is that they’re represented in a V shape rather than a linear model. Every stage leading up to the deployment — of implementation — of the software product you’re working on leads down the first branch of the V. Deployment is a short flat stage at the bottom, before leading up to continuous testing, verification, and maintenance on the other branch of the V.
The V-shaped model is often cricitized as being too rigid and encouraging less-than-stellar testing practices. That said, this is a model that promotes a highly disciplined approach, with meticulous attention paid to every phase of the SDLC. In the time since its inception, the V-shaped model has adopted more flexibility, taking notes from the Agile method.
The Spiral approach might be the most complicated of the SDLC methodologies but it’s also the most flexible. Imagine a looping spiral in which each loop represents a stage of your project. In the Spiral methodology, not every project has the same number of loops. It’s up to the project leader to dynamically determine the number of stages required as the project progresses. At the start of each loop or stage, the team is supposed to revisit the objectives and risks of the project, develop the next version of the product, then review and plan the next stage. The Spiral methodology might even determine that the Waterfall or Agile approach is necessary for specific loops.
Because it is so dynamic and flexible, incorporating Spiral into an SDLC can be challenging. You’ll need to be clear on who is in charge of each project, how the number of loops is determined, and which phases need to be repeated.
Big Bang methodology
In the beginning, there was nothing, and then there was everything. The Big Bang methodology follows the eponymous theory about the creation of the universe in that it has only a single step: start. In the same way that the Big Bang created the universe in a single massive explosion, this methodology takes care of the biggest step in any development project. Its philosophy flies in the face of the more typical, more disciplined SDLC methodologies by treating software development as an ever-evolving jumble of new requirements, expectations, and problems. Adherents of the Big Bang methodology would tell you that no one can predict what customers and team members will want during the day-to-day, let alone months ahead of a project’s deadline. It’s a laissez-faire method for developers who prefer the flexibility of continual adaptation to well-established dependencies and rigid planning.
Implementing and optimizing SDLC
No matter which methodology you end up choosing — except maybe for the Big Bang method — there are things you should keep in mind when figuring out your SDLC:
- Use the creation of your SDLC as an opportunity to reflect. As mentioned above, mapping out your SDLC is only half the battle. Once you’ve captured your development workflow, you should be looking for ways to optimize it. The goal of an SDLC is to improve your current system, so seek out bottlenecks, identify recurring issues, and consider whether your SDLC methodology is the right one.
- More detail isn’t always better. An SDLC is what you make of it. You may choose to outline every little step in each phase so your team knows exactly what to do. But this approach often causes your team to blindly follow each step, when really you might want them to be more independent and flexible in their approach to development projects. Consider what degree of detail will ensure processes are followed without being too restrictive.
- Use a project management tool to capture your SDLC. A Google document or spreadsheet can be used to log each phase of your process. Or you could choose a more visual approach and map it out in a tool like Miro. But your best option will likely be to have your SDLC visible where the development work is actually happening. Consider templating your process within your development tool of choice. You could even make it a checklist that team leaders modify for each new initiative.
- SDLCs aren’t meant to be permanent. You can’t just forget about your SDLC once it’s mapped out and released into the wild. Circumstances change, teams grow, and businesses scale. Revisit your SDLC at least once a quarter to see if any adjustments need to be made.
SDLC: Is it right for you?
Every development team follows a process. SDLC just makes it formal. While this creates upfront work, it really is the best way to take a step back and find ways to improve and optimize your approach. These improvements will save you a ton of time, effort, and money in the long run.
Looking to optimize your development workflow? Unito’s deep, two-way integrations allow you to connect your work tools, and automate away the busywork. Learn more, or try Unito for two weeks, absolutely free.
How do developers save time?
They use Unito to sync crucial data across tools like GitHub, Jira, and more.