Ouvrir le menu Fermer le menu

Le rôle de l'analyse statique des logiciels dans la Règlementation de l'UE sur les Dispositifs Médicaux (RDM)

trait de séparation
Temps de lecture : 8 min
A l’instar de tous les autres secteurs industriels, la digitalisation et l'automatisation se diffusent rapidement dans le secteur médical - presque tous les dispositifs médicaux de nos jours s’appuyant sur du logiciel. Que ce soit pour échanger des données ou connecter des capteurs, la connectivité sans fil devient de plus en plus importante dans les dispositifs médicaux, ce qui augmente leur vulnérabilité et les risques en termes de sécurité.

Cette connectivité apporte néanmoins beaucoup d’avantage comme un meilleur suivi des signes vitaux et des constantes des patients, de nouvelles approches thérapeutiques, de meilleures statistiques sur les patients et des diagnostics plus précis. En contrepartie, cela introduit plusieurs inconvénients tels que des risques accrus de défaillances logicielles ou matérielles, des vulnérabilités potentielles aux attaques et, en fin de compte, une possible mise en danger de la vie des patients. Mais les gains de cette évolution technologique valent l'effort supplémentaire, et nécessaire, pour atténuer ces risques. Plutôt que de renoncer à ces avantages, l'objectif doit être de rendre le logiciel aussi sûr et fiable que possible. C’est donc le but de cette réglementation des dispositifs médicaux, gérer et réduire l'impact de ces risques.

Règlement de l'UE sur les dispositifs médicaux

Avec le règlement sur les dispositifs médicaux UE 2017/745, dont la fin de la période de transition pour la mise en œuvre est au 26 mai 2020, les exigences seront à nouveau considérablement renforcées. Ces nouvelles réglementations auront un impact direct, tant sur les exigences logicielles que sur les flux de travail pour les développeurs d’applications médicales embarquées.

Il existe essentiellement deux champs d'application pour les normes et les réglementations : l'un est l'assurance qualité dans le cycle de développement et l'autre la gestion de la qualité tout au long du cycle de vie d'un produit : du concept jusqu’à la fin de vie. Le RDM précise que ce dernier est le périmètre requis :

« Pour les appareils qui intègrent un logiciel ou pour les logiciels qui sont des appareils en soi, le logiciel doit être conçu et développé conformément à l'état de l’art en tenant compte des principes du cycle de vie du développement, de la gestion des risques, y compris la sécurité, la vérification et la validation des informations. - (MDR 2017/745 section 17.1) »

Du fait de la qualité toute relative de certains produits déjà sur le marché, le fait que les nouveaux développements dans le domaine médical doivent répondre à des normes de qualité plus élevées est devenu une évidence pour éviter des dommages aux patients dans le futur. Il est également important que les normes prennent en compte les changements importants que subissent les logiciels tout au long de leur durée de vie. Par exemple, l’introduction de nouvelles fonctions via une mise à jour ou même le remplacement d’une bibliothèque logicielle utilisée durant le développement par une de version plus récente. Les mises à niveau et les mises à jour sont à elles seules une source de préoccupation importante, qui peut rendre vulnérable un système jusque-là sans problème, même une mise à jour corrective pouvant amener de nouveaux bogues.

Minimiser les risques pour les patients

Pour les développeurs de logiciels, quatre normes constituent le fondement des exigences RDM :
  • EN 60601-1 - Appareils électro médicaux - Partie 1 - Exigences générales pour la sécurité de base et les performances essentielles
  • IEC 62304 - Logiciels de dispositifs médicaux - Processus du cycle de vie des logiciels
  • IEC 82304 - Logiciels de santé - Exigences générales pour la sécurité des produits
  • ISO 14971 - Dispositifs médicaux - Application de la gestion des risques aux dispositifs médicaux

Le fondement de la sécurité des dispositifs médicaux est décrit dans la norme EN 60601-1, la norme de base pour les appareils électro médicaux. Elle exige que ces dispositifs soient développés et fabriqués de manière qu'ils soient « à sécurité intrinsèque », ce qui signifie qu’aucune première défaillance du système ne doit rendre l’utilisation ultérieure du dispositif dangereuse.

L'hypothèse de base des normes génériques de sécurité fonctionnelle comme l’IEC 61508 pour les systèmes électriques, électroniques et électroniques programmables part de l'hypothèse qu'il n'est pas possible de produire en masse des équipements entièrement sûrs à utiliser pour des couts économiquement viables sur l'ensemble du cycle de vie. Au lieu de cela, l'objectif de ces normes est de minimiser le nombre d'erreurs et les risques pour les utilisateurs. Les dispositifs médicaux doivent justifier le risque global pour le patient afin que leur utilisation soit approuvée, contrairement aux automobiles par exemple, qui malgré la technologie moderne, ont toujours un risque inhérent lors de leur utilisation.

Vérification et Validation

L’IEC 62304 exige, dans la section 5.5.2, que le fabricant de dispositifs médicaux établisse un processus de vérification d'unité logicielle. Plus précisément, le processus doit introduire une stratégie, des méthodes et des procédures pour vérifier l'exactitude formelle de chaque partie de code élémentaire. De plus, le logiciel doit être validé et testé pour voir s'il fournit la fonction requise. Cependant, il devient clair que les auteurs de l’IEC 62304 étaient plus concernés par les logiciels médicaux dans le cadre de systèmes embarqués que par les logiciels d'application autonomes. La norme fait peu de déclarations sur la validation du logiciel seul. Pour traiter des logiciels autonomes médicaux ou de santé, les directives manquantes sont désormais couvertes par l’IEC 82304.

L’IEC 82304 s'applique explicitement aux logiciels autonomes et n'est pas limitée aux produits médicaux au sens strict, mais s'applique également aux produits qui globalement participent à l’amélioration de la santé individuelle. L’IEC 82304 fait explicitement référence à l’IEC 62304 dans de nombreux paragraphes et, de sorte, les deux cadres se chevauchent passablement. Par exemple, l’IEC82304 s’appuie sur les directives de l’IEC62304 pour tout ce qui concerne la gestion de la qualité à utiliser tout au long du cycle de vie. Par contre, elle est dédiée à la validation du logiciel uniquement, alors que cela joue moins dans l’IEC 62304. En fait l’IEC 82304 répond à la critique répandue du manque de conseils concrets sur la façon dont les logiciels peuvent être validés dans l’IEC 62304. Le point positif est que les outils et les processus utilisés pour prendre en charge les logiciels de dispositifs médicaux peuvent également être mis à profit pour les logiciels médicaux autonomes.

Inconvénients des tests fonctionnels traditionnels

Les tests sont cruciaux pour la validation et permettent de prouver que le logiciel répond à son objectif, notamment à ses exigences fonctionnelles.
Cependant, dans le cas de la vérification, les tests classiques présentent deux inconvénients :
1. Le code exécutable et les environnements cibles réels ou simulés doivent être disponibles, ce qui est difficile à réaliser aux toutes premières étapes du processus de développement.
2. Les tests ne peuvent révéler des erreurs que si trois conditions sont remplies simultanément :
a. Le cas de test doit exécuter la partie du code ayant le défaut
b. L'erreur doit conduire à une condition d'erreur
c. La condition d'erreur doit conduire à un écart du résultat par rapport au résultat attendu

Afin de pallier ce défaut et de trouver les erreurs dans le code de manière plus fiable, l'analyse statique est une technique reconnue. Dans certains domaines critiques, comme l'aviation, l'analyse statique est même inscrite dans les normes.
Analyse statique
L'analyse statique examine le code à l'aide d'un modèle, appelé représentation intermédiaire, qui décrit le contrôle et les flux des données. Divers algorithmes sont utilisés pour parcourir ce modèle pendant l'analyse en prenant en compte tous les flux de contrôle et de données. Cette approche permet de détecter des erreurs qui pourraient être manquées dans les techniques de test classiques (dynamiques notamment). Des exemples d'erreurs complexes que les outils avancés d'analyse statique peuvent découvrir incluent les dépassements de buffers ou les déréférencements de pointeur nul, qui peuvent conduire à un accès non sécurisé aux données. Les outils d'analyse statique sont également capables d'assurer la conformité vis-à-vis des règles de codage de l'industrie et aux directives de programmation des entreprises.
Blog_MDR_analyse-statique
Des outils avancés d'analyse statique commerciaux comme CodeSonar de GrammaTech donnent aux développeurs des informations et des moyens pour aider à détecter et résoudre les problèmes de sécurité, de sûreté et de qualité. De plus, l'outil génère des rapports complets, qui simplifient la réalisation de la documentation exigée lors des audits. Une autre caractéristique unique de CodeSonar est l'analyse de code binaire qui permet d'analyser des fichiers objets, des bibliothèques et même des logiciels binaires tiers. Cette capacité est très utile pour la vérification des applications développées par des sous-traitants, le contrôle qualité des partenaires ainsi que le contrôle des middlewares et des systèmes d'exploitation tiers de plus en plus utilisés dans les systèmes embarqués.

