Iterative Development
A software development approach that builds systems through repeated cycles of planning, building, testing, and refining.
Also known as: Iterative and Incremental Development, Iterative Design, Spiral Development
Category: Software Development
Tags: software-engineering, agile, processes, methodologies, project-management
Explanation
Iterative development is an approach to building software where the system is developed through repeated cycles (iterations), each producing a working increment that is reviewed and refined. Instead of trying to get everything right in one pass, the team deliberately plans to revisit and improve.
## How it works
Each iteration follows a mini-lifecycle:
1. **Plan** - Select a subset of requirements to address
2. **Build** - Design and implement the selected features
3. **Test** - Verify the increment works correctly
4. **Review** - Evaluate what was built and gather feedback
5. **Refine** - Incorporate lessons into the next iteration
Iterations are typically time-boxed (1-4 weeks), creating a predictable rhythm.
## Iterative vs. Incremental
These terms are often used together but mean different things:
- **Iterative** means revisiting and refining. Like a painter who sketches the whole canvas in rough strokes, then makes successive passes with more detail.
- **Incremental** means adding piece by piece. Like building a house room by room, each room complete before starting the next.
Most modern approaches combine both: building incrementally (adding features) while iterating (refining what exists).
## Why iteration works
- **Reduces risk** - Problems are discovered early when they're cheap to fix
- **Accommodates change** - Requirements can evolve between iterations
- **Generates feedback** - Working software can be shown to stakeholders
- **Improves estimates** - Each iteration improves understanding of velocity and complexity
- **Maintains motivation** - Regular delivery of working software keeps teams energized
## Historical context
Iterative development predates Agile. Notable examples:
- NASA's Mercury project (1960s) used iterative approaches
- Barry Boehm's Spiral Model (1986) formalized iteration with risk management
- Rational Unified Process (RUP) organized development into iterative phases
- Agile methodologies (2001+) embraced iteration as a core principle
## Contrast with Waterfall
The Waterfall model assumes each phase (requirements, design, implementation, testing) is completed once. Iterative development acknowledges that understanding deepens through building, and plans for multiple passes through these activities.
## In practice
- **Scrum** structures iterations as sprints
- **Kanban** enables continuous flow with iterative improvement
- **XP** uses short iterations with continuous feedback
- **Design Thinking** iterates through prototyping and testing
- **Lean Startup** iterates through build-measure-learn cycles
Related Concepts
← Back to all concepts