Parasoft-Logo
Titelbild des Whitepapers „Leitfaden zu CI/CD für Software-DevOps in der Medizintechnik“

Whitepaper

Leitfaden für CI/CD für Medizingeräte-Software-DevOps

Neugierig, was sich im Inneren befindet? Werfen Sie unten einen Blick darauf.

Zum Abschnitt springen

Übersicht

Hersteller von Medizinprodukten müssen die Einhaltung der FDA-Anforderungen und Kundenerwartungen über den gesamten Produktentwicklungszyklus hinweg – von der Entwicklung bis zur Bereitstellung – nachweisen. Die Norm ISO 13485 legt bewährte Verfahren für die Qualitätssicherung in Unternehmen fest, während IEC 62304 einen Rahmen für die sichere Softwareentwicklung von Medizinprodukten bietet.

Moderne Medizinprodukte sehen sich zunehmend komplexerer Software und einem starken Wettbewerbsdruck durch Unterhaltungselektronikhersteller gegenüber, die in den Gesundheitsmarkt eintreten. CI/CD- und DevOps-Praktiken helfen Herstellern, Kosten zu senken und die Markteinführungszeit zu verkürzen, ohne dabei die Qualität zu beeinträchtigen.

Die Automatisierung von Softwaretests ist unerlässlich – die Integration von statischer Analyse, Unit-Tests und Codeabdeckung in die CI-Pipeline verbessert die Effizienz und die Softwarequalität erheblich.

Automatisierung in CI/CD

Die Automatisierung des Build- und Deployment-Prozesses ist für eine echte kontinuierliche Integration unerlässlich, da manuelle Methoden zu langsam und mühsam sind. CI nutzt zwar ein zentrales Code-Repository und automatisierte Builds, um Integrationsprobleme schnell zu beheben, doch ein wesentlicher Engpass entsteht in der Testphase.

Das Testen ist zeitaufwändig und schwer abzuschätzen, ein Problem, das durch manuelle Methoden noch verschärft wird. Obwohl Testautomatisierung unerlässlich ist, argumentiert das Whitepaper, dass die bloße Durchführung automatisierter Tests nicht ausreicht – ein Punkt, der weiter untersucht werden soll.

CI/CD für eingebettete Systeme

In der Softwareentwicklung für Medizinprodukte steht die Einführung von CI/CD vor besonderen Herausforderungen, die über die typische Anwendungsentwicklung hinausgehen. Dazu gehören strenge Sicherheits- und Zuverlässigkeitsanforderungen, jahrzehntelange Produktlebenszyklen und Einschränkungen der eingebetteten Hardware. Insbesondere automatisierte Tests gestalten sich schwierig, da die Durchführung und Beobachtung von Tests auf Zielgeräten komplex ist und Rückverfolgbarkeits- sowie Konformitätsdaten benötigt werden.

Lösungen wie Parasoft C/C++test überwinden diese Hürden durch ein optimiertes Testframework mit minimalem Speicherbedarf, anpassbarem Quellcode und Integrationen mit eingebetteten Compilern und IDEs. Dies ermöglicht automatisierte Regressionstests, Verhaltensverifizierung und Remote-Ausführung und erlaubt es Teams in der Medizintechnik, die in anderen Bereichen üblichen Automatisierungsvorteile zu nutzen und gleichzeitig strenge regulatorische Standards zu erfüllen.

Testen von Software für medizinische Geräte ist zeitaufwändig, insbesondere die nach jeder Änderung erforderlichen Regressionstests. Die Automatisierung von Regressionstest-Suites bietet erhebliche Zeit- und Kosteneinsparungen.

Parasoft C / C ++ test bietet ein optimiertes Testframework mit minimalem Binärspeicherbedarf, das als anpassbarer Quellcode für plattformspezifische Modifikationen bereitgestellt wird.

Die Lösung bietet dedizierte Integrationen mit Embedded-Compilern (GNU GCC, IAR, ARM, Intel, Keil, Wind River, Green Hills) und branchenüblichen IDEs (Eclipse, VS Code, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK). Sie unterstützt die Erstellung von Regressionstest-Baselines, die alle Ergebnisse automatisch verifizieren und Tests automatisch ausführen, um Funktionsänderungen zu erkennen.

Containerisierte Bereitstellungen werden für Entwicklungsteams von Medizinprodukten, die komplexe Toolchains verwalten, zum Standard. Die Teams haben mit der Synchronisierung von Upgrades, der Reaktion auf Sicherheitspatches, der Gewährleistung der Toolchain-Konsistenz, der Versionierung von Umgebungen für zertifizierte Produkte, der Unterstützung von Audit-Anforderungen und dem Onboarding von Entwicklern zu kämpfen.

