Ressources

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.

Waterfall incomplet

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. The problem is illustrated in Figure 4.

Mais revenons au document de référence

Ressources

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.

Waterfall itératif

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.

Waterfall itératif 2

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.

Waterfall itératif 3

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

Waterfall itératif 3bis

Conclusion

Finalement, on peut rĂ©sumer l’ensemble de modĂšle en Cascade avec le schĂ©ma suivant Waterfall final schema

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).