Sie sind hier: HomeRubrikenEmbedded Systeme

News, Produkte, Fachartikel zur KFZ-Elektronik: Motorsteuerungen, Infotainment, Telematik, Fahrwerkselektronik.

Softwareentwicklung nach EN 62304: Teil 2: Normkonforme Implementierung

Mit dem steigenden Anteil der durch Software realisierten Funktionalität in medizinischen Geräten sowie der zunehmenden Interoperabilität zwischen den Geräten wird es immer schwieriger, ihre Sicherheit nachzuweisen. Das gilt insbesondere für die Software selbst.

Auch die Softwar muss Norm erfüllen. Bildquelle: © Pixabay

Auch die Software muss Normen erfüllen.

Im ersten Teil untersuchten wir die Entwicklung der detaillierten Anforderungen und das zugehörige Design von Medizingeräten gemäß der Norm IEC 62304. Im zweiten Teil geht es nun um die Implementierung des Designs in Form von Quellcode, um dessen Verifikation und Validierung sowie um seine fortlaufende Wartung nach erfolgter Freigabe.

Implementierung und Verifikation der Softwaremodule

Um durchgängig die gewünschten Eigenschaften zu erzielen, sollten Codierstandards angewendet werden. Das hilft auch, den bevorzugten Codierstil zu spezifizieren, den Code besser zu verstehen, Sprachregeln oder -restriktionen anzuwenden und die Komplexität zu beherrschen. Der Code eines jeden Moduls sollte mit einem statischen Analysetool verifiziert werden, um auf zeitnahe und kosteneffektive Weise seine Konformität sicherzustellen.

Verifikations-Tools unterstützen großenteils eine ganze Reihe von Codierstandards. Dabei sind die besseren Tools in der Lage, die Übereinstimmung mit einem sehr hohen Prozentsatz der von den einzelnen Standards diktierten Regeln zu bestätigen. Damit lassen sich auch unternehmerische Standrads und deren Einhaltung unterstützen – abgeleitet von anwenderdefinierten oder als Industriestandard etablierten Regelsätzen. Tools mit reduziertem Funktionsumfang schaffen es dagegen nicht, subtilere Regelverstöße zu detektieren.

Die Norm IEC 62304 verlangt vom Hersteller, dass er Strategien, Methoden und Prozeduren zur Verifikation eines jeden Softwaremoduls festlegt. Erfolgt die Verifikation mithilfe von Tests, sind die Prüfprozeduren auf Korrektheit zu evaluieren. Zu den Annahmekriterien gehören Aspekte wie die Verifikation der korrekten Ereignisabfolge, des Daten- und Kontrollflusses, der Fehlerbehandlung, des Speichermanagements und der Initialisierung von Variablen, der Erkennung von Speicherüberläufen sowie der Überprüfung aller Software-Randbedingungen.

Modultest-Tools bieten für die Spezifikation oftmals eine grafische Benutzeroberfläche. Sie dient dazu, die Tests gemäß der definierten Spezifikation auszuarbeiten, alle Testfälle mit dem jeweiligen Pass/Fail-Status zusammenzufassen und zu präsentieren. Außerdem erzeugen sie automatisch die grafische Darstellung von Kontrollfluss-Graphen, Testrahmen und Stub-Funktionen. Fehlende Member- und Globalvariabeln werden kompensiert, wodurch sich die Modultestes deutlich schneller und einfacher ausführen lassen. Da die Prozesse auf automatisch generierte Testvektoren ausgeweitet werden, bieten die Tools eine unkomplizierte Möglichkeit, die Randwerte zu analysieren – ohne jeden Testfall manuell erstellen zu müssen. Damit Testsequenzen und –fälle wiederholbar sind, bleiben sie erhalten. So lassen sie die Ergebnisse mit jenen vergleichen, die im ersten Schritt generiert wurden.

Eine gründliche Verifikation erfordert auch eine statische und dynamische Analyse des Daten- und Kontrollflusses. Die statische Datenflussanalyse produziert eine Querverweistabelle der Variablen, in der neben ihrem Typ auch angegeben ist, wo innerhalb der Quelldatei(en) oder des zu prüfenden Systems sie verwendet werden. Außerdem finden sich Angaben von Datenflussanomalien, eine Analyse des Prozedurinterfaces und ein Verzeichnis von Verstößen gegen Standards. Die dynamische Datenflussanalyse baut auf diesem gesammelten Wissen auf, bildet die Coverage-Informationen auf jeden Variableneintrag in der Tabelle für aktuelle und kombinierte Datensätze ab und befüllt die Flussdiagramme, um den Kontrollfluss des geprüften Moduls zu illustrieren.