5 stages of the Agile System Development Life Cycle
Customer needs are changing at a rapid pace, particularly in software development. Agile development embraces constant change through an iterative approach to technology design and development.
The Agile lifecycle adds structure to what is a fluid and flexible method of delivering a working product.
By breaking your builds into smaller segments, you can deliver a product that is much more valuable to your customers in a much shorter time.
Let’s take a look at the 5 stages of the Agile System Development Life Cycle (SDLC).
5 stages of the Agile Life Cycle
1. Project Initiation
The first stage in the life cycle of agile software development. Often referred to as the inception or envision phase, this initial stage is about discussing the project vision and the ROI justification. This is high-level feasibility discussion and does not delve into the specific details.
During this step, you should identify team members and determine the time and work resources are required to complete the project. Taking stock of resources is crucial to determining economic feasibility for project approval.
This speculative phase is when the Agile lifecycle really takes shape for the team. Release planning is where the team gets together with their sponsor or product owner and identifies exactly what they are looking for. They discuss how this will be made possible by building the backlog at the story level.
A good way to think about stories is how the end-user might describe the feature or product. A story should include the type of user, what they want from the product and why.
The business opportunity in a wider context should be considered here. This will impact how viable the project is in a functional and financial sense
You should be estimating the risks and developing milestones with an initial release plan. Planning is only complete when your backlog is complete and you have prioritized the items based on business value and dependency.
Once the requirements have been defined based on feedback from the product owners and stakeholders, the actual work begins. Agile product development delivers high quality working products in incremental phases, sprints, or iterations.
Developers start building the first iteration of the product with the aim of having a working, usable product at the end of the sprint. This is far from the final version and will undergo a number of revisions so it should only include minimum functionality. This functionality can be expanded on in future iterations of the Agile lifecycle.
Teams can deliver in these sprints by:
Ensuring Collaboration with their team and stakeholders.
Maintaining quality by following coding conventions and style guidelines.
Adhering to priorities set by stakeholders who are given total control of the scope, budget, and schedule of the project.
Delivering working products however limited, at the end of every cycle.
Testing all the time!
After as many sprints are needed to progress from a minimal viable product in early sprints to be a fully functioning solution, it is now ready to be released into production.
At this point in the Agile lifecycle, you will have gone through several iterations and hopefully conducted testing after each cycle. This is not always the case though so you will need to allow for Final Testing.
Final testing and acceptance should be carried out by quality assurance (QA) to detect bugs. Unlike iteration testing, you might want to involve a subset of end users for this testing.
Following testing, there will almost definitely be some rework to address defects that arise, so it’s important that this is accounted for in the schedule.
You might also want to train end-users or support staff but your main goal is to deploy your solution into production.
Your product has now been deployed and is being used by final end-users. It is important to closely monitor these early stages for bugs or defects missed in testing. A handover with relevant training should take place between the production and support teams.
These final processes and handovers are can vary depending on the type of product you are outputting.
The production phase typically ends when the product is ready to be retired.
The final stage of the Agile lifecycle. The product is now at the ‘end of life’ stage and will be pulled from production and decommissioned (sometimes referred to as ‘sunsetting’). Customers are notified and informed about migration to newer releases or alternative options.
Products are retired for a number of reasons. In most cases, it is because a newer release is being deployed and (or) the older release is no longer being supported. In this case, some final, minor software updates may be made to the newer system.
It could also be retired because the product is not cost-effective within the current business model and therefore phased out.
Moving from Waterfall to Agile
The waterfall method is still preferred by some developers because of its predictability and known costs. You know what you’re paying for and you know when you’re going to get it.
The strength of Agile methodology lies in its flexibility to evolve throughout the build. By being able to roll with the punches and demands of stakeholders, you will inevitably deliver a far superior end product. Even if it looks nothing like you imagined at the outset!
As with most Agile processes, there are no concrete rules. The above Agile system development lifecycle is not gospel and can be changed and adapted as needed within your project or organization.
Some organizations find it difficult to transition from waterfall to Agile. It can be hard to fully commit, especially if you are under considerable time or financial constraints.
This is why communication and collaboration is so important at every stage of your Agile Life Cycle. By outlining what is desired and feasible during initial planning (and every iteration), you will be able to fully adopt Agile much easier.
Outside of work, Micheál likes to find new stories through podcasts, movies, sport and travel.