Parasoft C/C++test Professional lässt sich einfach konfigurieren und mit Kompilierungs-Toolchains und in Containern bereitgestellten Ausführungsumgebungen verwenden. Die Tools werden in einem einzigen komprimierten Archiv bereitgestellt, um die Containerinitialisierung zu vereinfachen und unterstützen Linux- und Docker-Container.

Als Kommandozeilen-Tool eignet es sich für Container-Bereitstellungen und wird zusammen mit Compiler und Build-System für CI/CD und lokale Scans bereitgestellt. Das Tool greift auf containerisierte Compiler (GNU GCC) und Laufzeitumgebungen mit separaten Docker-Containern für Compiler-/Build-Tools und die Ausführungsumgebung zu.

 

Vorteile von CI/CD

 

Integrationstests werden früh und oft durchgeführt

Fehler werden frühzeitig aufgedeckt, sodass sie einfacher und kostengünstiger behoben werden können. Die frühzeitige Erkennung von Fehlern im Entwicklungszyklus reduziert die Kosten im Vergleich zur Entdeckung in späteren Phasen exponentiell.

Regressionstests beginnen früher

Neue Funktionen können getestet werden, um ihre Auswirkungen auf bestehenden Code zu ermitteln. Nach jeder Iteration werden der Regressionstestsuite neue Tests hinzugefügt, wodurch eine umfassende Validierung entsteht.

Es werden schrittweise Verbesserungen durchgeführt

Das Produkt wird schrittweise verbessert, indem neue Funktionen hinzugefügt und getestet sowie Fehler behoben werden. Qualität und Sicherheit werden durch kontinuierliche Weiterentwicklung gewährleistet und nicht nachträglich hinzugefügt.

Ermöglicht kontinuierliches Testen und Ausliefern

Kontinuierliches Testen und Bereitstellen sind wesentliche Bestandteile des kontinuierlichen Entwicklungsprozesses. Integration allein ist ohne kontinuierliches Testen und Bereitstellen nicht effektiv.

CI/CD optimieren

Strategische Testautomatisierung für Shift-Left-Qualität

Die nach links verschieben Dieser Ansatz integriert Qualitäts-, Sicherheits- und Schutztests frühzeitig in die Entwicklung, um Probleme zu beheben, solange sie noch kostengünstig und risikoarm sind. Dies erfordert, dass Qualität von Anfang an berücksichtigt wird. Wichtige Empfehlungen für die Umsetzung in CI/CD sind: Verbesserung der Testautomatisierung, Erhöhung der Codeabdeckung, Automatisierung der bidirektionalen Rückverfolgbarkeit und Überwachung aller Commits.

Obwohl die Testautomatisierung für die Qualität und Sicherheit von CI/CD unerlässlich ist, besteht ihre größte Herausforderung darin, die zu testenden Aspekte auszuwählen, da umfassende Tests nicht praktikabel sind. Um die Testpipeline zu beschleunigen, müssen Teams strategisch nur die Tests automatisieren, die die Codeabdeckung maximieren und Änderungen verifizieren, um effizientes, kontinuierliches Testen zu ermöglichen.

Diagramm mit der Y-Achse, die den Prozentsatz der Defekte anzeigt, und der X-Achse, die die Entwicklungsstadien anzeigt und zeigt, wie die Kosten von Defekten steigen, je später sie im Entwicklungslebenszyklus gefunden werden.
Das frühzeitige Auffinden und Beheben von Sicherheitslücken ist kostengünstiger und weniger riskant.

Codeabdeckung erhöhen

Automatisierte Erstellung von Unit-Testfällen mit Coverage Advisor

Codeabdeckung Misst, wie viel Produktionscode während automatisierter Tests ausgeführt wird. Je nach Klassifizierung kann die Software für medizinische Geräte Metriken für Anweisungen, Verzweigungen und MC/DC (modifizierte Bedingungs-/Entscheidungsabdeckung) erfordern, um eine umfassende Validierung zu gewährleisten.

Parasofts Coverage Advisor nutzt eine fortschrittliche statische Codeanalyse (Daten- und Kontrollflussanalyse), um die Werte für Eingabeparameter zu ermitteln, die zur Ausführung bestimmter, nicht abgedeckter Codezeilen erforderlich sind. Er berechnet Vorbedingungen für Funktionsparameter, globale Variablen und externe Funktionsaufrufe und präsentiert Lösungen für die vom Benutzer ausgewählten Zeilen. Diese Werte generieren neue Unit-Testfälle und steigern so die Produktivität der Entwickler bei der Erstellung von Unit-Tests zur Verbesserung der Testabdeckung.

Vom Coverage Advisor bereitgestellte Code Coverage-Lösungen
Der Coverage Advisor zeigt an, welche Eingabewerte, globalen Variablen und externen Aufrufe für einen Testfall erforderlich sind, um die benötigte Codeabdeckung zu erreichen.

Anforderungsrückverfolgbarkeit & DevSecOps

