Für Embedded Medical Systeme: Der ML-Prozess aus Lernen und Adaption läuft genau wie KI und ML bei der statischen Codeanalyse ab. Bei der Identifizierung und Priorisierung von Code-Verletzungen in medizintechnischer Software kann die KI-ML-Kombi statische Analysen vereinfachen und entstressen.
Das Ziel der statischen Analyse (SA) ist es, Schwachstellen im Code aufzuspüren, häufig mit branchenüblichen Programmier- und Sicherheitsstandards wie OWASP (Open Worldwide Application-Security-Project) und CWE (Common Weakness-Enumeration). Entwickler sind oftmals nicht in der Lage, ihre eigenen Codes auf Schwachstellen zu analysieren oder zu ermitteln, welche Korrekturen notwendig sind, und diese zu priorisieren. In Medizingeräten können Schwachstellen in der Software jedoch schwere Folgen haben, daher ist die SW-Prüfung nach IEC 62304 auch Teil der Zertifizierung.
Es gibt tatsächlich keine Abkürzung oder einen »einfachen Modus« für Statische-Analyse-Tests. Um den größtmöglichen Nutzen zu erzielen, müssen sie regelmäßig und gründlich durchgeführt werden. Allerdings können ihre Automatisierung und der Einsatz von Machine-Learning (ML) die Ergebnisse verbessern und die Arbeit für die Entwickler und die spätere Medizintechnik-Zertifizierung enorm erleichtern.
Die Ergebnisse der statischen Analyse profitieren definitiv von der Automatisierung mithilfe von Tools. Obwohl sich die Arten der Analyse und die Prioritäten unterscheiden können, sind die Arbeitsweise des SA-Tools und die Anwendung seiner Methodik dieselben. Die verschiedenen, derzeit verfügbaren Analysen drehen sich zum Beispiel um diese vier Schlüsselpunkte:
Durch die kontinuierliche Automatisierung dieser Abläufe können Teams sie besser verwalten, indem sie potenzielle Probleme erkennen, bevor diese zu großen Problemen anwachsen oder eine Zulassung für den Einsatz in medizintechnischen Geräten verhindern.
Was macht die Einführung der statischen Analyse schwierig und teuer?
Viele Entwickler halten die Einführung der statischen Analyse wegen des Projektumfangs und der Vorgehensweise für kostspielig und abschreckend. Sie möchten die für sie dringlichsten Themen möglichst alle auf einmal angehen und muten sich dabei oft mehr zu, als sie an diesem Punkt bewältigen können. Dennoch geht gerade in der streng regulatorisch überwachten Medizintechnik kein Weg an diesem Prozess vorbei.
Die Lösung lautet, die wichtigsten Probleme in kleinen Schritten anzugehen. Natürlich sollten sie nicht so klein sein, dass sie zum Stillstand führen. Aber mit »Babysteps« lässt sich verhindern, dass ein Entwicklerteam mit Tausenden von Verstößen auf einmal überfordert ist, denn in sicherheitskritischen Märkten müssen alle Verstöße behoben werden, um die Konformität mit MedTech- und SW-Standards zu gewährleisten, bevor ein Produkt in die Zertifizierung gehen kann.
Wie unterstützt AI/ML die statische Analyse?
Bei der statischen Analyse geht es darum, Probleme zu erkennen, noch bevor der Code kompiliert und ausgeführt wird. KI kann auf mehreren Ebenen des Softwaretests eingesetzt werden (Bild 1), beispielsweise bei
Künstliche Intelligenz erleichtert das Entwickeln und Verwalten von automatisierten Tests. Zudem kann sie die Testausführung optimieren und die Bereitstellung verwertbarer Ergebnisse maximieren, indem sie die Abläufe auf verschiedene Weise erweitert. Werden Tests automatisiert und Prozesse entwickelt, lassen sich mehr Probleme in kürzerer Zeit bewältigen. Das Vorsortieren sollte jedoch den Statische-Analyse-Tools überlassen werden, wobei Entwickler durch die Arbeit unter der »Aufsicht« von Statische-Analyse-Techniken ihre Fertigkeiten erweitern und somit bessere Programmiertechniken erlernen und sichereren Code schreiben können.
Vorbeugen statt entdecken
Die Codeanalyse bietet Techniken zum Vorbeugen und Erkennen, um die mit der Qualität des Codes verbundenen Risiken zu kontrollieren. Sie hilft zwar, Probleme zu erkennen, aber eine effizientere Strategie ist es, deren Auftreten von vornherein zu verhindern. Durch die Automatisierung der statischen Analyse können Entwicklungsteams Probleme regelmäßig und einfacher erkennen. Die Integration von KI und ML in die statische Analyse erleichtert den Teams die Übernahme dieser Praxis. Es schlägt vor, Verstöße auf eine Weise zu beheben, die die Effizienz fördert, Arbeitsabläufe optimiert und die Produktivität und den Erfolg der Entwickler steigert.
Clustering-Methodik
Neben dem Clustering von Verstößen auf der Grundlage moderner Klassifizierungsalgorithmen kann das KI-Modell verschiedene neuronale Netze, z. B. code2vec, nutzen, um Codeverfahren zu vektorisieren und sie miteinander zu vergleichen und Verstöße entsprechend der semantischen Bedeutung des sie umgebenden Codes zu gruppieren. Das KI-Modell ermöglicht auch, Verstöße innerhalb ähnlichen Codes anzugehen. Dies bietet mehrere Vorteile: