Technische Artikel

Ein ISO 26262-Workflow für automatisierte Fahranwendungen mit MATLAB: Richtlinien und bewährte Methoden

Von Lars Rosqvist, MathWorks


Der Einsatz von Simulink® und Stateflow® für ISO® 26262-basierte Softwareentwicklung für Kfz-Steuergeräte ist gut etabliert. Insbesondere bei automatisierten Fahranwendungen besteht ein wachsender Trend zur Implementierung von Softwaredesigns mit MATLAB®-Funktionen sowie Simulink-Blöcken und Stateflow-Diagrammen. Dieser Artikel bietet bewährte Praktiken für die Verwendung eines MATLAB-zentrierten Workflows zur Überprüfung der Konformität mit den Softwarestandards ISO 26262 [1]. Diese bewährten Methoden ergänzen den ISO 26262 Referenz-Workflow mit Model-Based Design, dargestellt in IEC Certification Kit.

Empfohlenes Modellierungsmuster

In diesem Artikel verwenden wir ein Softwareentwicklungsmuster, in dem ein Simulink-Modell einen MATLAB-Funktionsblock enthält (Abbildung 1). Das Simulink-Modell der obersten Ebene enthält alle Konfigurationseinstellungen für die Codegenerierung. Der MATLAB-Funktionsblock ruft externe MATLAB-Funktionen auf.

MATLAB-Screenshot eines Modellierungsmusters unter Verwendung externen MATLAB Codes.

Abbildung 1. Modellierungsmuster unter Verwendung externen MATLAB -Codes.

Dieses Modellierungsmuster nutzt alle für Simulink-Modelle verfügbaren Verifizierungs- und Validierungstools und ermöglicht gleichzeitig die Implementierung von Funktionen in der MATLAB-Sprache. [2]. Darüber hinaus nutzt es die umfangreichen Möglichkeiten von MATLAB. Beispielsweise wird die ADAS-Entwicklung typischerweise mit MATLAB implementiert, da komplexe mathematische Funktionen auf prägnante und elegante Weise ausgedrückt werden können.

Es gibt alternative Möglichkeiten, MATLAB [3] in einer sicherheitskritischen Produktentwicklungsumgebung, zu verwenden, die in diesem Artikel nicht erwähnt werden.

MATLAB ISO 26262 Referenz-Workflow: Übersicht

Wie bereits erwähnt, basiert der in diesem Artikel beschriebene Arbeitsablauf auf dem ISO 26262-Referenzarbeitsablauf im IEC Certification Kit (Abbildung 2).

Ein Diagramm, das einen Systemanforderungs-Workflow mit Anforderungserstellung, Architekturentwicklung, Modellierung, Codegenerierung und Compiler mit den für jeden Prozess verwendeten Produkten zeigt.

Abbildung 2. Im IEC Certification Kit angegebene Verifizierungs- und Validierungsaktivitäten.

Der MATLAB-basierte Workflow enthält zusätzliche Empfehlungen für die folgenden Verifizierungs- und Validierungsaktivitäten:

  • Erstellung von Anforderungen und Überprüfung der Architektur
  • Statische Modellanalyse
  • MIL-Tests und SIL- oder PIL-Back-to-Back-Tests
  • Statische Codeanalyse
  • Dokumentation

Erstellung von Anforderungen und Überprüfung der Architektur

Die ISO 26262 verlangt den Nachweis, dass alle Anforderungen umgesetzt und getestet wurden. Im Referenz-Workflow der ISO 26262 liefern die in Abbildung 3 hervorgehobenen Aktivitäten zur Architekturüberprüfung und Anforderungserstellung diesen Nachweis.

Dasselbe Diagramm wie in Abbildung 2, in dem die Aktivitäten zur Anforderungsverknüpfung hervorgehoben werden: Architekturüberprüfung und Anforderungserstellung.

Abbildung 3. Aktivitäten zum Verknüpfen von Anforderungen

Verknüpfen von Anforderungen mit MATLAB-Code

Mithilfe der Requirements Toolbox™ können Sie Anforderungen mit Codezeilen in MATLAB-Funktionen auf die gleiche Weise verknüpfen, wie Sie Anforderungen mit Simulink-Blöcken verknüpfen. Der Unterschied besteht darin, dass bei der vorhandenen Prüfung auf fehlende Anforderungen kein externer MATLAB Code geprüft wird. Es wird empfohlen, eine Model Advisor-Prüfung zu implementieren, die nach MATLAB Containern sucht, die nicht mit einer Anforderung verknüpft sind. Ein Container ist normalerweise eine externe MATLAB Datei oder eine MATLAB Funktion, abhängig von der Größe der Datei.

BEWÄHRTE METHODE für MATLAB Workflow

