Software Development LifeCycle(SDLC)

Manminder Singh
11 min readFeb 25, 2023

--

Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high-quality software.

Purpose of this Article: To understand the SDLC concept and models.

The SDLC aims to produce high-quality software that meets or exceeds customer expectations and reaches completion within times and cost estimates.

  • SDLC is the acronym for the Software Development Life Cycle.
  • It is also called as Software Development Process.
  • SDLC is a framework defining tasks performed at each step in the software development process.

What is SDLC?

The software development lifecycle (SDLC) is

  • the cost-effective and time-efficient process that development teams use to design and build high-quality software.
  • The goal of SDLC is to minimize project risks through planning so that software meets customer expectations during production and beyond.
  • It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software.
  • The life cycle defines a methodology for improving the quality of software and the overall development process.
Graphical representation of the various stages of a typical SDLC.

A typical Software Development Life Cycle consists of the following stages

Stage 1: Planning and Requirement Analysis: It is a fundamental stage in SDLC, performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry. This information is then used to plan the basic project approach and to conduct a product feasibility study in the economical, operational and technical areas.

Planning for the quality assurance requirements and identification of the risks associated with the project is also done in the planning stage. The outcome of the technical feasibility study is to define the various technical approaches that can be followed to implement the project successfully with minimum risks.

Stage 2: Defining Requirements: Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved by the customer or the market analysts. This is done through an SRS (Software Requirement Specification)document which consists of all the product requirements to be designed and developed during the project life cycle.

Stage 3: Designing the Product Architecture: SRS is the reference for product architects to come out with the best architecture for the product to be developed. Based on the requirements specified in SRS, usually, more than one design approach for the product architecture is proposed and documented in a DDS — Design Document Specification.

This DDS is reviewed by all the important stakeholders and based on various parameters such as risk assessment, product robustness, design modularity, budget and time constraints, the best design approach is selected for the product.

A design approach clearly defines all the architectural modules of the product along with its communication and data flow representation with the external and third-party modules (if any). The internal design of all the modules of the proposed architecture should be clearly defined with the minutest of details in DDS.

Stage 4: Building or Developing the Product: In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.

Developers must follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers, etc. are used to generate the code. Different high-level programming languages such as C, C++, Pascal, Java and PHP are used for coding. The programming language is chosen concerning the type of software being developed.

Stage 5: Testing the Product: This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are mostly involved in all the stages of SDLC. However, this stage refers to the testing-only stage of the product where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS.

Stage 6: Deployment in the Market and Maintenance: Once the product is tested and ready to be deployed it is released formally in the appropriate market. Sometimes product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing).

Then based on the feedback, the product may be released as it is or with suggested enhancements in the targeted market segment. After the product is released in the market, its maintenance is done for the existing customer base.

SDLC Models

There are various software development life cycle models defined and designed which are followed during the software development process. These models are also referred to as Software Development Process Models”. Each process model follows a Series of steps unique to its type to ensure success in the process of software development. Following are the most important and popular SDLC models followed in the industry −

  • Waterfall Model
  • Iterative Model
  • Agile
  • Spiral Model

Different SDLC Models/Methodologies

  1. Waterfall Model: In this approach, the whole process of software development is divided into separate phases. Typically, the outcome of one phase acts as the input for the next phase sequentially.
    This model is used when:-
  • The requirements are consistent and rarely altered.
  • Small-scale to medium-scale applications.
  • No criterion is unclear or difficult to understand.
  • The development environment is secure.
  • The employed methods and tools are static and non-dynamic.
  • Resources are readily accessible and well-trained.
Different Phases in the Waterfall model

The sequential phases in the Waterfall model are −

  • Requirement Gathering and analysis − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document.
  • System Design − The requirement specifications from the first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.
  • Implementation − With inputs from the system design, the system is first developed in small programs called units, which are integrated into the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing.
  • Integration and Testing − All the units developed in the implementation phase are integrated into a system after the testing of each unit. Post integration the entire system is tested for any faults and failures.
  • Deployment of system − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.
  • Maintenance − If there are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

Advantages: Simple & easy to understand, Easy to arrange tasks, clearly defined stages

Disadvantages: No working software is produced until late during the life cycle, High amount of risk and uncertainties, and cannot accommodate changing requirements, and Poor model for long, complex and ongoing projects.

2. Iterative Model: The iterative process starts with a simple implementation of a subset of the software requirements and iteratively enhances the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).

Iterative and Incremental model

Iterative and Incremental development is a combination of both iterative design or iterative method and incremental build model for development. “During software development, more than one iteration of the software development cycle may be in progress at the same time.” This process may be described as an “evolutionary acquisition” or “incremental build” approach.”

In this incremental model, the whole requirement is divided into various builds. During each iteration, the development module goes through the requirements, design, implementation and testing phases. Each subsequent release of the module adds a function to the previous release. The process continues till the complete system is ready as per the requirement.

Like other SDLC models, Iterative and incremental development has some specific applications in the software industry. This model is most often used in the following scenarios −

  • The requirements of the complete system are clearly defined and understood.
  • Major requirements must be defined; however, some functionalities or requested enhancements may evolve with time.
  • There is a time to the market constraint.
  • New technology is being used and is being learnt by the development team while working on the project.
  • Resources with needed skill sets are not available and are planned to be used on a contract basis for specific iterations.
  • There are some high-risk features and goals which may change in the future.

3. AGILE MODEL: Agile SDLC model is a combination of iterative and incremental process models with a focus on process adaptability and customer satisfaction by rapid delivery of working software products. Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross-functional teams working simultaneously on various areas −

  • Planning
  • Requirements Analysis
  • Design
  • Coding
  • Unit Testing and
  • Acceptance Testing.

At the end of the iteration, a working product is displayed to the customer and important stakeholders.

What is Agile?
The agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided into time boxes (small time frames) to deliver specific features for a release.

The iterative approach is taken and a working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.

Agile Model

Agile Model — Pros and Cons
Agile methods are being widely accepted in the software world recently. However, this method may not always be suitable for all products. Here are some pros and cons of the Agile model.

The advantages of the Agile Model are as follows −

  • Is a very realistic approach to software development.
  • Promotes teamwork and cross-training.
  • Functionality can be developed rapidly and demonstrated.
  • Resource requirements are minimum.
  • Suitable for fixed or changing requirements
  • Delivers early partial working solutions.
  • A good model for environments that change steadily.
  • Minimal rules and documentation are easily employed.
  • Enables concurrent development and delivery within an overall planned context.
  • Little or no planning is required.
  • Easy to manage.

The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of the iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral.

4. Spiral Model — Design: The spiral model has four phases. A software project repeatedly passes through these phases in iterations called Spirals.

Identification: This phase starts with gathering the business requirements in the baseline spiral. In the subsequent spirals as the product matures, identification of system requirements, subsystem requirements and unit requirements are all done in this phase.

This phase also includes understanding the system requirements through continuous communication between the customer and the system analyst. At the end of the spiral, the product is deployed in the identified market.

Design: The Design phase starts with the conceptual design in the baseline spiral and involves the architectural design, logical design of modules, physical product design and the final design in the subsequent spirals.

Construct or Build: The Construct phase refers to the production of the actual software product at every spiral. In the baseline spiral, when the product is just thought of and the design is being developed a POC (Proof of Concept) is developed in this phase to get customer feedback.

Then in the subsequent spirals with higher clarity on requirements and design details, a working model of the software called to build is produced with a version number. These builds are sent to the customer for feedback.

Evaluation and Risk Analysis: Risk Analysis includes identifying, estimating and monitoring the technical feasibility and management risks, such as schedule slippage and cost overrun. After testing the build, at the end of the first iteration, the customer evaluates the software and provides feedback.

Representation of the Spiral Model, listing the activities in each phase.

Based on the customer evaluation, the software development process enters the next iteration and subsequently follows the linear approach to implement the feedback suggested by the customer. The process of iterations along the spiral continues throughout the life of the software.

Spiral Model Application: The Spiral Model is widely used in the software industry as it is in sync with the natural development process of any product, i.e. learning with maturity which involves minimum risk for the customer as well as the development firms.

The following pointers explain the typical uses of a Spiral Model −

  • When there is a budget constraint and risk evaluation is important.
  • For medium to high-risk projects.
  • Long-term project commitment because of potential changes to economic priorities as the requirements change with time.
  • Customer is not sure of their requirements which is usually the case.
  • Requirements are complex and need evaluation to get clarity.
  • The new product line should be released in phases to get enough customer feedback.
  • Significant changes are expected in the product during the development cycle.

Spiral Model — Pros and Cons: The advantage of the spiral lifecycle model is that it allows elements of the product to be added in when they become available or known. This assures that there is no conflict with previous requirements and design.

This method is consistent with approaches that have multiple software builds and releases which allows making an orderly transition to maintenance activity. Another positive aspect of this method is that the spiral model forces early user involvement in the system development effort.

On the other side, it takes very strict management to complete such products and there is a risk of running the spiral in an indefinite loop. So, the discipline of change and the extent of taking change requests is very important to develop and deploying the product successfully.

The advantages of the Spiral SDLC Model are as follows −

  • Changing requirements can be accommodated.
  • Allows extensive use of prototypes.
  • Requirements can be captured more accurately.
  • Users see the system early.
  • Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.

The disadvantages of the Spiral SDLC Model are as follows −

  • Management is more complex.
  • The end of the project may not be known early.
  • Not suitable for small or low-risk projects and could be expensive for small projects.
  • The process is complex and the spiral may go on indefinitely.
  • A large number of intermediate stages require excessive documentation.

--

--