Comment réduire le coût d'un
logiciel (de) dispositif médical ?
Maurice Navarro
Consultant qualité & logiciel pour dispositifs médicaux
En première approche, le coût d'un logiciel peut être réparti sur trois grandes phases de son cycle de vie :
- le coût de réalisation initiale,
- le coût de production et distribution,
- le coût de maintenance.
Il serait aventureux d'estimer le montant de ces coûts en l'absence de précisions sur le logiciel considéré. Mais plusieurs études portent sur les coûts relatifs des logiciels et proposent des moyens pour les réduire.
C'est le sujet développé dans cet article. Il traite le cas des logiciels de dispositifs médicaux après avoir exploré le cas des logiciels en général.
Coût de réalisation initiale du logiciel
Les statistiques sur les projets logiciels sont tristes. Ainsi, seulement un tiers des projets logiciels sont livrés dans les temps prévus, en respectant le budget alloué et avec les fonctionnalités requises.
Parmi les raisons invoquées pour expliquer cette situation on trouve
- le manque de clarté / précision des exigences,
- le manque de réalisme des attentes et
- les modifications des exigences en cours de projet.
D'autres données complètent celles de la figure précédente. Elles nous apprennent notamment que plus le projet est de petite taille et plus il a de chances de réussite.
Sur cette base, pour réduire le coût de réalisation initiale d'un logiciel, il est judicieux de limiter les fonctionnalités proposées dans sa première version.
En plus de diminuer la probabilité d'être "en dehors des clous" en termes de projet, cette approche présente plusieurs avantages :
- la probabilité d'occurrence d'anomalies du logiciel est d'autant moins élevée que la quantité de code et de fonctionnalités est réduite,
- le temps disponible pour mener à bien une conception perenne est augmenté,
- l'effort nécessaire pour la vérification et la validation du logiciel se voit réduit et
- vous maîtrisez le choix des fonctionnalités qui sont relayées à la version suivante.
Coût de production et distribution du logiciel
La réduction du coût de production et distribution d'un logiciel tient d'avantage de la logistique que du génie logiciel. Elle passe souvent par la diminution du nombre d'opérations manuelles requises.
Plusieurs cas de figure sont possibles.
Logiciel que l'utilisateur va installer par ses propres moyens
On est ici dans le cas de la vente au détail. Il implique un support pour le logiciel et son transport jusqu'au client.
Dans cette situation, l'approche couramment adoptée pour réduire les coûts est de distribuer le logiciel par téléchargement sur Internet.
Il s'agit aujourd'hui de l'approche la plus répandue pour distribuer un logiciel.
Logiciel incorporé dans du matériel
On traite ici du logiciel d'exploitation d'un matériel. Les illustrations sont nombreuses dans l'électroménager par exemple.
Dans ce cas de figure deux approches sont répandues pour diminuer le coût de fabrication du matériel :
- prévoir un installeur à l'attention du département de production ou
- installer le logiciel sur le matériel via une image de disque.
Logiciel exploité en service web (SaaS)
Avec le développement de l'utilisation d'Internet, cette approche est en croissance constante depuis plusieurs années. Elle présente notamment l'avantage de la rapidité de déploiement des mises à jour du logiciel.
Dans ce cas, la réduction des coûts passe encore par l'automatisation. Il s'agit notamment d'automatiser l'installation sur les serveurs de mise à disposition du logiciel.
Coût de maintenance du logiciel
Le coût de maintenance du logiciel est le coût le plus élevé dans le cycle de vie du logiciel.
On distingue deux types de maintenances du logiciel :
- la maintenance évolutive et
- la maintenance corrective.
La maintenance évolutive consiste en l'ajout de nouvelles fonctionnalités au logiciel et la maintenance corrective consiste en la correction de dysfonctionnements du logiciel.
Coût de maintenance évolutive du logiciel
La maintenance évolutive présente une valeur ajoutée pour le fabricant : image de l'entreprise, satisfaction du client, augmentation du chiffre d'affaires… Et elle augmente la durée de vie du produit.
Cependant, elle présente un gros travers : son coût augmente de version en version. En effet, les évolutions nécessitent des efforts de plus en plus conséquents pour une production réelle de plus en plus mince.
Parmi les raisons invoquées pour expliquer cette situation on trouve
- l'augmentation de la quantité de code qui complique d'autant chaque nouvelle évolution,
- le "turn over" dans l'entreprise qui génère une perte de connaissance du logiciel au moment de le modifier,
- la lassitude des intervenants à travailler à de multiples reprises sur le même sujet.
Pour pallier à cette situation plusieurs points ont fait leurs preuves :
- la conception par composants indépendants,
- la programmation orientée objets et
- l'emploi de modèles de conception réutilisables ("design patterns").
La conception par composants indépendants permet de constituer un logiciel à partir de plusieurs logiciels de petite taille ou de taille modérée. Ceci diminue la probabilité de dysfonctionnements et simplifie la prise en main du code en cas de besoin.
La programmation orientée objets permet de circonscrire les différents éléments qui constituent le logiciel pour simplifier l'identification des causes de dysfonctionnements et accélerer leur correction.
L'utilisation de "design patterns" permet de standardiser le code généré tout en tirant parti de l'expérience de ceux qui les ont conçus. Cette standardisation simplifie d'autant la participation de nouveaux intervenants au projet.
Coût de maintenance corrective du logiciel
Le besoin de maintenance corrective d'un logiciel ne présente aucune valeur ajoutée pour le fabricant. De ce fait, il est particulièrement important de réduire son coût, voire le besoin en soi.
Plusieurs études ont abouti à une même conclusion : le coût de correction d'un dysfonctionnement est d'autant plus élevé que le dysfonctionnement est identifié tard dans le cycle de vie du logiciel.
Ainsi, la figure ci-dessous montre que quand une erreur de conception est détectée sur la version approuvée du logiciel, le coût pour la corriger est 30 fois supérieur à ce qu'il aurait été si l'erreur avant été corrigée lors de la phase de conception.
Une question se pose alors : quand est-ce que sont générés les dysfonctionnements d'un logiciel ?
La figure ci-dessous montre que 45 % des erreurs sont générées avant l'implémentation du logiciel et que 12 % des erreurs du logiciel correspondent à des problèmes de documentation.
Parmi les explications de ce phénomène figurent
- la mauvaise compréhension et/ou formulation des exigences,
- la mauvaise compréhension et/ou analyse des contraintes de conception,
- le manque de vérification de la documentation.
Ces observations ont amené le développement de la qualité du logiciel comme moyen de prévention des dysfonctionnements du logiciel et donc de réduction des coûts de maintenance corrective. Deux points sont apparus particulièrement importants dans cette démarche :
- des essais logiciels (tests) menés méthodiquement et de manière ciblée,
- des revues de vérification des documents et du code générés.
Plusieurs études ont montré que cette approche permettait d'éliminer jusqu'à 85 % des dysfonctionnements du logiciel avant sa livraison ("Software defect origins and removal methods", Capers Jones 2012).
Focus sur le logiciel de dispositif médical
Réduction du coût de réalisation initiale
Se focaliser sur les fonctionnalités importantes du logiciel médical considéré est tout à fait adapté aux PME et aux startups du secteur biomédical.
En effet, dans le cadre de projets innovants, c'est souvent qu'on veut beaucoup faire dès le départ au risque d'en oublier tout le travail nécessaire à côté.
Ainsi, un système de management de la qualité (SMQ) ISO 13485 doit être construit en partant de zéro et les exigences de la norme EN 62304 doivent être mises en œuvre pour le logiciel.
Réduction du coût de production et distribution
Dans le cadre des logiciels de dispositifs médicaux, la réduction des opérations manuelles requises pour la production et la distribution du logiciel présente l'avantage de réduire les risques du dispositif en diminuant la probabilité d'opérations manuelles erronées.
Quelques points sont néanmoins à souligner.
Tout d'abord, les logiciels d'automatisation d'installation ne rentrent pas dans le cadre de la norme EN 62304. Par contre ils sont soumis aux exigences de la norme ISO/TR 80002-2.
Ensuite, dans le cadre des logiciels en service web, une attention particulière doit être portée à la confidentialité des données, notamment avec l'entrée en vigueur du Règlement général sur la protection des données (RGPD).
Réduction du coût de maintenance
Dans le cas des logiciels de dispositifs médicaux, la maintenance évolutive et la maintenance corrective peuvent toutes deux correspondre à de la correction d'anomalies du logiciel.
Mais les fabricants de dispositifs médicaux partent avec un avantage en ce qui concerne le coût de maintenance. En effet, les exigences de la norme EN 62304 recouvrent les moyens mis en œuvre dans d'autres secteurs pour réduire le besoin de maintenance corrective des logiciels.
En effet, la norme EN 62304 exige des revues de vérification et des essais (tests) en rapport avec les phases du cycle de conception et développement du logiciel.
De plus, l'analyse de risques du logiciel fournit un guide de pondération et ciblage des essais à mener pour optimiser l'identification et l'élimination d'anomalies du logiciel en amont de sa distribution.
Pour en savoir plus
L'analyse de risques du logiciel est un bon outil pour réduire ses dysfonctionnements et, par conséquent, les coûts de maintenance corrective du logiciel.