Why adopt this practice?
The iterative approach differs from the traditional software development models, which assume that software development
proceeds from one phase to another in a sequential manner. For example, in traditional models one first completes the
requirements specification, which is "set in stone". When the requirements are fully completed, one proceeds to design,
and then on to the next phase. Towards the later phases of the traditional cycle, disparate software components are
integrated to produce the final product, and tested by quality engineers and users to remove bugs and validate
functionality.
The iterative approach is the single most significant improvement to the way we build software products in decades, and
has significantly improved project success because the feedback cycle is built into the software development lifecycle.
This is especially significant in the more complex applications that support more demanding stakeholders and more
complex business processes.
Iterations are used to reduce the risk of software development projects, and to deliver high value functionality to the
user early on in the lifecycle. You essentially divide up the project into subsets of functionality based on, for
example, use cases or use case scenarios. At the end of each iteration, you demonstrate or deliver these pieces of
functionality to stakeholders, so that they can use the features and provide feedback. This feedback can be
incorporated into future iterations. The iterative model embraces change through a feedback loop, whereas non-iterative
models seek to prevent changes, which in turn increases the risk that the developed system does not meet the
stakeholders' needs.
An iterative approach provides business value early on in the lifecycle, thus helping recoup the capital invested. It
also allows stakeholders to provide feedback while the project is going on, and not at the end when you have spent all
of the money and time allotted to the project.
|