The software development models, or Software Development Life-cycles (SDLCs), are methodologies to approach organizing a software project.
Waterfall
The waterfall specification gets written before any code written. We hand off spec and code directly to tester, and code should behave like spec.
- Code specification exactly
- Spec does not update
Code happens only after stuff is done
Agile
Agile are designed to work with minimum specification before code. Spec is updated constantly as code changes and get user feedback.
Spiral (Software Development)
The Spiral model is as SDLC that combines the iterative development approach of Agile and the structure of Waterfall.
It focuses on Risk to mitigate it.
- Waterfall style requirements detailing
- Preliminary design
- First prototype: scaled down system
- Second prototype
- Mitigates strengths, weaknesses, and risks of 1st prototype
- Augmented requirements that got scaled down during the firts prototype
- “The entire project can be aborted if the risk is deemed too great.”
- Budget
- Operating cost
- Repeat until customer likes it
- Construct final system using the prototype as a spec
Other Non-Canonical SDLCs
Test-Driven Development
Extreme Programming
TDD + continually integrating code and pair programming to review code