Waterfall
| Advantages | Disadvantages |
|---|---|
| Clear structure and milestones | Inflexible - hard to change requirements later |
| Easy to understand and manage | No working software until late in process |
| Comprehensive documentation | High risk if requirements misunderstood |
| Works well for fixed-requirement projects | Poor for complex or innovative projects |
Agile
| Advantages | Disadvantages |
|---|---|
| Flexible - welcomes changing requirements | Less predictable timeline and cost |
| Working software delivered frequently | Requires high customer involvement |
| Close customer collaboration | Can lead to scope creep |
| Quick response to feedback | Documentation may be insufficient |
Extreme Programming
| Advantages | Disadvantages |
|---|---|
| High code quality through practices like TDD | Requires experienced developers |
| Continuous feedback and improvement | Pair programming costly (two salaries) |
| Knowledge sharing through pair programming | Customer must be on-site |
| Low defect rates | Difficult to scale to large teams |
Spiral
| Advantages | Disadvantages |
|---|---|
| Systematic risk management | Complex to manage |
| Early detection of problems | Expensive - extensive planning and risk analysis |
| Flexible - can accommodate changes | Not suitable for small projects |
| Suitable for large, complex projects | Requires expertise in risk assessment |
RAD
| Advantages | Disadvantages |
|---|---|
| Very fast delivery | Requires modularity |
| High user satisfaction through involvement | Heavy dependence on user availability |
| Reduces requirements errors | Not suitable for complex, low-modularity systems |
| Efficient for well-understood problems | May sacrifice quality for speed |