Pourquoi l'IC / CD améliore-t-il considérablement votre processus de développement SaMD / MDSW ?
Ecrit par Marc Assman
Lors du développement d'un logiciel médical autonome ou d'un logiciel faisant partie d'un dispositif médical matériel, il est essentiel de contrôler votre code. La norme CEI 62304 vous fournit d'excellentes recommandations à 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 logicielle concernée. Le contrôle de votre code s'applique à presque tous les processus de votre SMQ, tels que le contrôle de la conception, l'évaluation clinique, la surveillance post-commercialisation 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 voudrez certainement identifier la version qu'il utilisait lorsque le problème s'est produit. Et vous voudrez certainement remonter jusqu'à votre code source pour identifier les causes potentielles de ce problème. Cependant, les logiciels sont complexes de par leur conception, ils se composent de nombreux éléments différents et comptent entre quelques milliers et plusieurs millions de lignes de code, développées par un nombre indéfini de développeurs. Plus le logiciel est complexe et plus le nombre de développeurs impliqués dans le processus de développement est élevé, plus il est difficile de garder le contrôle sur votre code. Cette complexité a en outre un impact direct sur les efforts de test des logiciels et la fiabilité des résultats des tests. Cela est particulièrement vrai si vous travaillez dans un environnement en évolution rapide comme Scrum, Extreme Programming et autres, qui vous oblige à suivre le rythme de vos concurrents. C'est là que nous commençons dans cet article 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 du CI/CD. Au début, la mise en œuvre des outils CI/CD entraîne des coûts supplémentaires importants, car vous devez les qualifier et les valider en tant qu'application métier utilisée pour la « fabrication de votre dispositif médical ». De plus, ces outils comportent généralement plusieurs éléments indépendants, souvent appelés « chaîne d'outils », comprenant un référentiel de code, la conteneurisation, l'automatisation des tests, etc. Mais la qualification et la validation sont des opérations standard et n'ont rien de sorcier. Une fois celles-ci effectuées, vous pouvez utiliser l'outil en toute confiance et compter sur ses caractéristiques et ses fonctions.
Cependant, un logiciel seul ne peut pas résoudre les problèmes liés à vos processus métier. Lorsque vous mettez en œuvre un outil CI/CD, vérifiez votre processus de développement logiciel et tous les processus qui y contribuent. La plupart des problèmes que nous constatons ne sont pas directement liés au logiciel lui-même, mais aux processus métier 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.