In this post I will describe the steps of the Software Development Lifecycle or SDLC.
In this post, I will describe the software development life cycle. I will explain to you the general steps taken to develop software and the definitions of each phase of the software development life cycle. So, let’s get started.
What is the software development life cycle? The software development life cycle, or SDLC, is made up of the general steps, taken by software development teams, to produce working software. Each step defines a phase of the software development project. During each phase, team members will have different responsibilities that will help drive the software toward final production. Some steps may overlap, but they generally define where the project is, regarding developing the final product. If there is difficulty in some steps, then the project may fall back to a previous step to fix the problem. For example, if the team finds severe problems during the test phase, the project may need to go all the way back to the design phase, to fix the problem.
Although there are many variations of this process, and companies may have their own proprietary model, the following represents the general steps of the SDLC. These are, the feasibility study, requirements analysis, design, coding, system testing, deploying, and operations. Now, let’s go through each step in more detail and see how they all fit together.
The first step in the process is a feasibility study. Some projects may skip this process for small projects, but it can be a critical step for large ones. In this phase, the project is looked at holistically to determine the general time frame, the approximate budget, and the number of staff required. In this phase, the project staff will determine if the project can conform with the existing company budget and resources. Staff may also determine if there is software already on the market that can be purchased by the company, or if the IT staff could modify an existing software application, instead of developing a custom product. This decision is known as the buy versus build scenario. The outcome of this phase is a decision from company management, of whether or not the project will be approved. If the project is approved, it will then have an approved budget and timetable.
Once the project is approved, it will then move into the requirements analysis phase. In this phase, the business analyst will build a complete requirements specification to determine the exact functionality of the software. These specifications will include detailed business rules that define the low-level functionality required. It will also include security requirements that the system must support such as the user roles. You can also include such things as use cases that will define basic usage scenarios for the software. Specifications can also include sample screen designs that will help developers during the coding phase. Also, this is a good time to define reporting requirements for the system. Requirement gathering teams often overlook the reporting requirements during this process, but this is a great time to include this analysis since they define the specific data you must store in the system. It is much more expensive, and complicated, to add additional data to the system after it is deployed rather than dealing with it in the requirements phase.
Once the team has completed the requirements specification, the project will move into the design phase. In this phase, designers will map specific requirements into designs. These designs will include both logical models and physical models. The logical model will determine the groupings of software components necessary to meet the basic requirements. Physical designs will consist of hardware elements required to host the software to meet basic usage requirements, such as the number of concurrent users that will be using the system, the availability of the system, and the usage scenarios the system must deliver. The physical designs will also include server topology, network components, any mobile devices required, and perhaps desktop computers. The design phase tries to provide developers with the information they will need to develop code to meet the basic requirements of the system.
The next phase is perhaps the most well-known phase of the software development life cycle--the coding phase. In this phase, programmers will write code to map out all the functionality of the system. Programmers will look to reuse code they have developed on previous projects to save time in their development efforts. Besides developing code, programmers will also develop unit tests, at this point, to ensure the code meets the basic functional requirements. Also, many projects will begin demonstrations to customers at this point, to make sure there are no surprises in the end product. The earlier the problems can be found and identified in the SDLC process, the cheaper and easier they are to fix. Once code goes into production, fixing bugs and missed requirements can be very expensive.
The last major phase of the SDLC, before production, is the test phase. If projects are running behind schedule, and over budget, it is often tempting to cut the test phase short . Doing this can be a risky proposition and usually results in programmers delivering a low-quality system. Developing test cases is a critical step in this process. Quality testing will require a high-level of participation from the business customers to ensure the system performs well, once it goes into production. This process is complicated to do, since most organizations have difficulty in providing additional staff for testing.
After the functional testing is complete, the testing staff should perform load testing at this point. This testing will determine how well the system will perform during peak demand. Failure to test this can be catastrophic. There have been several high-profile failures in large system development projects, which encountered problems when the system was rolled out under full load conditions. Perhaps the most famous is the US government’s launch of the healthcare software that resulted in many frustrated users trying to use a system, which performed poorly under high load conditions. Fixing this after the fact was a lengthy, embarrassing, and expensive process. This failure is only one of many high-profile software projects that have encountered this problem.
Once the testing has successfully been completed, the software will be ready to deploy into the production environment. IT departments generally schedule these deployments for off-hours or weekends to minimize disruptions of the existing system. Also, large systems may be rolled out in phases, releasing one portion of the system at a time. User training may also take place at this time. Large systems will also require a communication plan to alert users when the new system will go into production, and how they must adequately prepare.
After the system deployment, the system will then go into operational mode. In this phase, the help desk is formed to support users, fix problems, and alert server personnel and programmers about significant issues that users are encountering. Server maintenance and patching will also be scheduled. At this point, the maintenance staff schedules routine maintenance operations, such as backups, operating system patches, and security patches, into the rotation. Although the software is operational, most projects will continue to develop new features as the users require them.
This need for future development causes the process to repeat itself. This unplanned development is the cyclical part of the software development life cycle. The problematic issue, for company management, is that since this process is continuous, it will continue to be an expense to the company. At this point, the company must determine an operating budget for the system. Often the cost for this is underestimated and can become a real nightmare for an organization that has not anticipated this.
In summary, the SDLC has several distinct steps or phases. Software development projects move from one phase to the next, after fully completing each one. The IT team may need to repeat some steps if problems occur in a particular phase. Many companies develop their own proprietary models, which they use during the software development process. Even though they may develop their own process, it is still generally based on the phases described in this chapter.
Understanding the basic steps of the software development life cycle is necessary for any programmer to know, since it defines the activities that the project team will perform throughout the course of a software development project. Software development projects are far more complicated than just writing code. I hope this post has given you a solid understanding of the SDLC.