The Software Development Life Cycle (SDLC) is a framework used to plan, design, implement and maintain information technology (IT) systems. It is typically used to manage large, critical or long-term projects that require detailed planning and user requirements research.
SDLC breaks down the process of creating information systems into seven phases: Planning, Definition, Design, Development, Testing, Deployment and Maintenance. The actual process can take several forms. The traditional linear process is often called the “Waterfall Model” – while iterative variations include the “Spiral Model.”
The difference between linear and iterative models of SDLC is whether the project will be complete after a single pass through the seven phases, or whether it will be repeatedly updated with multiple passes. In either case, the role of the seven phases is the same.
Phase 1: Planning
The project begins by bringing together all the stakeholders to gather the technical requirements for the software system. Feasibility studies are performed to investigate whether the project is economically, technically and operationally desirable.
Estimates of cost and scheduling are also determined during this first phase. It is critical that all the key stakeholders participate in the planning phase to prevent difficulties caused by incomplete or unclear requirements in later phases.
Phase 2: Definition
After the planning phase, requirements documentation is created in detail. Typically, business analysts take the role of liaison between the non-technical stakeholders and the technical experts who will be creating the system.
Using their expertise in analyzing business processes and their background knowledge of software development, they create documentation that captures end user requirements in the technical format needed to design the system.
Phase 3: Design
After the requirements are fully defined, high level design specifications are created that will serve as the road map for the development phase of the project. The design documents specify the architecture that will be used to develop the system.
The key stakeholders review these design plans to re-evaluate the time, cost and feasibility of the project.
Phase 4: Development
With the requirements and design documents approved, developers begin working on the software project. If the previous phases were thorough and detailed, the developers will be able to create the software components of the project with minimal difficulty.
Many problems encountered during the development phase are the result of inaccuracies or changes to the project’s requirements, which cause developers to spend additional time researching and revising their source code. This is the reason the SDLC process requires the planning, definition and design phases before any development can begin.
Phase 5: Testing
The testing phase of the SDLC refers to integration and user acceptance testing to ensure that the project has met the requirements that were determined in the planning and design phases. Once development is complete, the testing phase identifies as many defects as possible during the time allocated and prioritizes them for correction by developers before deployment.
Once the product satisfies the quality standards defined during the planning phase, the project can be deployed.
Phase 6: Deployment
Deployment requires a detailed plan, especially if the system is replacing a critical system already in use. The system is deployed to the production environment once it has passed the testing phase. Deployment consists of installing the software and any required hardware for the end users to begin using it.
This phase also includes the training and documentation required to help end users learn to use the system.
Phase 7: Maintenance
The final phase of the SDLC process is maintenance of the software system after it has been deployed. Maintenance includes repairs to the system when failures take place and patching any known or newly discovered defects. It can also include incrementally adding features that do not require significant changes to the software design.
In the Waterfall Model, the maintenance phase would represent the final phase of the software project until it is decommissioned. In iterative models, the project may begin the SDLC process again with a new planning phase for the next version of the system that has been deployed.