CppDepend
Dispositifs médicaux — Étude de cas

Étude de cas : atteindre la conformité IEC 62304 et la maintenabilité du code dans les dispositifs médicaux embarqués

Le client développait un firmware embarqué pour un dispositif de monitoring patient de classe III utilisé en cardiologie. Compte tenu de sa nature vitale, le logiciel devait être conforme à IEC 62304 (classe de sécurité C)…

Quelles normes CppDepend prend-il en charge nativement ? Les ensembles de règles intégrés couvrent MISRA C/MISRA C++, CWE, CERT C/CERT C++ et AUTOSAR C++14 — et aucune autre norme. Pour toute autre norme mentionnée sur cette page (ISO 26262, DO-178C, IEC 62304, IEC 61508, JSF++ AV, NIST SSDF, ASPICE…), la conformité est assurée par des règles CQLinq personnalisées rédigées pour votre projet, plus la validation d’architecture et les quality gates CI.

Étude de cas : atteindre la conformité IEC 62304 et la maintenabilité du code dans les dispositifs médicaux embarqués

Secteur : Dispositifs médicauxProfil client : société MedTech américaine spécialisée dans les équipements implantables et diagnostiquesDomaine : logiciel embarqué pour monitoring patient et télémétrie sans filTaille de l’équipe : 35 ingénieurs logiciels embarquésLangages : C, C++Normes clés : IEC 62304, FDA Guidance, MISRA C/C++, CERT C

Le défi

Le client développait un firmware embarqué pour un dispositif de monitoring patient de classe III utilisé en cardiologie. Compte tenu de sa nature vitale, le logiciel devait être conforme à IEC 62304 (classe de sécurité C) et aux directives de la FDA, tout en répondant à des normes internes strictes de portabilité, de robustesse et de traçabilité.

L’équipe a rencontré plusieurs obstacles pendant le développement :

  • La vérification manuelle était insoutenable : les revues de code manuelles pour les règles de sécurité et de portabilité (MISRA, CERT) étaient sujettes aux erreurs et consommaient ~30 % du temps de développement.
  • Difficulté à appliquer les règles de sécurité internes : la logique critique, comme les routines de démarrage de l’appareil, devait suivre des schémas stricts de flux de contrôle et d’allocation des ressources, appliqués de manière incohérente.
  • La documentation d’audit était éparpillée entre plusieurs outils, nécessitait un important nettoyage et accusait souvent du retard sur les changements de code.
  • Risque lié au code legacy : des modules anciens (certains de plus de 10 ans) étaient réutilisés et ne correspondaient pas aux attentes de sécurité modernes.

Ils avaient besoin d’une solution d’analyse statique capable de soutenir les processus formels de sécurité, d’automatiser l’application des règles et de fournir des artefacts de traçabilité alignés sur les exigences des sections 5.5 et 5.7 d’IEC 62304 (documentation de vérification et de conception architecturale).

La solution : CppDepend

CppDepend a été introduit comme quality gate central lors du passage du prototype à la soumission réglementaire. Les objectifs clés incluaient :

  • Automatiser les contrôles de conformité pour MISRA, CERT et les politiques de codage internes
  • Générer des métriques de code et la documentation pour soumission aux organismes notifiés
  • Garantir la maintenabilité à long terme grâce à une validation architecturale continue
  • Établir une visibilité sur la dette technique pour soutenir la gestion des risques

Le moteur de règles CQLinq personnalisable et la puissante analyse de dépendances de CppDepend ont permis d’adapter la plateforme aux besoins réglementaires comme internes.

Stratégie de mise en œuvre

Phase 1 – Baseline de sécurité (semaines 1–3)

  • Analyse de l’intégralité de la codebase embarquée (~400 K lignes), qui a identifié :
  • ~950 violations MISRA
  • 40+ fonctions dépassant le seuil de complexité cyclomatique
  • Plus de 200 constructions risquées (mémoire dynamique, imbrication profonde…)

Phase 2 – Intégration des normes (semaines 4–6)

  • Développement d’un ensemble de règles CQLinq personnalisées pour imposer les contraintes de gestion des ressources, les directives de séquencement du démarrage et la logique de gestion des erreurs.
  • Rapports alignés sur les étapes de vérification IEC 62304 et le guide de documentation logicielle de la FDA.

Phase 3 – Automatisation & traçabilité (semaines 7–10)

  • CppDepend intégré dans le pipeline CI/CD (basé sur Jenkins) avec rapports nocturnes.
  • Diagrammes d’architecture visuels créés pour accompagner les documents d’analyse des risques logiciels (selon ISO 14971).
  • Tableaux de bord de synthèse ajoutés au Confluence interne pour les équipes QA et V&V.

Résultats après 10 semaines

MétriqueAvant CppDependAprès 10 semaines
Violations MISRA/CERT950+< 120
Fonctions au-dessus du seuil de complexité40+8
Temps de préparation de la documentation d’audit4–5 jours< 6 heures
Estimation de la dette technique (SQA)~17%8.3%
Problèmes de régression détectés avant release~60 % manuellement95 % automatisé

Résultats & bénéfices

  • Vérification IEC 62304 simplifiée : CppDepend a été utilisé directement pour satisfaire les sections IEC 62304 liées à la vérification et à l’architecture, simplifiant les audits.
  • Qualité du code améliorée : les équipes ont signalé moins de défauts, une meilleure clarté du code et une confiance accrue dans les modules réutilisés.
  • Autonomisation des développeurs : les boucles de feedback ont été raccourcies en intégrant l’analyse au développement quotidien, empêchant les violations de règles d’atteindre la QA.
  • Évolutif pour les futurs produits : les templates et règles CppDepend ont été réutilisés pour d’autres dispositifs du pipeline du client, accélérant la réutilisation des processus de sécurité.

Pourquoi CppDepend ?

CppDepend offrait une combinaison unique de contrôle de règles basé sur les normes, d’extensibilité des règles personnalisées et de reporting aligné sur la réglementation. Contrairement aux linters simples, il a aidé l’équipe à raisonner sur la conception architecturale, l’exposition au risque et la pérennité du code à long terme — idéal pour un cycle de développement de dispositifs médicaux.

Conclusion

Avec CppDepend, l’équipe MedTech a considérablement amélioré la conformité du code, réduit l’effort de revue et rationalisé la documentation de sécurité. Résultat : elle a soumis son dispositif de classe III avec une justification plus solide et un traitement d’audit plus rapide — tout en pérennisant son code pour la maintenance et la réutilisation dans les modèles suivants.

← Retour à la présentation Dispositifs médicaux

Découvrez ce que CppDepend révèle dans votre codebase

Lancez l’analyse sur vos propres projets : standards de codage, validation d’architecture, dette technique et quality gates — en quelques minutes.