Programmiersprache in der Medizin

Sicherheit in medizinischen Geräten ohne Kompromisse mit Ada

| Autor / Redakteur: Johannes Kanig * / Hendrik Härter

Software im sicherheitskritischen Umfeld: Steuert Software beispielsweise einen Herzschrittmacher, dann gibt es keine Kompromisse
Software im sicherheitskritischen Umfeld: Steuert Software beispielsweise einen Herzschrittmacher, dann gibt es keine Kompromisse (iStock)

Software im medizinischen Umfeld ist mehr als das Verwalten von Patientendaten oder aussagekräftige Visualisierungssoftware. Gerade sicherheitskritische medizinische Geräte müssen ohne Fehler laufen. Wir zeigen Ihnen, was die Programmiersprache Ada hier leisten kann.

Heute steuern Computerprogramme komplexe Geräte wie Dialyse- oder Herz-Lungen-Maschinen und Infusionspumpen. Das ist der Grund, weshalb Software in diesem Umfeld sicherheitskritisch einzuordnen ist: Ein Fehler im Programmcode kann dramatische Folgen für den Patienten haben. Bei der großen Verbreitung mancher Geräte, etwa bei Herzschrittmachern, kann ein systematischer Fehler auf einen Schlag viele Menschenleben in Gefahr bringen. Dass dies keine theoretischen Überlegungen sind, zeigen einige Studien der amerikanischen Food and Drug Administration (FDA), die unter anderem für die Zulassung von medizinischen Geräten für den amerikanischen Markt zuständig ist.

Ergänzendes zum Thema
 
Sind Ada-Entwickler schwieriger zu finden?

Fehlerhafte Software bei Medizinprodukten

So wurden über vier Jahre, von 2005 bis 2009, über 56.000 Fehlfunktionen allein bei Infusionspumpen gemeldet. Dabei geht die FDA sogar von etwa 1% Todesfällen aus, also immerhin rund 550. Diese Zwischenfälle schließen zwar Hardwareprobleme und Bedienungsfehler mit ein, in einer anderen Studie hat die FDA aber festgestellt, dass rund ein Viertel aller Rückrufe von medizinischen Geräten auf Fehler in der Software zurückzuführen sind.

Neben dem Schutz der Patienten vor einer Fehlfunktion des Geräts - im Englischen wird in diesem Zusammenhang der Begriff safety verwendet - rückt der Schutz des Geräts und der Patientendaten vor Missbrauch durch Unbefugte - im Englischen security - in den Mittelpunkt. Proof-of-Concept-Angriffscode für Insulinpumpen wurde bereits vorgestellt und erfolgreich getestet. Das gleiche gilt für die missbräuchliche Nutzung der Remote-Update-Mechanismen von Geräten.

Der Blick über den Tellerrand – sicherheitskritische Software

In anderen Industriebereichen wie der Luftfahrt und der Eisenbahn haben die Verantwortlichen schon lange erkannt, dass die Entwicklung von kritischer Software einen radikal anderen Ansatz für den gesamten Entwicklungsprozess benötigt. In der Luftfahrt und im Eisenbahnbetrieb muss Software nach den strengen Standards DO-178 für die Luftfahrt und EN 50128 für Eisenbahnsysteme entwickelt werden, die den Entwicklungsprozess genau festlegen.

Zum Beispiel müssen die Anforderungen des Geräts explizit formuliert und dann auf die einzelnen Programmkomponenten heruntergebrochen werden. Die Normen schreiben bestimmte Aktivitäten zur Verifikation der Anforderungen vor, wie beispielsweise umfangreiche Tests auf mehreren Niveaus. Das können funktionale Tests der einzelnen Komponenten, Robustheitstests außerhalb der Spezifikation der Komponenten sowie Integrationstests sein.

Zum Schluss muss der Gerätehersteller in der Lage sein, alle Anforderungen des Geräts auf bestimmte Tests zurückzuführen – man spricht hier vom Requirements Tracability. Neben diesen prozessorientierten Vorschriften gibt es im Luftfahrt- und Eisenbahnbereich eine bewährte und allseits akzeptierte Kultur der Entwicklung sicherheitskritischer Software. So findet zum Beispiel oft die als sehr sicher geltende Programmiersprache Ada Verwendung, im Gegensatz zu unsichereren Sprachen wie C. Die Fakten sprechen hier für sich, denn es gibt bis heute keinen Flugzeugabsturz in der zivilen Luftfahrt, der auf Softwarefehler zurückzuführen ist.

Die Wahl der geeigneten Programmiersprache

Programmiersprache wählen: Eine geeignete Programmiersprache in sicherheitskritischen Anwendungen ist entscheidend
Programmiersprache wählen: Eine geeignete Programmiersprache in sicherheitskritischen Anwendungen ist entscheidend (Bild: VBM-Archiv)

Zwar geht im medizinischen Umfeld die Norm EN 62304 nicht so weit, trotzdem wird man sich hier der Probleme langsam bewusst und steuert entsprechend entgegen. So fordert die FDA in Zukunft für alle Infusionspumpen einen sogenannten Assurance Case, mit dem der Gerätehersteller die Sicherheit seines Gerätes nachweisen soll.

Auch schreibt die EN 62304 explizit eine Risikoanalyse für das Gerät und seine Software vor. Dazu gehört die Software, die der Gerätehersteller selbst geschrieben hat, aber auch verwendete Bibliotheken sowie alle Entwicklungs-Tools (zum Beispiel der Compiler). In der nächsten Version des Standards, die noch ein paar Jahre entwickelt werden wird, gibt es eine Liste von typischen Programmierfehlern, die entweder durch manuelle oder automatische Analyse ausgeschlossen werden müssen.

Auch wenn der richtige Prozess, zusammen mit einer guten Verifikationsstrategie, sicherlich die wichtigste Komponente der Entwicklung von sicherheitskritischer Software ist, sollte die Wahl der Programmiersprache nicht außer Acht gelassen werden. In den meisten Softwareprojekten sind C und C++ die dominanten Akteure, wobei in aller Regel nicht die volle Sprache zum Einsatz kommt, sondern das sogenannte MISRA-C oder MISRA-C++, das viele als unsicher geltende Features von C und C++ ausschließt. Allerdings spielt auf sehr vielen anderen Einsatzgebieten Ada eine entscheidende Rolle. Schon allein das ist ein Grund, sich die Sprache näher anzusehen.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 37563980 / Medizinelektronik)