BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Software development life cycle (SDLC) is a concept used in project management to describe the stages and tasks involved in each step of writing and deploying software. An SDLC model maps the software development process from its initial planning through maintenance and eventual retirement of the completed application.
An important goal of SDLC is to quickly and efficiently produce high-quality software in a series of phases that are called steps or phases. The number of steps in an SDLC will vary depending on the business and its software product goals; typically there will be between five and seven steps. For example, at the most basic level, software is designed, developed, tested and then released. Upon release, the software is maintained until it is discontinued.
Various SDLC models exist, and the right one depends on any given project. Several models can be combined into a hybrid methodology. Documentation is crucial, regardless of the type of SDLC model for a given application, and is usually done in parallel with the development process.
For example, the Waterfall model is a linear, sequential approach to the software development life cycle (SDLC) that emphasizes a logical progression of steps. Similar to the way water creates a waterfall by flowing down a creek and over a cliff, once development work in a waterfall model has been completed, it cannot be revisited. The term is often associated with large, monolithic software products developed before the turn of the century.
In contrast, the Agile model for SDLC is a more modular and flexible approach. Agile approaches software development in incremental cycles, called sprints. Each sprint is iterative and code is designed to be modular.
Other popular SDLC models include:
- rapid application development (RAD)
- Joint Application Development (JAD)
- spiral model
- build-and-fix model
- synchronize-and-stabilize model
Software development life cycle steps
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.
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