Différence entre le développement itératif et incrémental en Agile

Dans le développement logiciel agile, quelle est la différence entre le développement itératif et incrémental? Sont-ils la même chose? Quelle est la distinction entre ces deux mots?

Tout d'abord, examinons les définitions simples des deux termes:

Incrémentale - ajout de nouvelles fonctionnalités par petits morceaux


Itératif - effectuer de manière répétée, c'est-à-dire ajouter de nouvelles fonctionnalités de manière répétitive ou cyclique

De Wikipédia :


Le développement itératif a été créé en réponse aux inefficacités et aux problèmes rencontrés dans la cascade.

L'idée de base derrière cette méthode est de développer un système à travers des cycles répétés (itératifs) et en plus petites portions à la fois (incrémentales), permettant aux développeurs de logiciels de tirer parti de ce qui a été appris lors du développement de parties ou de versions antérieures du système. L'apprentissage provient à la fois du développement et de l'utilisation du système, où les étapes clés possibles du processus commencent par une simple mise en œuvre d'un sous-ensemble des exigences logicielles et améliorent de manière itérative les versions en évolution jusqu'à ce que le système complet soit mis en œuvre. À chaque itération, des modifications de conception sont apportées et de nouvelles capacités fonctionnelles sont ajoutées.

Dans le développement incrémentiel, la fonctionnalité du système est découpée en incréments (portions), de sorte qu'à chaque incrément, une tranche de fonctionnalité est fournie.

L'idée générale est de fournir une version «fonctionnelle» d'une fonctionnalité (même minime) aux utilisateurs afin que nous puissions obtenir des commentaires tôt dans le processus. Comparez cela à la nécessité de créer une fonctionnalité entièrement fonctionnelle pendant quelques mois, pour découvrir que ce qui a été créé ne répond pas aux besoins des utilisateurs.


Développement itératif et incrémental

Voyons un exemple de la façon dont le développement et la livraison itératifs et incrémentiels fonctionnent dans un contexte agile.

Supposons que vous souhaitiez ajouter une nouvelle fonctionnalité de connexion à un site Web et que vous décidiez de la développer à l'aide d'une méthodologie agile, en travaillant par cycles de livraison de deux semaines (itérations).

Première itération:

le le minimum une version de travail de la fonctionnalité de connexion qui vaut la peine d'être fournie aux utilisateurs serait


  • Créez une page Web où les utilisateurs verront le formulaire de connexion
  • Ajoutez un formulaire de connexion avec seulement deux champs (nom d'utilisateur et mot de passe) et un bouton de connexion, c'est-à-dire juste un formulaire HTML normal avec ne pas stylisme ou validation
  • Créez une page de «bienvenue» pour que lorsqu'un utilisateur se connecte, il voit un message.

Il s'agit de la première version (fonctionnelle mais limitée en fonctionnalités) du logiciel livré dans la première itération. Cette fonctionnalité de connexion de base a été conçue, développée et testée et livrée à la fin de l'itération.

Deuxième itération:

Dans la prochaine itération, nous voulons améliorer la fonctionnalité de connexion de ce qui a été construit lors de la dernière itération. Nous pouvons décider de faire

  • Construire des règles de validation autour des paramètres d'entrée
  • Ajoutez du CSS pour que le formulaire de connexion soit joli
  • Afficher un message lorsque l'utilisateur tente de se connecter avec des informations d'identification non valides

Nous avons maintenant ajouté des fonctionnalités existantes nouvelles et améliorées. En d'autres termes, nous avons incrémenté la fonctionnalité de connexion existante, et nous l'avons fait dans cette itération.


Troisième itération:

Dans la troisième itération, nous pouvons à nouveau incrémenter notre fonctionnalité de connexion, en ajoutant

  • Fonctionnalité de mot de passe oublié
  • Case à cocher 'Souviens-toi de moi'
  • Mécanisme de redirection pour rediriger vers les pages appropriées lorsque les utilisateurs se connectent (plutôt que juste une page «de bienvenue» développée dans la première itération)

Comme vous pouvez le voir, à chaque itération, nous avons incrémenté la fonctionnalité de connexion en ajoutant de nouvelles fonctionnalités utiles pour les utilisateurs. Ce faisant, nous pouvons obtenir des commentaires rapides des utilisateurs afin que nous puissions ajouter ou améliorer ses fonctionnalités.

Au cours d'un certain nombre d'itérations, nous proposons enfin la solution complète.