CTO & Audit 24 septembre 2026 8 min de lecture

Refonte d'un logiciel legacy sans documentation : comment on s'y prend

Le logiciel tourne depuis quinze ans, personne ne sait plus exactement ce qu'il fait, et celui qui l'a écrit est parti. Voici comment le reprendre sans tout casser.

Edouard Claude Thomas Lemaitre

Edouard Claude & Thomas Lemaitre

Fondateurs de Senzu Tech, CTO & Head of Product

Pour réécrire un logiciel legacy sans documentation, on ne part pas d'un cahier des charges qui n'existe pas : on part du code en production. On en extrait les règles métier en langage clair, on les fait valider une par une par les gens qui utilisent l'outil, puis on réécrit avec un test automatisé par règle, et on fait tourner l'ancien et le nouveau en parallèle avant de basculer. C'est ce que nous avons fait pour eRcane : vingt ans de PHP réécrits en Go, bascule à J+19 sans interruption.

Pourquoi les refontes de legacy échouent si souvent

Le scénario classique : une entreprise décide de « refaire l'outil ». Elle commande un cahier des charges, qui décrit ce qu'on aimerait que l'outil fasse. Un prestataire construit ce cahier des charges. Six mois plus tard, le nouvel outil est livré, et les utilisateurs découvrent que trente petites règles qu'ils utilisaient tous les jours ont disparu, parce que personne ne les avait écrites nulle part. Elles étaient dans le code, et dans la tête de deux personnes.

Trois causes reviennent :

  • On spécifie l'idéal, pas l'existant. Le cahier des charges décrit la cible et oublie que l'ancien outil encode quinze ans de cas particuliers, souvent pour de bonnes raisons.
  • On réécrit tout d'un coup. Le « big bang » repousse le moment de vérité au jour de la bascule, quand il est trop tard pour corriger sans stress.
  • On n'a aucun moyen de prouver que le nouveau fait pareil. Sans tests, chaque écart se découvre en production, par un utilisateur mécontent.

La méthode : du code vers les specs, pas l'inverse

On appelle ça code to specs. L'idée est simple : le code en production est la seule spécification complète et à jour qui existe. Il faut la lire, pas la deviner. Voici les six étapes, telles qu'on les pratique.

1. Lire le code et en extraire les règles

Un outil d'analyse assisté par IA parcourt le code source et en sort des règles métier en français : « une mesure datée de plus de N jours est signalée comme périmée », « un utilisateur usine ne voit que sa propre usine », etc. Chaque règle garde la référence exacte du code d'origine (fichier, fonction), pour pouvoir vérifier. Sur eRcane, 34 règles sont sorties de cette lecture.

2. Faire valider les règles par les utilisateurs

C'est l'étape que les projets sautent, et c'est la plus importante. On présente chaque règle à la personne qui utilise l'outil, avec une question simple : « c'est bien ça, et on le garde ? ». Trois réponses possibles : on garde, on corrige, on abandonne. Le résultat est un référentiel de règles validées, écrit en langage métier, que tout le monde comprend.

3. Montrer des écrans avant d'écrire du code

Des écrans statiques, sans logique derrière, qui montrent à quoi ressemblera chaque page du nouvel outil. Le client réagit sur du concret. Pour eRcane, 15 écrans ont été validés avant le premier commit.

4. Réécrire avec un test par règle

Chaque règle validée devient un test automatisé, écrit avant ou avec le code qui l'implémente. Le test porte le nom de la règle. Résultat : à tout moment, on peut prouver que le nouveau logiciel respecte les 34 règles, en lançant une commande. Sur eRcane, 95 fonctions de test couvrent les 34 règles.

5. Faire tourner l'ancien et le nouveau en parallèle

Le nouvel outil est mis en ligne sur une adresse de test, alimenté par les mêmes données que l'ancien. Le client compare, page par page, pendant plusieurs jours. Chaque écart est soit une règle mal comprise (on corrige), soit un bug de l'ancien outil (on décide ensemble si on le garde).

6. Basculer, et garder l'ancien sous la main

Quand la comparaison est concluante, on fait pointer le domaine vers le nouveau. L'ancien reste accessible quelques semaines, au cas où. Sur eRcane, la bascule a eu lieu 19 jours après la réunion de cadrage, en pleine campagne sucrière, sans interruption.

Ce que ça donne dans le temps : le cas eRcane

Le suivi en temps réel des deux sucreries de La Réunion tournait sur un PHP de 2006, enrichi pendant vingt ans, sans documentation. Voici la chronologie, en jours calendaires à partir de la réunion de cadrage (J0) :

JourCe qui se passe
J-11Écrans statiques envoyés au client
J-4Accord de principe
J0Réunion de cadrage
J+3Analyse du code, extraction des 34 règles
J+4Premier commit
J+7Version en ligne, testée par le client
J+7 à J+18Comparaison page par page avec l'ancien outil
J+18Procès-verbal de recette
J+19Bascule du domaine, sans interruption

Le nouveau site : 4 931 lignes de Go écrites à la main, dont 2 096 de tests, sans framework, hébergé en conteneur. Le détail est dans le cas client eRcane.

Faut-il vraiment réécrire ? Les cas où non

Réécrire n'est pas toujours la bonne réponse. Avant de lancer un projet, on pose trois questions :

  • L'outil pose-t-il un vrai problème ? Lent, impossible à faire évoluer, faille de sécurité, dépendance à une personne. Si la réponse est « il est moche », ce n'est pas un problème.
  • Le périmètre est-il stable ? Si l'entreprise ne sait pas encore ce qu'elle veut faire de l'outil dans un an, on commence par le cadrage, pas par la réécriture.
  • Peut-on faire moins ? Parfois, extraire les règles et documenter l'existant suffit à débloquer la situation. Parfois, une seule partie du logiciel mérite d'être refaite.

C'est pour ça que ce type de projet démarre chez nous par un audit du code : on lit, on extrait les règles, on vous dit ce qu'on a trouvé et ce que ça coûterait de réécrire. Le prix de la réécriture se fixe après cet audit, pas avant, parce que tout dépend de ce qu'il y a dans le code.

Questions fréquentes

Combien coûte la refonte d'un logiciel legacy ?

Ça dépend de ce qu'il y a dans le code, et on ne le sait qu'après l'avoir lu. C'est pourquoi on commence par un audit forfaitaire (de 3 à 8 k€ chez Senzu Tech, une à deux semaines, avec un rapport). Le devis de réécriture vient ensuite, avec le nombre de règles, d'écrans et de connecteurs connus.

Faut-il garder le même langage de programmation ?

Non. Une fois les règles extraites et validées en français, elles peuvent être réécrites dans n'importe quel langage. Pour eRcane, le PHP de 2006 a été réécrit en Go. Le choix se fait selon ce que vous pourrez maintenir ensuite.

Peut-on faire la refonte sans arrêter l'activité ?

Oui, si l'ancien et le nouveau tournent en parallèle avant la bascule. Sur eRcane, la comparaison a duré onze jours, page par page, et la bascule s'est faite en pleine campagne sans interruption.

Et si l'auteur du logiciel est encore là ?

Tant mieux, on l'interroge. Mais on lit quand même le code : la mémoire humaine oublie les cas particuliers, le code ne les oublie pas.

Pour aller plus loin

Partager :
Démarrage possible dès novembre 2026

Un logiciel que personne n'ose plus toucher ?

On commence par lire le code et vous dire ce qu'il y a dedans. 30 minutes pour cadrer l'audit.