Couche d'intelligence logicielle entre votre code

Intelligence logicielle : le chaînon manquant entre votre code et vos décisions

Toute grande organisation fonctionne avec des logiciels qu'elle ne maîtrise pas pleinement. Prenons l'exemple de l'institution financière qui traite les transactions sur le même noyau COBOL depuis quarante ans. Il peut s'agir du fabricant dont le système de planification de la production a accumulé une logique à travers quinze versions et trois générations de développeurs. Ou encore de la compagnie d'assurance dont le système de gestion des polices contient des règles métier qui n'existent nulle part ailleurs que dans le comportement même du code. Ces organisations ne sont pas incompétentes ; leurs équipes sont compétentes et expérimentées. Mais le logiciel a évolué au point que personne ne peut le comprendre entièrement, et la documentation a cessé de suivre le rythme de l'évolution du code bien avant que quiconque ne s'en aperçoive.

L'intelligence logicielle est la discipline et la technologie qui comblent cet écart. Elle permet d'analyser systématiquement les systèmes logiciels : leur structure, leurs dépendances, leur comportement, leur qualité et leurs risques, et de transformer cette analyse en connaissances exploitables par les équipes d'ingénierie, les architectes et les décideurs. Alors que les outils logiciels traditionnels indiquent ce que fait le code lors de son exécution, l'intelligence logicielle révèle son contenu, son organisation, ses interconnexions et les dysfonctionnements potentiels liés à toute modification. Elle fait la différence entre exploiter un système et le comprendre.

Recherchez dans toutes les structures de données que vous possédez

SMART TS XL Elle cartographie toutes les relations entre les données afin que votre équipe puisse détecter les défauts de qualité avant qu'ils n'atteignent les utilisateurs.

Apprendre encore plus

Qu'est-ce que l'intelligence logicielle ?

L'intelligence logicielle consiste en l'analyse systématique des systèmes logiciels afin d'en extraire des informations structurelles, comportementales et qualitatives qui éclairent les décisions d'ingénierie, la gestion des risques et la planification stratégique. Elle combine l'analyse statique du code, la cartographie des dépendances, l'analyse d'impact et la visualisation pour rendre la structure interne d'un système logiciel compréhensible par les équipes, les outils et les processus organisationnels qui dépendent d'une connaissance précise de son contenu.

Le terme revêt différentes significations selon le contexte. Dans le domaine des outils de veille stratégique, l'« intelligence logicielle » désigne parfois l'analyse de l'utilisation des logiciels par les clients, les taux d'adoption des fonctionnalités, les parcours utilisateurs et les taux d'erreur. En intelligence artificielle et en apprentissage automatique, le terme « logiciel intelligent » désigne les systèmes qui adaptent leur comportement de manière autonome. Dans le contexte de l'informatique d'entreprise et du génie logiciel abordé dans cet article, l'intelligence logicielle fait spécifiquement référence à la capacité d'analyse qui permet aux équipes de développement de comprendre en profondeur et de manière automatisée leurs bases de code, les programmes, les dépendances, les flux de données, la logique métier et les risques liés aux changements.

Intelligence logicielle vs. intelligence d'affaires

La veille stratégique analyse les données (transactions, clients, revenus, opérations) de l'entreprise afin d'en tirer des enseignements sur son activité. L'intelligence logicielle, quant à elle, analyse le code source, les programmes, les modules, les dépendances, les schémas et les flux de travail afin d'en tirer des enseignements sur le contenu et le fonctionnement du système logiciel.

DimensionBusiness IntelligenceIntelligence logicielle
Ce qu'il analyseDonnées commerciales (transactions, événements, indicateurs)Structure du logiciel (code, dépendances, schémas)
Sortie primaireTableaux de bord, rapports, indicateurs clés de performance (KPI)Cartographie des dépendances, analyses d'impact, métriques de code
Qui l'utiliseAnalystes d'affaires, cadresIngénieurs logiciels, architectes, gestion informatique
Réponse à la question cléQue fait l'entreprise ?Que contient le logiciel et comment se connecte-t-il ?
Quand il fonctionneSur les données commerciales en temps réel, en continuSur le code source, à la demande ou en continu
Valeur d'entrepriseVisibilité opérationnelleGestion des risques d'ingénierie et contrôle des changements

