The Software Development Life Cycle (SDLC) is a structured framework that defines the process used to develop, maintain, and replace software systems. It ensures high-quality software is delivered on time and within budget by breaking the project into well-defined phases.
- Provides a systematic approach to software development
- Ensures software meets user requirements
- Helps manage cost, time, and quality
- Reduces project risk through planning and documentation
The first phase defines the scope and purpose of the project.
- Identify the problem or opportunity
- Conduct a Feasibility Study to evaluate viability:
- Technical Feasibility — Can it be built with available technology?
- Economic Feasibility — Is it cost-effective?
- Operational Feasibility — Will users accept and use it?
- Schedule Feasibility — Can it be completed within the required timeframe?
- Estimate resources, timeline, and budget
Developers and stakeholders gather and document all functional and non-functional requirements.
- Functional requirements: what the system must do (e.g., login, generate reports)
- Non-functional requirements: performance, security, scalability
- Output: Software Requirement Specification (SRS) document — a formal contract between client and developers
The SRS is translated into technical blueprints.
- Logical Design — data flow diagrams, entity-relationship diagrams
- Physical Design — database schemas, system architecture, UI prototypes
- Defines hardware and software requirements
Developers write the actual source code based on the design documents.
- Programming languages and tools are selected
- Code is written in small units (modules)
- Version control systems (e.g., Git) are used to manage code
The software is rigorously tested to find and fix defects.
| Type | Description |
|---|
| Unit Testing | Testing individual modules |
| Integration Testing | Testing combined modules |
| System Testing | Testing the complete system |
| User Acceptance Testing (UAT) | End-users verify the system meets their needs |
Verification vs Validation:
- Verification — Are we building the product right? (matches design specs)
- Validation — Are we building the right product? (meets user needs)
The tested software is released to the production environment.
Deployment Strategies:
| Strategy | Description |
|---|
| Direct Changeover | Old system replaced immediately by new system (risky) |
| Parallel Running | Both old and new systems run simultaneously until new system is verified |
| Pilot Deployment | New system tested with a small group of users before full rollout |
| Phased Implementation | System rolled out in stages to different departments or regions |
After deployment, the system is monitored and updated.
- Corrective Maintenance — fixing bugs found after release
- Adaptive Maintenance — updating software for new environments
- Perfective Maintenance — adding new features or improving performance
- Linear and sequential — each phase must be completed before the next begins
- Simple and easy to manage
- Disadvantage: Inflexible; difficult to go back to a previous phase
- Best for: projects with well-defined, stable requirements
Planning → Analysis → Design → Coding → Testing → Deployment → Maintenance
- Iterative and incremental — software is developed in small cycles called sprints
- Highly flexible; requirements can change during development
- Continuous feedback from stakeholders
- Best for: projects with evolving or unclear requirements
- Combines Waterfall and iterative approaches
- Emphasizes risk analysis at each cycle
- Each spiral loop passes through: Planning → Risk Analysis → Engineering → Evaluation
- Best for: large, complex, high-risk projects
- Development starts with a partial implementation that is progressively improved
- Each iteration produces a working version of the software
- Requirements are refined with each cycle
| SDLC Phase | Key Output |
|---|
| Planning | Feasibility Report |
| Requirement Analysis | SRS Document |
| Design | System Architecture / Blueprints |
| Implementation | Source Code |
| Testing | Test Reports / Bug-free Software |
| Deployment | Live System |
| Maintenance | Updated / Patched System |