Aujourd’hui, nous allons parler du sujet de la dette technique, qui bien qu’il existe depuis de nombreuses années n’est pas nécessairement compris ni par les équipes ni par les clients.
Nous allons donc essayer de proposer une formule ou une grille de calcul permettant d’évaluer la dette technique d’un logiciel ou d’un SILe SI désigne le système d'informations d'une organisation.. L’objectif est de fournir un repère chiffré permettant de visualiser et d’appréhender cette dette et de coordonner les acteurs afin de la minimiser.
Voici une définition théorique de la dette technique (cf. Wikipedia) :
La dette technique est une métaphore du développement logiciel inventée par Ward Cunningham. Il s’inspire du concept existant de dette dans le contexte du financement des entreprises et l’applique au domaine du développement logiciel.
Cette définition reste vague mais pose le principe d’un coût représenté par un logiciel ou un SI relativement à sa qualité, sa maintenance ou son cycle de vie. Concrètement quel peut être l’intérêt d’une telle approche, et comment peut-elle m’aider dans mes choix ?
Ou à l’inverse, que se passe t-il si l’on ne s’en occupe pas ? Immanquablement, la dette technique se constitue et augmente, de manière non visible mais absolument réelle, avec d’abord peu d’impacts, puis de plus en plus avec le temps, de sorte que la dette va augmenter de façon exponentielle.
Au quotidien, voici les manifestations de la dette technique :
Si vous retrouvez vos logiciels ou votre SI à travers ces quelques propositions, alors il est temps de se préoccuper de la dette technique.
Une des formes les plus évidentes de dette technique est le retard technologique, mais il en existe de nombreuses autres, parfois nichées là où l’on ne s’y attend pas.
Cette forme de dette technique regroupe tous les retards accumulés quant à l’environnement technique.
Si vous possédez une ferme de serveurs, la dette technique sera le nombre de retards de montée de versions majeures de votre environnement. Par exemple, vous avez deux serveurs Windows XP (si si ça existe) et deux RDHL 4, vous avez donc une dette technique de plusieurs versions de vos serveurs.
Ce concept de dette technique « environnement » peut donc comprendre n’importe quel élément de la stack « infra / serveur » qui n’est pas directement lié à vos applicatifs. Par exemple, si vous êtes en environnement virtualisé, une version de retard de VSphere rentre dans cette catégorie.
Pourquoi des versions de retard créent elles une dette ? Parce qu’un jour ou l’autre vous serez obligé de mettre à jour ces environnements (et parfois de manière contrainte), et plus vous serez loin de la cible (disons la version actuelle) et plus l’effort sera dur. Nous proposons donc une simple formule pour calculer cette dette technique :
Ainsi votre dette technique « environnement » sera la somme de ces points sur l’intégralité de vos environnements divisée par le nombre d’environnements. Libre à vous par la suite de valoriser ces valeurs en euros.
Plus connue et plus simple à aborder, elle correspond à la dette technique de vos applicatifs logiciels. Elle se décompose selon nous en 5 parties :
La stack applicative correspond à l’intégralité des technologies utilisées pour faire l’applicatif. Par exemple le langage JavaLangage de développement très populaire ! avec un framework Java EE, le tout orchestré par Maven. La dette se composera donc de l’intégralité des retards de chacune des briques applicatives utilisées.
Une composante plus difficile à mesurer est la pérénité de la technologie. Prenons le cas d’un framework JavaScript (AngularAngular est un framework de développement JavaScript populaire basé sur TypeScript. par exemple). Ce framework est-il correctement maintenu ? Est-ce le bon choix concernant le futur ? Cette estimation est d’autant plus complexe à réaliser que les technologies concernées évoluent rapidement (en particulier pour la partie frontale / web).
Les points se comptabilisent de la même manière que précédemment :
Il s’agit ici de la qualité intrinsèque de l’applicatif. Pour la mesurer, il convient d’avoir un oeil expert et d’évaluer la qualité du code produit. Une bonne approche pour évaluer cette qualité est de vérifier que le code respecte le paradigme de développement de la technologie utilisée. Cette approche, bien que non chiffrée, s’avère souvent la plus logique.
Plus facile à mesurer si vous avez un suivi des anomalies. Il convient de prendre en compte le nombre de bugs issus du code sur une période de temps donnée (rapportée à la taille de l’application).
Souvent les audits se basent sur la taille de la documentation, mais cette approche ne nous parait pas pertinente. Par exemple, la Javadoc et la documentation Oracle sont largement pléthoriques, mais la majorité de ces informations est parfaitement inutile.
La qualité de la documentation se jugera donc davantage sur la facilité d’entrée d’un nouveau membre dans l’équipe de développement. Pour cela, la meilleure documentation reste une bonne présentation de l’application, de son architecture et de ses règles de conception.
Plus classique, nous mesurons ici la couverture des tests sur l’applicatif.
Une fois ces définitions posées, nous pouvons envisager de créer une sorte d’indicateur qui permette de définir si, oui ou non, la question de la dette technique devient prioritaire pour vous.
Voici donc un référentiel simple, qui vous permet d’avoir une vision plus claire de la dette technique de vos applications et de votre SI :
Faites la somme de tous les points obtenus. Si le total est inférieur à 5, aucun problème majeur. Entre 5 et 10, il faut commencer à s’inquiéter. Au dessus de 10… ça commence à sentir le roussi !
Configuration pour l’installation du CAS jasig sur un serveur JBoss 7. Problème de loggeur, log4j et hibernate dialect
Découvrez la planche #23 !
Vous démarrez un projet d’application et voulez mettre en place un outil d’intégration continue pour votre projet ? On vous partage nos conseils et notre retour d’expérience sur le sujet !