Je me suis récemment intéressé aux pratiques agiles dans le développement de logiciels et depuis, j'ai vu beaucoup d'articles souligner que ces pratiques permettent de réduire les coûts globaux.
La logique derrière cela se présente généralement comme suit: si vos besoins changent, vous pouvez refléter ce changement dans le prochain backlog de sprint et cela entraînera une réduction des coûts, car la conception de la nouvelle fonctionnalité et son implémentation sont proches en termes de temps, de sorte que le le coût diminue, selon la célèbre règle selon laquelle plus vous devez apporter de modifications à vos exigences plus tard il sera coûteux de satisfaire à cette exigence.
Mais les projets logiciels moyens à grands sont complexes. Une modification soudaine des exigences ne signifie pas que vous n'aurez pas à toucher à d'autres parties de votre système pour satisfaire à cette exigence. Dans de nombreux cas, l'architecture devra être modifiée de manière très significative, ce qui signifie également que vous devrez réimplémenter toutes les fonctionnalités qui reposaient sur l'ancienne architecture. Donc, tout l'intérêt de la réduction des coûts disparaît un peu ici. Bien sûr, si une nouvelle exigence nécessite une nouvelle partie indépendante du système, ce n'est pas un problème, l'ancienne architecture ne fait que croître, elle n'a pas besoin d'être repensée et réimplémentée.
Et l'inverse. Si vous utilisez une cascade et que vous réalisez soudainement qu'une nouvelle exigence doit être introduite, vous pouvez aller changer votre conception. S'il nécessite que l'architecture existante soit modifiée, vous devez la repenser. Si cela ne dérange pas vraiment, mais introduit simplement une nouvelle partie du système, alors vous allez faire tout le travail, pas de problème ici.
Cela dit, il me semble que le seul avantage du développement agile est de créer des fonctionnalités complètes entre les sprints, et pour beaucoup de gens et de projets, ce n'est pas critique. De plus, l'agile semble entraîner une mauvaise architecture logicielle dans l'ensemble, car les fonctionnalités sont en quelque sorte giflées les unes sur les autres, les équipes agiles ne se soucient que du fonctionnement d'une fonctionnalité, pas de la façon dont elle fonctionne. Il semble que lorsque les systèmes deviennent de plus en plus complexes avec le temps, les pratiques de développement agiles augmentent en fait le chaos dans l'architecture globale du produit, ce qui entraîne finalement des coûts plus élevés, car il sera de plus en plus difficile d'introduire des changements, tandis que la cascade vous permettra de perfectionner votre architecture. avant de libérer quoi que ce soit.
Quelqu'un peut-il me dire où je vais mal ici, car de toute évidence beaucoup de gens utilisent l'agilité dans les environnements de production, donc je dois me tromper quelque part.