Intelligence logicielle vs. logiciel intelligent

Ces deux termes sont souvent confondus car ils partagent un vocabulaire commun. L'intelligence logicielle est une capacité appliquée aux logiciels existants : l'aptitude à analyser et à comprendre ce qui est déjà présent. Le logiciel intelligent, quant à lui, est une caractéristique des nouveaux logiciels : des systèmes qui utilisent l'IA, l'apprentissage automatique ou des moteurs de règles pour prendre des décisions de manière adaptative.

Une plateforme d'intelligence logicielle comme SMART TS XL Ce système analyse les logiciels d'entreprise, y compris les programmes COBOL existants, les services Java modernes et tous les autres, afin de produire une connaissance structurelle de ces systèmes. Il ne les rend pas intelligents au sens de l'IA, mais les rend lisibles : visibles, interrogeables et modifiables en toute sécurité.

Les composants d'une plateforme d'intelligence logicielle

Une plateforme complète d'intelligence logicielle offre des capacités d'analyse selon cinq dimensions. Ensemble, ces dimensions permettent aux équipes d'une entreprise d'obtenir une visibilité globale sur leur parc logiciel, visibilité qu'aucune documentation, aucune connaissance des développeurs ni aucune surveillance traditionnelle ne peuvent fournir.

Analyse de code statique

L'analyse statique de code examine le code source sans l'exécuter, identifiant ainsi les problèmes de qualité, les failles de sécurité, les anomalies de conception et les schémas structurels. Contrairement à l'analyse dynamique qui nécessite un système en fonctionnement, l'analyse statique travaille directement sur le code source. Elle peut donc analyser simultanément du code exécuté sur des systèmes mainframe, du code écrit dans des langages dépourvus d'outils d'exécution modernes, et du code multilangage.

Dans le contexte du renseignement logiciel, l'analyse statique du code produit trois types de résultats : des indicateurs de qualité du code (complexité, duplication, indice de maintenabilité), des résultats de sécurité (modèles de vulnérabilité, pratiques de codage non sécurisées, informations d'identification exposées) et des données structurelles (définitions de fonctions, déclarations de variables, limites de modules) qui alimentent les couches de cartographie des dépendances et d'analyse d'impact.

Cartographie des dépendances

La cartographie des dépendances retrace les relations entre chaque composant d'un système logiciel : quels programmes en appellent quels autres, quels modules importent quelles bibliothèques, quelles fonctions accèdent à quelles tables de base de données, quels ensembles de données circulent de quels programmes vers quels utilisateurs. La carte des dépendances est le modèle structurel du système, le graphe qui permet de répondre à la question : « Si je modifie ceci, qu'est-ce qui sera affecté d'autre ? »

Dans les grands systèmes d'entreprise, notamment ceux qui utilisent plusieurs langages et plateformes, la cartographie des dépendances doit gérer les relations qui transcendent les frontières linguistiques : un programme COBOL écrit dans une table DB2, table lue par un service Java, table transformée par un pipeline Python. Aucun outil de gestion des dépendances monolingue ne peut appréhender cette chaîne interlangage ; seule une plateforme capable de comprendre tous les langages et de connecter leurs modèles dans un graphe unifié offre une couverture complète.

Analyse d'impact

L'analyse d'impact utilise la cartographie des dépendances pour répondre à une question précise concernant une modification proposée : quels composants seront affectés ? En partant du composant modifié et en parcourant le graphe de dépendances, l'analyse d'impact recense chaque module, fonction, programme et ensemble de données qui dépend de l'élément modifié, directement ou indirectement. Le périmètre d'impact ainsi identifié constitue le plan de test, la classification des risques liés à la modification et la base de données probantes pour l'examen consultatif des modifications.

Sans analyse d'impact, la portée d'une modification est estimée par le développeur qui l'a écrite. Avec une analyse d'impact, cette portée est déduite de la structure réelle du code. Dans les grands systèmes, ces deux estimations diffèrent considérablement, et c'est de cette différence que proviennent les incidents de production.

