La modernisation des applications héritées a toujours été l’un des aspects les plus complexes du développement logiciel en entreprise, surtout lorsqu’il s’agit de gérer des cadres obsolètes, des API désuètes et des architectures complexes. Chez HCLTech, le processus de modernisation s’appuyait traditionnellement sur des outils basés sur des règles comme ATMA et Advantage Solutions. Bien que ces outils aient été efficaces, ils exigeaient souvent un important travail manuel.
Avec l’émergence d’outils GenAI tels que AWS Q Developer, GitHub Copilot, Gemini Code Assist et AI Force de HCLTech, le paysage de la modernisation connaît des changements spectaculaires. Ces technologies ont rendu le développement et la transformation des applications plus rapides, plus intuitifs et beaucoup plus efficaces.
Dans le cadre d’une récente preuve de concept (PoC), AWS Q Developer a été utilisé pour évaluer ses capacités dans des scénarios de modernisation en conditions réelles. L’expérience a fourni des renseignements précieux sur la manière dont l’AI peut rationaliser les mises à niveau, générer de la documentation et accélérer les tests, rendant la modernisation nettement plus fluide et efficace.
Cas d’utilisation : Applications réelles, impact concret
La PoC s’est concentrée sur deux applications d’entreprise réelles :
- KomiBank – Une application Spring Boot MVC avec une base de données MySQL.
- Plasma – Un système de traitement des paiements multi-niveaux fonctionnant sur WebLogic et Oracle.
Les objectifs de modernisation comprenaient :
- La mise à niveau des versions de Java (de Java 8/11 à Java 21)
- La migration de WebLogic vers Embedded Tomcat
- Le remplacement de la base Oracle par H2
- Le refactoring du code hérité et des dépendances
- La génération de documentation et de cas de test automatisés
Mise en œuvre avec AWS Q Developer
Analyse de projet et mise en contexte
Comme aucune documentation n’était disponible pour les applications sélectionnées, l’équipe a commencé par demander à AWS Q Developer de générer les matériaux de base, notamment la documentation technique, les survols fonctionnels, les guides de déploiement et la documentation API. Ces éléments générés automatiquement ont offert une compréhension globale de l’architecture de chaque application avant d’entamer la modernisation.
Mise à jour du langage, du framework et migration du code
Une fois le contexte de projet établi, il s’agissait ensuite de mettre à jour les versions de Java, le framework Spring Boot et les dépendances pertinentes. La commande /transform d’AWS Q Developer a permis d’automatiser une grande partie de ce processus, tandis que le mode chat agentique a facilité des migrations plus granulaires et guidées grâce à des instructions par invite.
Développement et couverture des cas de test
Pour renforcer la couverture des tests, AWS Q Developer a été sollicité afin de créer un plan de couverture, suivi par la génération automatique de cas de test alignés sur le plan. Cette approche a permis à l’équipe d’atteindre une couverture quasi complète—avec une automatisation presque totale des tests unitaires et d’intégration.
Déploiement et validation
Après la mise à niveau et la migration, les applications ont été déployées manuellement sur les serveurs cibles. Comme aucune donnée de test n’existait, l’équipe l’a créée manuellement et a vérifié les processus critiques afin d’assurer l’intégrité fonctionnelle.
Forces clés d’AWS Q Developer
- Programmation en langage naturel : Les commandes par invite traduisaient l’intention du développeur directement en code exécutable.
- Commande /transform et interface de chat : Permettaient des flux de travail de modernisation structurés et guidés.
- Mode agentique : Offrait une assistance contextuelle en plusieurs étapes grâce aux modèles Claude Sonnet.
- Documentation automatisée : Génération de documentation fonctionnelle, technique et API avec un effort minimal.
- Automatisation des tests : Analyse du code et génération efficace de cas de test, améliorant la couverture et la fiabilité.
Résultats mesurés (durée d’exécution de l’outil uniquement) :
- Durée de la mise à niveau Java : ~3,7 heures (KomiBank) ; ~12 heures (Plasma, en raison de retours manuels)
- Génération de cas de test : ~1 jour pour 162+ cas de test (KomiBank)
- Documentation : JavaDocs et guides de déploiement générés en ~4 heures (KomiBank)
Défis et limites
Malgré ses atouts, AWS Q Developer présente aussi certains défis :
- Automatisation partielle : Une validation et une restructuration manuelles sont fréquemment requises.
- Sensibilité à l’invite : La qualité des résultats dépend fortement de la précision de la formulation des invites.
- Erreurs de transformation : La commande /transform échoue parfois sur des projets complexes comme Plasma.
- Hallucinations : La documentation générée automatiquement contient parfois des détails fictionnels ou erronés.
- Stabilité du chat : De longues sessions peuvent parfois entraîner un gel du chat ou une perte de contexte.
Observations et apprentissages
Il a été constaté qu’une approche itérative, guidée par l’humain, demeure la plus efficace avec AWS Q Developer. Si l’AI peut automatiser une grande partie du travail, la supervision du développeur demeure essentielle pour garantir l’exactitude, l’intégrité du code et guider le processus avec efficacité.
Les points clés à retenir sont :
- Les workflows itératifs offrent une meilleure précision que les transformations en un seul clic.
- L’AI agit comme une assistante—et non comme un substitut à l’expertise humaine.
- La précision de l’invite a un impact direct sur la qualité des résultats.
Conclusion
L’expérience avec AWS Q Developer a démontré comment les outils assistés par AI transforment la modernisation des applications. S’il ne remplace pas complètement les développeurs humains, l’outil s’impose comme un puissant collaborateur—accélérant les cycles de développement, améliorant la qualité du code et simplifiant la documentation et le test.
Recommandations pour les équipes de modernisation :
- Commencez par de petits modules pour vous familiariser.
- Utilisez le mode agentique pour les tâches complexes de refactorisation.
- Privilégiez les mises à niveau itératives plutôt que d’attendre des résultats instantanés.
- Apprenez les bases de l’ingénierie des invites pour de meilleurs résultats.
- Effectuez toujours une revue et vérification manuelles avant le déploiement.
Les organisations qui explorent GenAI pour le développement logiciel devraient envisager de tester AWS Q Developer. Même s’il est encore en évolution, son potentiel pour transformer les projets de modernisation est déjà manifeste, faisant de lui un ajout précieux à la trousse d’outils de tout développeur.
