Software Development Life Cycle (SDLC) is a process to design, develop, test, and maintain high-quality software. The SDLC aims to deliver software with high customer satisfaction, in time, and on budget.
SDLC helps software development teams build a comprehensive plan to design, develop and maintain software. ISO/IEC 12207 is an international standard for software life-cycle processes that many software development organizations follow.
SDLC is also called the software development process.
Life Cycle Stages
Requirement analysis consists of activities to elicit, record and analyze customer requirements. During this process, analysts interview stakeholders and record their findings. They then analyze the results for conciseness, clarity, and consistency. The output of this process is the software requirement specification (SRS) document.
SRS becomes the basis for your entire project. It lays the framework that every team involved in development will follow — development, quality assurance, operations, and maintenance. SRS helps to keep everyone on the same page.
Software Design is a process in which product architects, based on the requirements and constraints in the requirement specification (SRS), define the overall software architecture. There are two kinds of documents are generated in this phase:High-Level Design (HLD)
- Listing of all modules
- A functional profile of every module
- Module interfaces and dependencies
- Data and control flow diagrams
- Functional logic (including algorithms to be used)
- Database tables, columns, indices, and constraints
- Comprehensive specification of the interface
- Error handling
In the coding stage, developers are assigned to various modules and write code based on the software design documents produced in the design phase. It is the most extended phase of the Software Development Life Cycle process.
Static testing, which includes code reviews, validating coding conventions, adherence to security standards, etc., happens concurrently in this phase.
In this stage, the software system is deployed in a test environment and subject to testing by the QA team. They perform many kinds of testing functional and non-functional aspects of the software. Some of the important ones are:
The development team fixes these defects based on their defect priority and resends them back to the QA team for a re-test.
This process continues till the system is stable and working according to the business requirements.
The maintenance phase consists of activities after customers start using the software. During use, customers find bugs that were undetected during testing. They also request major and minor enhancements to the system.
The main focus of this SDLC phase is to ensure that bug fixes and enhancements happen quickly without affecting other parts of the system.
Popular SDLC Models
The waterfall is the classic SDLC model. In this model, we finish one phase and then start the next. The result of one step acts as the input for the next phase. The critical drawback of this model is that even minor roadblocks in one phase can delay the start of the next stage. This SDLC model is also criticized for being documentation-intensive and slow to respond to changing requirements.
In the incremental SDLC model, requirements are logically grouped at the start of the project. Each group goes through the design, implementation, and testing phases as per the waterfall model. This process is repeated for each group, with each release adding more functionality to the previous group until all requirements are implemented. The main advantage of incrementally building the software is that you minimize the overall risk with regular releases.
In the V-Model, also called the Verification and Validation model, the coding and testing happen side by side. The essential advantage of this model is that the QA team gets into the action soon and doesn't wait for the coding phase to complete. You use the V-Model when requirements are finalized and clearly understood; otherwise, testing would require a lot of rework.
The Big Bang model, named after its namesake cosmological theory in which the universe was created out of nothing, starts the project with almost nothing - no formal structure or organization. Unlike other SDLC models, it requires virtually no planning, organization, best practices, or typical procedures. Development happens in an ad hoc way based on information available instead of thinking about the future. This model is suitable for small projects or hackathons.
Based on the twelve principles of the Agile manifesto, the agile model distinctively approaches software development. Rather than focusing on understanding and finalizing requirements, it recognizes that they are dynamic and subject to change. Instead, they concentrate on being flexible to accommodate these changes even late in the development stage. In this model, small cross-functional teams interact daily and deliver short bursts of working software, usually every two to eight weeks. The focus is on having open communication between the various stakeholders and maintaining that working software is the most important measure of progress.