Incremental fundamentally means add onto. Incremental development helps you progress.
Iterative fundamentally means re-do. Iterative development helps you improve your product.
Incremental means new features because you add-on.
Iterative means quality because you re-work.
Increment new requirements for progress.
Iterate old requirements for quality.
Incremental involves breaking a large system into smaller systems.
Iterative embraces feedback and learning because it is very difficult to know upfront exactly what the final product should look like and builds in as many learning opportunities as possible.
Increments lets you fix process: build/deliver/learn .. build/deliver/learn
Iterations lets you fix ignorance: build/examine/learn/rebiuld/ship ..
I (Alistair) visited a 200-person project team, where, as one manager put it when he finally saw the difference, “We’re iterating when we should be incrementing !!” You can imagine the feeling of helplessness on that project as the developers saw the same requirements coming at them over and over again in slightly different forms, and no plan for making progress through the requirements set. At that time, the lesson was: be sure to increment; yes you will iterate anyway.
First you increment to progress with the basics of the first system’s module, then iterate for quality, then release 1. Secondly, you increment to progress with the basics of the first system’s module, then iterate for quality, then release 2.
Resource: Incremental versus iterative development