[APPLICATION LDRA] Comme les logiciels open source il y a quelques années, l'intelligence artificielle (IA) et l'apprentissage automatique (ML, Machine Learning) sont les nouvelles frontières des logiciels embarqués critiques pour la sécurité. Ces technologies nous ont contraints à repenser la manière dont nous, en tant qu'êtres humains, intégrons les informations, analysons les données et prenons des décisions. En tant que praticiens des logiciels critiques pour la sécurité, nous devons comprendre comment tenir compte de l'immense promesse de l'IA/ML sans compromettre les processus de sécurité fonctionnelle et la certification.
Auteur : Mark Pitchford,
Technical Specialist, LDRA
Compte tenu du bruit et de l'incertitude qui entourent l'IA/ML (Intelligence artificillelle/MAchine Learning) alimentés principalement par les techniques de l'IA générative, il est utile de se tourner vers une définition plus large des termes qui englobent toutes les capacités potentielles apportées au développement de logiciels critiques pour la sécurité.
L'OED (Oxford English Dictionary) définit l'IA comme « la capacité des ordinateurs ou d'autres machines à présenter ou à simuler un comportement intelligent ; le domaine d’étude qui s'y rapporte. » Il précise également que les utilisations plus récentes du terme se référant à « La capacité des ordinateurs ou d’autres machines à présenter ou à simuler un comportement intelligent ; le domaine d’étude qui s'y rapporte. »
Cependant, comme il s’agit d’une technologie de pointe en constante évolution, le langage utilisé pour la décrire est tout aussi évolutif. Une perspective suggère deux principales classifications de l’IA :
- L'IA étroite ou faible qui excelle dans la tâche pour laquelle elle a été formée mais qui manque d’intelligence générale de type humain.
- L'IA générale ou puissante qui possède une véritable intelligence de type humain.
Il n'y a pas de dichotomie implicite. Le spectre continu entre ces deux extrêmes se reflète dans une autre convention de dénomination qui qualifie l'IA puissante d'« Intelligence artificielle générale » (IAG) et positionne l'« Intelligence générative » comme un niveau intermédiaire d'IA qui se concentre sur la création de types spécifiques de contenu dans ses domaines de formation.
L’OED définit ensuite l’apprentissage automatique (ML, MAchine Learning) comme « la capacité des ordinateurs à apprendre et à s’adapter sans suivre d’instructions explicites, en utilisant des algorithmes et des modèles statistiques pour analyser et déduire des modèles dans les données ».
En d’autres termes, l'apprentissage automatique consiste à créer des systèmes d’IA puissants capables d'apprendre et de s’améliorer grâce à l’expérience.
L’IA et le ML déjà présents dans les logiciels critiques pour la sécurité ?
On pourrait affirmer que les applications logicielles déterministes et programmées de manière conventionnelle – utilisées depuis des décennies – relèvent de la classification de l’IA faible. Prenons l’exemple du système de gestion de vol d’un avion ou d'une unité de commande électronique (ECU) d’une automobile. Ils sont conçus pour effectuer des tâches spécifiques de manière déterministe et s'en acquittent généralement très bien.
De même, on pourrait soutenir que la création automatisée de vecteurs de test est une forme d’IA faible car elle « simule un comportement intelligent » en établissant des tests unitaires à partir de code existant. Comme l’illustre la figure 1, l'élaboration et l’exécution manuelle de ces tests nécessiteraient des compétences et une intelligence considérables. Pourtant, les outils de test automatisés les réalisent de manière complète et efficace.
Vecteurs de test générés automatiquement dans la suite d'outils LDRA (source : LDRA)
Les outils de développement logiciel fondés sur l'intelligence générative sont dotés d'une IA plus puissante que celle des applications conventionnelles. Les assistants tels que Microsoft Copilot, Amazon CodeWhisperer et Google Gemini Code Assist offrent tous des moyens de faciliter les tâches de développement traditionnellement effectuées par des humains. La figure 2 montre un exemple d'un codage rapide et d’une réponse obtenue à l'aide du chatbot ChatGPT.
Utilisation de ChatGPT pour répondre à une question de codage de base (Source : ChatGPT)
Bien que la facilité avec laquelle le code peut être généré puisse susciter des doutes quant à son utilité, l'appel à des outils de programmation d'IA ne fera que croître au fur et à mesure que les modèles et les techniques de langage s'amélioreront. Une IA plus puissante représente un plus grand défi dans le cadre établi des applications critiques pour la sécurité.
Les garanties traditionnelles de fiabilité, de sûreté et de sécurité proviennent d'une approche prudente du changement et d'une traçabilité rigoureuse des exigences. Plus l'IA appliquée est avancée, plus ces notions sont remises en question. Cependant, rejeter la technologie pour ces raisons reviendrait à négliger le potentiel significatif des systèmes embarqués basés sur l'IA, qui offrent des avantages intrinsèques en matière de sécurité par rapport aux systèmes développés de manière plus traditionnelle.
Un exemple : l’IA dans les logiciels de dispositifs médicaux
La FDA (Food Drug Asministration) américaine a été proactive dans l’adoption de logiciels basés sur l’IA/ML en tant que dispositif médical (SaMD, Software as a Medical Device) qui utilisent des algorithmes dits "verrouillés" – c'est-à-dire ceux qui produisent des résultats cohérents en réponse à des entrées cohérentes.
Ce qui est moins clair, c’est la manière dont le développement d’algorithmes adaptatifs – ceux qui répondent aux résultats et les modifient potentiellement en fonction des apprentissages – devra être mieux géré. Ce décalage a placé les fabricants dans une situation d'attente entre l'innovation en matière d'IA/ML et le risque de contrevenir aux directives de la FDA, telles que la norme IEC 62304, avec des applications susceptibles de produire des résultats différents de ceux approuvés initialement.
Un examen plus approfondi de la réglementation relative aux dispositifs médicaux est cependant prometteur. Le cadre de catégorisation des risques SaMD de IMDRF ('International Medical Device Regulators Forum) fournit une approche systématique de la classification des risques des logiciels destinés à des fins médicales. Il aide les autorités réglementaires, les fabricants et les autres parties prenantes à déterminer les exigences réglementaires appropriées et à s'assurer que les logiciels développés répondent aux normes de sécurité et d'efficacité nécessaires.
Impact des logiciels en tant que dispositifs médicaux sur les patients selon le cadre de catégorisation des risques SaMD de l'International Medical Device Regulator's Forum (Source : IMDRF)
Selon ce cadre, l'utilisation prévue de tout SaMD, qu'il soit basé sur l'IA/ML ou non, peut être classée selon un spectre d'impact sur les patients, comme illustré dans la figure 3. Ici, « I » représente le risque le plus faible et « IV » le plus élevé. Cet impact est fondé sur des facteurs tels que l'utilisation prévue du logiciel, l'importance des informations fournies par le logiciel pour la prise de décisions médicales et les conséquences potentielles d'une défaillance du logiciel.
Le cadre IMDRF permet de classer les SaMD en différentes classes ou catégories de risques, qui déterminent le niveau de contrôle réglementaire et les exigences appliquées au logiciel. Comme cette classification est indépendante de la méthodologie utilisée pour créer le logiciel, elle peut être appliquée aux SaMD en fonction des techniques basées sur l'IA/ML.
Vers une atténuation des risques liés à l'IA/ML dans les applications critiques pour la sécurité
Il existe peu, voire pas du tout, de systèmes de sécurité critiques entièrement basés sur l'IA/ML. Dans la plupart des cas, les résultats des composants logiciels basés sur l'IA/ML sont intégrés dans des applications conçues de manière conventionnelle, que ce soit dans le même système ou communiqués à un autre dispositif. Il est donc logique d'étendre les principes de séparation de domaines préconisés par la norme IEC 62304.
Cette approche restreint toutefois les algorithmes d'IA/ML dans leurs domaines spécifiques et permet aux domaines qui reçoivent des données générées par l'IA/ML d'atténuer les risques qui y sont associés. Comme l'illustre la figure 4, les outils d'analyse des altérations existants peuvent tester et valider les flux de données provenant de composants d'IA/ML. Grâce à ces outils, les développeurs d'éléments logiciels connaissent les plages de données qui ont du sens et peuvent concevoir des logiciels pour "vérifier l'intégrité" des données entrantes et sortantes, qu'elles proviennent d'un domaine d'IA/ML ou d'ailleurs.
Analyse des altérations à l'aide de la suite d'outils LDRA. (Source : LDRA)
Les systèmes fondés sur l'IA/ML sont désormais bien présent dqns le monde industriel, c'est une une réalité incontorunable. Ils sont aujourd'hui utilisés pour écrire du code et exécuter des fonctions innovantes embarquées sur des plateformes critiques pour la sécurité.
Le fait que la plupart, voire la totalité, de ces composants fonctionnent à l'intérieur de logiciels développés de manière conventionnelle signifie qu'il existe des possibilités d'atténuation des risques, soit sous la forme de logiciels déterministes développés de manière classique, soit avec des interventions humaines insérées dans la boucle. Les meilleures pratiques existantes, en particulier celles relatives aux approches d'analyse des risques et à la séparation des domaines, peuvent y gagner en termes d’avantages.