Implementieren Sie Model Advisor-Prüfungen, um nach MATLAB Containern zu suchen, die nicht mit Anforderungen verknüpft sind.

Statische Modellanalyse

Jede Komponente im Implementierungsmodell muss auf Lesbarkeit, Verständlichkeit und Testbarkeit überprüft werden (Abbildung 4). Simulink Check™ wird verwendet, um die Konformität des Modells mit ISO 26262 und den MathWorks-Richtlinien für Systeme mit hoher Integrität zu bewerten.

Dasselbe Diagramm wie in Abbildung 2, in dem die Aktivitäten zur statischen Modellanalyse hervorgehoben werden.

Abbildung 4. Im IEC Certification Kit angegebene Aktivitäten zur statischen Modellanalyse.

Sprachuntergruppe

Beim Programmieren in MATLAB können Funktionen aus mehreren unterschiedlichen Toolboxen zum Einsatz kommen. Da MATLAB eine leistungsstarke Sprache mit einem hohen Abstraktionsgrad ist, können Sie mit wenigen Codezeilen komplizierte Funktionen entwickeln. In manchen Fällen kann eine einzige Zeile MATLAB Code viele Zeilen C-Code ergeben, wodurch die vollständige Überprüfung des generierten Codes schwierig wird. Sie müssen wissen, dass die von Ihnen implementierte Funktionalität testbar ist. ISO 26262 schreibt die Verwendung einer Sprachuntermenge (Tabelle 1 in ISO 26262) basierend auf der Art der von Ihnen verwendeten Funktionen vor.

Wir empfehlen Ihnen, die folgenden Schritte auszuführen, um die Anforderung an die Sprachuntermenge zu erfüllen:

  • Bewerten Sie die verwendeten MATLAB Funktionen, um sicherzustellen, dass keine davon einen hohen Verifizierungsaufwand erfordert. Mit Model Advisor kann die Verwendung nicht empfohlener Funktionen aufgrund der Codekomplexität ermittelt werden.
  • Ersetzen Sie nicht empfohlene MATLAB-Funktionen durch einfachere Implementierungen. Diese einfacheren Funktionen lassen sich leichter verfolgen und testen.

BEWÄHRTE METHODE für MATLAB Workflow

Achten Sie bei der Überprüfung von Modellen auf MATLAB-Operationen oder -Funktionen, die von der Model Advisor-Prüfung markiert werden. himl_0013. Wenn möglich, ersetzen Sie sie durch andere Funktionen.

Wenn die Funktionen nicht ersetzt werden können, müssen sie separat getestet werden.

  • Überprüfen Sie die Funktion durch separate Unit-Tests mit hoher Abdeckung. Wenn die Abdeckung erreicht ist, begründen Sie die Verwendung dieser Funktionen durch Verweisen auf die externen Komponententests.

BEWÄHRTE METHODE für MATLAB Workflow

Wenn MATLAB Operationen oder -Funktionen identifiziert werden, die viel C-Code erzeugen und nicht ersetzt werden können, testen Sie die Funktionen extern mit Unit-Tests. Schreiben Sie Begründungen dazu, wo die Funktionen verwendet werden, und verlinken Sie zum Speicherort der Testergebnisse.

Starke Datentypisierung

ISO 26262 erfordert, dass alle Variablen stark typisiert sind. Model Advisor prüft Simulink-Modelle auf stark typisierte Blöcke, einschließlich der Schnittstelle zum MATLAB-Funktionsblock, prüft jedoch keine externen MATLAB-Funktionen. Um dieses Hindernis zu überwinden, schreiben Sie eine Prüfung, um sicherzustellen, dass alle MATLAB Funktionen stark typisiert sind. Besonders wichtig ist die Prüfung von Datentyp und Datendimension.

BEWÄHRTE METHODE für MATLAB Workflow

Fügen Sie eine Model Advisor-Prüfung hinzu, um sicherzustellen, dass alle Variablen in Ihrem MATLAB Code stark typisiert sind.

MIL-Tests und SIL- oder PIL-Back-to-Back-Tests

Back-to-back- (Gleichwertigkeits-)Tests ermöglichen Ihnen den Nachweis, dass sich der generierte Code genauso verhält wie das Modell, wie in ISO 26262, Tabelle 7, Methoden zur Software-Unit-Verifizierung, empfohlen. Verwenden Sie für den Objektcode Processor-in-the-Loop-Tests (PIL) und für den generierten C-Code Software-in-the-Loop-Tests (SIL) (Abbildung 5). Die Testfälle sollten dieselben sein, die in Model-in-the-Loop-Tests (MIL) verwendet werden. Verwenden Sie zur Unit-Überprüfung SIL. Für Integrationstests empfiehlt es sich, diese auch auf der Zielhardware auszuführen, um die gesamte Entwicklungs-Toolchain zu überprüfen.

