Modèle en cascade vs développement agile : déroulement, planification, changements, tests, projets adaptés
Le modèle en cascade est un modèle de développement qui enchaîne la définition des exigences, la conception, la programmation et les tests dans l’ordre, de l’amont vers l’aval, et ne passe en principe à la phase suivante qu’une fois les livrables de la phase précédente arrêtés. Comme le plan d’ensemble est fixé au départ, l’avancement et les coûts sont faciles à maîtriser, mais les erreurs d’exigences découvertes dans les phases tardives entraînent beaucoup de reprises. Le développement agile est un terme générique pour des approches qui répètent de courtes itérations de quelques semaines, produisent à chaque fois un logiciel qui fonctionne, intègrent les retours des utilisateurs et révisent le plan quand les exigences changent ; Scrum et l’extreme programming (XP) en sont des méthodes typiques. La cascade convient quand les exigences sont claires et stables, l’agilité quand elles changent facilement et qu’on veut livrer tôt des fonctions utilisables.
| Critère | Modèle en cascade | Développement agile |
|---|---|---|
| Enchaînement des phases | Exigences → conception → programmation → tests, chacune une seule fois, dans l’ordre depuis l’amont | De courtes itérations (les sprints de Scrum) comprenant planification, conception, implémentation et tests, répétées de nombreuses fois |
| Planification | Le périmètre, le calendrier et le coût de tout le projet sont fixés au départ, et le travail suit ce plan | On fixe une orientation générale, et le plan est révisé à chaque itération, en commençant par les éléments les plus prioritaires |
| Changements d’exigences | Un changement après l’arrêt des livrables de la phase précédente entraîne beaucoup de reprises et passe par une procédure de gestion des modifications | Le changement est attendu et s’intègre facilement au plan de l’itération suivante |
| Moment où un logiciel fonctionne | Surtout vers la fin du développement ; livré d’un bloc après les tests | Chaque itération produit un logiciel qui fonctionne (un incrément, dans Scrum) |
| Moment des tests | Après la programmation : tests unitaires, d’intégration, système et de recette dans l’ordre (associés aux phases de conception dans le cycle en V) | À chaque itération ; les changements sont souvent vérifiés à chaque fois par des tests automatisés et l’intégration continue |
| Documentation | Les spécifications des exigences, documents de conception, etc. sont rédigés pour chaque phase et arrêtés après revue | Le logiciel qui fonctionne prime, et la documentation se limite souvent au nécessaire |
| Implication du client | Surtout lors de la définition initiale des exigences et de la recette finale | Examine le produit à chaque itération et donne son avis ; dans Scrum, le product owner fixe les priorités de ce qu’il faut développer |
| Suivi de l’avancement | Mesuré par les phases et livrables terminés ; facile à gérer avec une WBS et des diagrammes de Gantt | Mesuré à chaque itération par les fonctions terminées et opérationnelles |
| Projets adaptés | Exigences claires et stables ; spécifications à figer tôt en même temps que le matériel ; contrats qui doivent fixer d’avance le périmètre et le coût | Exigences susceptibles de changer, ou nouveaux services dont on veut vérifier l’accueil par les utilisateurs pendant le développement |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.