Archives par mot-clé : dev

ISO 62304 : Une norme essentielle pour le développement de logiciels médicaux

La norme ISO 62304, publiée par l’Organisation internationale de normalisation (ISO), définit les exigences du cycle de vie des logiciels destinés aux dispositifs médicaux. Son objectif est de garantir que les logiciels utilisés en milieu médical sont conçus, développés, testés et maintenus de manière à assurer sécurité et fiabilité pour les patients et les utilisateurs.

Cet article passe en revue les aspects principaux de la norme ISO 62304 et son rôle dans la conformité réglementaire et la gestion des risques.

1. Contexte de la norme ISO 62304

L’ISO 62304 est une norme internationale qui fournit un cadre rigoureux pour le cycle de vie des logiciels médicaux. Dans l’industrie de la santé, les logiciels ne sont pas de simples applications : ils peuvent impacter directement la sécurité des patients et des utilisateurs. La norme vise donc à structurer les étapes de développement, en introduisant des contrôles et des validations pour chaque étape clé, afin d’assurer que chaque composant du logiciel répond aux plus hauts standards de sécurité.

Objectif : garantir que les logiciels médicaux sont sûrs, efficaces et conformes aux exigences réglementaires dans les différents marchés.

2. Structuration du cycle de vie du logiciel

Le cycle de vie du logiciel est central dans la norme ISO 62304, qui se compose des phases suivantes :

  • Planification du développement : cette étape inclut la création d’un plan structuré qui définira les objectifs du logiciel, les responsabilités des équipes et les procédures à suivre.
  • Analyse des exigences : il est crucial de définir les exigences fonctionnelles et techniques dès le départ pour assurer que toutes les attentes sont claires.
  • Conception : à partir des exigences, la conception du logiciel est élaborée. Elle décompose les fonctionnalités en modules qui seront ensuite développés.
  • Implémentation : il s’agit de l’étape de codage, où chaque composant est développé en respectant les spécifications de conception.
  • Tests et validation : une phase de tests rigoureuse permet de vérifier que chaque fonctionnalité fonctionne comme prévu et respecte les exigences de sécurité.
  • Libération et maintenance : une fois le logiciel testé et validé, il est mis en production. La norme exige également une documentation des procédures de maintenance pour assurer la sécurité du logiciel dans le temps.

En résumé, rien d’insurmontable. Il faut juste avoir une roadmap solide et anticiper les tests de son logiciel. Le  minimum que l’on devrait avoir dans un développement.  La norme 62304 est l’antithèse de la norme 1664 un peu trop en vogue dans notre milieu …

l

3. Classification des logiciels selon le niveau de risque

L’ISO 62304 introduit une classification du logiciel en fonction de son impact potentiel sur la sécurité des patients. Il existe trois classes principales :

  • Classe A : les défaillances du logiciel n’entraînent aucun risque pour la sécurité.
  • Classe B : une défaillance du logiciel pourrait causer des blessures légères ou modérées.
  • Classe C : une défaillance pourrait entraîner des blessures graves ou la mort.

Le niveau de risque détermine les exigences de documentation, de validation et de tests. Plus le risque est élevé, plus les exigences sont strictes.

4. Gestion des risques

La gestion des risques est un pilier de l’ISO 62304. Elle impose aux développeurs d’identifier, d’évaluer et de maîtriser tous les risques potentiels pour les patients et les utilisateurs. Le processus de gestion des risques comprend :

  • Identification des risques : il s’agit d’identifier tous les risques possibles associés à chaque fonction du logiciel.
  • Analyse des risques : chaque risque est évalué en fonction de sa probabilité et de sa gravité.
  • Mise en place de mesures de contrôle : des mesures sont mises en œuvre pour réduire ou éliminer les risques, notamment en ajoutant des fonctionnalités de sécurité, en améliorant les processus de conception, ou en intégrant des vérifications automatiques.
  • Documentation des risques résiduels : une fois les mesures de contrôle appliquées, les risques résiduels sont documentés et validés pour s’assurer qu’ils sont acceptables.

En résumé, savoir identifier les risques de son logiciel, c’est savoir pointer du doigts les endroits où les tests devront être les plus performants. Nous sommes tous conscient que le 100 % de couverture n’est pas un but en soit, mais avoir une couverture par les tests là où sont les risques les plus important … et d’autant plus utile que le choix courant de mettre les tests … là où ils sont le plus simple à implémenter. 

5. Importance du cahier des charges et des spécifications

Un cahier des charges précis et détaillé est indispensable pour répondre aux exigences de l’ISO 62304. Ce document permet de :

  • Définir les attentes et les fonctionnalités souhaitées.
  • Garantir que tous les besoins métiers sont bien compris par les équipes techniques.
  • Servir de référence pour la validation et la conformité lors des tests.

