Houjun Liu

Software Development Methodologies

The software development models, or Software Development Life-cycles (SDLCs), are methodologies to approach organizing a software project.


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 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.

  1. Waterfall style requirements detailing
  2. Preliminary design
  3. First prototype: scaled down system
  4. Second prototype
    1. Mitigates strengths, weaknesses, and risks of 1st prototype
    2. Augmented requirements that got scaled down during the firts prototype
  5. “The entire project can be aborted if the risk is deemed too great.”
    1. Budget
    2. Operating cost
  6. Repeat until customer likes it
  7. Construct final system using the prototype as a spec

Other Non-Canonical SDLCs

Test-Driven Development

See Test-Driven Development

Extreme Programming

TDD + continually integrating code and pair programming to review code