Les entreprises disposent généralement de trois options lorsqu’il s’agit de moderniser le code hérité : refactoriser, migrer ou réécrire. Elles peuvent également combiner n’importe laquelle de ces approches. Le choix de la voie à suivre nécessite d’impliquer à la fois l’équipe d’ingénierie logicielle et l’équipe de direction.
Le refactoring de code modifie la structure interne du code source sans modifier son comportement externe ni affecter ses fonctionnalités. Ces petits ajustements sont moins susceptibles d’introduire des bugs et peuvent produire un code clair et propre plus facile à gérer.
Pour le code hérité, les équipes peuvent commencer par des modifications mineures pour chaque module, notamment en renommant les variables, en supprimant les méthodes en double ou inutilisées et en standardisant le formatage. Elles peuvent ensuite procéder à une restructuration plus logique, par exemple en décomposant les grandes méthodes en méthodes plus petites, en simplifiant les conditionnalités complexes et en déplaçant les fonctionnalités entre les fonctions afin de réduire les dépendances et améliorer la cohésion.
La migration est un autre moyen de moderniser le code hérité. Cela consiste à migrer tout ou partie du code vers des plateformes ou des piles technologiques plus récentes, comme le passage d’une architecture monolithique à des microservices ou la transition d’un système sur site au cloud. Il est important de vérifier la compatibilité avec la plateforme ou la pile technologique, ainsi que le support proposé par les fournisseurs pendant la migration.
La réécriture du code hérité est souvent le dernier recours, car elle implique la création d’un code entièrement nouveau pour remplacer l’ancien. Il s’agit d’un nouveau projet en soi, une entreprise de grande ampleur susceptible de mobiliser une équipe de développement distincte.
La migration et la réécriture peuvent être une tâche ardue pour les grands codes bases hérités, et les équipes peuvent dans ce cas envisager la stratégie du « figuier étrangleur ».3 Un figuier étrangleur pousse à la surface d’un arbre, ses racines descendent vers le sol et enveloppent lentement son arbre hôte dans un treillis resserrant qui finit par le faire dépérir.
En ce qui concerne les systèmes hérités, les équipes peuvent migrer ou réécrire de manière incrémentielle de petits fragments de code jusqu’à ce que l’ensemble du code soit passé à un framework moderne ou développé dans un langage de programmation actuel. Cependant, les équipes doivent créer une architecture transitionnelle pour que le code existant et le nouveau code coexistent. Cette architecture transitionnelle sera ensuite mise hors service une fois la migration ou la réécriture terminée.3