Dasselbe Diagramm wie in Abbildung 2, in dem die Aktivitäten zur Modellüberprüfung hervorgehoben werden: MIL-Tests, PIL-Back-to-Back-Tests und SIL-Back-to-Back-Tests.

Abbildung 5. Im IEC Certification Kit angegebene Modellverifizierungsaktivitäten.

Vermeidung unbeabsichtigter Funktionalität

Um zu beweisen, dass bei der Codegenerierung keine unbeabsichtigte Funktionalität hinzugefügt wurde, messen Sie die Test-Abdeckung sowohl während der Modell- als auch der Code-Tests. Die Test-Abdeckung erfolgt typischerweise durch Back-to-Back-Tests mit Simulink Coverage™. Die Abdeckung wird gemäß ISO 26262 verwendet, um die Vollständigkeit der Verifizierung zu bewerten und den Nachweis zu erbringen, dass die Ziele der Komponententests erreicht wurden.

Gemäß ISO 26262 muss Code mit fehlender Abdeckung überprüft und begründet werden. Bei der Entwicklung mit Simulink-Blöcken können die Begründungen mit dem Modell verknüpft werden, sodass die Begründungen zwischen den Verifizierungsläufen erhalten bleiben. Diese Option ist für externe MATLAB Funktionen nicht verfügbar. Um eine fehlende Abdeckung für eine MATLAB Funktion zu begründen, fügen Sie dem Code einen Abdeckungsfilter hinzu und verbinden Sie ihn dann entweder mit dem Test-Harness oder der Testdatei in Simulink Test™. Wir empfehlen, die Abdeckungsfilterdatei mit der Testdatei zu verbinden (Abbildung 6).

Ein Screenshot des Testbrowsers, der den Dateinamen des Abdeckungsfilters hervorhebt.

Abbildung 6. Mit der Testdatei verbundener Abdeckungsfilter.

BEWÄHRTE METHODE für MATLAB Workflow

Verfolgen Sie Begründungen für fehlende Abdeckung in externem MATLAB Code über einen Begründungsfilter, der mit der Testdatei verbunden ist.

Statische Codeanalyse

Gemäß der Norm ISO 26262 umfassen statische Analysen Aktivitäten wie die Suche im Quellcodetext oder im Modell nach Mustern, die mit bekannten Fehlern übereinstimmen, oder nach der Einhaltung von Modellierungs- oder Codierungsrichtlinien. Am generierten Code werden statische Codeanalysen durchgeführt (Abbildung 7).

Dasselbe Diagramm wie in Abbildung 2, das die statische Codeanalyse mit Polyspace hervorhebt.

Abbildung 7. Im IEC Certification Kit angegebene Aktivitäten zur statischen Codeanalyse.

MISRA C-Konformität

Zur Beurteilung von MISRA® C-Konformität für aus MATLAB generierten Code verwenden Sie ein statisches Code-Analysetool wie Polyspace Bug Finder™, um nicht MISRA C-konformen Code zu erkennen und die Ergebnisse manuell zu untersuchen. Wenn der nicht konforme Code von einer integrierten MATLAB Funktion stammt, haben Sie zwei Möglichkeiten:

  • Ersetzen Sie die integrierte MATLAB-Funktion durch eine neu geschriebene Funktion
  • Schreiben Sie eine Begründung für die MISRA C-Warnung

Unsere Empfehlung ist, die Funktion, wenn möglich, zu ersetzen. Um sicherzustellen, dass die ersetzte Funktion nicht von anderen Entwicklern verwendet wird, implementieren Sie eine Model Advisor-Prüfung auf nicht empfohlene Funktionen.

BEWÄHRTE METHODE für MATLAB Workflow

Überprüfen Sie beim Überprüfen von Berichten zur statischen Codeanalyse, ob MISRA-Warnungen von integrierten MATLAB Funktionen stammen. Wenn diese Funktionen ersetzt werden können, fügen Sie eine Model Advisor-Prüfung hinzu, die warnt, wenn nicht empfohlene Funktionen verwendet werden. Wenn nicht, begründen Sie das Problem im Bericht zur statischen Codeanalyse.

Dokumentation

Im abschließenden Sicherheitsnachweis, der die Konformität mit ISO 26262 belegt, müssen Sie jeden Schritt des Verifizierungsprozesses dokumentieren, von den Anforderungen bis zur Verifizierung. Die Dokumentation sollte Entwurfsbeschreibungen der Funktionalität enthalten. Abbildung 8 hebt einige der Aktivitäten hervor, die in der Entwurfsbeschreibung enthalten sein müssen.

Dasselbe Diagramm wie in Abbildung 2, in dem die Erstellung von Anforderungen, die Entwicklung der Architektur und die Modellierung hervorgehoben werden.

