What is SDLC?
The Software Development Life Cycle (SDLC) is a process pursued by software developers to ensure the design of high-quality software. SDLC is also described as Systems Development LifeCycle. A key objective of the SDLC process is not only to create the highest quality software but to do so with an iterative model that enables the development team to achieve results in shorter timeframes and at lower than estimated costs while meeting user expectations.
ISO/IEC 12207 represents an international standard for SDLC phases and processes and framework that defines all the tasks required for the development and maintenance of software.
This standard calls out various phases for SDLC processes.
Software Development Life Cycle Processes
Planning and Requirement Analysis
A fundamental part of the System Development Life Cycle process plan is requirement gathering and analysis to make sure that usage requirements for the software are very well understood. Requirements gathering includes a thorough understanding of how users interact with the software, and how software uses APIs to interact with other software subsystems.
Requirements analysis is used to scope the time and cost associated with any software development effort. Without it, subsequent SDLC phases produce varied results that don't meet a project's initial objectives and plan. Spending time in this phase collecting requirements from various project stakeholders is key to the ultimate success of the project.
Definition of Requirements
Requirements documents are then created from the requirements analysis phase to document identified software use cases and detail the framework for the project to make it clear as to how the software is used, configured and deployed. There are many different names you can find for this document in practice, but it is often referred to as a Software Requirement Specification.
This phase also includes specifying quality assurance requirements so that documented use cases are thoroughly tested to ensure that the software meets the scope of the requirements defined in terms of functionality and its reliability in order for it to scale in a production environment.
The final requirements specification document serves to codify the scope of the software project and get agreement from all constituents involved both inside and outside an organization that this represents what has been agreed to by all parties.
Designing a Product Architecture
This often is called the design phase of the SDLC life cycle. The Software Requirement Specification document plays a key role as a reference for product architects to design a comprehensive product architecture. Based on requirements detailed, product architects may present multiple alternative architectures and codify this in a design specification. A thoroughly designed approach has to define all the architectural modules of the product along with its communication and data flow representation with external third party software modules if used.
Once again, all stakeholders have inputs to this, so that product reliability, modular design for ease of maintenance and estimated costs and timeframes are all considered to achieve that the best design is ultimately selected for building the product during the product development lifecycle.
There are many different names for the document that specifies the product architecture during the software lifecycle including the Design Document Specification.
The Development of the Software
This is the development phase of SDLC where the actual software development starts building the product or subsystem.
Different high-level programming languages such as C++, Java, and PHP can be used for coding by a developer. The programming language is chosen to fit the needs of the software developed.
Software Testing
This is known as the testing phase. With past software development practices, testing was seen as something that was done after the development of all the software. However, a more contemporary approach is to include unit test software modules as they are getting coded and then wrap up with inter-module integration testing.
Final testing takes into consideration top concerns including scale, network connectivity, and overall software reliability. Software testing involves logging product defects as reported, then tracking resolution and ultimately verifying that the change made is working correctly and both customer expectations and quality standards are met.
Deployment and Maintenance
Once the product is tested, and ready to deploy it is released through a formal release mechanism that makes it available to end users. This mechanism may happen in planned release stages so that a succession of capabilities are introduced in a logical fashion that is easier for end users to consume. Once the product is released, it enters a maintenance mode until it reaches the end of its life cycle.
SDLC Models and Practices
There are various tactical SDLC methodologies which are followed during the software development process. Each model adapts the key phases of the SDLC process defined above, but it allows for some customization of the steps to ensure a successful software development outcome.
- Agile Model— This model is an iterative development approach that includes planning, development, prototyping and other software development phases to occur more than once. With the Agile methodology, the end user is able to see how features are implemented and decide on whether or not they are satisfied with the result. This flexibility is both an agile software development model's strength and weakness since requirements are not defined up front but established by these user feature acceptance reviews.
- Waterfall Model—This model involves sequentially finishing each phase meaning that each phase is completed before moving onto the next phase. Upon successful completion of each phase, a project review is undergone to see if the objectives of the previous phase were indeed completed successfully.
- V-Model—This model focuses on the execution of processes in a sequential manner, similar to the Waterfall Model but with more emphasis on testing. Testing procedures are typically written before developers build the code.
- Incremental Model—This life cycle model involves the use of multiple development cycles. The cycles are divided up into smaller development phases that can be easily managed and go through a set of requirements, design, implementation, and testing. The first iteration produces a working version, so working software is created early in the development process.
Other related methodologies are the RAD Model, Spiral Model, Rapid Application Development and Prototyping Models.
Integrating Digital Experience Monitoring with SDLC Models
ThousandEyes offers DEM that integrates synthetic app-layer monitoring with network performance metrics, Path Visualization, Internet routing and Internet outage insights. ThousandEyes DEM addresses the challenges and risks of modern application delivery that depends on complex, external Internet and cloud ecosystems that aren't directly under the control of IT.