Itératif ET Incrémental
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 :

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.

Clair et concis…
Tres bon résumé pour nous aider a appliquer toutes ces bonnes pratiques sur nos travaux quotidiens.
Ca ferait l’objet s’un superbe mardi gras
Et un bref historique sur l’IID :
http://www.highproductivity.org/r6047.pdf
Une notion que je n’avais pas remarquée au premier abord est l’augmentation de la confiance de l’utilisateur envers les fonctionnalités livrées. Elle est représentée par l’intensité de la couleur verte sur la 2eme figure. Plus une fonctionnalité est livrée tôt, plus longtemps elle est testée et validée par l’utilisateur. Cela contribue de facto à la qualité de l’application et au respect maximal des besoins.
Mais ce n’est pas si simple à réaliser dans les faits. Ca se saurait si on faisait naturellement de l’incrémental ! Comme quoi, et on l’oublie un peu trop souvent, l’agilité demande aussi une certaine discipline.