Une petite proposition des définitions des termes Itératif et Incrémental.

Itératif et Incrémental, quelle différence ?
Les 2 sont similaires, souvent ensemble, mais représentent des notions complémentaires.
Je vous propose la “définition” suivante :

l’incrémental découpe le quoi.

l’itération découpe le temps.

  • Développement Incrémental

l’idée est de ne pas livrer l’application en une seule fois, mais
de délivrer des ensembles de fonctionnalités par bloc. Dans la terminologie XP, une fonctionnalité
utilisateur est appelée une User Story.

  • Itération

C’est une période de temps pendant laquelle on
déivre un ensemble de User Stories. La taille des itérations est par exemple pour Scrum
fixée à 30 jours. Au client de choisir quelles User Stories pour la prochaine itération
(sachant que l’équipe de développement peut estimer de plus en plus précisément combien
de temps coûte chaque User Story).

Ca parait simple comme ça sur le papier, mais évidemment ça ne l’est pas tout à fait dans la réalité.
Pour le mot incrémental on entend souvent de la part du client
“Si vous ne livrez pas toute l’appli ça n’a aucun intéret”.
Cet argument est généralement faux : il est très bénéfique d’avoir au bout de 2 ou 3 mois
un feedback issu du sous-système en production (ou pré-prod.) de la part des utilisateurs.
Plutôt que d’attendre la fin du projet avant ce sacro-saint feedback.
Une autre difficulté est de couper les dépendances entre les différentes User Stories.
Là, les techniques de “mock” peuvent aider à développer par ex. un composant dépendant de B
avant que B ne soit “vraiment” disponible.

Pour le concept d’Itération, généralement tout le monde est d’accord. C’est hype d’itérer ;-)
Mais …
… on peut très bien itérer sur un bloc monolithique par raffinements successifs.
Ce genre d’approche a pour défaut que l’effet tunnel est toujours là.
Le risque est présent jusqu’au bout : aucune User Story n’est réellement dispo avant la toute fin du projet.

Prenons un micro-exemple (caricatural) pour voir les conséquences des différentes approches.
Un projet avec 3 User Stories (F1, F2 et F3) dont l’architecture logicielle repose sur 3 couches (barres horizontales oranges)
Le premier cas montre un dév. non-incrémental mais itératif, et le second un dév. incrémental ET itératif :

iid

Un des buts des méthodes Agiles est de délivrer de façon continue des User Stories à forte valeur ajoutée (Business Values).
Ces Business Values sont délivrées dans un ordre choisi par le client (selon un calendrier approuvé par le développement).
Le développement incrémental et itératif est l’une des stratégies utilisées pour remplir
cette promesse.