L'année dernière, IBM a démontré comment l'IA peut effectuer le travail répétitif de maintenance des logiciels en mettant à jour le code hérité. La société a maintenant introduit des techniques basées sur l'IA pour le recodage des applications héritées à exécuter sur des plates-formes informatiques modernes.
Projets IBM récents appelés Mono2Micro et accélérateur de modernisation des applications(AMA) fournissent aux architectes d'applications les outils nécessaires pour mettre à jour et réutiliser les applications héritées. Selon Nick Fuller , directeur des services de cloud hybride chez IBM Research, ces initiatives contribuent à rapprocher l'IA du point où l'IA peut automatiquement migrer de COBOL vers Java.
Mais Fuller note que ces approches avancées basées sur l'IA ne sont actuellement capables de briser le code machine hérité de programmes monolithiques qu'en microservices séparés. Une étape de plus reste pour terminer une traduction complète d'un langage de programmation à un autre, car la boîte à outils AMA, bien que conçue pour moderniser COBOL, ne fournit actuellement qu'une autre étape dans ce processus. «La traduction d'un langage à un autre est un défi fondamental pour l'IA, sur lequel nous travaillons pour faire fonctionner une partie de ce code hérité dans un langage de programmation moderne», a-t-il ajouté.
En attendant, les outils avancés basés sur l'intelligence artificielle d'IBM offrent de nouvelles fonctionnalités. Quant à Mono2Micro, cet outil analyse d'abord l'ancien code pour révéler toutes les connexions cachées qu'il contient, par exemple, divers composants de la logique métier sous-jacente qui contiennent de nombreux appels et connexions entre eux. Il serait très difficile et chronophage pour un architecte d'application de mener à bien une telle tâche par lui-même.
Mono2Micro utilise des techniques de clustering basées sur l'IA pour regrouper des codes similaires en groupes, ce qui montre plus clairement comment les groupes de codes interagissent. Mono2Micro accepte d'abord le code, puis analyse le code source et objet à la fois de manière statique (en analysant le programme avant son exécution) et de manière dynamique (en analysant le programme pendant son exécution).
L'outil convertit ensuite les programmes monolithiques basés sur Java et leur logique métier et leurs interfaces utilisateur associées en microservices. La refactorisation du monolithe en microservices séparés avec des fonctionnalités spécifiques minimise les connexions qui existaient dans le logiciel lorsqu'il s'agissait d'un programme monolithique en modifiant la structure de l'application sans modifier son comportement externe.
Le but de la boîte à outils AMA est à la fois d'analyser et de refactoriser des applications précédemment développées et écrites dans des langages hérités (COBOL, PL / I). Quant à la boîte à outils AMA, elle combine l'analyse statique du code source avec une compréhension de la structure de l'application pour créer un graphique qui représente l'application héritée. Lorsqu'elle est utilisée en conjonction avec des techniques d'apprentissage en profondeur, cette approche basée sur des graphiques facilite la persistance des données.
Image: Image IBM Research
de l'interface Mono2Micro
La stratégie d'IA d'IBM répond aux principaux défis de l'apprentissage automatique où les entrées sont du code et les paramètres d'analyse sont le volume et plusieurs valeurs. Les applications héritées critiques contiennent généralement des centaines de milliers à des millions de lignes de code. Dans ce contexte, l'application des techniques d'apprentissage automatique (ML) à des quantités de données aussi importantes peut être rendue plus efficace grâce au concept d'incorporation.
Ces couches d'intégration sont un moyen de convertir des données en valeurs numériques. L'avantage de la méthode d'incorporation est qu'elle vous permet d'attribuer une expression numérique à une grande quantité de code avec de nombreuses valeurs possibles. La même chose se produit, par exemple, lors de la traduction d'un langage humain naturel en valeurs numériques à l'aide de l'intégration de mots vectoriels. Cela se fait également dans le contexte d'un graphe, comme cela a à voir avec l'analyse de code.
«L'intégration de couches est géniale car sans elles, il serait difficile d'obtenir quelque chose qui ressemble à un système d'apprentissage automatique efficace», a déclaré Fuller.
Il a ajouté que dans le cas de l'analyse de code, le système d'apprentissage automatique offre à chaque fois mieux des microservices pour une application héritée refactorisée en répliquant le contenu fonctionnel de l'application.
Notes plus complètes: "À ce stade, vous ne pouvez pas encore expirer, mais 70% du travail est derrière vous, ce qui signifie que vous êtes beaucoup plus près de refactoriser une application importante dans une architecture de microservice."