Legacy Software Modernization with AI

ARTICLE 

 

Pour les entreprises suisses, faire évoluer les logiciels métier signifie concilier innovation, continuité opérationnelle et protection des données. Les applications développées au fil des années intègrent des processus et des connaissances précieux, mais elles peuvent devenir difficiles à maintenir et à intégrer à de nouvelles applications, à des services cloud et à des outils d’intelligence artificielle.

Moderniser ne signifie pas nécessairement tout réécrire à partir de zéro. L’IA peut accompagner l’analyse du code, la création de documentation, le refactoring et la préparation des tests, en facilitant une démarche progressive. Pour obtenir des résultats fiables, il faut toutefois des compétences spécialisées, des vérifications et un contrôle attentif du code et des données partagés avec les outils d’IA.

Le défi : quand les logiciels legacy freinent l’innovation

De nombreuses entreprises utilisent des applications développées au fil du temps, souvent personnalisées pour répondre à des besoins spécifiques. Ces systèmes continuent de soutenir des processus essentiels, mais peuvent présenter des limites qui compliquent l’évolution de l’entreprise :

  • Une intégration complexe: l’absence d’interfaces web ou d’API complique la connexion des applications aux services cloud, aux CRM, aux plateformes e-commerce et aux nouvelles solutions numériques
  • Des technologies difficiles à maintenir: des composants qui ne sont plus pris en charge et des structures de données peu accessibles peuvent augmenter les coûts de gestion et freiner l’innovation
  • Une dépendance aux compétences individuelles: les personnalisations et les modifications non documentées concentrent la connaissance du système entre les mains de quelques personnes, ce qui complique la maintenance et la transmission des connaissances

Lorsque ces limites s’accumulent, l’ajout de nouvelles fonctionnalités prend plus de temps, chaque modification devient plus délicate et la maintenance des applications mobilise des ressources qui pourraient être consacrées à de nouveaux projets.

Le problème n’est donc pas l’âge du logiciel en soi, mais sa capacité à répondre aux besoins actuels de l’entreprise. Moderniser signifie identifier ce qui doit être préservé et ce qui doit évoluer, en valorisant les investissements existants.

Comment l’IA peut accompagner la modernisation

L’IA peut assister les équipes de développement dans différentes activités de modernisation des logiciels legacy. Les propositions générées doivent être examinées et validées par les développeurs. Voici les principaux domaines dans lesquels elle peut intervenir:

  • Création de documentation: elle peut analyser le code legacy et les commentaires disponibles pour aider à produire des descriptions de fonctions et une documentation technique à vérifier et à compléter
  • Nettoyage et refactoring du code: elle peut aider à repérer les doublons et les parties potentiellement superflues, en suggérant des modifications pour améliorer la lisibilité et la maintenabilité
  • Aide à la réécriture dans des langages modernes: elle peut proposer des traductions de portions de code, par exemple de COBOL ou Delphi vers Java, C# ou Python. Ces propositions doivent être vérifiées au regard de la logique applicative et du comportement du système d’origine
  • Revue du code d’origine et du code réécrit: elle peut faciliter la comparaison des deux versions, en signalant d’éventuels écarts, des lacunes dans la journalisation ou dans la gestion des exceptions
  • Aide à la migration et à la synchronisation des données: elle peut contribuer à définir des procédures et des scripts pour la mise en correspondance, la validation et la réconciliation des données entre les anciens et les nouveaux systèmes
  • Préparation des tests: elle peut générer des propositions de tests unitaires, fonctionnels et de non-régression à partir du code et du comportement attendu, à vérifier et à compléter avec l’équipe de développement
  • Aide à l’analyse de sécurité: elle peut signaler des problèmes potentiels dans le code, comme des risques d’injection et des pratiques non sécurisées. Cette aide ne remplace ni les outils d’analyse de sécurité, ni les tests, ni la revue par des spécialistes.

L’IA générative en pratique : GitHub Copilot et Claude Code

Au sein de Var Group, différentes technologies sont expérimentées pour accompagner les clients dans la modernisation de leurs applications. Parmi les outils évalués figurent GitHub Copilot et Claude Code d’Anthropic.

Ces outils peuvent assister les développeurs dans des activités telles que:

  • Analyse préliminaire: examiner plusieurs fichiers de code pour obtenir des explications sur les fonctions et faciliter la compréhension du contexte applicatif
  • Refactoring : proposer des modifications pour rendre le code plus clair, par exemple en extrayant des méthodes ou en suggérant des noms plus explicites
  • Traduction entre langages: générer une première proposition de conversion, par exemple de Visual Basic vers C#, à vérifier au regard de la logique et du comportement du code d’origine
  • Aide aux tests: préparer une structure initiale de tests unitaires, à compléter et à valider
  • Sécurité et bonnes pratiques: suggérer des contrôles des entrées et des sorties ainsi que des améliorations possibles des pratiques de programmation

Les propositions générées doivent être évaluées dans le contexte du projet, puis examinées et testées avant leur adoption.

Pourquoi investir dans la modernisation applicative

Une démarche de modernisation bien conçue peut aider l’entreprise à:

  • Réduire la dette technique, en simplifiant la maintenance et en limitant la complexité accumulée au fil du temps
  • Améliorer l’agilité et l’intégration, grâce à des API, des interfaces et des composants modulaires qui facilitent l’évolution des applications
  • Renforcer la sécurité, en corrigeant les vulnérabilités et en remplaçant les composants qui ne sont plus pris en charge
  • Réduire la dépendance à certaines personnes, grâce à une documentation à jour, à un code plus compréhensible et à des tests accompagnant les modifications
  • Faciliter le travail des équipes de développement, avec des outils et des pratiques favorisant la collaboration et le développement des compétences

Notre approche de la modernisation

Moderniser les logiciels signifie créer les conditions permettant aux applications d’évoluer en fonction des besoins de l’entreprise. L’IA peut accompagner cette démarche, mais son utilisation exige une méthode, des compétences et un contrôle humain.

Var Group a développé une méthodologie de modernisation qui procède par étapes et comprend :

  • Data Discovery: inventaire des données
  • Évaluation applicative: analyse des applications existantes
  • Définition du contexte et des règles de modernisation, comprenant:
    • la syntaxe et les pratiques de développement de l’entreprise
    • le choix des modèles d’IA adaptés
    • la définition des processus d’intégration et de livraison continues (CI/CD)
    • la définition des standards de sécurité
  • User Story Mapping et planification: organisation des besoins et des plans de travail
  • Réécriture applicative
  • Tests et mise en production du projet

À retenir

  • Trop de systèmes legacy en Italie freinent la croissance, l’intégration et la capacité à évoluer
  • La documentation et les compétences internes font défaut, et le risque de panne est élevé
  • L’IA générative aide à documenter, nettoyer, réécrire, tester et sécuriser le code
  • Il n’existe pas de LLM parfait : le choix dépend des technologies legacy, du contexte et des compétences présentes dans l’entreprise. Un accompagnement spécialisé est donc essentiel dans cette démarche qui peut sembler simple, mais ne l’est pas
  • Le marché est vaste et connaît une forte croissance: l’ignorer a un coût
  • La modernisation favorise la sécurité, l’agilité, l’efficacité des coûts, la fidélisation des collaborateurs et l’avantage concurrentiel