Software Development Life Cycle (SDLC)

Software Development Life Cycle Overview

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 Life Cycle. A key objective of the SDLC process is to not only create high-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 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:

Planning and Requirement Analysis

A fundamental part of the SDLC process 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. 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 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 as it scales 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. 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 thorough design 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 the product.

There are many different names for the document that specifies the product architecture including the Design Document Specification.

The Development of the Software

This is the development phase of SDLC where the actual software development starts to build the product or subsystem.

Different high-level programming languages such as C++, Java, and PHP can be used for coding. 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 unit test software modules as they are getting coded and then wrap up with inter-module integration testing.

Final testing takes into consideration scale, network connectivity, and overall software reliability. Software testing involves logging product defects as reported, then tracking resolution and ultimately verifying that the fix 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 allows 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 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 developing 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 of modern application delivery that depends on complex, external Internet and cloud ecosystems that aren't directly under the control of IT.