Automatisierte bidirektionale Rückverfolgbarkeit

Rückverfolgbarkeit der Anforderungen Die Rückverfolgbarkeit ermöglicht es, den Lebenszyklus einer Anforderung sowohl vorwärts als auch rückwärts durch Entwicklung, Spezifikation, Bereitstellung und kontinuierliche Optimierung zu beschreiben und zu verfolgen. Sie stellt sicher, dass genau nachvollziehbar ist, was entwickelt wird – und gewährleistet so, dass die Software die gewünschte Funktion erfüllt und nur das entwickelt wird, was benötigt wird.

Viele Softwareanforderungen an Medizinprodukte basieren auf Sicherheitsanalysen und Risikobewertungen. Das System muss die vorgesehenen Funktionen erfüllen und Risiken minimieren, um die Verletzungsgefahr zu reduzieren. Die Dokumentation und der Nachweis, dass diese Sicherheitsfunktionen vollständig implementiert und getestet wurden, erfordern Rückverfolgbarkeit.

Die Pflege von Rückverfolgbarkeitsdatensätzen in jedem Umfang erfordert Automatisierung, insbesondere in CI/CD-Pipelines, da die manuelle Rückverfolgbarkeit jede Iteration verlangsamen würde. Integrierte Softwaretest-Tools vervollständigen Verifizierung und Validierung durch die Bereitstellung einer automatisierten bidirektionalen Rückverfolgbarkeit zu ausführbaren Testfällen, einschließlich der Rückverfolgung von Erfolgs-/Fehlerergebnissen zum Quellcode, der die Anforderungen implementiert.

Überwachen Sie die Commits im Software-Repository

Kontinuierliche Qualitätssicherung in CI/CD-Pipelines erfordert die Überwachung aller Eingaben in den Software-Build. Wenn Entwickler nach Änderungen Code einchecken, wird die CI-Pipeline ausgelöst, was Kompilierungs-, Build- und Testzyklen zur Folge hat. Entspricht der Code nicht den Codierungsstandards oder schlagen Tests fehl, wird der Code bzw. der Branch nicht in den Master-Branch übernommen, um die Codequalität im Master-Branch jederzeit zu gewährleisten.

Verbesserung der Sicherheit mit DevSecOps

DevSecOps-Methoden DevSecOps teilt Automatisierung und kontinuierliche Prozesse mit DevOps, um kollaborative Entwicklungszyklen zu etablieren. DevSecOps verlagert die Sicherheit nach links, was für eingebettete sicherheitskritische Software unerlässlich ist.

Moderne DevSecOps-Initiativen erfordern die sofortige und kontinuierliche Bewertung der mit Release-Kandidaten verbundenen Risiken. Kontinuierliches Testen innerhalb von CI/CD-Pipelines liefert automatisiertes, unaufdringliches und sofortiges Feedback zu Sicherheitsrisiken. So werden Entwicklungsteams bei der Einhaltung der Sicherheitsanforderungen unterstützt und Manager können fundierte Entscheidungen zur Optimierung von Release-Kandidaten treffen.

Zusammenfassung

Kontinuierliche Integration und Auslieferung spielen eine entscheidende Rolle in der Entwicklung von Medizinprodukten. Die Migration eines Wasserfallprozesses zu CI/CD und agile Entwicklung Dies zahlt sich durch Risikominderung sowie Qualitäts- und Sicherheitsverbesserungen aus. Sicherheit hat für Entwickler medizinischer Geräte höchste Priorität, und CI/CD ermöglicht DevSecOps, indem Sicherheitsanforderungen und -kontrollen in alle Phasen der Produktionskette integriert werden.

Container eignen sich ideal für CI/CD und unterstützen schnelle Bereitstellung und Portabilität in verschiedenen Host-Umgebungen mit Versionsverwaltung und zentralisierter Steuerung. Containerisierte Entwicklungsumgebungen sind wichtig für die sichere Entwicklung in DevSecOps-Pipelines, da sie eine reproduzierbare Anwendungsumgebung mit integrierten Sicherheitskontrollen ermöglichen.

Das Testen ist mit Abstand die zeit- und ressourcenintensivste Aktivität in der Entwicklung von Medizinprodukten. Kontinuierliches Testen ist ein notwendiger Bestandteil einer reibungslos funktionierenden CI/CD-Pipeline und bietet einen Rahmen, um das Testen in frühere Phasen des Lebenszyklus zu verlagern. richtige Anwendung der Automatisierung Durch die Fokussierung auf die Bereiche mit dem höchsten Risiko lässt sich das Testen so optimieren, dass es kontinuierliche Prozesse weniger behindert. Kontinuierliches Testen erfordert Werkzeugunterstützung für Automatisierung und Optimierung.Werkzeuge, die eine größere Codeabdeckung ermöglichenintelligente Testausführung und bidirektionale Rückverfolgbarkeit.