The incremental model is where you build the entire solution in parts, but at the end of each phrase or section, you have nothing to review or feedback on. You need to wait until the final stage of the incremental process to deliver the final product.
The iterative model is where we iterate the idea and improve as we iterate over versions. When you move from one version to another, you decide (based on feedback) what you need in the new version as a better choice and what you need to discard.
Product development examples
Take the product development environment of the software team as an example. The team may develop a small but undefined feature that will improve over time. Then they will add more features until the features are considered satisfactory. For example, in the first iteration of the team, the website payment engine might be coded to allow only debit card payments (first increment). The second iteration may result in an increment that supports credit card payments. Finally, the third iteration may add an increment that allows payment through PayPal.
Examples of alternatives
In order to illustrate the situation beyond software development, the most commonly used example is painting by a painter. If the image is drawn iteratively rather than gradually, the artist may start by completing the sketch (prototype) of the image. The artist then iteratively adds paint to the sketch over time. The artist will re-examine the picture and change it until he is satisfied with the finished picture. Now, consider drawing the same image, but in a purely incremental, but not iterative way. Before starting any other part, the artist will first refine one part of the picture. Once he's satisfied with one part, he'll start with the next, and so on. Before the next painting starts, every part of the picture will be perfect. In the same way, if the house is built step by step, you will build a room completely - including furniture, paint, and carpets. Then build the next room in the same way until you have a finished house.
Although both programs aim at the same goal, incremental planning does not really reduce the risk of delivering unsuitable things to customers. The overall situation is only at the end. Because the increment is done in detail, a lot of energy is wasted when a piece needs to be reworked (the initial version almost certainly belongs to this category).
Iterative development provides an opportunity to see the picture from the beginning and guide the whole development process. We didn't carve things in stone from the beginning, which makes it easier for us to change them later, and we know we need to. Jeff gives the following rule of thumb to quickly check whether your plan is iterative or incremental: "if you only execute it once, you won't iterate.".
Because of their complementary nature, incremental and iterative development are most powerful when used together, for example as part of an agile framework, especially scrum. As mentioned in the Scrum Guide:
"Scrum uses an iterative incremental approach to optimize predictability and control risk"
"The scrum team provides products iteratively and incrementally to maximize feedback opportunities. "Complete" incremental delivery of the product to ensure that the potentially useful version of the work product is always available. ".
Thus, Scrum is an incremental approach to iterations, because the work plan goes through one iteration, then improves in subsequent iterations, and is processed incrementally, because the work done is consistently provided throughout the project.