Also: Incremental Delivery, Evolutionary Development, Timeboxing
A project life-cycle strategy used to reduce risk of project failure by dividing projects into smaller, more manageable pieces of “potentially shippable” product delivered over the course of a series of brief iterations, or sprints. Iterative development processes afford teams the ability to “inspect and adapt” their processes between iterations, leading to continuous improvement. The concept of iterative development stands in contrast to the traditional, waterfall method of “big design up front” followed by development and testing in strict sequence.
The concept of iterative development is central to all Agile fameworks, and is treated as essentially synonymous with Agile development. Extreme Programming recommends that teams make frequent, small releases, working in iterations of one to four weeks, with one week being the preferred interval. Scrum also recommends regular cycles, called sprints, of one to four weeks.
The concept of iterative software development was first described by Tom Gilb in his 1988 book, Principles of Software Engineering Management, where he referred to it as Evolutionary Development. It has gone on to permeate all Agile frameworks.