| Waterfall |
When requirements are well understood and unlikely to change |
| V Model |
When high reliability and thorough testing are required |
| Incremental |
When there is a need to deliver parts of the system early and get feedback |
| Unified Process (UP) |
When the project is large, complex, and requires iterative development |
| Component-Based Development |
When reusable components are available or the system can be built from them |
| Formal Methods |
When correctness and mathematical precision are critical (e.g., safety-critical systems) |
| Aspect-Oriented Design |
When cross-cutting concerns like logging or security need modular handling |