Méthodologies de développement logiciel

Dans cet article, nous allons passer en revue les différentes méthodologies de développement logiciel ainsi que leurs avantages et inconvénients et quand utiliser chaque modèle.



Modèle itératif

Un modèle de cycle de vie itératif ne tente pas de commencer par une spécification complète des exigences. Au lieu de cela, le développement commence par la spécification et la mise en œuvre d'une partie seulement du logiciel, qui peut ensuite être revue afin d'identifier d'autres exigences. Ce processus est ensuite répété, produisant une nouvelle version du logiciel pour chaque cycle du modèle.

Considérons un modèle de cycle de vie itératif qui consiste à répéter les quatre phases suivantes en séquence:


Une phase Exigences, dans lequel les exigences pour le logiciel sont rassemblées et analysées. L'itération devrait finalement aboutir à une phase d'exigences qui produit une spécification complète et finale des exigences.

Une phase de conception, dans lequel une solution logicielle répondant aux exigences est conçue. Cela peut être une nouvelle conception ou une extension d'une conception antérieure.


Une phase d'implémentation et de test, lorsque le logiciel est codé, intégré et testé.

Une phase de révision, dans lequel le logiciel est évalué, les exigences actuelles sont examinées et des modifications et des ajouts aux exigences sont proposés.

Pour chaque cycle du modèle, une décision doit être prise quant à savoir si le logiciel produit par le cycle sera abandonné ou conservé comme point de départ pour le cycle suivant (parfois appelé prototypage incrémental.

Finalement, un point sera atteint où les exigences sont remplies et le logiciel peut être livré, ou il devient impossible d'améliorer le logiciel selon les besoins, et un nouveau départ doit être fait.


Le modèle de cycle de vie itératif peut être assimilé à la production de logiciels par approximations successives. En établissant une analogie avec des méthodes mathématiques qui utilisent des approximations successives pour arriver à une solution finale, le bénéfice de ces méthodes dépend de la rapidité avec laquelle elles convergent vers une solution.

La clé d'une utilisation réussie d'un cycle de vie de développement logiciel itératif est la validation rigoureuse des exigences et la vérification (y compris les tests) de chaque version du logiciel par rapport à ces exigences dans chaque cycle du modèle.

Avantages du modèle itératif

  • Génère un logiciel opérationnel rapidement et tôt au cours du cycle de vie du logiciel.
  • Plus flexible - moins coûteux pour modifier la portée et les exigences.
  • Plus facile à tester et à déboguer lors d'une itération plus petite.
  • Plus facile à gérer les risques car les éléments à risque sont identifiés et traités lors de son itération.
  • Chaque itération est un jalon facile à gérer.

Inconvénients du modèle itératif

  • Chaque phase d'une itération est rigide et ne se chevauche pas.
  • Des problèmes peuvent survenir concernant l'architecture du système car toutes les exigences ne sont pas rassemblées à l'avance pour l'ensemble du cycle de vie du logiciel.


Modèle incrémental

Le modèle de construction incrémentielle est une méthode de développement logiciel où le modèle est conçu, implémenté et testé de manière incrémentielle (un peu plus est ajouté à chaque fois) jusqu'à ce que le produit soit terminé. Cela implique à la fois le développement et la maintenance. Le produit est défini comme fini lorsqu'il satisfait à toutes ses exigences. Ce modèle combine les éléments du modèle de cascade avec la philosophie itérative du prototypage.

Le produit est décomposé en un certain nombre de composants, chacun d'eux étant conçu et construit séparément (appelés builds). Chaque composant est livré au client lorsqu'il est terminé. Cela permet une utilisation partielle du produit et évite un long temps de développement. Cela crée également une importante mise de fonds initiale avec la longue attente qui s'ensuit évitée. Ce modèle de développement aide également à atténuer l'effet traumatique de l'introduction d'un tout nouveau système en une seule fois.


Il y a quelques problèmes avec ce modèle. La première est que chaque nouvelle version doit être intégrée aux versions précédentes et à tous les systèmes existants. La tâche de décomposer le produit en builds n'est pas non plus anodine. S'il y a trop peu de builds et que chaque build dégénère, cela se transforme en modèle Build-And-Fix. Cependant, s'il y a trop de builds, il y a peu d'utilité supplémentaire pour chaque build.

Avantages du modèle incrémental

  • Génère un logiciel opérationnel rapidement et tôt au cours du cycle de vie du logiciel.
  • Plus flexible - moins coûteux pour modifier la portée et les exigences.
  • Plus facile à tester et à déboguer lors d'une itération plus petite.
  • Plus facile à gérer les risques car les éléments à risque sont identifiés et traités lors de son itération.
  • Chaque itération est un jalon facile à gérer.

Inconvénients du modèle incrémental

  • Chaque phase d'une itération est rigide et ne se chevauche pas.
  • Des problèmes peuvent survenir concernant l'architecture du système car toutes les exigences ne sont pas rassemblées à l'avance pour l'ensemble du cycle de vie du logiciel.

Quand utiliser le modèle incrémentiel

  • Ces modèles sont utilisés lorsque les exigences sont claires et peuvent être mis en œuvre par phase. D'après la figure, il est clair que les exigences ® sont divisées en R1, R2 ……… .Rn et livrées en conséquence.
  • La plupart du temps, ce modèle est utilisé dans les applications Web et les entreprises basées sur des produits.


Modèle agile

Le modèle agile est une combinaison de modèle itératif et incrémental en décomposant un produit en composants où, à chaque cycle ou itération, un modèle de travail d'un composant est fourni.

Le modèle produit des versions en cours (itératives), ajoutant à chaque fois de petites modifications à la version précédente (itérative). Lors de chaque itération, au fur et à mesure que le produit est en cours de construction, il est également testé pour s'assurer qu'à la fin de l'itération, le produit est livrable.

Le modèle Agile met l'accent sur la collaboration, car les clients, les développeurs et les testeurs travaillent ensemble tout au long du projet.


Un avantage du modèle Agile est qu'il fournit rapidement un produit fonctionnel et est considéré comme une approche de développement très réaliste.

Un inconvénient de ce modèle est que, comme il dépend fortement de l'interaction avec le client, le projet peut aller dans le mauvais sens si le client n'est pas clair sur les exigences ou la direction dans laquelle il ou elle veut aller.



Modèle en V

Le modèle V est une version améliorée du modèle en cascade classique dans lequel chaque niveau du cycle de vie de développement est vérifié avant de passer au niveau suivant. Avec ce modèle, les tests logiciels commencent explicitement au tout début, c'est-à-dire dès que les exigences sont écrites.

Ici, par test, nous entendons la vérification au moyen d'examens et d'inspections, c'est-à-dire des tests statiques. Cela aide à identifier les erreurs très tôt dans le cycle de vie et minimise les futurs défauts potentiels apparaissant dans le code plus tard dans le cycle de vie.


Chaque niveau du cycle de vie du développement a un plan de test correspondant. c'est-à-dire qu'au fur et à mesure que chaque phase est en cours d'élaboration, un plan de test est développé pour préparer les tests des produits de cette phase. En développant les plans de test, nous pouvons également définir les résultats attendus pour les tests des produits pour ce niveau ainsi que définir les critères d'entrée et de sortie pour chaque niveau.

Comme Waterfall, chaque étape ne commence qu'après la fin de la précédente. Ce modèle est utile lorsqu'il n'y a pas d'exigences inconnues, car il est encore difficile de revenir en arrière et d'apporter des modifications.

Modèle V - Avantages

  • Chaque phase a des livrables spécifiques.
  • Augmentation des chances de succès par rapport au modèle en cascade en raison du développement de plans de test au début du cycle de vie.
  • Le souci de temps par rapport au modèle en cascade est faible ou même on peut dire 50% de moins.
  • Fonctionne bien pour les petits projets où les exigences sont facilement comprises.
  • L'utilité des ressources est élevée.

Modèle en V - Inconvénients

  • Assez rigide, comme le modèle de la cascade.
  • Peu de flexibilité et de réglage de la portée sont difficiles et coûteux.
  • Le logiciel est développé pendant la phase de mise en œuvre, de sorte qu'aucun prototype précoce du logiciel n'est produit.
  • Le modèle V ne fournit pas de chemin clair pour les problèmes détectés lors des phases de test.

Quand utiliser le modèle V

  • Selon mes connaissances, je pense / ressens personnellement où le temps et le coût sont les contraintes du projet, alors nous pouvons utiliser de tels modèles pour une livraison rapide et rentable.
  • En comparaison avec le modèle en cascade, le modèle en V est plus ou moins le même mais l'activité de test commence très tôt, ce qui réduit le temps et le coût du projet.


Modèle de cascade

Le modèle en cascade est la plus ancienne et la plus simple des méthodologies SDLC structurées. Il y a des phases strictes et chaque phase doit être achevée avant de passer à la phase suivante. il n'y a pas de retour en arrière.

Chaque phase s'appuie sur les informations de l'étape précédente et possède son propre plan de projet.

La cascade est facile à comprendre et simple à gérer. Cependant, elle est généralement sujette à des retards car chaque phase doit être revue et entièrement approuvée avant que la phase suivante puisse commencer.

De plus, comme il y a peu de place pour les révisions une fois qu'une étape est terminée, les problèmes ne peuvent pas être résolus tant que vous n'êtes pas arrivé à l'étape de maintenance.

Ce modèle fonctionne mieux lorsque toutes les exigences sont connues et que la flexibilité n'est pas requise et que le projet a un calendrier fixe.

Avantages du modèle de cascade

  • Chaque phase a des livrables spécifiques et un processus d'examen.
  • Les phases sont traitées et terminées une par une.
  • Fonctionne bien pour les petits projets où les exigences sont très bien comprises.
  • Il renforce les notions de «définir avant la conception» et de «concevoir avant le code».

Inconvénients du modèle de cascade

  • Ajuster la portée pendant le cycle de vie peut tuer un projet
  • Aucun logiciel fonctionnel n'est produit jusqu'à la fin du cycle de vie.
  • Risque et incertitude élevés.
  • Modèle médiocre pour les projets complexes et orientés objet.
  • Modèle médiocre pour les projets longs et en cours.
  • Modèle médiocre où les exigences présentent un risque modéré à élevé de changement.

Quand utiliser le modèle de cascade

  • Un tel modèle est très utilisé lorsque les exigences sont claires et qu'il n'y aura aucun changement dans le temps de développement. Nous pouvons trouver de tels scénarios dans les projets de défense, où les exigences seront claires car avant d'écrire les exigences, elles analyseront bien.
  • Nous pouvons également nommer ce type de modèle de cycle de vie pour les projets de migration, où les exigences seront les mêmes que la plate-forme ou les langues peuvent varier / changer.
  • Peut également être utilisé pour les projets où le sponsor lui-même effectuera des activités de test, car jusqu'à la fin du codage, nous ne livrerons pas le projet.