Last Updated: June 9, 2020
The software development industry is booming. We keep producing massive amounts of code every year.
At the core of the industry is the software development life cycle (SDLC) – the process that guides software teams how to structure and plan their work.
So let’s go on a journey through the treacherous terrain of software development.
We will look at what SDLC actually is and trace its evolution. We will see which are the main models used by the industry.
We’ll discover the SDLC phases, through which a piece of software goes before it sees the light of day – and the key performers in each one.
Ultimately, we will give you a bird’s eye view of the whole process.
Understanding the SDLC Process
Building software is a process. As such it needs a well-defined goal, means to accomplish it and ways to measure, maintain and improve the results. The different approaches to software development provide all that. They’re not all cut from the same cloth, though. Depending on your circumstances, you may need to opt for wildly different approaches.
This depends on many variables, such as:
- size of the organization
- team and project
- estimated time frame
- and the allocated budget.
What’s common is that each piece of software follows a certain SDLC process flow.
This framework fleshes out the required phases to completion, the needed resources and the tasks to be performed along the way.
The SDLC Process is ultimately a well-structured schedule of what needs to be accomplished. It decides on the best software development approach within the estimated time and cost limitations.
The SDLC is often considered a subset of the broader term “systems development life cycle” – the oldest framework for developing information systems.
It appeared in the early 1960s as a response to the necessity for business systems, capable of processing large amounts of data. The first well-documented SDLC framework is the structured programming paradigm from 1969.
A variety of software development methodologies have emerged in the 1990s. Some of them are Object-oriented programming, Scrum, and the Rational Unified Process. The Agile Unified Process emerged in 2005.
Structure of the Software Development Process
The development of a software product is a sequence of well-coordinated stages. Depending on the selected development approach, the number of the SDLC steps can vary.
We will review the 5-stage and 7-stage flavors of the SDLC.
The 5-Stage Version
The 5-stage version of the software development process goes like this:
Requirements and Analysis
This is a crucial phase where the interaction with the client and stakeholders is essential. They need to determine the expected result, i.e. the goal of the software product. Besides customer requirements, there are all kinds of other factors to take into account. These include:
- And design-related ones
To successfully complete this stage, a document called “software requirement specification” is developed. It is the foundation of everything that will take place from this moment on.
The success of a development project depends highly on the requirements analysis. The key performer at this stage is the Business Analyst (BA). He manages all the communication to gather the business requirements, to perform a thorough analysis and most importantly – to translate that information between stakeholders and developers.
The design of the software is based on established requirements. This is where we figure out the development environment, the programming languages, the architectural framework, hardware, etc. It’s also the time to determine the test strategy that will be used. The role of the system architect is essential here. They need to consider all prerequisites from the “requirements specification” document and provide a design paper to be used in the next step.
By now, the developers are already well aware of the design specifications. The work gets divided into modules and the coding begins. The customer should also be involved at this stage. They make sure all measures are taken for the product to meet their expectations. Producing a working software is the ultimate result at this stage.
Now that we have a workable product, the testing phase can begin. Depending on the test strategy outlined in the design specification document, this can happen in a variety of ways.
The goals, nevertheless, remain the same. First, verify that all initial requirements are met, and second, determine if there are any bugs in the code. Testers are the key performers here. The result of their efforts is a fully functional software, ready to be launched.
There’s no such thing as a perfect software product. That’s why customer service plays a huge role in the development process. Once delivered to the end client, real-time issues emerge and they need fixing. Ongoing maintenance is a must if you want to have satisfied customers.
The 7-Stage Version
Now, the 7-stage flavor of this process is a little different. It has a few extra stages, that inevitably change the nature of the others as well. Let’s take a look:
Another way to kick off the SDLC Process is with a planning phase. It precedes the requirements gathering and seeks mostly feedback. The input from stakeholders, business partners, engineers, and end clients shapes the scope of the project. This phase answers questions such as:
- What has to be done?
- What resources are needed?
- How much time would it take?
- How much will it cost?
Requirements and Analysis
Here, the business analysts compile a list of requirements, based on feedback from the client. Then, they feed these to the software engineers. Communication is essential.
This phase should produce a document that outlines all the requirements – and serves as a foundation for the next phase.
The software requirements now find their way into the system architecture. At this point we can determine the functional means and operations we need to deliver the project. Once prepared, the design plan gets presented to the business. We incorporate all feedback before the actual programming begins.
Once the requirements are clear, the software engineers can start working. The goal at this stage is a working program, that is ready for testing. This is also the start of production in the SDLC Process.
The role of the quality assurance team is to find if the initial business requirements have been met. They inspect the quality of the software code. Bugs get fixed. There’s a whole list of software testing methods to go through: functional, integration, performance testing and so on.
Automation testing is a way to automate the process of running repetive tests via the use of external software, such as Bamboo and Jenkins.
Once the code has passed the testing phase, it is ready to be deployed to the production environment. Depending on the company policy, this process may require approval; however, in most cases it is an automated step in the software development life cycle.
Maintenance and Operations
Once the software is released in production, all kinds of issues can crop up. Through monitoring, they can get identified and resolved. New features can also find their way into the product. This is the phase when performance can be measured and improved.
The process of developing a piece of software is largely universal. There’s room to add more stages or simplify the existing ones – but it’s mostly the same thing.
This doesn’t hold true when we look at development methods. Although they all observe the process, they do it in widely different ways.
To choose the most suitable one, there are several key factors to consider. It’s always a balance between the client’s needs and the practical details of developing software. There are factors, such as:
- the complexity of the project
- the selected technology
- and the team size.
All these determine what approach may work best. We will do an overview of some of the most widely known and used SDLC methodologies.
The waterfall model is a linear sequential design process. It’s the oldest known methodology used in software engineering. It originates in the manufacturing and construction industries in the 1970s.
The progress of a development project following the waterfall model goes strictly down the SDLC pipe. A progression is possible only when the previous phase of the SDLC has been successfully completed. There’s no defined process for going backwards.
The SDLC waterfall is a very structured approach. It works well when:
- the requirements and activities are well-defined and understood
- the technology is reliable
- the support team is available and you estimate a short-term project
The downside of the method is related to its lack of flexibility. You can’t implement newly-emerging requirements along the way. Since there’s no tangible product produced until late in the development process, the risk and uncertainty is high. It could turn out to be a very expensive approach, should you decide to modify the project’s requirements or scope on the fly.
This method is based on the notion that a software can be build through a sequence of repetitive cycles. It starts with a simple set of requirements. At each round, the engineers learn from the behavior of earlier versions of the software and are able to enhance its functionality.
The biggest advantage of this approach is that a working prototype of the software gets produced after each cycle is completed. This makes it easier to implement changes, to identify risks. The SDLC testing is relatively easier when performed at each iteration.
The disadvantages of the iterative model of software development come down to resources and cost. Raising the number of iterations consumes more resources. The project completion deadline is undetermined, and so is the risk. Therefore, for this method to work, it needs highly skilled experts performing the risk analysis.
The methodology is not suitable for smaller projects.
The Agile approach to software development is relatively new. Still, it has quickly gained popularity around the globe.
The agile SDLC is based on delivering small portions of a working software and seeking immediate feedback from the client. At the core of this approach lies the strong collaboration and continuous communication between the teams. Each cycle lasts about one to three weeks, at which point the working module/feature gets delivered to the client. The process then repeats.
Testing is performed at each iteration, which allows resolving issues early on. It encourages demonstration of the software functionality and acquiring feedback. The model provides clear visibility of the results. It advocates teamwork and gives flexibility to software engineers.
Since there are no requirements for heavy documentation, there’s a risk of dependency to certain individuals. This can also be a challenge when it comes to knowledge transfer to new members of the team.
The Lean software development methodology is considered a part of the Agile software development method. The SDLC Process following the Lean methodology consists of seven principles:
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity
- See the big picture
The key to understanding this model is through these principles. That would lead to transforming those to functional agile practices and their implementation into the working process.
The lean principles are organized around the idea of producing as much added value as possible for the end users – while optimizing quality, speed, cost and business expectations. To this end, some tasks are eliminated (heavy documentation) and others optimized (meetings frequency).
The DevOps model is partially based on both Agile and Lean. It’s a newly-emerging approach that ties in close collaboration the software development and the operations teams during the entire development life cycle.
The key aspect of this methodology is the emphasis on the automation of the development process. The ultimate goal is to shorten the SDLC, and at the same time to deliver high quality, innovative results, aligned with the business requirements.
With this approach, the developers, operations teams and quality assurance members are all on the same page. They use the same tools and follow the same processes. This improves communication, and leads to better and more timely results.
It is a combination of iterative development and some of the notions of the waterfall model. It allows partial releases of the software at each iterative cycle. It has four stages and the repetitions are called “spirals”. The SDLC Phases are: planning and gathering of requirements; design; development and testing.
Risk analysis has a key role. At each spiral, a risk analysis is performed so any potential risks can be identified and avoided or overcome. It is suitable for large projects, although management and the process itself can be complex.
Choosing the right approach to software development requires significant research. By defining the scope, requirements, and goal of your project, you can determine the SDLC Phases your product would need to undergo.
Your methodology of choice is not only a process for developing a functional product. It’s a way of aligning the values of your organization and your teams to create a harmonious working environment.
Depending on the methodology you choose, your software will go through a varying number of stages. The following activities should be part of it either way:
- Planning, gathering of requirements and analysis
- Agreeing on a design or a system architecture
- Generating code
- Testing the produced code
- Deployment of the code into a production environment
- Continuous maintenance and improvement
Gathering of requirement and analysis; Design; Development; Testing; Maintenance.
Planing; Requirements and analysis; Design; Development; Testing; Implementation; Maintenance.
That depends on your project! Your analysis of the industry, the goal of the project, the capabilities and resources available, time and cost metrics would be the guiding factors in selecting the best SDLC methodology.