Recherche d'entreprise à travers le code

La recherche d'entreprise dans le contexte de l'intelligence logicielle désigne la capacité de trouver n'importe quel élément du système logiciel (fonction, variable, définition de champ, instruction SQL, nom de programme) dans l'ensemble du code source en quelques secondes, quel que soit le langage utilisé. Alors qu'une recherche classique dans un EDI se limite à un projet et un langage, la recherche de code d'entreprise couvre l'intégralité du système, tous langages confondus, simultanément.

La recherche d'entreprise transforme l'expérience de travail avec des bases de code volumineuses et complexes. Un développeur intégrant une équipe gérant 200 programmes COBOL, 50 flux de tâches JCL et une couche de services Java peut trouver ce dont il a besoin en une simple requête, au lieu de passer des jours à lire le code manuellement. Un architecte planifiant une modification du schéma d'une base de données peut trouver en quelques secondes toutes les instructions SQL référençant une colonne spécifique dans tous les programmes, au lieu d'utiliser une recherche croisée inter-référentielle susceptible de passer à côté de requêtes construites dynamiquement.

Visualisation des codes

La visualisation du code transforme les données structurelles issues de l'analyse statique et de la cartographie des dépendances en diagrammes qui présentent visuellement l'architecture du système, les relations de dépendance et le niveau de complexité. Ces diagrammes, dont la mise à jour manuelle prendrait des semaines, sont générés automatiquement à partir du code, garantissant ainsi leur actualisation au fil des évolutions du système.

La visualisation répond différemment aux besoins de plusieurs publics : les développeurs utilisent des graphes d’appels et des diagrammes de flux de données pour comprendre un code inconnu ; les architectes utilisent des diagrammes de composants et des cartes de dépendances pour planifier les changements structurels ; les parties prenantes commerciales utilisent des organigrammes simplifiés pour comprendre la portée du système lors de la planification ou de l’examen de conformité ; et les équipes d’exploitation utilisent des diagrammes de séquence pour retracer les flux de requêtes lors du diagnostic des problèmes de performance.

L'intelligence logicielle en pratique : cas d'utilisation en entreprise

Modernisation du système existant

L'application la plus exigeante de l'intelligence logicielle est la modernisation des systèmes existants, c'est-à-dire la migration d'applications COBOL, PL/I ou RPG d'environnements mainframe vers des architectures cloud-native modernes. Le principal défi ne réside pas dans la technologie de migration, mais dans le manque de connaissances. Les systèmes existants accumulent des décennies de modifications non documentées, des dépendances implicites dues au partage de données plutôt qu'à des interfaces explicites, et une logique métier qui se manifeste uniquement dans le comportement du code.

L'analyse logicielle permet de combler systématiquement cette lacune avant toute migration. L'inventaire des programmes identifie chaque composant concerné. La cartographie des dépendances révèle leurs interconnexions. L'analyse d'impact montre les conséquences de chaque modification proposée. L'extraction de la logique métier documente le fonctionnement de chaque programme, fournissant ainsi le cahier des charges par rapport auquel le système migré doit être validé. Sans cette base structurelle, les migrations réservent leurs surprises les plus coûteuses lors des tests ou en production, et non pendant la planification.

Gestion du changement et évaluation des risques

Dans tout environnement logiciel de grande envergure, la gestion des changements exige de connaître la portée des modifications proposées avant de les autoriser. L'analyse de la structure du logiciel fournit les éléments nécessaires aux comités consultatifs sur les changements pour fonder leurs décisions d'autorisation sur la structure réelle du système plutôt que sur les estimations des développeurs.

Avant qu'une modification ne soit approuvée, l'analyse d'impact identifie chaque composant dépendant nécessitant une validation. Les indicateurs de complexité précisent si le composant modifié est simple ou à haut risque. La visualisation des dépendances montre comment le composant modifié s'intègre au reste du système. Ensemble, ces éléments permettent d'établir une évaluation d'impact du changement fondée sur des données probantes, remplaçant ainsi les discussions informelles du type « quelles conséquences cela risque-t-il de avoir ? ».

Accompagnement technique

