Pour les institutions financières, les compagnies d'assurance, les opérateurs de télécommunications et les organismes publics à travers le monde, les applications historiques hébergées sur les mainframes IBM Z constituent à la fois le socle opérationnel le plus critique et le défi d'évolution technique le plus complexe. Chaque jour, des milliers de milliards de dollars de transactions reposent sur des bases de code COBOL éprouvées depuis des décennies. Cependant, à mesure que les ingénieurs mainframe chevronnés partent à la retraite, le marché fait face à une pénurie croissante de compétences, augmentant considérablement le coût et les risques liés à la maintenance et à la documentation de ces systèmes cruciaux.
Historiquement, les directions informatiques se heurtaient à un dilemme périlleux : engager une réécriture complète (« rip-and-replace »), dont les projets échouaient fréquemment en raison d'explosions budgétaires et de logiques implicites oubliées, ou s'en remettre à des transcompilateurs syntaxiques rigides. Ces derniers généraient le plus souvent du code couramment désigné sous le terme de « JOBOL » : une syntaxe Java superficielle masquant un modèle procédural encombré de variables globales et de boucles enchevêtrées, sans aucun des bénéfices de lisibilité et de maintenabilité de la programmation orientée objet.
Pour dépasser ces blocages, IBM a développé IBM watsonx Code Assistant for Z (WCA4Z), une solution reposant sur les modèles fondateurs de code Granite. Cet outil met en œuvre un cycle de modernisation complet, sélectif et accéléré par l'intelligence artificielle générative. Il permet aux équipes techniques d'analyser la topologie applicative, d'expliquer les règles de gestion en langage naturel, de refactoriser les monolithes en composants modulaires, de générer du code Java idiomatique et d'en vérifier rigoureusement l'équivalence sémantique, tout en préservant les normes de sécurité, de débit et de résilience d'IBM Z.
1. Découverte Approfondie des Applications : Cartographier les Monolithes avec ADDI et Z Understand
Les applications mainframe fonctionnent rarement de manière isolée. Une transaction métier standard peut solliciter des dizaines de programmes COBOL, des structures partagées de copybooks, des scripts de traitement par lots en JCL, des moniteurs de transactions CICS et des bases de données relationnelles Db2 ou fichiers VSAM. Tenter de modifier un composant sans en maîtriser les ramifications techniques expose l'organisation à de graves régressions en production.
Les équipes de modernisation entament leur démarche à l'aide d'IBM Application Discovery and Delivery Intelligence (ADDI) et de l'interface Z Understand :
- Cartographie Automatisée des Dépendances : ADDI analyse l'ensemble du patrimoine de code source du mainframe afin de construire un graphe de métadonnées relationnel. Il restitue visuellement les chaînes d'appels entre programmes, les flux de contrôle et l'impact des copybooks partagés.
- Identification des Services Candidats : Plutôt que de s'attaquer à un monolithe de plusieurs millions de lignes de front, les architectes s'appuient sur ces visualisations pour isoler des sous-programmes à haute valeur ajoutée (tels que des modules de tarification, de calcul d'intérêts ou d'évaluation de crédit).
- Extraction des Règles de Gestion : Des agents IA intégrés à Z Understand examinent les paragraphes COBOL sélectionnés pour identifier et documenter les règles métier sous-jacentes, en retraçant les modifications de variables clés afin de fixer des contrats d'interface précis.
2. Explication de Code en Langage Naturel : Réduire la Fracture Générationnelle
L'un des obstacles majeurs dans les projets de modernisation réside dans l'absence ou la vétusté de la documentation technique. Après des décennies d'ajustements continus, les bases de code comportent souvent des abréviations cryptiques, des correctifs non annotés et des branches de code inactives qui désorientent les jeunes développeurs Java.
watsonx Code Assistant for Z intègre des fonctionnalités d'explication de code directement dans les environnements de développement modernes tels que Visual Studio Code (via l'extension watsonx Code Assistant for Z en articulation avec IBM Z Open Editor) et l'IDE IBM Developer for z/OS basé sur Eclipse :
- Synthèses Techniques Claires : Les développeurs sélectionnent un paragraphe COBOL, un copybook ou un flux JCL pour demander une analyse contextuelle. Le modèle d'IA détaille les paramètres d'entrée, les conditions logiques, les calculs et les effets de bord dans un langage naturel structuré.
- Accélération du Partage de Connaissances : Les spécialistes chevronnés du mainframe sont déchargés d'ateliers fastidieux d'explication manuelle, tandis que les développeurs Java s'approprient les règles bancaires ou d'assurance complexes avec rapidité et autonomie.
- Régénération du Patrimoine Documentaire : Les explications générées peuvent être immédiatement intégrées sous forme de commentaires dans le code source ou exportées vers des wikis d'entreprise, restaurant un référentiel documentaire durable.
3. Refactorisation et Modularisation Préalables
Une erreur classique consiste à soumettre un code procédural volumineux et intriqué directement à un moteur de traduction. La démarche promue par watsonx Code Assistant for Z impose une discipline intermédiaire de modularisation au sein même de l'environnement COBOL :
- Extraction de Composants Métier Autonomes : À l'aide des outils de refactorisation assistée, les ingénieurs détachent la logique cible du programme principal pour l'isoler sous forme de sous-programme COBOL indépendant et cohésif.
- Délimitation des Portées de Variables : La solution passe au crible la section
WORKING-STORAGE SECTIONet les paramètres de liaison (LINKAGE SECTION), isolant les états locaux des dépendances globales afin d'établir une frontière d'interface étanche. - Validation sur le Mainframe : Le sous-programme refactorisé est compilé et testé directement sur le mainframe existant, garantissant que le comportement métier demeure strictement inchangé avant toute transformation de langage.
4. Transformation de Code par IA Générative : Produire du Java Idiomatique
Une fois le service COBOL correctement découplé, watsonx Code Assistant for Z procède à la génération du code Java équivalent.
À la différence des anciens transcompilateurs automatiques qui calquaient la logique impérative mot à mot, l'outil s'appuie sur les modèles de fondation Granite 20B, entraînés sur de multiples langages de programmation et affinés pour les architectures d'entreprise COBOL et Java (notamment via le pipeline InstructLab) :
- Conception Orientée Objet Propre : Le modèle capture les concepts du domaine pour produire des classes Java lisibles, dotées d'un bon niveau d'encapsulation, de méthodes d'accès (getters et setters), d'interfaces normalisées et d'une gestion formelle des exceptions, prévenant l'apparition de code « JOBOL ».
- Précision Numérique et Typage Rigoureux : Les formats de données spécifiques à COBOL (comme les niveaux hiérarchiques
01, les tableauxOCCURSet les nombres décimaux condensés Packed Decimal) sont systématiquement traduits en entités Java, collections standards et typesBigDecimal, écartant tout risque d'imprécision sur les calculs financiers. - Intégration aux Normes Modernes de Build : Le projet Java obtenu s'organise avec Apache Maven ou Gradle dans VS Code. Des bibliothèques d'exécution officielles fournies par IBM via Maven Central prennent en charge les correspondances de données bas niveau.
- Déploiement Hybride et Flexible : Le code Java modernisé peut s'exécuter directement sur IBM z/OS sous WebSphere Application Server Liberty ou CICS (en exploitant les moteurs de spécialité zIIP pour limiter les coûts de processeur général), ou être conditionné sous forme de conteneurs pour des plateformes cloud hybrides telles que Red Hat OpenShift.
5. Validation de l'Équivalence Sémantique et Tests Automatisés
Dans les architectures de mission critique, l'exactitude fonctionnelle du code transformé ne tolère aucune approximation. Une divergence infime dans l'arrondi d'une formule ou la gestion d'un cas limite peut provoquer de graves préjudices financiers ou réglementaires.
watsonx Code Assistant for Z intègre des outils d'assurance qualité dédiés :
- Génération Automatique de Tests JUnit : Le système analyse les branches conditionnelles du code COBOL initial pour concevoir une suite complète de tests unitaires JUnit, incluant la génération de jeux de données fictifs (mocks).
- Exécution Parallèle et Confrontation des Résultats : Les équipes soumettent des jeux de données réels anonymisés simultanément au sous-programme COBOL et à la nouvelle classe Java, comparant de façon automatisée les sorties et les états modifiés.
- Détection des Dérives Logiques : Tout écart relatif aux arrondis, aux valeurs nulles ou aux scénarios d'annulation de transaction est repéré sans délai, permettant aux développeurs de corriger le code avant sa promotion en recette.
Bonnes Pratiques et Recommandations Stratégiques
Afin d'optimiser le retour sur investissement (ROI) et d'écarter les perturbations opérationnelles lors de l'adoption de watsonx Code Assistant for Z, les directions techniques doivent suivre ces principes fondamentaux :
- Adopter une Modernisation Sélective et Incrémentale : Bannissez les projets pharaoniques de réécriture globale. Commencez par les services de calcul et les règles d'éligibilité fréquemment modifiés ou appelés à être exposés par des API digitales, tout en maintenant les traitements par lots massifs et stables en COBOL.
- Maintenir une Gouvernance avec Intervention Humaine (Human-in-the-Loop) : Bien que l'IA générative réduise jusqu'à 80 % le temps d'analyse et de conversion, les arbitrages d'architecture, la sécurité applicative et le dimensionnement des transactions doivent obligatoirement être validés par des ingénieurs confirmés.
- Exploiter la Co-localisation Mainframe et les Moteurs zIIP : Exécuter les composants Java directement sur z/OS au plus près des bases Db2 et des gestionnaires CICS supprime la latence réseau, respecte les périmètres de sécurité interne et réduit les dépenses d'exploitation grâce au délestage sur les processeurs zIIP.
- Unifier la Chaîne d'Outils d'Ingénierie : Le déploiement de VS Code, d'IBM Z Open Editor, de Git et de pipelines CI/CD modernes standardise l'expérience développeur, permettant d'intégrer et de fidéliser efficacement les profils issus des nouveaux cursus logiciels.
En articulant découverte topologique, explication assistée par IA, refactorisation modulaire et vérification sémantique automatisée, IBM watsonx Code Assistant for Z métamorphose la modernisation des systèmes historiques en une démarche d'ingénierie logicielle prévisible, sécurisée et créatrice de valeur.