Pourquoi l'IC / CD améliore-t-il considérablement votre processus de développement SaMD / MDSW ?
Ecrit par Marc Assman

Lorsque vous développez un logiciel autonome pour un dispositif médical ou un logiciel faisant partie d'un dispositif médical matériel, il est essentiel de contrôler votre code.La norme CEI 62304 fournit de très bonnes indications à cet égard. Les éléments fondamentaux de ce contrôle sont le contrôle des versions, le contrôle des modifications, la gestion des versions et la traçabilité entre le code source et la version du logiciel concerné. Le contrôle de votre code se répercute sur presque tous les processus de votre SMQ, tels que le contrôle de la conception, l'évaluation clinique, la surveillance après la mise sur le marché et les rapports de vigilance. Il a donc un impact important sur la sécurité des patients et la qualité des produits. Si, par exemple, l'un de vos patients ou utilisateurs rencontre un problème avec votre logiciel, vous souhaitez certainement identifier la version que cet utilisateur utilisait lorsque le problème est survenu. Et vous voudrez certainement remonter cette version jusqu'à votre code source pour identifier les causes profondes potentielles de ce problème. Cependant, les logiciels sont complexes, se composent de nombreux éléments différents et comptent de quelques milliers à des millions de lignes de code, développées par un nombre indéfini de développeurs de logiciels. Plus le logiciel est complexe et plus les développeurs sont impliqués dans le processus de développement, plus il est difficile de garder le contrôle de son code. Cette complexité a en outre un impact direct sur l'effort de test des logiciels et la fiabilité des résultats des tests. Surtout si vous travaillez dans un environnement qui évolue rapidement, comme Scrum, Extreme Programming et autres, ce qui est nécessaire pour ne pas se laisser distancer par la concurrence. Et c'est par là que nous commençons dans cet article de LinkedIn.
Qu'est-ce qu'un pipeline CI / CD et pourquoi s'en préoccuper ?
CI/CD signifie Continuous Integration et Continuous Delivery/Deployment (intégration et livraison/déploiement continus). Il s'agit d'une pratique de développement logiciel qui aide les développeurs à intégrer fréquemment les modifications de code dans un référentiel partagé, chaque modification étant vérifiée par des constructions et des tests automatisés. Cela permet de publier des logiciels rapidement et de manière fiable, ce qui se traduit par une meilleure qualité, une mise sur le marché plus rapide et des processus de développement plus efficaces. Traduit avec DeepL.com (version gratuite)
Vous devriez vous intéresser à la CI/CD car elle peut considérablement améliorer la qualité et l'efficacité de votre processus de développement logiciel. En automatisant la construction, les tests et les déploiements, vous pouvez réduire le risque d'erreur humaine et vous assurer que vos modifications de code sont testées en profondeur avant d'être publiées. Cela permet de réduire les bogues, d'accélérer les boucles de rétroaction et de rationaliser le processus de développement (voir la figure 1).

