Iterative development is a method of building software products in which the end result is not completely well-defined, and there's only a vague idea of what has to be built. At each iteration, the version of the product built is evaluated for what is working and what's not based on user feedback. Inconsistencies among requirements, designs, and implementations are detected early.
A good analogy to understand this model is looking at how a painter works on a new painting. When starting out, they are not very clear on what the end result should look like. Starting from a wireframe, the picture becomes clear bit by bit.
What are the advantages of Iterative Development?
- Since the focus on each iteration is on finding the right solution rather than the complete solution, iterative development ensures that the product is moving in a direction aligned to correct requirements.
- Users can provide critical feedback on the entire product rather than just a small sub-system. This helps in improving on the system's design from the very beginning.
- Perfect system design is not important at the project's onset since what's not working will anyways be discarded at each iteration.