The Software Development Life Cycle (SDLC) is a systematic process for building software that ensures the quality and correctness of the software built. This process is followed for a software development project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace, and alter or enhance specific software. The life cycle also defines a methodology for improving the quality of software and the overall development process.
SDLC process aims to produce high-quality software which meets customer expectations. The software development should be complete in the pre-defined time frame and cost. Every phase of the SDLC has its own process and deliverables that feed into the next phase. Here we will get a view of SDLC phases and popular models.
Here, are prime reasons why SDLC is important for developing a software system.
- It offers a basis for project planning, scheduling, and estimation.
- Provides a framework for a standard set of activities and deliverables.
- It is a mechanism for project tracking and controlling.
- Increases visibility of project planning to all stakeholders of the development process.
- SDLC enhances development speed.
- Improves client relations.
- Helps to minimize project risk and project management plan overhead.
The entire SDLC process can be divided into the following stages:
- Phase 1: Requirement Collection and Analysis
- Phase 2: Feasibility Study
- Phase 3: Design
- Phase 4: Coding/Development
- Phase 5: Testing
- Phase 6: Installation/Deployment
- Phase 7: Post Implementation Support/Maintenance
Phase 1: Requirement Collection and Analysis: The requirement is the first stage in the SDLC process. It is conducted by the senior team members with inputs from all the stakeholders and domain experts in the industry. Planning for the quality assurance requirements and recognization of the risks involved is also done at this stage.
This stage gives a clearer picture of the scope of the entire project and the anticipated issues, opportunities, and directives which triggered the project. Requirements Gathering Stage need teams to get detailed and precised requirements. This helps companies to finalize the necessary timeline to finish the work of that system.
Phase 2: Feasibility Study: This process conducted with the help of 'Software Requirement Specification' document also known as 'SRS' document. It includes everything which should be designed and developed during the project life cycle.
There are mainly five types of feasibility checks:
- Economic: Can we complete the project within the budget or not?
- Legal: Can we handle this project as cyber law and other regulatory framework/compliance?
- Operation Feasibility: Can we create operations which is expected by the client?
- Technical: Need to check whether the current hardware configuration system can support the software.
- Schedule: Deciding that the project can be completed within the given schedule or not.
Phase 3: Design: In this third phase, the system and software design documents are prepared as per the requirement specification document. This helps to define overall system architecture. This design phase serves as input for the next phase of the model. There are two kinds of design documents developed in this phase:
High-Level Design (HLD)
- Brief description and name of each module
- An outline about the functionality of every module
- Interface relationship and dependencies between modules
- Database tables identified along with their key elements
- Final architecture diagrams along with technology details
Low-Level Design (LLD)
- Functional logic of the modules
- Database tables, which include type and size
- Complete detail of the interface
- Addresses all types of dependency issues
- Listing of error messages
- Final input and outputs for every module
Phase 4: Coding/Development: Once the system design phase is over, the next phase is coding (or development). In this phase, developers start to build the entire system by writing code using the chosen programming language. In the coding phase, tasks are divided into units or modules and assigned to the various developers. It is the longest phase of the Software Development Life Cycle process.
In this phase, Developer needs to follow certain predefined coding guidelines. They also need to use programming tools like compiler, interpreters, debugger to generate and implement the code.
Phase 5: Testing: Once the software is complete, and it is deployed in the testing environment, the testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer requirement.
During this phase, QA and testing team may find some bugs/defects which they communicate to developers. The development team fixes the bug and send back to QA for a re-test. This process continues until the software is bug-free, stable, and working according to the business needs of that system.
Phase 6: Installation/Deployment: Once the software testing phase is over and no bugs or errors left in the system then the final deployment process starts. Based on the feedback given by the project manager, the final software is released and checked for deployment issues if any.
Phase 7: Post Implementation Support/Maintenance: Once the system is deployed, and end-users start using the developed system, following actions are needed.
- Bug Fixing- Bugs are reported because of some scenarios which are not tested at all.
- Upgrade- Upgrading the application to the newer versions of the software.
- Enhancement- Adding some new features into the existing software. This can be termed as "Change Requests (CR).
The main focus of this SDLC phases is to ensure needs continue to be met and the system continues to perform as per the specification mentioned in the first phase.
Popular SDLC Models
Here, are some most important phases of SDLC life cycle.
Waterfall Model: The waterfall is a widely accepted SDLC model. In this approach, the whole process of the software development is divided into various phases. In this SDLC model, the outcome of one phase acts as the input for the next phase. This SDLC model is documentation-intensive, with earlier phases documenting what need be performed in the subsequent phases.
Incremental Approach: The incremental model is not a separate model. It is essentially a series of waterfall cycles. The requirements are divided into groups at the start of the project. For each group, the SDLC model is followed to develop software. The SDLC process is repeated, with each release adding more functionality until all requirements are met. In this method, every cycle act as the maintenance phase for the previous software release. Modification to the incremental model allows development cycles to overlap. After that subsequent cycle may begin before the previous cycle is complete.
V-Model: In this type of SDLC model testing and the development, the phase is planned in parallel. So, there are verification phases on the side and the validation phase on the other side. V-Model joins by Coding phase.
Agile Model: Agile methodology is a practice which promotes continue interaction of development and testing during the SDLC process of any project. In the Agile method, the entire project is divided into small incremental builds. All of these builds are provided in iterations, and each iteration lasts from one to three weeks.
Spiral Model: The spiral model is a risk-driven process model. This SDLC model helps the team to adopt elements of one or more process models like a waterfall, incremental, waterfall, etc. This model adopts the best features of the prototyping model and the waterfall model. The spiral methodology is a combination of rapid prototyping and concurrency in design and development activities.
Big Bang Model: Big bang model is focusing on all types of resources in software development and coding, with no or very little planning. The requirements are understood and implemented when they come. This model works best for small projects with smaller size development team which are working together. It is also useful for academic software development projects. It is an ideal model where requirements is either unknown or final release date is not given.
- The SDLC is a systematic process for building software that ensures the quality and correctness of the software built.
- SDLC process provides a framework for a standard set of activities and deliverables.
- Seven different SDLC stages are 1) Requirement collection and analysis 2) Feasibility study: 3) Design 4) Coding/Development 5) Testing: 6) Installation/Deployment and 7) Maintenance.
- The senior team members conduct the requirement analysis phase.
- Feasibility Study stage includes everything which should be designed and developed during the project life cycle.
- In the Design phase, the system and software design documents are prepared as per the requirement specification document.
- In the coding (or development) phase, developers start build the entire system by writing code using the chosen programming language.
- Testing is the next phase which is conducted to verify that the entire application works according to the customer requirement.
- Installation and deployment face begins when the software testing phase is over, and no bugs or errors left in the system.
- Bug fixing, upgrade, and engagement actions covered in the maintenance face.
- Waterfall, Incremental, Agile, V model, Spiral, Big Bang are some of the popular SDLC models.