Abbildung 8. In die Entwurfsdokumentation aufzunehmende Aktivitäten.

Beschreibung des Systemdesigns

Simulink Report Generator™ enthält eine vordefinierte Vorlage für Systemdesignberichte. Diese Vorlage ist normalerweise ausreichend für die Dokumentation einer in Simulink entwickelten Komponente, jedoch nicht für die Dokumentation externer MATLAB Funktionen, da diese nicht in der standardmäßigen Systemdesignbeschreibung enthalten sind. Wir empfehlen daher, die Vorlage anzupassen, um den externen MATLAB Code einzubinden.

BEWÄHRTE METHODE für MATLAB Workflow

Passen Sie die Vorlage zur Systemdesignbeschreibung an, um externen MATLAB Code einzubinden.

SOTIF-Überlegungen

In komplexen Systemen wie ADAS kann sich eine Funktion wie beabsichtigt verhalten, aber dennoch gefährliches Verhalten verursachen. Unter Anleitung des ISO 21448-Standards zur Sicherheit der beabsichtigten Funktionalität (SOTIF) können Sie dieses Problem lösen, indem Sie zusätzliche Verifizierungs- und Validierungsaktivitäten in das modellbasierte Design integrieren. Wir empfehlen, randomisierte Betriebszustandstests hinzuzufügen, um die Tests zu erweitern und unbekannte Anwendungsfälle einzubeziehen. Diese Stichprobentests sollen das Verhalten des Implementierungsmodells und des integrierten Objektcodes im Vergleich zu den Systemanforderungen überprüfen.

Das IEC Certification Kit umfasst Unterstützung für SOTIF. Wenn es um SOTIF geht, gibt es keine großen Unterschiede zwischen Simulink und MATLAB Workflows. Das aktualisierte IEC-Zertifizierungskit enthält Informationen zur Verwendung der Automated Driving Toolbox™ für Systemtests.

Zusammenfassung

Bei der ISO-konformen Softwareentwicklung sind die Unterschiede zwischen einer vollständig auf Simulink basierenden Entwicklung und einem eher MATLAB-zentrierten Workflow nicht groß. Der Hauptunterschied besteht darin, dass die Verwendung nicht empfohlener Funktionen vermieden werden muss. Es gibt spezielle Prüfungen zum Identifizieren solcher MATLAB Funktionen in den ISO 26262-Prüfungen in Simulink Check. Dadurch wird sichergestellt, dass die MATLAB Implementierung Code generiert, der für Anwendungen mit hoher Integrität geeignet ist. Die anderen Herausforderungen bei der Verwendung eines MATLAB-zentrierten Workflows für ISO 26262 können durch einfache Workarounds bewältigt werden, wie etwa die Verwendung von Begründungsfiltern oder das Verknüpfen von Anforderungen mit mehreren Ebenen im Modell.

[1] Die Empfehlungen in diesem Artikel basieren auf MATLAB R2024a. Wenn Sie eine andere Version verwenden, wenden Sie sich an Ihren MathWorks Vertreter, um mehr über die Möglichkeiten zur Verwendung von MATLAB und Simulink für ISO 26262 zu erfahren.

[2] Entwickler wählen manchmal MATLAB statt Simulink, weil sie glauben, dass Simulink diff und merge nicht unterstützt. Wenn Sie in Simulink arbeiten, können Sie die integrierten Tools für diff und merge verwenden. Wenn Ihr Team ein verteiltes Versionskontrollsystem wie Git verwendet, können Sie im Falle eines Konflikts eine Drei-Wege-Zusammenführung durchführen.

[3] In MATLAB R2023a wurde MATLAB Test™ veröffentlicht. MATLAB Test bietet Tools zum Entwickeln, Ausführen, Messen und Verwalten dynamischer Tests von MATLAB Code. Dies gibt den Entwicklern die Möglichkeit, bei der Entwicklung von Software mit hoher Integrität in der MATLAB Umgebung zu bleiben. MATLAB Test ermöglicht Ihnen, die Spezifikationen regulierter Anwendungen zu erfüllen und ist Teil des IEC Certification Kit.

Über den Autor

Lars Rosqvist ist Senior Team Lead im Automotive-Bereich bei MathWorks. Er unterstützt Kunden in verschiedenen Branchen mithilfe von Model-Based Design und MATLAB. Er ist vom TÜV SÜD als Functional Safety Professional zertifiziert und unterstützt seit mehreren Jahren Kunden bei der ISO 26262-Zertifizierung. Bevor er zu MathWorks kam, arbeitete Lars als Softwareentwickler in der Automobilindustrie und entwickelte dort Klimaanlagen. Lars erhielt seinen Master-Abschluss in angewandter Physik und Elektrotechnik von der Technischen Universität Linköping, Schweden.

Veröffentlicht 2024