Oubliez Agile une minute, pensez à ce que l'on entend par "cascade".
Il y a une phase d'exigences, dans laquelle chacun essaie de comprendre QUELS problèmes le produit final doit résoudre. Les gens se disputent à ce sujet pendant un certain temps, puis ils approuvent tous un ensemble d'exigences. À ce stade, votre portée est définie, les contrats sont signés et le client peut s'éloigner et attendre que vous trouviez un produit qui réponde à ces exigences définies.
Ensuite, il y a une (ou peut-être deux) phase (s) de conception. Les concepteurs (qui peuvent ou non être les développeurs), discutent de la façon dont le système doit aller de pair pour répondre aux exigences de signature. Des problèmes peuvent survenir s'ils ne comprennent pas tout à fait une exigence, ce qui peut signifier qu'ils doivent retourner auprès du client, potentiellement rouvrir la phase des exigences (et obtenir une autre série d'approbations) ou au moins mettre la gestion du changement en action . Souvent, les concepteurs font simplement leur meilleure supposition. Ils peuvent proposer un modèle de données logique et beaucoup d'UML décrivant un nouveau système et comment il devrait fonctionner. Ensuite, ils signent.
Maintenant, les développeurs peuvent commencer à coder, sur la base de la conception approuvée. Des problèmes peuvent survenir s'ils ne comprennent pas très bien la conception, ce qui peut signifier qu'ils doivent revenir au concepteur, potentiellement rouvrir la phase de conception (et obtenir une autre série d'approbations) ou au moins mettre la gestion du changement en action . Les concepteurs peuvent à leur tour réaliser que la confusion remonte vraiment aux exigences, ce qui signifie qu'ils doivent rouvrir les discussions sur les exigences, les approbations et la gestion du changement. Souvent, les programmeurs (qui ont une échéance imminente) font simplement leur meilleure supposition. Ils font ce qu'ils peuvent pour créer du code fonctionnel. Ensuite, ils le mettent à l'essai.
Maintenant, la phase de test du système s'installe. Les testeurs testent en fonction de leur compréhension des exigences et de la conception, et enregistrent ce qu'ils perçoivent comme des défauts dans un système de suivi des bogues / gestion des modifications, ce qui oblige les développeurs à recommencer à développer, sauf s'ils voient le problème comme un défaut de conception, qui le renvoie à la conception, etc ... Finalement, les tests du système réussissent et sont validés.
Enfin, le client revient et effectue des tests d'acceptation des utilisateurs sur le nouveau système. C'est là qu'ils décident si la solution testée par les testeurs, développée par les développeurs et conçue par les concepteurs est réellement ce qu'ils veulent. Si ce n'est pas le cas, vous devrez peut-être revenir à la phase de conception ou même revoir les exigences.
L'idée derrière la cascade est qu'il est difficile (et très indésirable) de revenir en arrière une fois la phase terminée. Différentes personnes sont généralement impliquées dans différentes phases, il y a donc plusieurs transferts - chacun d'entre eux présente un grand risque de mauvaise interprétation et de perte d'informations. Il existe également un écart important entre le moment où les clients disent ce qu'ils veulent et le moment où ils voient ce qui a été construit, période pendant laquelle les exigences réelles peuvent très bien avoir changé.
Les méthodologies agiles se concentrent sur une communication et une coopération solides entre toutes les parties intéressées. Le principe "Collaboration du client sur la négociation du contrat" signifie que vous ne devriez pas avoir à passer par une série de signatures et de transferts, mais plutôt travailler simplement avec le client, chaque itération déterminant les exigences pour une pièce du puzzle. et former immédiatement des tests, une conception et un code de travail - avec tous les acteurs communiquant le plus directement possible (en éliminant les coûts et les risques de transfert). Le code de travail est rapidement testable par le client, éliminant les risques de décalage. Toutes les activités se déroulent dans un tourbillon collaboratif, pas dans un flux descendant.
Pour un excellent aperçu de ce que les méthodologies agiles essaient de faire, je recommande fortement le développement logiciel agile d' Allistair Cockburn : le jeu coopératif .