Applicabilité de l'analyse statique aux logiciels de dispositifs médicaux

Bien que l’IEC 62304 (sur laquelle s'appuie la RDM pour le développement de logiciels des dispositifs médicaux) ne nomme pas d'outils de développement spécifiques, elle indique la nécessité de tests rigoureux, de critères d'acceptation et de traçabilité. Toutefois, étant donné la portée de la plupart des projets logiciels des dispositifs médicaux, la réalisation de ces tâches sans utiliser d’outils s’avère peu pratique.
Par exemple (extraits de la norme) :
  • La section 5.5.2 de l’IEC 62304 requiert un processus de vérification de l'unité logicielle : le FABRICANT doit établir des stratégies, des méthodes et des procédures pour vérifier chaque UNITÉ LOGICIELLE.
  • La section 5.5.3 exige que le FABRICANT établisse des critères d'acceptation pour les UNITES LOGICIELLES avant l'intégration dans des COMPOSANTS LOGICIELS plus importants et de s'assurer que les UNITES LOGICIELLES répondent à ces critères d'acceptation ... Le code est-il conforme aux règles de programmation ou aux standards de codage ?
  • La section 5.5.4 définit des critères d'acceptation supplémentaires : Lorsqu'il intervient dans la conception, le FABRICANT doit inclure des critères d'acceptation supplémentaires appropriés pour :
1.     Séquence d'événements appropriée
2.     Flux de données et de contrôle
3.     Allocation prévue des ressources
4.     Gestion des défauts (définition des erreurs, isolation et récupération)
5.     Initialisation des variables
6.     Autodiagnostic
7.     Gestion de la mémoire et débordements mémoire
8.     Conditions aux limites
Blog_MDR_exemple

L’analyse statique est bien adaptée à beaucoup de ces critères d'acceptation, et en fait les arguments en faveur d'une analyse statique sont si solides que la FDA (Federal Drug Administration – USA) a utilisé CodeSonar de GrammaTech pour analyser les logiciels des dispositifs médicaux afin d'évaluer la qualité du code source à la suite d’une série de pannes sur des pompes de systèmes de perfusion.

Accélérer le développement des dispositifs médicaux et la conformité aux normes

Les outils d'analyse statique amènent un support pour des tests rigoureux et la génération de la documentation requise pour l'approbation préalable à la mise sur le marché, et ce, de la manière suivante :
  • L'analyse statique trouve des erreurs qui échappent aux techniques de test basées sur la couverture : les tests unitaires sont souvent mesurés par le niveau de couverture, comme per exemple la couverture instructions ou des décisions. Bien que rigoureux, il existe des défauts qui surviennent dans ce type de test que les outils d'analyse statique peuvent découvrir.
  • L'analyse statique détecte les défauts au plus tôt : prévenir les défauts dès la phase de codage, au moment où le développeur écrit le code est la situation idéale - cela permet de diminuer drastiquement les coûts des tests et de correction qui augmentent à mesure que le projet progresse.
  • L'analyse statique permet de gérer les « SOUP » : les logiciels de pédigrée/provenance inconnue (Software of Unkown Pedigree/Provenance) doivent être validés spécifiquement dans les dispositifs médicaux, et les outils d'analyse statique sont capables d'évaluer la qualité et la sécurité de ces logiciels tiers ou commerciaux disponibles sur le marché (y compris sous forme de binaires exécutables ou de bibliothèques).
  • L'analyse statique au service de la documentation, la traçabilité et les preuves de test : la documentation des résultats de validation et d’acceptation des unités logicielles est essentielle pour prouver leur conformité vis-à-vis des normes de certification en vigueur. Les outils d'analyse statique intègrent toutes les fonctionnalités pour la génération des rapports afin d’aider à répondre aux exigences de certification.

En résumé

Les nombreuses normes pour les produits médicaux entraînent déjà des surcoûts importants pour les fabricants. Avec les nouvelles directives RDM, ceux-ci pourraient augmenter encore afin de répondre aux évolutions de la norme, par exemple l'évaluation des risques nécessitant un examen plus approfondi pour réduire la classification d'un appareil. L'analyse statique avancée simplifie considérablement la vérification des logiciels, les erreurs peuvent être détectées au plus tôt et peuvent être corrigées avec moins d'effort, directement dans l’environnement de développement des codeurs, et ce, avant l'intégration dans le l’ensemble du logiciel. L'analyse statique permet à la fois une mise sur le marché plus rapide et une meilleure qualité du code, tout cela étant en fin de compte bénéfique à la santé du patient.

ISIT propose un ensemble de solutions produits et services :

0