SDLC - Software Development Life Cycle
Overview
A system development life cycle, or SDLC, is essentially a software project management model. It defines different stages essential to bringing a software project from its initial idea or conception all the way to deployment and later maintenance.
What is SDLC (Software Development Life Cycle)?
SDLC is a methodical approach to developing software that ensures its quality and correctness. The SDLC process is designed to provide high-quality software that satisfies customer requirements and ensures system development is completed within the schedule and budget constraints. SDLC is a detailed plan that describes how to plan, construct, and maintain specific software. An SDLC Model is a diagrammatic and graphical depiction of the software life cycle. It represents all of the procedures required to move a software product through the stages of its life cycle. It also captures the structure in which these procedures will be carried out. In other words, it maps the many actions performed on a software product from its inception through its retirement.
The Phases of SDLC
Seven phases together constitute an SDLC model. These phases cover every stage in the lifecycle of a software system, starting from requirement collection and going all the way to deployment and maintenance. Each SDLC life cycle phase has its own set of processes and deliverables that feed into the next. The seven phases of SDLC include planning, analysis, design, development, testing, implementation, and maintenance.
Phase 1: Requirement Collection
The most crucial and fundamental stage in SDLC is requirement collection. It is carried out by senior members of the team with input from the client or customer, the sales department, market surveys, and industry domain specialists. This data is then used to plan the basic project approach and conduct product feasibility studies on various aspects described in the next phase of the SDLC methodology. The requirement collection phase is essential for understanding the software product's business use case. The business analyst sets up a meeting with the client to acquire all of the facts, such as what the customer wants to construct, who will be the end user, and what purpose the product will serve. A fundamental grasp or knowledge of the product is required before developing it. The planning step also includes preparing for quality assurance requirements and identifying project risks.
Phase 2: Defining requirements and Feasibility Study
Following the completion of the requirement collection, the next stage is to explicitly describe and record the product needs and obtain approval from the client or market analysts. This is accomplished through the SRS (Software Requirement Specification) document, which includes all the product requirements to be defined and developed throughout the project life cycle. Once the SRS document is prepared, the requirements are evaluated for feasibility checks over these parameters:
- Economical: Can we finish the project within the budget?
- Legal: Can we handle this project in light of cyber law and other regulatory frameworks/compliances?
- Operation feasibility: Can we construct the activities that the client expects?
- Technical: Determine whether the current computer system is capable of supporting the software.
- Schedule: Determine whether or not the project can be completed within the time frame specified.
Phase 3: Design
In this phase, the SRS document is used as input to prepare the DDS - Design Document Specification. Software architects use the requirements defined in SRS as a reference to come up with the best architecture for the product being developed. Ideally, multiple design approaches are proposed and documented in the DDS. All essential stakeholders review this DDS, and the optimal design strategy for the product is chosen based on many characteristics such as risk assessment, product robustness, design modularity, budget, and time restrictions. A design approach explicitly outlines all of the product's architectural components, as well as its communication and data flow representation with external and third-party modules (if any). The internal design of all components of the proposed architecture should be explicitly documented in DDS down to the smallest detail.
Phase 4: Coding
In this phase, the developer receives the design document, and the software design is converted into source code in the most appropriate high-level programming language. It can be called the most prolonged phase of SDLC.
Phase 5: Testing
Once the coding phase is over and the modules are ready for testing, they are deployed in the testing environment and tested against the requirements to ensure that the products address the needs identified and obtained during the requirements stage. Unit testing, integration testing, system testing, and acceptability testing are all performed during this stage. The QA (Quality Assurance) and testing teams may discover faults or defects, which they report to developers. The development team fixes the bug and sends it back to QA for another round of testing. This procedure is repeated retesting and regression testing) until the program is bug-free, stable, and meets the system's business requirements. Testers refer to the SRS document to ensure that the software meets the customer's standard.
Phase 6: Installation/Deployment
Once the testing phase is over and no bugs or errors are left in the system, the deployment process starts. Following testing, the overall design of the software will be completed. Through developer efforts, various modules or designs will be integrated into the core source code, typically by employing training environments to find further faults or defects. Finally, the information system will be integrated into its environment. After clearing this stage, the program is theoretically market-ready and can be distributed to any end user.
Phase 7: Maintenance
Once the built software is deployed, issues might arise while the code runs in the production environment and need to be solved on the go. In SDLC models, this is called the maintenance phase of a software project, and it consists of mainly three activities-
- Bug fixing - bugs or errors arising due to unforeseen circumstances which were not taken care of during testing.
- Upgrading to newer versions
- Enhancement - adding new features
The focus of this phase is to ensure that needs continue to be met and that the system continues to perform as per the requirements collected in the first phase.
SDLC Models
Waterfall, Incremental, Agile, V model, Spiral, and Big Bang are some popular SDLC models in software engineering. These models might have different approaches, but the essential phases and activities remain the same. These models are also known as "Software Development Process Models." Each process model follows a distinct set of phases to ensure success in the software development process.
Why use SDLC?
SDLC models are by project managers to form a basis for planning, scheduling, and estimating the life cycle of an IT project. They use SDLC models to outline the various stages required in software development and ensure every stage is finished on time and the software product meets the quality standards. The development of a software product would not be systematic and disciplined if a precise SDLC model is not used. When a team produces a software product, team members must grasp when and what to do. Otherwise, it would be an indication of turmoil and project failure.
Conclusion
- The SDLC process is designed to provide high-quality software that satisfies customer requirements and ensures system development is completed within the schedule and budget constraints.
- SDLC provides a framework for a standard set of activities and deliverables.
- Without SDLC models, it becomes tough for software project managers to monitor the project's progress.
- Different SDLC models might have different approaches, but the essential phases and activities remain the same.
FAQs
Q: What are the seven phases of SDLC?
A: The seven phases of SDLC include planning, analysis, design, development, testing, implementation, and maintenance.
Q: Which SDLC model is the best?
A: There is not one particular best model. It largely depends on the project goals and requirements. For a specific use case, one model can be more suitable than another.