Iterative development is the process of designing, developing, and testing different versions of a product or a feature in repeating cycles. It is a way of breaking the development process into smaller portions – iterations.
Each iteration consists of several phases. The initial phase is planning. This phase includes scoping the whole project and preparing for the first iteration. The second phase is analysis. In this phase, the developers decide on the architecture of the first portion of the product and designers make the UI designs. Next, the project team builds an initial working version. That version is then tested to find issues and bugs and to get feedback. The team can then use this feedback and the knowledge they gained from this iteration to evaluate what needs to be changed or added to the next version in the next iteration. This whole process is then repeated until the desired outcome is reached.
The idea of iterative development is to build something fast and get feedback early. This way, the product can take into account the feedback and adapt accordingly. And if a new iteration fails, it is possible to just roll back to the previous version. Since the main idea of agile development is very similar, the two are sometimes used as synonyms. But iterative development is only one part of agile development. Time allocated to each iteration is limited, usually to 1-4 weeks. In agile development, such limited time frame iterations are called sprints.