The Software Development Life Cycle is a structured process for planning, creating, testing, and deploying software. All major methodologies — Waterfall, Agile, Spiral — implement the same phases in different orders and iterations.
| Phase | Goal | Key artifact |
|---|---|---|
| Planning | Scope, resources, schedule | Project plan, feasibility report |
| Requirements | What the system must do | SRS (Software Requirements Spec) |
| Design | How the system will do it | Architecture docs, UML diagrams |
| Implementation | Write code | Source code, code reviews |
| Testing | Verify correctness | Test plans, bug reports |
| Deployment | Release to production | Release notes, CI/CD pipeline |
| Maintenance | Bug fixes, enhancements | Patches, updated docs |
Sequential phases. Each phase must complete before the next begins. Requirements are locked early.
Iterative cycles (sprints, usually 2 weeks). Requirements evolve; working software is delivered frequently.
Agile Manifesto (2001): Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan.
Functional requirements define what the system does: "Users can log in with email and password."
Non-functional requirements (NFRs) define how well it does it:
Classify each as Functional (F) or Non-Functional (NFR):
a) "The system shall send a password reset email within 30 seconds."
b) "Users can create, edit, and delete posts."
c) "The API must respond in under 200ms for 99th percentile requests."
Your team has a 2-week sprint and capacity of 40 story points. You have these backlog items: Login (8pts), Dashboard (13pts), Search (8pts), Export PDF (5pts), User Profile (8pts), Dark Mode (3pts). Which items fit in one sprint?
In the Waterfall model, when is testing performed?
In Waterfall, testing is a distinct phase that happens after implementation. Agile integrates testing throughout each sprint.
The beginning phase is Planning/Requirements. Testing requires implemented code to verify.
You cannot test software that hasn't been written. In Waterfall, testing follows implementation.
Which of the following is a non-functional requirement?
Functional requirements describe what the system does. NFRs describe quality attributes: speed, reliability, security, scalability.
What the login form does is functional. How fast it responds or how secure it is would be NFRs.
Password reset is a capability/feature. NFRs would be: 'Reset email delivered within 60 seconds' or 'Token expires in 15 minutes'.
A key advantage of Agile over Waterfall is:
The Agile Manifesto explicitly deprioritizes exhaustive documentation. Waterfall typically produces more formal documentation.
Agile's flexible scope makes fixed pricing difficult. Waterfall's locked requirements allow upfront cost estimation.
Agile planning is continuous: sprint planning, daily standups, retrospectives. It's not less planning, just more adaptive planning.
What does the 'M' in SMART requirements stand for?
SMART = Specific, Measurable, Achievable, Relevant, Time-bound. Measurable means you can verify when the requirement is met.
SMART: Specific, Measurable, Achievable, Relevant, Time-bound. Each letter has a specific meaning for writing good requirements.
SMART ensures requirements are well-defined and testable. Modifiable is a different quality (important but not part of SMART).
Technical debt refers to:
Technical debt is a software metaphor. It's the future rework cost of choosing a fast but poor solution now.
Technical debt is code that exists but was written in a way that will slow future development. Deleted code is simply gone.
Outdated documentation is a symptom. Technical debt broadly covers all forms of accumulated shortcuts: messy code, missing tests, outdated deps, poor architecture.