Blogbeitrag:

Automatisierte Validierung einer Continuous-Integration-Toolkette – Eine Erfolgsgeschichte in Zusammenarbeit mit FRESENIUS MEDICAL CARE

Automatisierte Validierung einer Continuous-Integration-Toolkette – Eine Erfolgsgeschichte in Zusammenarbeit mit FRESENIUS MEDICAL CARE

Die Aufgabe
Seit 1979 hat Fresenius Medical Care die medizinische Erfolgsgeschichte der Behandlung chronischer Nierenerkrankungen wesentlich mitgeschrieben. Die kontinuierliche Weiterentwicklung der Produkte stellt gerade die Softwareentwicklung vor die Herausforderung, qualitativ guten Code in immer kürzeren Release-Zyklen zu erzeugen.
Dies ist ohne das Konzept der kontinuierlichen Integration kaum mehr vorstellbar. „Continuous Integration“ (CI) bedeutet, dass die zu entwickelnde Software möglichst häufig kompiliert, gebaut und im Anschluss daran geprüft wird. So erhalten die Entwickler schnell Feedback über durchgeführte Änderungen.
Die erforderliche Werkzeugkette enthält neben der eigentlichen Build-Umgebung eine Reihe von Software-Werkzeugen, die unterschiedliche Prüfungen durchführen. Dazu gehören Tools zur statischen und dynamischen Code-Analyse sowie das Framework für
die automatisierten Unit-Tests. Für den Einsatz im regulierten Umfeld
muss diese Werkzeugkette validiert werden.
Das Vorgehen
Für die Validierung beauftragte Fresenius Medical Care die sepp.med gmbh.
sepp.med führte zunächst eine Bestandsaufnahme der bestehenden Werkzeuge durch. Diese „Inventur“ ergab eine Liste von zwanzig Werkzeugen, die je nach Projekt zum Einsatz kommen können. Des Weiteren klärte sepp.med in einer Reihe von
Stakeholder-Interviews die geplante Verwendung der CI-Toolkette. So wurde  u.a. ermittelt, welche Programmiersprachen relevant sind, welche Werkzeuge verwendet werden und wie die Anwendungsfälle aussehen. Diese wurden graphisch als UML-Diagramm dokumentiert und in Aktivitätsdiagrammen weiter detailliert.
Parallel dazu führte Fresenius Medical Care eine Risikoanalyse (FMEA) durch und identifizierte eine Reihe von Maßnahmen. Die Risikoanalyse bildete zusammen mit den in den Interviews ermittelten Workflows die Grundlage für die Anforderungsspezifikation der Toolkette.
Besonders im Fokus stand die Validierung der MISRA C++ Regeln und der von Fresenius spezifizierten Ausnahmen, die nicht zu Fehlermeldungen führen dürfen. Für die zu validierenden Compiler wurden verschiedene Szenarien geprüft, darunter die Konfiguration, der Abbruch im Fehlerfall, mögliche Warning Levels und natürlich das Erzeugen der Binaries. Darüber hinaus spezifizierte sepp.med im Validierungsplan Workflow-Tests, die sich an den ermittelten Abläufen orientierten.
Bereits zu Beginn des Projektes war klar, dass ein Teil der Tests automatisiert werden sollte. Erstens wäre es zeitraubend und fehlerträchtig gewesen, die verschiedenen Testdaten „per Hand“ zuzuweisen und die Log-Dateien im wörtlichen Sinne „lesend“ auszuwerten. Zweitens war die Menge der Testdaten händisch nicht handhabbar, da allein mehrere hundert MISRA-Regeln verifiziert werden mussten. Drittens war absehbar, dass eine größere Anzahl der Tests erneut durchgeführt werden muss. sepp.med evaluierte verschiedene Alternativen. Die Wahl fiel schließlich auf das Testautomatisierungs-Framework Spock, das Testdurchführungs-Werkzeug gradle und die Programmiersprache Groovy. Die zentrale Steuereinheit bildet der Jenkins-Server, über welchen das Testprojekt ausgecheckt und konfiguriert wird.
Die Anforderungen, Testfälle und die Testdurchführung der manuellen und automatisierten Tests durch sepp.med wurden im ALM-Werkzeug Polarion dokumentiert. Zum Abschluss erstellte sepp.med einen Validierungsbericht.
Die Erfolgsfaktoren
Die Dialysegeräte von Fresenius Medical Care enthalten zunehmend komplexere Software. Um diese qualitativ hochwertig in immer kürzeren Release-Zyklen bereit zu
stellen, setzt Fresenius Medical Care auf das Konzept der Continuous Integration (kurz: CI). Die dafür erforderliche Toolkette wurde durch sepp.med validiert.
„Die Validierung durch sepp.med war für uns der optimale Weg, unsere Werkzeugkette abzusichern.“
Horst Bachmann, Director Software, Procedures, Electronical Engineering
Über die Zusammenarbeit
Drei Faktoren trugen wesentlich zum Erfolg des Projektes bei:
1. Die Anforderungsermittlung
Zu Beginn wurden die Toolkette, die anzuwendenden Prozessvorgaben und Richtlinien sowie die genauen Anforderungen geklärt. Diese Zeit war gut investiert. Anforderungen an das zu validierende System, die vorher nicht bewusst waren, wurden ermittelt – und somit auch implementiert. Andere Anforderungen wurden wieder verworfen, weil sie sich als nicht sinnvoll herausstellten.
2. Die Modellierung
Die erstellten UseCase- und Aktivitätsdiagramme waren einerseits sehr hilfreich, die ermittelten Ergebnisse zu kommunizieren, andererseits dienten sie zur Festlegung des Validierungsumfangs und damit auch zur Abgrenzung von anderen Validierungsprojekten.
3. Die AutomatisierungDas Testautomatisierungskonzept konnte mit großem Erfolg in einem Folgeprojekt übernommen werden. Grundlage dafür war die textuelle Spezifikation des erwarteten Systemverhaltens, wie sie im Behavior-Driven Development (BDD) üblich ist und durch Spock unterstützt wird. Damit reduzierte sich z.B. die Prüfung der zahlreichen MISRA-Regeln auf das simple, leicht verständliche Schema:
• Given [Vorbedingung]
• Expect [Verletzung der MISRA-Regel wird entdeckt]
• Where [MISRA-Regel]
Mittels dieses BDD-Schemas können die erstellten Basisskripte jederzeit neu kombiniert und somit neue Testfälle mit geringem Aufwand spezifiziert und implementiert werden.
Das Ergebnis
Für die statische Codeanalyse wurden Testdaten verwendet, die vom Hersteller des Tools zur Verfügung gestellt wurden. Daher war eigentlich zu erwarten, dass der Test der MISRA-Regeln problemlos laufen würde.
Es stellte sich jedoch heraus, dass einige MISRA-Regelverstöße nicht korrekt detektiert wurden. Damit zeigte sich unerwartet deutlich, wie wichtig die Tool-Validierung tatsächlich ist.
Fazit
Obwohl – bzw. gerade weil – zunächst keine Freigabe der CI-Toolkette erfolgte, betrachten Fresenius Medical Care und sepp.med die Validierung als Erfolg. Zum einen ist es gelungen, Fehler durch blindes Vertrauen in Tools zu vermeiden. Zum anderen wurde die Grundlage für weitere automatisierte Validierungen gelegt. Die automatisierten Tests wurden seit Abschluss des ersten Durchlaufs bereits mehrfach wiederholt. Inzwischen ist geplant, auch die Workflow-Tests zu automatisieren. Auf diese Weise wird es möglich, jeden neuen CI-Server vor seinem Einsatz innerhalb eines halben Tages vollständig zu prüfen.

Finden Sie Antworten auf alle Fragen, die Sie sich bei der Entwicklung von Software als Medizinprodukt regelmäßig stellen: www.software-als-medizinprodukt.de

Günther_Klebes_Pr.jpg

Günther Klebes
Geschäftsbereichsleiter
QS & Prozesse

Print Friendly, PDF & Email

Schlagwörter

Neuste Beiträge

Teile diesen Beitrag:

Share on facebook
Share on linkedin
Share on twitter
Share on xing
Share on whatsapp
Share on google
Share on email
Share on print

Blog per E-Mail folgen

Klicke hier, um diesem Blog zu folgen und Benachrichtigungen über neue Beiträge per E-Mail zu erhalten. 

Besuchen Sie uns online:

RSS Feed

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Teile diesen Beitrag:

Share on facebook
Share on linkedin
Share on twitter
Share on xing
Share on whatsapp
Share on google
Share on email
Share on print