In this article, we will explore the software development lifecycle or SDLC. We’re going to talk about all the steps that are defined in the SDLC and how teams utilise this framework to produce new software.
What is the software development lifecycle?
The software development lifecycle, often referred to as SDLC, defines the general steps and phases that are taken within a software development project. A software development project will move from one phase to the next phase, and has general steps that are taken within each of those phases.
Now, some of those steps may overlap. For example, the software product may be undergoing testing and they may find some bugs, so it will roll back to a previous state of development until that bug is fixed. This may bounce it back and forth between that particular step and again if some steps are not successful, the project may roll back to a previous step.
What are the general steps of the SDLC?
The SDLC starts with the feasibility study, then moves on to a requirements analysis followed by design, then coding, testing the software is actually deployed in production and then it goes into an operational phase. Following that, another release may be planned and so the whole cycle will begin to repeat itself as new requirements are developed.
Potentially a new feasibility study and the entire cycle would start over again. Let’s go through all the details of each step in the process.
The first step in the software development lifecycle process is a feasibility study. In this step, you would actually determine if the project can be completed, can you do it with existing staff, do you have the technology to do this, can it be done on time and within budget and is the project even technically feasible? There are some high risk elements that you just can’t mitigate the risk for.
In this step, you’ll do a buy versus build comparison, to see if you can go out and actually buy an existing piece of software or should you build it in-house. In addition, you may also determine can you build it in-house or maybe you’ll hire a contracted staff or completely outsource the project altogether. So, in the feasibility study – it’s not done for all projects mostly for highly complex projects – however in any case, most projects will look at some kind of determination upfront to see if the project is technically feasible and if it’s affordable.
The next step in the software development lifecycle, is requirements analysis. This is where the business analyst will begin to complete a requirements specification to start building a project. All of the business rules, such as security requirements, all of the use cases, sample screen designs, reports will be developed.
At this point, really everything that is necessary to begin building the software will be done. The requirements are generally approved or signed off, particularly in larger projects. This is a formal process, where somebody in management will have to sign off on those requirements before it’s turned into code.
This is a critical step in the process. Most software development projects that fail, fail at this step. They do a poor job at the requirements analysis, and then when they start coding, the users begin to understand they’re not getting what they asked for and the requirements begin to change.
The next step is a design phase. Software designers will map the requirements into several different types of designs. First will be a logical design, where the large-scale components of the system are mapped out and then a physical design. These physical designs include things like database schemas, software modules, signatures and those types of things. These designs will be reviewed by various different departments for approval, such as the software development department.
If there’s an enterprise architecture division, they’ll want to look at that and certainly now the biggest department to review these is the security department. So security is a huge concern at this point in time, so the design phase will again map the requirements into physical and logical designs, and all this work has to be completed before then the coding actually begins.
The next step in the software development lifecycle, is the actual software development. Finally, we get to write some code after all these other steps! Most beginner programmers want to jump to this step right away and skip all the other steps, however in a large project that’s just not possible.
In this step, programmers will actually begin writing code based on the design specifications that were completed and they’ll look to reuse code, perhaps from a previous project that that they could reuse something to save some time. Unit testing will also be built, as it should be with most code, so the testing can happen in parallel with the coding, to ensure that code works when you produce it.
The next step from here, is the testing phase. This is a critical step in the software development lifecycle, and this is to make sure that everything is functioning properly. There are plenty of software testing tools out there, as well as those unit tests built during the development phase. Not only functionally however also that the anticipated load is accounted for, and that the number of concurrent users that the system is projected to support will actually function. So this is called load testing.
There’s a number of different layers of testing that will happen at this point. There’s a unit test, so that you can make sure that all the units actually fit together, an integration test, so if the system actually needs to move data between other systems that this is thoroughly tested, a load test to make sure it will perform properly under load, and then user acceptance testing, this is also a critical step to make sure the the users verify that the system does exactly what it’s supposed to do.
So, testing is a critical step. Many times, system code is kicked back to the development team when bugs are found and this will cycle back and forth until it’s determined that a stable state has been reached with the software.
The next step is the deployment phase. This is where we’re actually going into production with our software. Finally, we’re actually getting some software out into the wild. In this step, development teams and operations teams will schedule some time when the system can be released. Frequently, this requires scheduling some kind of downtime or system outage to do upgrades. If this is a replacement of a system or a maintenance release, typically then downtime will be scheduled perhaps on some non peak hours, such as late evenings or over a weekend.
Often, holiday weekends are perfect times for a lot of organisations to deploy software, since many users won’t be on the system and the usage is particularly light. In addition to deploying the software, plans will have to be in place to do a rollback in case something goes wrong. So that you can roll the software back, and you can put the previous version back and then fall back to a previous release.
This is a critical step that you don’t want to be trying to figure out while while the problem is actually being encountered. All of these steps need to be rehearsed well ahead of time, and all the users need to be informed of when this action is going to take place, so nothing makes users more angry than and having unscheduled downtime.
The last step in the software development lifecycle is the operations phase. The software has actually gone into production finally, and at this point the the ticketing and help desk process will begin to take place. As users find problems, they’ll be assigned to help desk personnel, who enter tickets and those will be escalated up through the development and operations teams, to make sure that any problems that are encountered are sorted out.
Software fixes are then developed and also the patch and maintenance cycle will begin, so patches are developed to fix problems and those will be scheduled to be put into production. Also operating system patches and system software updates need to be considered at this point, so a lot of activity even though the development is done, a lot of the development will continue to help fix bugs and also maintenance releases for new functionality and new requests as those come in.
We’ve gone through all the steps of the software development lifecycle. Each step has its own unique things that happen during the step, and as mentioned before, some of these steps may overlap with each other. In addition, some companies add additional steps for Quality Assurance purposes that are unique to their operation and again some of these steps may change or they may move back and forth depending on what problems are encountered in the project.
This is a complex process, so developing software and shipping it for a large team of people and a large operation is a complex task. There are lots of layers of management, and software development companies and software development projects to help manage this process.