Lorsqu'une organisation évalue des systèmes logiciels en vue d'une acquisition, d'un partenariat ou d'un audit de conformité, la vérification technique préalable exige une évaluation objective du code source : sa qualité, sa maintenabilité, sa sécurité, sa dette technique et sa complexité. Les plateformes d'analyse logicielle automatisent cette évaluation à grande échelle, produisant en quelques heures une analyse structurelle qui nécessiterait des semaines pour un examen manuel.

L'analyse technique préalable, via l'intelligence logicielle, couvre : la distribution des indicateurs de qualité du code dans la base de code, la densité et la gravité des vulnérabilités de sécurité, le ratio de dette technique et les estimations des coûts de remédiation, l'état des dépendances (bibliothèques obsolètes ou abandonnées), les indicateurs de couplage et de cohésion architecturaux, et le pourcentage de code mort. Ces indicateurs permettent d'établir des classifications de risques et des estimations des coûts de remédiation, éclairant ainsi les décisions métier.

Intégration des développeurs et transfert de connaissances

Toute organisation exploitant des systèmes logiciels de grande envergure est confrontée à un défi permanent de transfert de connaissances : les développeurs expérimentés partent à la retraite ou changent d’entreprise, et les nouveaux développeurs doivent maîtriser des systèmes qui n’ont pas été conçus pour être compris par des personnes n’ayant pas participé à leur développement initial. Les plateformes d’intelligence logicielle fournissent la documentation structurée et les fonctionnalités de recherche qui facilitent ce transfert.

Un nouveau développeur travaillant sur un programme COBOL qu'il ne maîtrise pas peut utiliser la recherche d'entreprise pour trouver toutes les occurrences d'un champ spécifique, la carte des dépendances pour comprendre quels programmes interagissent avec celui qu'il modifie, et la visualisation pour comprendre la place du programme dans l'architecture système globale, le tout sans avoir besoin de l'aide d'un collègue possédant ces connaissances. Comme décrit dans le contexte du transfert de connaissances des experts COBOL , le savoir tacite détenu par les développeurs partant à la retraite est souvent l'atout le plus précieux et le moins documenté du système.

Surveillance continue de la qualité

L'intelligence logicielle appliquée en continu, et non seulement à la demande avant une modification spécifique, permet une gestion proactive de la qualité : suivi de l'évolution des indicateurs de qualité au fil du temps, détection des situations où la complexité augmente plus vite que ce qu'une équipe peut gérer, identification des fichiers qui accumulent un risque de modification disproportionné et alerte en cas d'introduction de failles de sécurité dans un nouveau code avant sa mise en production.

Dans les pipelines CI/CD, l'intelligence logicielle continue fournit des contrôles qualité qui appliquent des normes structurelles dès le développement : une nouvelle fonction dépassant le seuil de complexité cyclomatique entraîne l'échec de la compilation ; une nouvelle analyse statique révélant une anomalie critique bloque la fusion ; une modification introduisant une dépendance circulaire dans l'architecture déclenche une revue. Ce système déplace le contrôle qualité des audits post-déploiement vers un retour d'information en cours de développement, réduisant ainsi le coût des problèmes de qualité en les détectant au moment où leur correction est la plus économique.

Intelligence logicielle pour différents publics

La valeur de l'intelligence logicielle n'est pas uniforme selon les rôles ; différents publics extraient différents types de valeur d'une même analyse structurelle sous-jacente.

RôleUtilisation principaleSortie clé
Développeurs dédiés au logicielComprendre un code inconnu, retracer les dépendancesGraphiques d'appels, références croisées, recherche de code
Architectes logicielsModifications de la planification, évaluation des risques structurelsCartes de dépendance, analyses d'impact, cartes thermiques de complexité
gestion informatiqueAutorisation de modification, surveillance des risquesRapports d'impact, indicateurs de qualité, ratios de dette technique
Équipes de sécuritéÉvaluation de la vulnérabilité, conformitéRésultats de l'analyse statique en matière de sécurité, données sur les vulnérabilités liées aux dépendances
Analystes d'affairesCompréhension de la portée du système, preuves de conformitéDiagrammes simplifiés, documentation des flux de processus
Fusions et acquisitions et vérification préalableévaluation de la qualité du code sourceIndicateurs de qualité, ratios d'endettement, rapports de classification des risques

