Existe-t-il un anti-modèle qui décrit un système logiciel développé historiquement où plusieurs développeurs ont simplement ajouté de nouvelles fonctionnalités au système mais personne n'a vraiment gardé un œil sur l'architecture globale et aucune refactorisation n'a jamais été effectuée?
Je pense que cela se produit lorsque la direction / le client demande constamment de nouvelles fonctionnalités et que personne ne refacture quoi que ce soit, mais ajoute simplement à ce que les autres développeurs n'ont pas fait auparavant.
Une raison pourrait également être que le développeur est juste submergé par le système logiciel et ne comprend pas vraiment comment il fonctionne actuellement, puis ajoute / colle son code à la toute fin (au lieu de refactoriser le code et de le modifier.)
Au fil du temps, il devient de plus en plus difficile de maintenir le système.
(Je me demande s'il y a des images pour ce type de motif anti pour rendre cela plus clair pour personne de la programmation - comme une voiture qui a été construite en ajoutant simplement de plus en plus de fonctionnalités sans penser à la conception globale. Comme quelqu'un a besoin de remorquer remorques en roulant vers l'arrière, puis un ingénieur soude simplement une barre de remorquage à l'avant de la voiture. Travail accompli. Mais maintenant le capot ne s'ouvre plus.)
Réponses:
Vous parlez de dette technique .
Nous accumulons tous une dette technique dans les produits que nous développons au fil du temps; le refactoring est l'un des moyens très courants et efficaces de réduire cette dette technique, bien que de nombreuses entreprises ne remboursent jamais leur dette technique. Ces entreprises ont tendance à trouver leurs logiciels extrêmement instables sur la route, et la dette technique devient si horrible que vous ne pouvez pas le payer progressivement, car il faudrait trop de temps pour le payer de cette façon.
La dette technique a le terme, car elle suit les mêmes comportements de dette. Vous obtenez la dette, et tant que vous continuez à dépenser (créer des fonctionnalités) et à ne pas rembourser cette dette, elle ne fera qu'augmenter. Tout comme la dette, quand elle devient trop importante, vous arrivez à des points où vous souhaiterez peut-être la supprimer entièrement avec des tâches dangereuses comme des réécritures complètes. Tout comme la dette réelle, car elle s'accumule jusqu'à un certain point, elle entrave complètement votre capacité à dépenser (créer des fonctionnalités).
Juste pour jeter un autre terme dans le mélange, la cohésion se réfère à la façon dont un système, micro au niveau ligne, ou macro au niveau système, s'assemble. Un système hautement cohésif aura toutes ses pièces très bien assemblées et ressemblera à un ingénieur qui a tout écrit. Votre référence ci-dessus à quelqu'un qui vient de coller son code à la fin violerait la cohésion de ce système.
Gérer la dette technique
Il existe de nombreuses façons de gérer la dette technique, mais comme pour la dette réelle, la meilleure approche consiste à la rembourser fréquemment. Malheureusement, comme la dette réelle, il est parfois préférable de cumuler davantage pour une courte période, par exemple, le temps de commercialisation d'une fonctionnalité peut doubler ou tripler vos revenus. La partie délicate consiste à évaluer ces priorités concurrentes ainsi qu'à identifier le moment où le retour sur investissement des dettes n'en vaut pas la peine pour la fonctionnalité donnée par rapport à la date à laquelle elle l'est.
Parfois, cela vaut donc la peine d'accumuler la dette pour une courte période, mais c'est rarement le cas, et comme pour toute dette, plus la période est courte, mieux c'est. Donc, finalement (de préférence rapidement ) après avoir accumulé une dette technique, vous devez la rembourser, ce sont des approches courantes:
la source
Votre description correspond à Foote et à la grosse boule de boue de Yoder :
la source