Iterative vs. incremental approach.

Unterschied Zwischen Iterativ und Inkrementell

Read in english

Iterativ und inkrementell sind Eigenschaften, die oft im Zusammenhang mit Softwareentwicklungsprozessen vorkommen. Da aber anscheinend Verwirrung besteht, was die Begriffe genau bedeuten, versuche ich sie mit Hilfe von kleinen Programmiercode Snippets genauer darzustellen.

Iterativ

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

Iterativ heisst, dass am Anfang jedes Zyklus wieder von vorne begonnen wird. Der alte j-Wert wird also gleich überschrieben. Danach geht es beliebig weiter - entweder inkrementell oder dekrementell. Am Ende der Iteration wird mit Print(i, j) das Produkt mit der aktuellen Iteration i und dem dazugehörigen Fortschritt j veröffentlicht.

Inkrementell

i = 0; j = 0;
j = j + ZufallszahlZwischen(1,3);
Print(i, ++j);
j = j + ZufallszahlZwischen(1,3);
Print(i, ++j);
j = j + ZufallszahlZwischen(1,3);
Print(i, ++j);
j = j + ZufallszahlZwischen(1,3);
Print(i, ++j);
j = j + ZufallszahlZwischen(1,3);
Print(i, ++j);
Inkrementell

Inkrementell bedeutet also, dass jedes neue Release weiter fortgeschritten als das Vorherige ist. Im Snippet wird deshalb immer zur vorherigen Fortschritts-Zahl j etwas positives addiert.

Iterativ & Inkrementell

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

Iterativ und inkrementell in Kombination stellt den häufigsten Fall dar. Bei einer neuen Iteration hängt die Fortschrittsvariable j nun vom Wert der vorherigen Iteration ab. Innerhalb des Iterationszyklus sind auch Verschlechterungen möglich. Während von Iteration zu Iteration die Werte von Print(i, j) immer ansteigen werden.

Vergleich zu Apple

Schaut man sich die iPhone Entwicklung an, so sind Parallelen zu den Begriffen ersichtlich. Das iPhone unterlag bis jetzt einem jährigen inkrementellen Zyklus, der in einen zweijährigen iterativen Zyklus eingebettet war. Das dritte iPhone (3GS) war eine inkrementelle (und nicht iterative) Weiterentwicklung des zweiten iPhones (3G). In einem iterativen Zyklus von zwei Jahren wurde mit dem vierten iPhone ein komplett neu ausgearbeitetes Gerät vorgestellt. Die darauffolgende Version (4S) hingegen war wieder dasselbe Produkt, nur mit wenigen inkrementellen Additionen. Das sechste iPhone (5) stellt wieder eine komplette Überarbeitung dar, bei der nur wenige Elemente gleich wie beim Vorgänger waren. Wenig erstaunt es, dass das siebte iPhone (5S) nur wenige inkrementelle Erweiterungen - Fingerabdrucksensor - aufweist.

The iPhone Cycle

So zumindest die Hardwareseite. Auf der Softwareseite sieht es mit iOS etwas anders aus. Dort verlief der Zyklus über sechs Jahre lang inkrementell (iOS - iOS 2 - iOS 3 - iOS 4 - iOS 5 - iOS 6). iOS 7 hingegen stellte einen nicht inkrementellen Bruch dar. Die Software wurde von Grund auf überarbeitet und es wurden - nicht wie sonst - nur Features hinzugefügt. In gewissen Bereichen hinkt iOS 7 der Vorgängerversion sogar hinterher und es wird ein inkrementelles Update (voraussichtlich iOS 8) nötig sein, um die Bugs und fehlenden Features zu patchen beziehungsweise nachzurüsten.

The iOS Cycle

Grund für diesen Eintrag war, dass es sich laut meiner Dozentin im Fach Softwareentwicklungsprozesse bei den Adjektiven iterativ und inkrementell um Synonyme handeln soll. Erst auf Anfrage und langwierige Diskussion konnte das Missverständnis schliesslich geklärt werden und ich erhielt, die mir an der Prüfung abgezogenen Punkte dann doch noch.

March 9, 2014


Durchhaltevermögen
Durchhaltevermögen

December 20, 2014