BillionPhotos.com - stock.adobe.

Mainframe : IBM mise sur l’IA générative pour convertir les applications COBOL vers Java

Le géant technologique entend exploiter les capacités de ses grands modèles de langage pour moderniser ou convertir les applications s’exécutant sur les mainframes de ses clients.

Hier, IBM a dévoilé watsonx Code Assistant for Z, un produit dont la disponibilité est prévue pour le quatrième trimestre 2023. Le fournisseur lancera une préversion en septembre, au moment de la conférence TechXchange, qui aura lieu du 11 au 13 septembre prochains à Las Vegas.

Ce nouveau venu dans la gamme watsonx – dont le fer de lance est la plateforme de développement et de déploiement de modèles d’IA générative watsonx.ai – complète IBM watsonx Code Assistant et Ansible Lightspeed.

D’emblée, IBM n’a pas la même approche que GitHub avec Copilot ou AWS avec CodeWhisperer. Au lieu de proposer un système de génération de code générique, Big Blue décline ses produits et affine ses modèles pour des tâches spécifiques. Les clients pourront même, s’ils le souhaitent, personnaliser l’apprentissage du modèle sous-jacent pour qu’il s’adapte à leurs données et à leurs pratiques de développement.

Pour preuve, quand Watsonx code assistant doit permettre de suggérer automatiquement du code au développeur dans différents contextes, Ansible Lightspeed est dédié à la génération de playbooks Ansible.

Sans surprise, IBM Watsonx Code Assistant for Z, lui, est consacré à la suggestion et à la conversion de code des applications COBOL vers Java s’exécutant sur z/OS, le système d’exploitation principal des mainframes IBM.

Pallier le manque de compétences et faire baisser les coûts de refactorisation

Malgré ses soixante-quatre ans, le COBOL n’a pas disparu. Ce langage continu de propulser des applications critiques dans les SI des entreprises. Problème, il est désormais difficile de trouver les compétences qui savent manipuler ce langage. Les consultants qui maîtrisent un tant soit peu cette technologie née en 1959 monnaient leurs services à prix d’or.

Or, il n’est pas rare que la refactorisation du code COBOL se heurte à un mur. Au fil des décennies, les applications ont évolué sous l’influence de différents développeurs et architectes. À la perte d’un précieux savoir s’ajoute la nécessité de démêler les nœuds dans les entrailles des systèmes logiciels.

« [Cette situation] n’est certainement pas limitée au COBOL. »
Kyle CharletCTO Z software, IBM

« [Cette situation] n’est certainement pas limitée au COBOL », écrit Kyle Charlet, CTO Z software chez IBM, dans un billet de blog. « J’ai vu des applications Java guidées par des voix différentes au fil des ans. Elles ont tendance à perdre leurs principes architecturaux directeurs et peuvent finir par devenir un amas multicouche de chaos semi-structurés ».

De même, la modernisation des existants COBOL prend des années et les projets ne sont pas glorieux, consent l’IBMer.

Bien conscient de ce problème, IBM échafaude un nouveau plan. Il entend pousser un moyen de découpler les services qui portent les logiques métiers des monolithes réputés immuables.

Les étapes pour passer de COBOL à Java

Pour ce faire, IBM compte inclure dans Code Assistant for Z sa suite Application Discovery and Delivery Intelligence (ADDI). Cette plateforme doit permettre d’analyser le code et les structures de données pour identifier les services candidats qui pourront être convertis ultérieurement vers Java.

Dans la vidéo de démonstration non représentative diffusée avec l’annonce, ADDI est exploité pour découvrir les dépendances de l’application et pour générer un répertoire de métadonnées. Le logiciel lit ces informations pour les rendre visibles aux utilisateurs. Ils retracent les liens entre les modules d’un programme et des tables de données.

Le code COBOL et les structures de données peuvent être extraits, puis optimisés ou convertis en classes Java.

Au cours de ce processus, certaines méthodes ne sont pas forcément implémentées. Ici, Code Assistant permet de générer le code Java en s’appuyant sur la commande servant à déclencher habituellement une portion du code COBOL (ici l’intégration d’un nouveau client) pour générer les méthodes Java équivalentes.

