Remédiation legacy
Votre système fonctionne, mais chaque changement coûte plus cher que le précédent.
Nous le remettons sous contrôle : pas de big bang, pas de régressions, un comportement prouvé équivalent à chaque étape.
La troisième option
Face à un système legacy, la plupart des entreprises voient deux options. La réécriture big bang, qui mise des années de budget sur une promesse et échoue plus souvent qu’on ne l’admet. Ou le gel, qui laisse l’inertie s’accumuler en silence. Nous en pratiquons une troisième, le Legacy Reclaiming : reconstruire le système à côté de lui-même, morceau par morceau, avec une preuve d’équivalence à chaque étape.
Jamais de modification sans filet
Avant toute transformation, nous consignons ce que le système fait réellement, et non ce qu’en dit la documentation, dans une référence comportementale exécutable : tests existants, tests de caractérisation pour les zones non couvertes, et une capacité de détection calibrée par mutation testing et fuzzing. Nous savons, chiffres à l’appui, ce que le filet retient.
L’ancien code reste la référence tant que le nouveau n’a pas prouvé son équivalence : mêmes entrées, mêmes sorties, comparées systématiquement. Chaque divergence est rejouable et tracée. Certaines se révèlent être des bugs du système existant ; celles-là sont documentées et arbitrées avec vous, jamais corrigées en silence.
Module par module, chaque étape réversible. À aucun moment la production n’est en risque.
Les techniques viennent des travaux de Michael Feathers sur le code legacy et des patterns de legacy displacement. Nous citons nos sources.
Des jumeaux numériques, pas des mocks
Un système legacy vit rarement seul : il dépend de référentiels, de mainframes, d’API partenaires. Pour le reconstruire hors production, nous développons un jumeau numérique de chaque dépendance qui compte : un simulateur qui expose le même contrat que le système réel (mêmes routes, mêmes schémas de messages, mêmes codes d’erreur) et reproduit la part de comportement dont votre application dépend réellement, alimenté par des données de production anonymisées et des données synthétiques. La part synthétique sort de générateurs que nous construisons sur les distributions de production, pour atteindre aussi les cas limites et les états historiques atypiques où se cachent les règles oubliées. Votre code ne distingue pas le jumeau du système réel ; seule la configuration d’environnement change. Un mock statique simule une réponse. Un jumeau reproduit un comportement.
IA agentique sous harnais de vérification
Les agents exécutent les refactorings mécaniques, avec la connaissance accumulée du système pour source de vérité. Rien n’est intégré sans passer le harnais et une revue par nos architectes. La vitesse vient des agents ; la confiance vient du harnais. Notre manière de travailler avec eux est publique : lisez notre AI Handbook.
Ce qui reste quand nous partons
que votre équipe peut de nouveau faire évoluer.
un filet de non-régression permanent, versionné avec votre code, exécuté dans votre CI. Ainsi que votre environnement de développement local, indépendant de la disponibilité des tiers.
le comportement du domaine, lisible par le métier et exécutable comme tests. Une documentation qui ne peut pas dériver, parce qu’elle s’exécute.
Par où cela commence
Un audit est le point de départ d’une remédiation : il donne les faits, le point de référence de maturité et le plan hiérarchisé. La remédiation transforme ce plan en un système qui accepte de nouveau le changement.