Iterative development provides the fundamental structure that enables the effective management of
software development. Ultimately it helps to avoid the “big bang” issues and spreads the typical pain of
development (integration, major re-writes, insufficient testing, deadline pressure, overtime, etc) over
several, easier to manage, units of work. Scoped correctly, development iterations provide a concrete
feedback mechanism, which enables better visibility and control of the key elements for successful
development. This paper explores these key elements and the benefits that iterative development provides to
each of them. In particular, we look at risk management, progress monitoring, requirements management,
software architecture and testing.