Comment SMART TS XL Fournit des logiciels intelligents

SMART TS XL est la plateforme Software Intelligence® d'IN-COM, conçue spécifiquement pour les grandes entreprises exploitant des parcs logiciels multilingues, multiplateformes et multigénérationnels. Alors que la plupart des outils d'analyse logicielle fonctionnent dans un seul langage, SMART TS XL Il construit un modèle d'intelligence unifié qui couvre simultanément COBOL, JCL, Java, Python, .NET, RPG, PL/I, SQL et d'autres langages.

L' analyse statique du code fournit des indicateurs de qualité, des résultats de sécurité et des données structurelles pour chaque composant de l'environnement. La cartographie des dépendances applicatives construit le graphe de dépendances inter-langages, illustrant les connexions entre tous les composants. L' analyse d'impact permet d'interroger ce graphe : pour toute modification proposée, il est possible d'énumérer l'ensemble des composants affectés. L' expansion JCL résout le langage de contrôle des travaux mainframe, y compris la substitution de paramètres symboliques dans les procédures cataloguées, afin d'afficher les programmes et les jeux de données impliqués dans chaque traitement par lots. La recherche d'entreprise permet de trouver facilement n'importe quel élément du système d'exploitation, tous langages confondus, en quelques secondes. La visualisation du code convertit le modèle de dépendances en diagrammes interactifs, communiquant la structure du système à tous les publics.

La plateforme est conçue pour les environnements où le parc logiciel a atteint une ampleur et une complexité dépassant la compréhension individuelle, et où la valeur d'une analyse structurelle systématique, automatisée et constamment mise à jour est maximale. Elle s'adresse aux organisations qui planifient la modernisation de leurs systèmes existants, la gestion du changement dans des systèmes complexes, la réalisation d'audits techniques préalables ou la mise en place d'une infrastructure de connaissances pour les développeurs permettant une ingénierie rapide et fiable. SMART TS XL fournit la couche d'intelligence logicielle qui rend cela possible.

Pourquoi l'intelligence logicielle est essentielle pour l'informatique d'entreprise

Le volume de logiciels utilisés dans les entreprises a atteint une ampleur telle que les méthodes informelles de gestion, de documentation, de partage des connaissances des développeurs et de revue de code manuelle sont structurellement inadaptées. La documentation est toujours incomplète et généralement obsolète. Les connaissances des développeurs sont dispersées, incohérentes et restent entre les mains de ceux qui les détiennent. La revue de code manuelle est trop lente et dépend trop de la familiarité préalable du relecteur avec le système.

L'intelligence logicielle est la réponse systématique à cette insuffisance structurelle. Elle ne remplace pas les connaissances des développeurs, mais les enrichit et les préserve, les rendant accessibles à tous les membres de l'équipe plutôt que concentrées entre les mains de quelques-uns. Elle ne remplace pas la documentation, mais génère une documentation structurelle directement à partir du code, garantissant ainsi sa mise à jour au fil de l'évolution de ce dernier. Elle ne remplace pas la revue de code, mais fournit l'analyse automatisée qui offre aux relecteurs le contexte structurel nécessaire à une évaluation précise des modifications.

Les organisations qui investissent dans une infrastructure d'intelligence logicielle bénéficient d'un avantage cumulatif : chaque modification est effectuée en fonction d'un modèle structurel précis, et non d'estimations ou de suppositions. Chaque migration est planifiée avec une connaissance exhaustive du système, et non découverte au compte-gouttes. Chaque nouveau développeur s'intègre en s'appuyant sur une représentation navigable et consultable du système, et non sur des années de savoir-faire informel. La qualité des décisions d'ingénierie s'améliore grâce à la qualité des informations sur lesquelles elles reposent. C'est là toute la valeur ajoutée de l'intelligence logicielle, et c'est pourquoi les organisations disposant de parcs logiciels complexes la considèrent comme une infrastructure à part entière, et non comme un simple outil.