Iterative Development is an approach to software development where the phases normal in [:TraditionalDevelopment:WaterfallDevelopment] are compressed and repeated through many cycles during the development process.

Traditional Development Phases

Agile Development Phases

attachment:TradDevPhases.jpg

attachment:AgileDevPhases.jpg

Projects using IterativeDevelopment are divided into many small sub-projects called iterations. Each iteration is focussed on the delivery of a small number of [:Story:stories] and has all of the normal stages of a full blown project:

Typically such iterations are of very short duration, sometimes only one or two weeks long. This limits exposure to the risks associated with predicting future performance to only one iteration’s effort.

IterativeDevelopment has many positive properties, not least that half way through the project, with half the money spent the project has delivered half the software, compared to more TraditionalDevelopment projects where often half way through there is often no working software, and sometimes no software at all, only documentation.

'Comment:' (I'm sorry to add this comment to the article but it's the only way to leave behind feedback on this site) The positive property of IterativeDevelopment assumes that halfway along the way of a project the code delivered so far is correct and useful. This sounds as a bedtime story to me, a positive thought to help you catch sleep. In reality there is always a risk at that stage of a project that developers have not come up with an adequate domain model yet and the domain experts are not aware of this. So it's possible that part of the scope that was previously completed has to be reworked to improve the model. The Domain-Driven Design book acknowledges this. The beautiful diagram on top does not.

BddWiki: IterativeDevelopment (last edited 2006-05-07 14:05:32 by 161)