I would like to start this blog by explaining what the software development life cycle (SDLC) is, the period when a team starts decision making for a new product, the product launch and maintaining it. “Software behaves similarly to a living organism: it appears, evolves, faces difficulties, and sooner or later ends the functioning.”
SDLC was first ever mentioned by Mr. Winston W. Royce in 1970. Since then more models have been developed to help teams build a better and efficient product. Today, the traditional approaches have been adapted according to the teams to meet the client needs and evolving changes.
These methods vary widely in approach with the main aim being to develop software as cheaply, efficiently, and effectively as possible. Each system goes through a development life cycle from initial planning through to operations and maintenance, as seen in the diagram below:
How Does It Work? ⚙️
With the process of software development, one can never say it is 100% finished. There are always additional features that a client can ask for. Also bugs are found when a product goes live which are waiting to be fixed, developed, and deployed. Sometimes when you are fixing a bug, some new bug may creep in too. Therefore SDLC is like a never-ending cycle.
The Seven Phases of the SDLC
These steps are (very) roughly the same from one methodology to another. They tend to occur in this order, though they can also be mixed together, such that several steps occur in parallel.
A software development life cycle has several phases, to be precise seven in total. These are known as Planning, requirements, design, development, testing, deployment, operations and maintenance. The order in which these phases come into place for SDLC is exactly in the order mentioned above, however some of the phases can also occur in parallel such as test-driven development and development of a new feature. In other words, shifting more to the left in terms of testing.
I will share a scenario with the following phases to help better understand the entire process. The project is called project Cake Showstopper. You are going to a bake with a small team, where you have to bake a 3-tier celebratory showstopper cake 🍰
Phase 1: Planning 📆
This phase is about things like costs of developing a product, capacity planning around team members, project schedule and also resource allocation.
Ideally, Project Managers and Development staff collaborate with Operations and Security teams to ensure all perspectives are represented.
Think about possible options. What are you good at? Understand from other team members what their strong points are? What will help you to stand out. The event you are baking for is known to have some ups and downs with their cakes in the past. You will solve this problem with your team.
Phase 2: Requirements 📝
In this phase it is vital to understand the client requirements and make sure everyone is on board with the same understanding. Development teams, Subject matter experts, Product Owners and even architects are involved in this stage. In a waterfall model you would see a list of requirements whereas in an agile method these requirements will be written down as tasks in a backlog.
Ask your colleagues if they have worked on such a cake before? Understand what ideas and creativity you can use. Understand what has previously been presented, see what recipes are available for this competition, how much time will you require to complete it to make sure you meet the guidelines and have the cake ready on time. In a nutshell take down as much details as possible.
Phase 3: Design 📒
Once we have the planning and requirements phases completed and agreed, next comes the design phase. Here developers, architects and even UX designers can start designing the product. Architects may use a framework such as TOGAF and developers may use something known as design patterns to bring consistency in their code and UX designers may use a tool to design a prototype from the requirements gathered.
Getting all your creativity onto paper. Keeping costs low where possible. Once you have a plan you move forward with it.
Phase 4: Software Development 🖥️
The software is getting developed in this phase and the team produces a functional product. We’ve built the product, right? But have we built the right product? Stakeholders must be engaged regularly to make sure the right product is being built and no assumptions are being made.
Phase 5: Testing 👩🏽💻
This is a vital stage, and the software testers test the functional product. It is not a good idea to deliver a good quality product without testing it. Testing can be included via functional (unit tests, automation tests, regression tests) and non-functional tests (performance tests, accessibility tests, etc). Tester’s task is not to find bugs or defects, but how to avoid these and act as a safety net. Think around how testing can add more value to the product and the testability and observability. Once testers are happy with the product and approve its functionality, it is then deployed.
This is where you can check each detail is matching the design/prototype, anything you have added onto the cake won’t fall off. Basically, check for any mistakes or if anything was missed out. When making the buttercream or sponge, see if the taste is accurate or not.
Phase 6: Deployment 📦
In this stage, a working product goes LIVE. It is deployed into all environments as well as production environments.
You have spent much on creating a beautiful but fragile cake. Everything is ready, you just need to get safely into and on to the display carrying it safely. And you check it once more before showcasing it to everyone.
Phase 7: Operations and maintenance 🔧📈
This is a phase where the software that has gone live is monitored and maintained to ensure its functionality and quality is not deteriorating. Any bugs or defects discovered in production must be reported and fixed. Also make sure the fix does not introduce more bugs. If it is fixed it’s fixed for good. No bug creeps (make sure good regression tests are in place). You may even get a new requirement or feedback back from the client which may need to be enhanced to the product.
Now, everyone is looking at your showstopper cake. People ask questions about your creation. You keep an eye on your project-cake till the very end of the competition. The cake has completed its mission. The lifecycle of your project ends, but new recommendations are welcome and can be bought into the next cake competition.
Software development life cycle can be complex in its own way and requires team effort to deliver the end product. There are several SDLC models teams can use according to their experiences and what is more efficient for the product to be delivered on time. Also, I do hear a lot of questions around which model is the best? I think each model is beautiful in its own manner, depending on your project and how the particular model can help you reach the final goal.
SDLC is a form of methodology that allows better planning. It aids a project with structure and also helps deliver the final product by making sure it meets the requirements.
- Defined steps to help organize and plan resources, cost, timeline and goals.
- Provides more confidence and reliability in the product being developed.
- Allows good communication between development teams and stakeholders.
- Helps define clear roles of stakeholders and increased transparency.
“If you fail to plan, you are planning to fail” – Benjamin Franklin
SDLC models 🔀
As with every project being different, there are also different models to be used in projects. You can use some of the following models to integrate into your SDLC.
- Waterfall Model
- Spiral Model
- Spiral model
SDLC and Agile are different things 🙋
This can be a little confusing but Agile and SDLC are both different. Agile is known as a methodology whereas SDLC is a process. Agile is an approach that you can use within your projects for a software development life cycle. Furthermore, it is an approach that breaks a project into smaller manageable chunks, which can be delivered in sprints of several weeks where the entire team collaborates and follows the SDLC phases for the small features that need to be implemented. In a nutshell you can use the seven SDLC phases within an Agile approach.
What SDLC model is the best one to use? There is no good or bad in the models, you need to focus on your project needs and based on experiences in order to have minimum risks and increased efficiency. This is something you should discuss in your team before selecting which SDLC model is apt for the project. I have heard and read that Agile works really well for dynamic projects, Waterfall is a good choice for short-term projects and incremental model is a good choice for a long-term project where a product has plenty of continuous implementations.
Whichever model you choose, aim to deliver the accurate requirements on time, with top quality as a collaborative team 😉