„Wie schreibt man erstfehlersichere Software?“ lautet die Frage, die mir eine Teilnehmerin meines Seminars medizinische Software stellt. Eine exzellente Frage, die ich nicht in einem Satz beantworte möchte:
Das Prinzip der Erstfehlersicherheit gilt natürlich auch bei Medizinprodukten, die Software enthalten oder die „Stand-alone-Software“ sind. Generell kann Erstfehlersicherheit definitionsgemäß [1] auf zwei Arten erreicht werden:
- Man trifft eine Maßnahme, die das Risiko sicher („mit einer vernachlässigbaren Wahrscheinlichkeit eines Versagens“) vermindert. Ein typisches Beispiel ist ein ausfallsicherer Watchdog, der den Fehler einer Komponente (Erstfehler) erkennt und das Gerät in einen sicheren Zustand bringt.
- Man hat eine Maßnahme getroffen, welche Risiken nicht sicher minimiert, diese erste Maßnahme aber durch eine zweite Maßnahme ergänzt wird. Die Wahrscheinlichkeit, dass diese zweite Maßnahme ausfällt, muss vernachlässigbar sein.
Kann man bei Software eine Maßnahme „einbauen“, die Erstfehler mit ausreichender Sicherheit ausschließen kann? Beispielsweise eine Methode, die die Rückgabewerte von anderen Methoden auf Plausibilität überprüft und bei unplausiblen Werten geeignet reagiert? Das kann und soll man tun. Doch ist damit eine Erstfehlersicherheit gegeben?
Den Beweis, dass diese überprüfende Methode das ursprüngliche Risiko nahezu sicher vermindert, wird man kaum erbringen können. Wahrscheinlichkeiten sind bei Software nur sehr schwer abschätzbar. Und aus genau diesem Grund „ignoriert“ die IEC 62304 die Dimension Wahrscheinlichkeit und arbeitet mit Sicherheits- und nicht mit Risikoklassen. Die IEC 62304 erlaubt konsequenterweise eine Reduktion einer Sicherheitsklasse nur durch eine Hardware- und nicht durch eine Softwarekontrollmaßnahme.
In anderen Worten: Software, die prinzipiell zu unvertretbaren Risiken führen kann, lässt sich nicht durch eine wie auch immer geartete Maßnahmen innerhalb der gleichen Software erstfehlersicher gestalten. Daher findet man den Begriff der Erstfehlersicherheit in diesem Kontext meist nicht. Ein zweites Softwaresystem (das auf eigener Hardware, d.h. auf einem eigenen Prozessor und in einem unabhängigem Speicher läuft) kann hingegen dazu genutzt werden, ein erstes Softwaresystem erstfehlersicher zu gestalten.
Gar nicht so einfach, oder?
Herzliche Grüße, Christian Johner
[1] IEC 60601-1
Hallo,
läßt sich Erstfehler-Sicherheit auch dadurch erreichen, daß Prozess-Schritte fehlerhafte Produkte erkennen und aussortieren?
Wenn die Design-Toleranz-Lagen vorhersagen, daß x% der Produkte nicht funktionieren werden, diese aber in der Produktion (durch Tests) erkannt und aussortiert werden – spricht man dann immer noch von Erstfehlersicherheit?
Denn die „verbleibenden“ Produkte können ja dann immer noch das Merkmal von ausreichend geringer Ausfallwahrscheinlichkeit haben.
Gruß,
JB
Ein erster Fehler ist definiert als „Zustand, wenn eine einzelne Maßnahme zur Verminderung eines RISIKOS defekt ist oder wenn eine einzelne, anomale Bedingung vorliegt“, die Erstefehlersicherheit als „Merkmal eines ME-Geräts […], wodurch es während der zu erwartenden Betriebslebensdauer beim ERSTEN FEHLER frei von unvertretbaren Risiken bleibt“.
Eine Maßnahme in der Produktion wäre normalerweise kein „Merkmal des Geräts“, dass es beim ersten Fehler frei von unvertretbaren Risiken bleibt. Dieser erste Fehler müsste nämlich erst vorliegen. Mit einer Maßnahme in der Produktion stellt man normalerweise sicher, dass nicht einmal ein erster Fehler auftritt. Würde dieser dann doch auftreten, müsste man schauen, ob es überhaupt einer Maßnahme bedarf. Es könnte ja sein, dass das Risiko beim ersten Fehler bereits akzeptabel ist.