CI/CD peut également vous aider à répondre rapidement à l'évolution des exigences de l'entreprise et des besoins des clients, car vous pouvez déployer de nouvelles fonctionnalités et des correctifs en production en toute confiance et avec un minimum d'intervention manuelle. En fin de compte, la mise en œuvre de CI/CD peut vous aider à fournir de meilleurs logiciels, plus rapidement et avec une plus grande fiabilité.
C'est pourquoi les référentiels de code améliorent la qualité de votre code !
Les dépôts de code tels que GitLab et GitHub sont des outils puissants pour le développement de logiciels, offrant de nombreux avantages aux équipes travaillant sur des projets. Bien qu'il existe d'autres plateformes, nous nous référons uniquement à GitLab et GitHub dans cet article car ils font partie des services d'hébergement de dépôts Git basés sur le web les plus populaires sur le marché.
Version et piste d'audit :
Ces plateformes proposent des systèmes de contrôle de version qui permettent aux développeurs de suivre et de gérer les modifications apportées au code source au fil du temps. Chaque modification est enregistrée comme une nouvelle version ou révision, créant ainsi un historique complet des changements.
Cet historique des versions sert de piste d'audit et permet de savoir qui a effectué quelles modifications, quand et pourquoi, ce qui est essentiel pour retracer les problèmes, comprendre l'évolution du code et garantir la responsabilité.
Grâce à cette fonctionnalité, GitHub et GitLab répondent aux exigences réglementaires en matière de contrôle de la conception et de traçabilité.
Contrôle d'accès :
Ces référentiels permettent un contrôle d'accès granulaire, permettant aux administrateurs de projets de gérer les autorisations pour les membres de l'équipe et les collaborateurs.
En définissant les rôles des utilisateurs et les niveaux d'accès, les entreprises peuvent appliquer des politiques de sécurité, protéger les codes sensibles et empêcher les modifications non autorisées.
Le contrôle d'accès est un mécanisme clé dans les secteurs MedTech et Pharma pour protéger les données sensibles contre la manipulation.
Branche maîtresse et branches spécialisées
La branche maîtresse sert généralement de ligne de développement principale et représente le code « prêt pour la production ».
Les branches de fonctionnalités permettent aux développeurs de travailler sur des tâches spécifiques, des corrections de bogues ou de nouvelles fonctionnalités de manière isolée avant de les fusionner dans la branche principale. Cette approche favorise la stabilité du code et minimise les perturbations de la base de code principale.
Le branchement est une fonction idéale pour contrôler la conception de votre logiciel de dispositifs médicaux.
Requêtes de pull and évaluations par les pairs :
Lorsqu'un développeur est prêt à fusionner ses modifications d'une branche de fonctionnalités dans la branche principale, il crée une requête de pull. Cette action permet aux autres membres de l'équipe d'examiner les modifications proposées, ce qui favorise la collaboration et le partage des connaissances.
Les examens par les pairs permettent de détecter les bogues potentiels, d'identifier les domaines à améliorer et de s'assurer que le code respecte les normes établies et les meilleures pratiques.
Les autorités compétentes et les régulateurs exigent un contrôle à quatre yeux, en particulier pour les processus et les composants qui sont essentiels à la qualité du produit. Les demandes de retrait constituent donc une approche facile à mettre en œuvre pour répondre à cette exigence.
Plugins pour les tests statiques de logiciels :
GitLab et GitHub intègrent tous deux des outils d'analyse statique du code, tels que SonarQube, ESLint et Brakeman. Ces outils peuvent détecter automatiquement les problèmes potentiels liés au code, tels que les failles de sécurité, les odeurs de code ou les incohérences stylistiques, dès le début du processus de développement.
Plugins pour les tests automatisés de logiciels :
Les deux plateformes s'intègrent aux cadres et outils de test automatisé les plus répandus, tels que JUnit, Selenium et Cypress, ce qui permet aux développeurs d'exécuter des tests dans le cadre du flux de travail de développement. Les développeurs peuvent ainsi effectuer des tests dans le cadre du processus de développement, ce qui garantit que le code est testé de manière approfondie avant d'être intégré à la branche principale.
Build Pipelines:
GitLab et GitHub offrent des capacités d'intégration continue (CI) intégrées grâce à leurs pipelines CI/CD.
Ces pipelines permettent aux équipes d'automatiser les processus de construction, de test et de déploiement, ce qui se traduit par des boucles de rétroaction plus rapides, une amélioration de la qualité du code et des versions logicielles plus fiables.
Sauvegarde et restauration :
Les deux plateformes offrent des capacités de sauvegarde et de restauration, garantissant que les référentiels de code et leurs historiques sont protégés contre la perte ou la corruption de données.
Pourquoi faire les choses manuellement si une machine peut faire beaucoup mieux ?
- Création de Build
- Déploiement en bac à sable / validation / PROD
- Retour en arrière
- Conteneurisation
Au-delà du pipeline CI / CD - adaptez vos processus
Il est difficile de contester les avantages de l'IC / CD. Au début, la mise en œuvre d'outils de CI/CD entraîne des frais généraux importants, car vous devez les qualifier et les valider en tant qu'application commerciale utilisée pour la « fabrication de votre dispositif médical ». Et un tel outil est généralement livré avec de multiples parties indépendantes, souvent appelées « chaîne d'outils », consistant en un référentiel de code, une conteneurisation, une automatisation des tests, etc. Mais la qualification et la validation sont un exercice standard et ne relèvent pas de la sorcellerie. Une fois que c'est fait, vous pouvez travailler avec l'outil et faire confiance à ses caractéristiques et à ses fonctions.
Toutefois, un logiciel ne peut à lui seul résoudre les problèmes liés à vos processus d'entreprise. Lors de la mise en œuvre d'un outil de CI / CD, vérifiez votre processus de développement logiciel et tous les processus qui l'alimentent. La plupart des problèmes que nous constatons ne sont pas directement liés au logiciel lui-même, mais aux processus opérationnels correspondants.
Clarifier les données d'entrée et de sortie de votre processus de développement de logiciels. Comprendre qui fait quoi dans votre processus. Comprendre l'ensemble des compétences et des outils dont un travailleur a besoin pour faire son travail correctement. Et comment tout cela s'intègre-t-il dans le paysage informatique de votre entreprise ? Avez-vous également pensé à la cybersécurité, au GDPR et à la sécurité de l'information ?
Vous voyez, il y a beaucoup d'aspects à considérer au-delà de l'IC / CD.L'amélioration des processus n'est pas directement liée à votre outil de CI/CD, mais elle vous aide à améliorer la manière générale de travailler dans votre entreprise.