What is SDLC?
The software development life cycle (SDLC) is the methodology followed to plan, design, implement, test, and maintain software. Software development is an iterative process, meaning that developers will often create, test, and deploy software early versions of software quickly and at low cost, and then iterate on their initial code to improve the quality and build out additional features. Following the steps of the software development life cycle allows teams to develop high quality, well-tested software efficiently and at low cost.
Step 1: Requirements gathering
The first step is to gather requirements. This phase involves speaking to users and understanding their pain points, learning what performance requirements need to be met, and documenting software specifications.
Step 2: Design
In the design phase, software developers investigate how to best implement their solution, taking into account upstream and downstream dependencies, performance requirements, and the existing system architecture. The output of the design phase is a design document which outlines the architecture decisions and implementation details of the solution, which is often reviewed by the engineering team and any relevant stakeholders. The design document is often iterated on until there is consensus on the proposed solution.
Step 3: Implementation
Once the solution has been designed and documented, the next step is to implement. This is what most people think of as the bulk of a software engineer’s job: writing code. In this step, the developers responsible for the feature write new or update existing code to meet the design and requirements laid out in the earlier phases. Project and product managers can be important allies in this phase of development, making sure dependencies are unblocked and the right work is prioritized to complete the implementation in a timely and efficient manner.
Step 4: Test and integration
Once the code has been written, it needs to be tested before it can be pushed out to users in production. Testing often involves multiple layers, from unit testing which tests individual, atomic functions to end-to-end integration tests which makes calls to upstream and downstream dependencies to test the full functionality of the feature. In some organizations quality assurance (QA) engineers assist with this process, and ensure testing is rigorous, comprehensive, and complete.
Step 5: Deployment
The next stage of development is to deploy the code to users in production. This often involves using deployment software like GitLab or Jenkins to push code from a developer’s local environment through a CI/CD pipeline all the way to the production environment, where the new code runs in the service for users to interact with. Deployment often requires developers to monitor their changes as they are rolled out live to users, checking for any errors or unexpected behavior. When errors occur in production, they can initiate a rollback to remove their changes from production, and revert back to the last known safe version of code.
Step 6: Operationalization and maintenance
The final stage of the SDLC is maintaining the changes in production. Since software development is an iterative process, a software developer’s work is never really complete. They have to continuously monitor their services in production to ensure there are no unexpected performance issues or errors. When these issues do inevitably occur, or a new use case is discovered, the whole SDLC process starts all over again.