SE Notes
Introduction to the Software Development Life Cycle and its phases.
The Software Development Life Cycle (SDLC) is a structured framework that defines the activities, deliverables, and phases involved in developing a software system from initial conception through retirement. It provides a systematic approach to building software that meets quality standards, stays within budget, and delivers on time. Without SDLC, software development would be chaotic—teams would code without understanding requirements, test without knowing what correct behavior looks like, and deploy without confidence that the system works. SDLC brings engineering discipline to an inherently complex creative process.
Why SDLC Exists
In the early days of computing (1950s-1960s), programs were small enough that a single programmer could keep the entire system in their head. As software grew in complexity—from hundreds to millions of lines of code, from single users to millions of concurrent users—ad-hoc development became impossibly risky. Projects failed spectacularly: running years over schedule, millions over budget, or delivering systems that did not work. The "software crisis" of the late 1960s made clear that software needed the same systematic engineering discipline applied to bridges, aircraft, and other complex systems.
SDLC emerged as the software industry's response to this crisis. It provides structure, predictability, and quality assurance mechanisms that enable teams to build complex systems reliably. Different SDLC models (Waterfall, Agile, Spiral) organize these activities differently, but all share the fundamental recognition that software development requires planned, systematic effort across multiple distinct activities.
The Core Phases
Every SDLC model includes these fundamental activities, though they may be organized, sequenced, or emphasized differently:
Planning and Feasibility determines whether the project should proceed at all. Is it technically feasible? Economically justified? Achievable within constraints? This phase produces the project charter and feasibility study.
Requirements Analysis captures what the system must do. Through interviews, workshops, observation, and document analysis, the team defines functional requirements (features), non-functional requirements (performance, security), and constraints. The output is a Software Requirements Specification (SRS).
System Design determines how the system will fulfill requirements. Architects define the overall structure, choose technologies, design databases, specify interfaces, and decompose the system into buildable components. Design documents guide implementation.
Implementation (Coding) transforms designs into working software. Developers write code, build databases, create interfaces, and integrate components. This phase also includes unit testing and code reviews.
Testing verifies that the implemented system meets its requirements. Integration testing, system testing, and acceptance testing progressively validate the system at increasing levels of scope.
Deployment releases the system to its production environment and users. This includes installation, configuration, data migration, and user training.
Maintenance provides ongoing support—fixing defects, adapting to environmental changes, and enhancing capabilities—throughout the system's operational life.
SDLC Models
Different models organize these phases in different ways to address different project characteristics:
| Waterfall: Plan | Require → Design → Code → Test → Deploy → Maintain |
| Iterative: [Plan | Design → Code → Test] → [Refine → Refine → ...] → Deploy |
| Incremental: [Increment 1: Design | Code→Test→Deploy] → [Increment 2] → [Increment 3] |
| Agile: [Sprint 1] | [Sprint 2] → [Sprint 3] → ... → [Sprint N] |
| Spiral: [Risk Analysis | Prototype → Evaluate] → [Repeat with more detail] |
The choice of model depends on requirement stability, project risk, team experience, stakeholder availability, and organizational culture.
Real-World Example: Mobile Banking App SDLC
Planning (2 weeks): Bank evaluates feasibility of mobile banking. Cost-benefit analysis shows $2M development cost offset by $500K/year in reduced branch transactions and improved customer retention. Project approved.
Requirements (6 weeks): Team interviews customers, branch staff, security officers, and compliance. Key requirements: balance viewing, fund transfers, bill payment, mobile check deposit, biometric login, PCI-DSS compliance.
Design (8 weeks): Architecture team designs a three-tier system: React Native mobile app, Node.js API gateway, existing core banking integration via secure service bus. Database schema for mobile-specific data (devices, sessions, preferences).
Implementation (16 weeks): Four development squads work in parallel: authentication team, transactions team, payments team, and integration team. Two-week sprints with continuous integration.
Testing (6 weeks): Security penetration testing, performance testing under load (50,000 concurrent users), accessibility testing, device compatibility testing across 20 phone models, and user acceptance testing with 100 selected customers.
Deployment (4 weeks): Staged rollout—internal employees first, then 5% of customers, then 25%, then full availability. Monitoring dashboards track error rates, performance, and user adoption.
Maintenance (ongoing): Monthly security patches, quarterly feature updates, continuous monitoring, and incident response.
Benefits of Following SDLC
Predictability: Stakeholders understand where the project stands and what comes next. Clear milestones enable meaningful progress tracking.
Quality Assurance: Each phase includes verification activities that catch defects early when they are cheap to fix. A requirements defect caught during analysis costs $100 to fix; the same defect found during testing costs $10,000.
Risk Management: Structured phases create natural checkpoints where the project can be evaluated, redirected, or terminated before excessive investment.
Communication: SDLC provides common vocabulary and shared understanding between developers, managers, customers, and other stakeholders.
Repeatability: Organizations can improve their development process by measuring outcomes against SDLC phase activities, identifying which activities need strengthening.
Choosing an SDLC Model
No single model works for all projects. Consider: Are requirements stable and well-understood? (Favors Waterfall/V-Model.) Are requirements likely to change? (Favors Agile.) Is the project high-risk with uncertain feasibility? (Favors Spiral.) Does the client need early delivery of partial functionality? (Favors Incremental.) Many modern organizations use hybrid approaches, applying Agile at the team level within a broader structured framework for enterprise coordination.
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for SDLC Introduction.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Software Engineering topic.
Search Terms
software-engineering, software engineering, software, engineering, development, life, cycle, sdlc
Related Software Engineering Topics