Le cahier des charges permet également de structurer le projet de manière à garantir que chaque fonction, du début à la fin, respecte la norme et les attentes des utilisateurs.

6. Documentation et traçabilité

L’ISO 62304 impose une documentation complète de chaque étape du cycle de vie du logiciel. Chaque décision, chaque test, chaque mise à jour doit être documentée pour créer une traçabilité complète du produit. Cette documentation permet :

  • De prouver la conformité : chaque étape du développement est tracée pour montrer que le logiciel a été conçu selon les exigences.
  • D’assurer la maintenance : la documentation facilite les mises à jour et la maintenance en fournissant un historique détaillé du logiciel.
  • De gérer la validation des tests : les résultats des tests sont documentés pour prouver que le logiciel répond aux exigences de sécurité et de performance.

7. Conclusion : Un cadre rigoureux pour des logiciels sûrs et fiables

L’ISO 62304 fournit un cadre méthodique pour le développement de logiciels médicaux sûrs et fiables. Bien qu’elle impose des processus complexes et une documentation rigoureuse, ces exigences sont essentielles pour garantir la sécurité des patients et la conformité réglementaire. Pour les développeurs et les chefs de projet, comprendre et appliquer l’ISO 62304 permet de créer des logiciels qui répondent aux normes les plus strictes et inspirent confiance dans le domaine de la santé.

Un exemple où le choix de l’IA a toute son importance .

L’utilisation de l’intelligence artificielle (IA) dans le développement de logiciels est devenue presque incontournable. Dans cet article, je vais partager une expérience sur l’utilisation de l’IA pour accéder à des bases de données médicamenteuses en français.

Les avantages de l’IA dans le Développement

L’IA peut grandement accélérer le processus de développement en automatisant des tâches répétitives comme la recherche de documentation ou l’analyse de code. Par exemple, en donnant un exemple de classe, l’IA va pouvoir vous générer un template utilisable de fichier de test, elle pourra également vous montrer comment générer rapidement un ensemble de données « vraisemblable ». S’en passer serait prendre un risque important de perte d’efficacité.

Les limitations de l’IA

Cependant, il est important de noter que chaque IA a ses limitations. Dans le cas, suivant, on voit les manques de ChatGPT du, sans doute, à une actualisation des données depuis la création de ses données d’apprentissage. Sur le cas suivant, la différence de réponse va soit vous permettre d’accélérer votre travail, soit vous menez dans une solution impossible à réaliser dans un temps raisonnable.

J’ai récemment eu besoin d’accéder à une base de données médicamenteuse en français. J’ai d’abord consulté ChatGPT, qui m’a orienté vers la Base de données publique des médicaments du gouvernement français. Cependant, cette base de données ne propose pas d’API publique, ce qui limite son utilisation dans un contexte de développement. La solution proposée par chatGpt était soit de scraper le site, soit de me tourner vers des solutions concurrentes (non officiel) ou sur des données de recherche.

En revanche, la solution proposée par Bard (Google) était plus complète, offrant non seulement des informations sur la base de données mais aussi des alternatives pour y accéder. En effet, si ce site ne propose pas directement une api pour consulter ses données, il propose un téléchargement d’une série de fichier décrivant l’ensemble des médicaments . Si ce n’est une API, cela reste une méthode efficace pour avoir accès aux données souhaitées.

En conclusion,

Se fier à une unique source de données, quelles qu’elle soit, IA ou non, est une erreur. L’IA peut être un outil puissant pour les développeurs, mais il est crucial de comprendre ses avantages et ses limitations. Il faut tester et toujours mettre en doute une solution qui ne vous parait pas la plus simple.

Plongée dans l’univers des plugins ChatGPT : votre nouveau side-project ?

L’intelligence artificielle (IA) est en pleine effervescence, et le monde des chatbots n’est pas en reste. Au cœur de cette révolution se trouve ChatGPT d’OpenAI, une technologie qui se démarque par sa capacité à évoluer et à s’adapter grâce aux plugins. Si vous êtes un développeur en quête d’un projet passionnant, voici pourquoi vous devriez envisager de plonger dans l’écosystème des plugins ChatGPT.

Sous le capot : L’architecture des plugins ChatGPT

Un plugin pour ChatGPT n’est pas simplement un add-on. C’est un module d’extension puissant qui peut transformer, améliorer ou diversifier les capacités intrinsèques du modèle. Ces extensions sont méticuleusement conçues pour s’harmoniser avec l’API de ChatGPT, garantissant une fusion transparente sans sacrifier les performances du modèle.