IBM fournit un moyen de comparer automatiquement les attributs de l’application existante avec ceux de sa traduction vers Java afin d’assurer les équivalences. « Si les tests révèlent que les entrées et les sorties correspondent, alors le code Java est considéré comme équivalent au code COBOL », décrit Ian Smalley, responsable de la production de contenus techniques chez IBM.

Bien évidemment, les porte-parole de Big Blue assurent qu’il est possible de modifier le code sans changer les sources de données ou de serveurs applicatifs. Il convient tout de même de se familiariser avec les spécificités des SDK Java 8 et 11 proposés par IBM ainsi qu’aux runtimes associés à z/OS.

Pas question ici de jeter le bébé z/OS (ou son berceau mainframe) avec l’eau du bain. Contrairement aux autres éditeurs (dont Microfocus et BMC) qui proposent de convertir du code COBOL vers Java, IBM ne milite pas pour la disparation des applications existantes ni pour la migration des applications nouvellement converties à Java vers le cloud.

« [Cela] peut sacrifier des capacités qui sont au cœur de la proposition de valeur d’IBM Z, tout en n’offrant pas la réduction des coûts escomptée », prévient Kyle Charlet.

Dans un même temps, IBM est bien conscient que l’IA générative n’est pas non plus la solution la plus sûre pour générer du code Java à partir du COBOL.

Un doctorant de l’Université de Stanford a mené une étude auprès de 47 étudiants et professeurs dans le domaine de l’IA. L’article publié en décembre 2022 tend à démontrer que de jeunes ingénieurs qui utilisent l’assistant propulsé à l’IA Codex d’OpenAI sans en modifier les paramètres seraient plus susceptibles d’introduire des vulnérabilités dans le code.

Publiée au début du mois d’août 2023, une étude menée par une équipe de l’Université de Purdue auprès de 12 participants entend démontrer que ChatGPT suggère du code incorrect plus de 50 % du temps.

Toutefois, ChatGPT n’a pas particulièrement été entraîné pour générer du code : c’est une des nombreuses tâches que l’application peut accomplir.

Battre BigCode à son propre jeu

Le modèle de fondation qui propulse watsonx Code Assistant est doté de 20 milliards de paramètres et entraîné sur 1,5 billion de tokens. Ce modèle aurait « appris » 115 langages de programmation différents.

Le jeu de données utilisé reprend – a minima – les 14 millions de lignes de code réunies au cours du projet CodeNet, publié en 2021 par IBM research.

Selon les informations obtenues par TechCrunch, le modèle bénéficierait d’une fenêtre de contexte de 32 000 tokens, à l’instar de GPT-4 d’OpenAI. Cela permet au LLM de réaliser un plus grand nombre d’associations entre les éléments d’une requête ou de conserver la cohérence d’un traitement plus longtemps.

L’objectif non dissimulé de Big Blue est de développer un plus gros modèle que StarCoder, issu du projet de recherche communautaire BigCode (auquel un chercheur d’IBM a participé). StarCoder est animé par 15,5 milliards de paramètres pour un contexte d’une longueur de 8 000 tokens. Il a été entraîné sur un jeu de données de 1 billion de tokens issu du projet The Stack, incluant des exemples de code pour 86 langages différents.

Selon l’intitulé d’un lien Web présent dans le communiqué de presse présenté par le fournisseur, le modèle qui propulse IBM watsonx Code Assistant serait animé par les mêmes technologies que StarCoder, à savoir le mégamodèle préentraîné par Nvidia, MegatronLM, et le jeu de données The Stack.

Afin de convertir les applications vieillissantes s’exécutant sur des mainframes, IBM mise sur le réglage fin de son grand modèle de langage. Pour développer un modèle spécifique à watsonx Code Assistant for Z, IBM aurait fine-tuné son LLM sur des exemples de code COBOL s’exécutant sur z/OS et des paires de lignes de code Java et COBOL équivalentes, d’après les propos de Kyle Charlet recueillis par TechRepublic.

Sans surprise, le fournisseur cite une analyse du cabinet Gartner pour insister sur le fait qu’un processus d’assurance contrôle et qualité est requis, sinon obligatoire, pour profiter pleinement de cette technologie. Un processus qu’il espère mettre en place au sein des entreprises à l’aide des forces vives d’IBM Consulting.

Pour approfondir sur Intelligence Artificielle et Data Science

Close