Iterative vs. incremental approach.

Difference between iterative and incremental

Auf Deutsch lesen

Iterative and incremental are features that are often used in conjunction with software development processes. However, it looks like there is some confusion regarding their definition. Therefore, I'm going to try to explain these in more detail using graphics and code snippets as well as written explanations.

Iterative

i = 0;
while (i < 16) {
    j = RandomNumberBetween(1,5);
    j = j + RandomNumberBetween(2,3);
    j = j - RandomNumberBetween(1,4);
    Print(i, j);
    i = i + 1;
}
Iterative sketch in german

Iterative means that one is starting over at the beginning of each cycle. The old j-value is overridden. After that it continues arbitrarly - either iterative or incremental. At the end of every iteration Print(i, j) will show the result of the current iteration i and the belonging progress value j is published.

Incremental

i = 0; j = 0;
j = j + RandomNumberBetween(1,3);
Print(i, ++j);
j = j + RandomNumberBetween(1,3);
Print(i, ++j);
j = j + RandomNumberBetween(1,3);
Print(i, ++j);
j = j + RandomNumberBetween(1,3);
Print(i, ++j);
j = j + RandomNumberBetween(1,3);
Print(i, ++j);
Incremental sketch in german

Incremental means that each release is further progressing compared to the previous one. Therefore, in the snippet there's always something positive added to the previous progress count j.

Iterative and Incremental

i = 0; j = 0;
while (i < 16) {
    j = j + RandomNumberBetween(1,5);
    j = j + RandomNumberBetween(2,3);
    j = j - RandomNumberBetween(1,4);
    Print(i, j);
    i = i + 1;
}
Iterativ&Inkrementell

A combination of iterative and incremental is the most popular combination. With each new iteration the progress variable j depends on the previous iteration. During the iteration cycle it's also possible to have decreasing progress. While from each iteration to the next the progress Print(i, j) will always increase.

Comparison to iPhone Releases

Looking at the iPhone releases there are parallels visible. The iPhone has been subject to a yearly incremental release cycle embedded into a biennial (every two years) iterative cycle. The third iPhone 3GS was an incremental (and not iterative) advancement upon the second iPhone 3G. In an iterative cycle of two years a completely new device was presented with the fourth iPhone. The following version 4S was again mostly the same product except for some small incremental additions. The sixth iPhone 5 again presents a fully revised version that only shares few design elements. It's no coincidence that the seventh iPhone 5S presents only few incremental changes including a fingerprint reader while the design mostly stays the same.

The iPhone Cycle

That's at least the case on the hardware side of things. While the software with iOS follows a somewhat different release cycle. For the last six years it has followed an incremental release cycle with a new version every year (iOS - iOS 2 - iOS 3 - iOS 4 - iOS 5 - iOS 6). iOS 7 on the other hand presents a non incremental break as the software has been redesigned from the ground up and unlike previously only features were added. In certain cases iOS 7 is even behind the previous versions and it will require and incremental improvement with iOS 8 to fix bugs and add previously existing features back in.

The iOS Cycle

The reason for this entry was that one of my professors in a class about software development processes claimed that the adjectives iterative and incremental are synonymous. Only after a long winded discussion could the confusion be cleared up and I was granted the points in an exam.

March 9, 2014


Stamina
Stamina

December 20, 2014

Look, But Don't Touch
Look, But Don't Touch

August 31, 2014