The Software Development Life Cycle (SDLC) is an efficient process for designing and developing high-quality software. The goal of SDLC is to minimize risks through preliminary planning to ensure that the software meets the customer's expectations during development and other stages.
The SDLC includes a series of stages that represent the sequence of steps required to move from a concept to an end result. We discuss the steps in more detail below.
The client interview provides all the information needed for the development of software. A basic idea of the future product is formed based on the collected requirements. The stage results in a Software Requirement Specification (SRS), a document that sets expectations and defines overall goals to help with project planning.
At this stage, a development team forms an initial idea of the product to be developed. A decision is also made on the feasibility of its implementation, without going into technical details. This is accomplished by:
After this stage, the team may decide to stop working on the product. In this case, the following stages will not be performed.
The information gathered in the previous stages helps define the software architecture. At this stage, it is important to think through all components of the software being developed, as building without a plan can lead to expensive fixes.
This stage results in two documents: a high-level design and a low-level design.
High-level design. The document contains the following information:
Low-level design. The document contains the following information:
At this stage, all software components are implemented, debugged, and assembled into a single application in accordance with HLD and LLD. At the debugging stage, static code analysis is often used. Static code analysis is a process of identifying most errors and typos in code using a special software tool called a static code analyzer.
At this stage, the developed software is thoroughly tested and also checked to ensure that it meets the customer's requirements outlined in SRS. Developers get updates on all the defects detected so that they can fix them. This process is repeated until all found defects are fixed and the software meets the customer's expectations.
Deployment can be one-time or phased. It depends on the business strategy the customer and developer have chosen. Often the first version of the product is released to a limited market segment for user testing in a real business environment. After receiving feedback from the target audience, the developers make additional changes to the product if necessary, and then release a full version.
The final stage covers the entire life of the software, starting with its release. The focus now is on ensuring that the software is stable and that it remains relevant to users. Users get support in solving product-related issues. There are bug fixes and updates with enhancements. The product is promoted and advertised.
Security testing is not part of the standard SDLC. It is a separate process. The downside is that vulnerabilities are discovered after the software is deployed. To address this downside, an extended version of the SDLC — SSDLC (Secure Software Development Lifecycle) — has been developed.
The steps described above do not necessarily represent a strictly linear sequence. They can overlap, swap, or repeat depending on the chosen SDLC methodology. We have covered the most popular SDLC models below.
The software development begins with a small subset of requirements. With each iteration, new requirements are added, and a new version of the software is created until it reaches a production-ready version. We have shown a visual representation of the iterative model at the top of the page.
The cascade model is a strict linear approach where each SDLC step is passed only once in a specific order. For example, to move on to the testing stage, we need to complete the development stage. Before moving on to the development stage, the project should be fully designed as part of the previous stage, and so on. Such an approach assumes that all information about the project can be known in advance, which is unrealistic in a world where unexpected things happen during the development process and requirements are constantly changing. However, the cascade model works for mission-critical projects where there is no room for compromise in terms of requirements or end-product quality.
In this model, the development stage is divided into several iterations. At each iteration, potential issues that may occur in the next iteration of the development process are analyzed. At the first iteration, a minimum viable prototype of the product is created. In each further iteration, the groundwork from the previous iteration is used to develop a more functional prototype. This continues until a software version of acceptable quality is produced. This is followed by moving to the next SDLC stage.
Agile software development considers the dynamic nature of the software development process. This helps minimize problems associated with changing software requirements, even when they occur in the middle of the development process.
In the agile model, project development is divided into several cycles (sprints). For each cycle, a separate self-contained part of the project is implemented, rather than the whole product.
This approach allows some SDLC stages to run in parallel. For example, an implemented software component can go through a testing stage while developers are already working on the next component.
At the end of each iteration, the customer approves the implemented component. This results in one of the following decisions:
0