The software development life cycle (SDLC) is a conceptual model, used in project management, to describe the stages and tasks involved in each step of a project to write and deploy software.
A software development life cycle is the long-term view of software as a product, from initial planning through maintenance and eventual retirement of the completed application. Organizations strive to quickly and efficiently produce high-quality software through intricate planning, commonly referred to as SDLC phases or steps.
Standard SDLC phases
The number of phases in an SDLC can vary depending on the business and its software product goals, typically falling between five and seven steps. At the most basic level, software is designed, developed, tested and then released. Upon release, the software is maintained until it is discontinued.
In general, the SDLC process follows these phases:
- Evaluate the existing system. If there is existing software in place, then any deficiencies in that software are identified before its retirement. This can be done by interviewing users and consulting with support personnel, as well as by reviewing metrics gathered through application performance monitoring (APM) tools. This step provides insight on the strengths and weaknesses of the current software and what can be implemented in the new software.
- Define the new system requirements. Deficiencies in the existing software must be addressed; moreover, specific proposals are made for improvement, such as new features and functionality. If no previous software is in place, this phase is simply defining the requirements for proposed software. Requirements can include hardware, operating systems (OSes), programming and security.
- Design the proposed system. The design phase turns the software specifications into a design plan. Plans are laid out concerning the architecture, hardware, OSes, programming, communications and security issues.
- Develop the new software. During the development phase, the code is built, tested, integrated and managed. Developers must obtain and install new components and programs. The code's structure determines which tests are utilized. For example, the software could be built as a set of microservices instead of a monolith structure, which means the software would not have to be regression tested with further updates or iterations. Software testing is a large step in the SDLC, and some models count it as a separate phase from development.
- Put the system into use. Deployment can be accomplished in various ways. Some new software is phased in, according to application or location, to gradually replace an old product. In other cases, the old system is shut down, and users cut over to the new system all at once.
- Monitor the software. The new software should be exhaustively evaluated for performance and stability. Organizations use logs, as well as APM and other metrics-gathering tools, for monitoring. Any concerns should be reported to the development team for remediation in patches or ongoing software maintenance efforts.
Various SDLC models exist, and the right one depends on any given project:
- Waterfall model, which was the original SDLC method;
- rapid application development (RAD);
- Joint Application Development (JAD);
- spiral model;
- build-and-fix model;
- synchronize-and-stabilize model;
- V-model; and
- Agile model.
Several models can be combined into a hybrid methodology.
Waterfall is a traditional linear and sequential approach to SDLC. The Waterfall model moves through the defined stages of SDLC only when a stage works as intended. This model can be adequate when the project is small and there are not any uncertainties in direction. However, Waterfall has fallen out of favor for SDLC adherents, due to the need for software development to be fast and flexible.
Agile is a much more utilized SDLC approach. Agile is an SDLC model that approaches software development in incremental but rapid cycles, commonly referred to as sprints. Each sprint builds upon the last. These sprints compose the project quickly with higher flexibility, as new changes in scope and direction can be implemented in each sprint. Agile can mean less time spent in the planning phases, and a project can diverge from original specifications. Documentation is crucial, regardless of the type of SDLC model for a given application, and is usually done in parallel with the development process.
Editor's note: SDLC is also an abbreviation for Synchronous Data Link Control.
Continue Reading About software development life cycle (SDLC)
- Learn more about the similarities and differences between traditional software development and developing apps for mobile devices