Evolutionary Model
Definition
The Evolutionary Model develops software through repeated cycles (iterations), starting with a simple initial implementation and progressively refining it based on feedback, rather than trying to fully specify the system upfront.
How It Works
Initial Version → Get Feedback → Refine → Next Version → Feedback → Refine → ... → Final Product
Each cycle produces a more complete/refined version of the software, incorporating lessons learned and evolving requirements.
Two Common Variants
- Incremental Development — build the system in functional pieces, each adding new capability
- Iterative Development — build a complete but basic version first, then refine/improve it in successive iterations
Characteristics
- Requirements are allowed to evolve during development
- Early versions are usable, even if incomplete
- Development and feedback happen in a continuous loop
Advantages
- Handles changing/unclear requirements well
- Customer gets to see and use working versions early
- Reduces risk since problems surface early via feedback
- Flexible — accommodates new insights as the project progresses
Disadvantages
- Harder to plan and manage (unclear when it will "finish")
- Can lead to scope creep if not controlled
- Difficult to measure progress precisely
- May need more powerful management/monitoring than Waterfall
When to Use
- Projects where requirements are not fully known upfront
- Long-term systems expected to evolve over time (e.g., large enterprise systems)
Exam tip: Distinguish clearly from Incremental Model — Evolutionary emphasizes continuous refinement of the whole system, while Incremental delivers separate functional pieces over time.