Kategorie: Software Lebenszyklus

MST013 – Regulatory: Prozesse IEC 62304

avatar
Fabian

Rückblick

  • Prozess: Satz von in Wechselbeziehung oder Wechselwirkung stehenden Aktivitäten, der Eingaben in Ergebnisse umwandelt
  • Aktivität: Satz von einer oder mehreren aufeinander bezogenen oder sich gegenseitig beeinflussenden Aufgaben
  • Aufgabe: eine Teilarbeit, die erledigt werden muss

Prozesse der IEC 62304

  1. Software Entwicklungsprozess
  2. Software Wartungsprozess
  3. Software Risikomangement Prozess
  4. Software Problemlösungsprozess
  5. Software Konfigurationsmanagement Prozess

Software Entwicklungsprozess – Planung

Erste Teilaktivität des Software Entwicklungsprozesses

Planung – Allgemein

Aktivität: Planung der Softwareentwicklung

Output: Software Entwicklungsplan

  1. Rollen und Verantwortlichkeiten
  2. Software Entwicklungsmodell
    • Projektphasen
      • Outputs in den Phasen
      • Review-Kriterien der Outputs
  3. Verweis auf weitere Prozesse der IEC 62304
  4. Software Entwicklungsprozess im Projekt
    • Allgemein
      • Tooling
        • Compiler, Interpreter, Entwicklungsumgebung, Versionskontrollsystem…
      • Coding Guidelines
  5. Planung der Software Anforderungen
  6. Planung der Software Architektur und des Detail Design
  7. Planung der Implementierung
  8. Planung der Software Unit Verifikation
  9. Planung der Software Integration
  10. Planung der Software System Verifikation
  11. Planung des Software Release

Planung – Softwareanforderungen

  1. Wo werden die Softwareanforderungen erfasst?
    • Word, Excel, IBM Doors, Redmine, Polarion, OpenProject, CodeBeamer, HelixALM, JIRA, Greenlight guru GO, …
  2. Evtl. Satzschablonen verwenden
    • Use Cases oder “Requirement-Schablone” (shall, should, may)
  3. Sicherstellen der Traceability
    • von den Systemanforderungen zur Architektur und Verifikation
  4. Festlegen des zu unterstützendes Betriebssystems
  5. Festlegen der zu unterstützende Hardware
  6. Sicherstellen der Verifizierbarkeit
  7. Sicherstellen, dass die Softwareanforderungen widerspruchsfrei und vollständig sind
    • Review und Freigabeprozess
  8. Granularitär / Detailierungsgrad der Anforderungen festlegen
  9. Wertebereiche, Datentypen und Reaktionen des Systems (auch bei Fehleingaben)
  10. Schnittstellen zu anderen Systemen
    • Reaktionszeiten
    • Interoperabilität
    • Datenvolumen und Last auf dem System

Planung – Architektur und Detailliertes Design

  1. Wo wird die Software Architektur erfasst?
  2. Definition Software-System, -Item und -Unit
  3. Beschreiben was für Software Item und Units dokumentiert werden muss
    • Static View
    • Dynamic View
    • Interfaces

Planung – Implementierung

  1. Commit Workflows
  2. Anwendung der Tools

Planung – Software Unit Verifikation

  1. Planung der Verifikation der Schnittstellen von Software-Unit
    • Statische Code-Analyse
    • Code Reviews
    • Dynamische Analyse
  2. Beschreiben in welchem System die Software Units verifiziert wird
  3. Akzeptanzkriterien festlegen (beim Verhalten der Schnittstellen)
  4. Testabdeckung festlegen

Planung – Software Integration

  1. Integration Strategy (Top-down, bottom-up, …)
  2. Beschreiben in welchem System die Integration und Integrationstest durchgeführt wird
  3. Festlegen was in den Testplan und -Bericht kommt
  4. Akzeptanzkriterien festlegen
    • Zuverlässigkeit und Robustheit
    • Performance
    • Kompatibilität und Wartbarkeit
  5. Festlegen wie Anomalien in den Problemlösungs-Prozess einfließen

Planung – Software System Verifikation

  1. Beschreiben in welchem System die Software System Verifikation durchgeführt wird
  2. Sicherstellen, dass alle Software-Anforderungen verifiziert werden
  3. Festlegen was in den Testplan und -Bericht kommt
  4. Akzeptanzkriterien festlegen
  5. Festlegen wie Anomalien in den Problemlösungs-Prozess einfließen

Planung – Software Release

  1. Beschreiben in welchem System das Software Release durchgeführt wird
  2. Festlegen wo die Software-Releases abgelegt werden
  3. Festlegen wo offenen Anomalien und Bugs dokumentiert und bewertet werden
  4. Schema der Software-Versionsnummern festlegen
  5. Sicherstellen, dass alle zuvor genannten Aktivitäten durchgeführt wurden
    • Mittels Checkliste durch die technische Dokumentation gehen und Review durchführen

Allgemeine Software Entwicklungsmodelle

Vorgehensmodelle

  • Es gibt keine Vorgabe in der Norm IEC 62304
  • Forderung: Betrachtung der Abhängigkeiten zwischen den Aktivitäten
    • Erst die Anforderungen und die Software Archtektur abschließen, dann die Risikoanalyse abschließen.
  • Mehrere Vorgehensmodell sind denkbar.
  • Die IEC 62304 zählt u.a Wasserfallmodell, iterativ-inkrementell, evolutionär etc. auf.
  • Entwicklungsmodelle können textuell oder als Flowchart beschrieben werden.

Wasserfallmodell

  • Alle Entwicklungsschritte des Wasserfallmodells werden nacheinander durchgeführt.
  • Phasenbasiert, erst eine Phase abschließen, dann Beginn der nächsten Phase
  • Review der Ergebnisse zwischen den Phasen
  • Vorteile
    • Einfach.
    • Phasenabschlüsse geben Sicherheit über den Projektfortschritt.
    • Klare Abschätzung von Kosten und Umfang bei stabilen Anforderungen.
  • Nachteile
    • Fehler werden meistens erst spät entdeckt.
    • Wiederholung von Phasen im Fehlerfall.
    • Unflexibel gegenüber Änderungen im Projekt.

V-Modell

  • Weiterentwicklung des Wasserfallmodells
    • Jetzt: Jede Phase hat eine gegenüberliegende Testphase
  • Vorteile
    • Testaspekte können früher betrachtet werden.
    • Fehler in der Spezifikation oder im Design können früher gefunden werden.
    • Durch Berücksichtigung von Testaspekten ist die Dokumentation besser.
  • Nachteile
    • Implementierungsfehler werden erst beim Testen entdeckt, meistens sehr spät.
    • Auch hier: Im Fehlerfall müssen Phasen wiederholt werden, was sehr zeitaufwändig ist.

Iterativ-inkrementelle Modelle

  • Iterativ: Einzelne Phasen werden direkt durchlaufen
  • Inkrementell: Pro Durchlauf wird der Funktionsumfang erweitert
  • Fehler, die am Ende jedes Phasendurchlaufs entdeckt werden, werden im nächsten Durchlauf behoben.

Agiles Entwicklungsmodell

  • Die Basis agiler Softwareentwicklung ist das iterativ-inkrementelle Modell.
  • Ziel ist es, bürokratische Strukturen abzubauen und den Fokus auf die kundennahe Entwicklung zu richten.
  • Weitverbreitet ist dabei Scrum.
  • Mit der IEC 62304 ist dieses Modell zwar vereinbar, wird allerdings noch etwas zögerlich eingesetzt, da die Norm sehr V-Modell-artig aufgebaut ist. Viele schrecken vor der Kombination aus agiler Welt und V-Modell-Welt noch zurück.

Quellen

SW Entwicklungsplanung:

  • IEC 62304:2015

SW Entwicklungsmodelle:

MST011 – Regulatory: Einführung IEC 62304

avatar
Fabian

Software Lebenszyklus für medizinischer Software 

Historie: Wie kam es zu dieser Norm

Therac-25