Pourquoi les plugins sont-ils le futur de ChatGPT ?

  • Modularité: Ils offrent une architecture propre, assurant que le cœur de ChatGPT demeure solide tout en évoluant.
  • Scalabilité: Grâce à leur conception, l’intégration de nouvelles fonctionnalités est fluide, sans impact négatif sur le système global.
  • Interopérabilité: Avec des interfaces bien définies, les plugins peuvent facilement dialoguer avec d’autres systèmes et bases de données, élargissant ainsi le champ des possibles.
  • Monétisation: Pour les esprits entrepreneuriaux, les plugins peuvent être transformés en produits premium, ouvrant la voie à des opportunités financières.
AI nuclear energy, future innovation of disruptive technology

Les avantages d’un side project axé sur ChatGPT :

  • Montée en compétence: C’est une chance inouïe de perfectionner vos compétences en programmation, NLP et IA.
  • Opportunités financières: Un plugin innovant peut non seulement répondre à un besoin, mais aussi devenir une source de revenus.
  • Visibilité: Enrichir l’écosystème ChatGPT peut vous positionner comme un acteur clé au sein de la communauté tech et IA.
  • Liberté créative: Sans les contraintes d’un environnement professionnel formel, vous pouvez expérimenter, innover et peaufiner à votre rythme.
  • Réponse à un besoin: Si ChatGPT manque d’une fonctionnalité que vous désirez, pourquoi ne pas la créer vous-même ?
  • Acquisition de compétences diverses: Gérer un projet de A à Z vous permet d’acquérir des compétences en gestion, marketing et communication.

En bref,

Se lancer dans la création d’un plugin pour ChatGPT est bien plus qu’un simple side project. C’est une aventure enrichissante, une opportunité d’apprentissage et un tremplin vers de nouvelles opportunités. Pour les passionnés de technologie, c’est le moment idéal pour contribuer et façonner l’avenir des chatbots.

Ressources :

Image de callmetak sur Freepik
Image de rawpixel.com sur Freepik

Motiver vos méninges, faites des concours

En tant que développeur, il est rare que nos algorithmes soient vraiment révolutionnaires. Souvent nos travaux sont tout autre. Nous devons assembler, comprendre le métier, proposer des solutions innovantes .. mais pas faire des algorithmes réellement complexes. La difficulté est réelle .. mais il ne s’agit pas d’algorithme à proprement dit.

Les challenges de programmation sont une occasion unique de faire travailler nos méninges, bien fatigué par des années de temps perdu à comprendre pourquoi « le ca marche sur mon PC » ne s’applique plus en production.

Les challenges peuvent être plus ou moins long et plus ou moins sponsorisés. Votre objectifs sera soit de vous faire remarquer par un recruteur … soit simplement prendre du plaisir.

Durant les fêtes qui s’approche, le site Coding Game propose un concours particulier par sa longueur. Vous aurez 3 semaines pour réfléchir, aucune excuse pour ne pas s’y frotter.

Le concours débute le 12.12.2022 à 16H00.

C’est par ici que cela se passe : https://www.codingame.com/contests/fall-challenge-2022

Bon jeu et bonne prise de tête.

C’est cela qu’on aime ^^.

#codinggame #bot #IA

L’objectif de cet article est d’étudier une étude de cas pratique : mettre en place un nœud IPFS sous une distribution Linux basé sur debian.

Installation du serveur IPFS

sudo apt install golang -y
wget https://dist.ipfs.io/go-ipfs/v0.14.0/go-ipfs_v0.14.0_linux-amd64.tar.gz$
tar xvfz go-ipfs_v0.14.0_linux-amd64.tar.gz

La configuration d’un nœud local se fait simplement en suivant les instructions données par l’exe.

./ipfs init
./ipfs cat /ipfs/XxXX/readme
./ipfs daemon

Le nœud est ensuite opérationnel et consultable sur l’url local suivante :



L’ajout d’un fichier à l’aide de la ligne de commande se fait via : ./ipfs add ../merle.jpg

Cette commande vous affichera le hash correspondant à votre fichier :


Cette valeur ( QmXrMP1aHHQHpuGoGioDbdKcnGtij6yx418Xb9wwoGwgue ) correspond à l’identifiant unique de votre fichier. Il peut ensuite être utilisé pour localiser ou faire des actions dessus.

Depuis l’interface Web, il est possible de vérifier l’enregistrement de votre fichier :

Toutes les actions faisables en ligne sont réalisables depuis la console.
La suppression via rm, l’étiquetage, via pin add pour l’étiquetage de fichier.

La mise en place de ce type de service est ultra-basique. Il est recommandé d’utiliser un service d’étiquetage centralisé pour faciliter la diffusion de ses fichiers. Une fois ceci fait, on peut se lancer dans d’autres expériences : la publication d’un site web statique directement en IPFS, l’hébergement d’une collection de NTF.

L’objectif est de pouvoir proposer de manière simple ces fichiers au plus grand nombre sans risque de défaillance d’un serveur centralisé.

Nota : cet article est assez court mais a pour objectif d’être le premier dans ma découverte du web3. A suivre donc ^^

Référence :

Abyss-project blog