Ce chapitre contient des informations sur le concept de la dette technique , qui n’est pas un sujet abordé explicitement dans le livre de Larman (2005).
Pour ajouter une nouvelle fonctionnalité à un système, les développeurs et développeuses ont souvent un choix entre deux façons de procéder. La première est facile à mettre en place (le « hacking cowboy » sur le Spectre de la conception), mais elle est souvent désordonnée et rendra sûrement plus difficiles des changements au système dans le futur. L’autre est une solution élégante et donc plus difficile à rendre opérationnelle, mais elle facilitera des modifications à venir. Comment prendre la décision ? La dette technique est une métaphore pour aider à comprendre des conséquences à long terme pour des choix de conception permettant de livrer une fonctionnalité à court terme.
Martin Fowler (2007) a posé la question « Est-ce que ça vaut la peine de faire du bon design ? » – peut-on en faire moins pour développer plus vite ? Il a proposé un pseudographique présentant l’évolution de la fonctionnalité cumulative (élément difficile à mesurer) en fonction du temps (voir la figure 7.1). Selon Fowler, le temps pour atteindre la limite de gain de conception (le temps où faire attention à la conception permet un gain de temps) est une question de semaines plutôt que de mois. Mais il avoue que c’est une hypothèse, car il est difficile de mesurer les fonctionnalités cumulatives et d’évaluer ce qu’est un bon design. Le graphe sert à illustrer le principe que, à un certain moment, ignorer une conception va nuire à la performance des développeurs et développeuses en ce qui concerne les nouvelles fonctionnalités.
Voici une courte définition complémentaire de la dette technique (Avgeriou, Kruchten, Ozkaya, et Seaman, 2016) :
7.1 Origine
La dette technique est une forme de risque qui peut apporter des bénéfices ou des pertes. Tout dépend de la quantité d’intérêt à payer. L’inventeur du wiki, Ward Cunningham, a utilisé la métaphore de la dette dans un projet de développement de logiciel de gestion de portefeuille réalisé dans une variante du langage Smalltalk (1992) :
Comme c’est une métaphore puissante, beaucoup de développeurs et développeuses l’utilisent, et c’est un terme avec une certaine popularité. Dans une vidéo plus récente, Cunningham a rappelé que l’origine de la métaphore s’inspire du code qui est incohérent par rapport à un problème complexe plutôt que du code simplement « mal écrit » :
7.2 Nuances de la dette technique
Fowler a également abordé le sujet de la dette, notamment à propos de la distinction entre du code « mal écrit » et les compromis de conception faits avec une intention d’accélérer le développement :
La dette peut être classifiée dans un quadrant comme sur le tableau 7.1. Selon Fowler, la dette mentionnée par Ward Cunningham dans sa vidéo peut être classifiée comme « prudente et involontaire ». Selon son expérience, Fowler remarque que la dette « imprudente et délibérée » est rarement rentable.
Dette | Imprudente | Prudente |
---|---|---|
Délibérée | « On n’a pas le temps pour la conception ! » Cette forme de dette est rarement rentable. | « Il faut livrer maintenant puis en assumer les conséquences. » Exemple : La dette est due à une partie limitée du code. |
Involontaire | « C’est quoi, la séparation en couches ? » Il s’agit de l’ignorance des bonnes pratiques. | « Maintenant, on sait comment on aurait dû le faire. » C’est tenter une solution malgré une compréhension limitée du problème. |
7.3 Résumé
- Il n’est pas toujours possible de faire une conception facile à utiliser et à modifier (sans dette technique), puisque certaines choses sont impossibles à prévoir, surtout dans une application avec beaucoup de complexité.
- Ignorer complètement le design en faisant du « hacking cowboy » peut apporter un avantage à court terme pour valider des hypothèses rapidement, par exemple dans un contexte d’entreprise en démarrage sans beaucoup de financement ou dans un concours de programmation. Cependant, le code produit dans ce genre de contexte aura des problèmes importants (la dette technique) à long terme.
- La dette technique peut aussi être due à l’incompétence (l’ignorance des bonnes pratiques comme la séparation des couches dans une architecture logique, comme l’exemple d’une couche présentation et d’une couche domaine sur la figure 5.7).