Ressources
- Waterfall document dâorigine par Royce - Managing the development of large software systems
- Explication du Waterfall en se basant sur Royce
- Erik Moberg - The Waterfall Model Does Not Exist - YouTube
- https://www.youtube.com/watch?v=NP9AIUT9nos - Moment marquant 11:53
- đ© The Myth of the âWaterfallâ SDLC â The Many Misconceptions of Waterfall
- Dr. Royce and Waterfall
- Explication des 5 étapes du document de Royce
- Scaling Software Agility - C2 Why the Waterfall Model Doesnât Work
Dans cette section nous allons revenir sur le fonctionnement de la mĂ©thode Waterfall au travers de lâaffirmation suivante.
Affirmation
Waterfall est itératif
Pourquoi cela est surprenant ?
PremiÚrement définissons ce que signifie Itératif
Avec le dĂ©veloppement itĂ©ratif, nous rĂ©servons du temps pour amĂ©liorer ce que nous avons. â On refait. (voir Cycle de vie - itĂ©ratif)
Cela devrait pour surprendre car traditionnellement on prĂ©sente le modĂšle en cascade comme une mĂ©thodologie de travail avec un enchaĂźnement de tĂąche successive, ce qui conduit Ă un effet tunnel; Chaque phase ne commence quâune fois les rĂ©sultats de la phase prĂ©cĂ©dente validĂ©s.
Et on ne se rend compte uniquement lors de la livraison que le travail rĂ©alisĂ© nâest pas forcĂ©ment en adĂ©quation avec les spĂ©cifications du client.
Juste avant cette figure 2 nous pouvons lire
Note importante
Figure 3 portrays the iterative relationship between successive development phases for this scheme. The ordering of steps is based on the following concept: that as each step progresses and the design is further detailed, there is an iteration with the preceding and succeeding steps but rarely with the more remote steps in the sequence. The virtue of all of this is that as the design proceeds the change process is scoped down to manageable limits.
Et juste en dessous de cette figure 2, nous pouvons lire
Note importante
I believe in this concept, but the implementation described above is risky and invites failure.
Mais revenons au document de référence
LâĂ©tude du modĂšle en Cascade sâarrĂȘte souvent Ă la conclusion du paragraphe prĂ©cĂ©dent. NĂ©anmoins si nous lisons le document dâorigine nous nous rendons vite compte que le modĂšle en Cascade nâest pas celui souvent dĂ©crit.
Dans son article fondateur, W.W. Royce critique le modĂšle en cascade. Il remarque que chaque phase doit pouvoir nĂ©cessairement renvoyer Ă la phase prĂ©cĂ©dente en cas de dĂ©fauts constatĂ©s en aval. En effet, les exigences et besoins peuvent se montrer incomplets ou de qualitĂ© insuffisante (ambiguĂŻtĂ©, incohĂ©rence, etc.). De plus, le client peut ne pas ĂȘtre pleinement conscient de ses exigences avant dâavoir vu le logiciel fonctionner.
Mais nâimpacter que la phase du dessus nâest pas forcĂ©ment le plus efficace. Il illustre ces propos avec lâexemple suivant :
La phase de test qui a lieu Ă la fin du cycle de dĂ©veloppement est le premier Ă©vĂ©nement pour lequel par exemple la synchronisation, le stockage, les transferts dâentrĂ©e/sortie, etc. sont expĂ©rimentĂ©s et non analysĂ©s. Pourtant, si ces phĂ©nomĂšnes ne parviennent pas Ă satisfaire les diverses contraintes externes, une refonte majeure est invariablement nĂ©cessaire. Un correctif uniquement du code (phase prĂ©cĂ©dente) nâest pas suffisante, les changements de conception requis risquent dâĂȘtre si perturbants que les exigences logicielles sur lesquelles la conception est basĂ©e et qui justifient tout seront violĂ©es.
Nous avons donc des impacts forts entre le test â le code â lâanalyse. Les itĂ©rations ne sont donc pas cantonnĂ©es uniquement Ă la phase prĂ©cĂ©dente.
Mais cette boucle de feedback peut conduire Ă une refonte complĂšte de lâensemble du systĂšme et Ă un dĂ©passement total des dĂ©lais et du budget. Pour Ă©viter une nouvelle conception, Royce introduit une Ă©tape supplĂ©mentaire, la conception prĂ©liminaire du programme, avant lâanalyse. Le concepteur du programme travaille alors avec les analystes pour dĂ©tecter toute consĂ©quence des choix de conception du programme.
Durant cette phase, on va se concentrer sur la crĂ©ation dâune petite partie du systĂšme.
- Si nous souhaitons faire une refonte vers une architecture microservices nous allons essayĂ© dâen faire un avant de tout basculer.
- Si nous souhaitons mettre en place des API REST, nous allons faire de mĂȘme essayer sur une petite partie du systĂšme de rĂ©aliser les Ă©tapes
Conclusion
Finalement, on peut rĂ©sumer lâensemble de modĂšle en Cascade avec le schĂ©ma suivant
Waterfall est itératif :
Et nous pouvons donc bien dire que Waterfall est itĂ©ratif car nous revenons sur les phases prĂ©cĂ©dentes pour amĂ©liorer notre logiciel (avant quâil soit trop tard et trop coĂ»teux).