Der Therac-25 war ein Gerät zur Strahlentherapie. Hier haben sehr viele Fehler zu einem katastrophalen Verhalten geführt. Dabei kam es zu mindestens sechs Vorkommnissen, bei denen Patienten eine massive Überdosis an Strahlung ausgesetzt waren. Die Strahlendosen waren hundertmal höher als normal. Dies führte zum nachweislichen Tod dreier Patienten und schweren Verletzungen bei anderen Patienten.

Patienten haben vor Schmerzen geschrien und rannten aus dem Behandlungsraum. Sie wurden durch die Strahlung förmlich verbrannt. Das Gefühl wurde als ein “intensiver Stromschlag” beschrieben.

Ergebnis einer Kommission die die Unfälle untersuchten:

  • Hauptgrund ist schlechtes Software-Design und Entwicklungspraktiken
  • Die Software wurde so entwickelt, dass es nicht möglich war sie zu testen

Es wurden sehr viele strukturelle Ursachen für das Fehlerverhalten gefunden:

  • Keine unabhängigen Code Reviews
  • Es wurde keine Risikobewertung durchgeführt
  • Fehlermeldungen wurden in der Gebrauchsanweisung nicht erklärt
  • Die Kombination aus Hardware und Software wurde nicht getestet
  • Es gab keine Hardwareverriegelungen
  • Das Zusammenspiel von Standartsoftware und zuvor entwickelter Software nicht bedacht

Anwendungsbereich

Die Norm fühlt sich für die folgenden Bereiche verantwortlich.

Das gilt für Software die Teil eines Medizinprodukte ist (embedded software) als auch für “Standalone-Software”. Also für Software, die für sich alleine ein Medizinprodukt ist.

Nicht im Anwendungsbereich

  • Es werden keine Anleitungen gegeben, sondern “nur” Anforderungen gestellt
  • Es wird kein Softwareentwicklungsmodell gefordert (V-Model, Scrum, …)
  • Es werden keine konkreten Dokumente gefordert
    • jedoch Anforderungen an die Dokumentation formuliert
  • Keine Anforderungen an die Benutzerschnittstelle, nutzerorientierte Gestaltung oder Gebrauchstauglichkeit (Usability)
    • IEC 62366
IEC 62304
IEC 62304

Wesentliche Forderungen

Die IEC 62304 schreibt fünf Prozesse vor, nach denen die Medizinprodukte-Hersteller Ihre Software (weiter)entwickeln sollen:

  • Software-Entwicklungsprozess
  • Software-Wartungsprozess
  • Software-Risikomanagementprozess
  • Software-Konfigurationsmanagementprozess
  • Problemlösungsprozess von Software

Die Anforderungen an den Softwareentwicklungsprozess werden am umfangreichsten beschrieben. Es wird kein konkretes Entwicklungsmodell gefordert. Die Norm formuliert jedoch Anforderungen an Aktivitäten und Aufgaben für die oben genannten Prozesse. Das betrifft die Dokumentation, die innerhalb dieser Prozesse zu erstellen ist. Die Norm fordert keine konkreten Dokumente, stellt jedoch Anforderungen an die Dokumentation.

  • Planung der Softwareentwicklung
  • Software Anforderungen
  • Software Architektur 
  • Detailliertes Software Design
  • Verifizierung der Software-Einheiten
  • Software Integrationstests
  • Software Systemtest 
  • Software Freigabe
  • Software Wartung
  • Software Risikomanagement
  • Software Konfigurationsmanagement
  • Software Problemlösung

Begriffe

  • Medizinprodukt
  • Medizinprodukte-Software
  • Software-System
  • Software-Komponente (Software-Item)
  • Software-Einheit (Software-Unit)

Software-Sicherheitsklassen

Die Idee hinter den Software-Sicherheitsklassen ist, den Fokus auf die Funktionen zu lenken, die für einen schweren Schaden verantwortlich sein kann.

Folgende Software-Sicherheitsklassen gibt es:

  • A: Keine Verletzung oder Schädigung der Gesundheit möglich
  • B: Keine schweren Verletzungen möglich
  • C: Tod oder schwere Verletzung möglich

Was bedeutet das für die Dokumentation

Dokumentation anhand der Software-Sicherheitsklasse
Dokumentation anhand der Software-Sicherheitsklasse

Quellen: