Empfohlenes Webinar: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Zum Video

ISO 26262 Software-Compliance in der Automobilindustrie

Statische Analyse

Viele der in ISO 26262 festgelegten Qualitätsaufgaben, darunter Daten- und Kontrollflussanalyse und semantische Analyse, werden durch moderne, fortschrittliche Tools wie Parasoft C/C++test unterstützt. Darüber hinaus umfassen statische Analysetools Metriken und unterstützen Peer-Code-Reviews mit Funktionen, die Unit-Tests und Laufzeitfehlererkennung unterstützen.

Die Rolle der statischen Analyse bei der Softwareverifizierung nach ISO 26262

Verifizierungsmethoden wie die statische Analyse bieten Teams eine praktische Möglichkeit, Fehler in Automobil-Softwaresystemen aufzudecken, zu verhindern und zu korrigieren. Die wahre Stärke fortschrittlicher statischer Analysetools liegt in der Fähigkeit, den Code auf der Grundlage von Branchenstandards für die Einhaltung von Codierungsvorschriften zu analysieren, wie MISRA C / C ++, CERT C/C++ und AUTOSAR C ++ 14.

Die Analyse meldet Verstöße gegen Coderegeln und -richtlinien sowie Codekomplexität und Qualitätsmetriken. Diese Daten können für Verlaufs- und Prüfzwecke quellenkontrolliert werden. Ebenso wichtig ist jedoch die Verwendung eines Fehlerverfolgungs- und -verwaltungssystems, um aussagekräftige analytische Ansichten und Priorisierungen bereitzustellen, mit der Absicht, die Probleme mit dem höchsten Risiko bis hin zu den Problemen mit dem niedrigsten Risiko zu lösen.

ISO 26262 Teil 6, 9.4.2:2018 - Methoden zur Software-Unit-Verifizierung
ISO 26262 Teil 6, 9.4.2:2018
Nachfolgend werden die spezifischen Abschnitte von ISO 26262, Teil 6: Produktentwicklung: Softwareebene beschrieben, die von statischen Analysetools angesprochen werden.

Rundgänge und Inspektionen

Informelle Methoden zur Überprüfung von Design und Implementierung. Statische Analysetools automatisieren viele der mühsamen Aspekte der Codeprüfung, wie z. B. die Einhaltung von Codierungsstandards, und weisen gleichzeitig auf Fehler und mögliche Softwareschwächen hin.

Kontrollflussanalyse

Eine statische Codeanalysetechnik zur Bestimmung des Kontrollflusses eines Programms. Moderne fortgeschrittene statische Analysetools wie Parasoft C/C++test verwenden ausgefeilte Kontroll- und Datenflussanalysen, um komplexe Defekte und Sicherheitslücken zu erkennen.

Datenflussanalyse

Eine Technik zum Sammeln von Informationen über die möglichen Wertesätze, die an verschiedenen Stellen in einem Computerprogramm berechnet werden. Die Datenflussanalyse ist ein wichtiger Aspekt erweiterter statischer Analysetools, mit denen komplexe Fehler wie Schwachstellen in verfälschten Daten erkannt werden können.

Statische Code-Analyse

Mit diesem allgemeinen Begriff wird die Analyse von Code beschrieben, die ohne tatsächliche Codeausführung durchgeführt wird. Dazu gehören auch die oben verwendeten Begriffe.

Die Rolle statischer Analysetools zur Unterstützung der ISO 26262-Designprinzipien für den Entwurf und die Implementierung von Softwareeinheiten

Kodierungsstandards verkörpern die bewährten Praktiken, die wir uns in jahrelanger Erfahrung angeeignet haben. Sie zielen darauf ab, Code zu härten, indem sie schlechte Praktiken vermeiden, die zu unzureichender Qualität und Sicherheit führen, und gleichzeitig gute Praktiken fördern, die widerstandsfähigeren Code erzeugen. Im Fall von Automobilstandards basieren sie auf bewährten Praktiken sowie auf Leitlinien zur Vermeidung von Softwarefehlern, die im Laufe der Jahre beobachtet wurden.

Kodierungsstandards definieren normalerweise eine Teilmenge einer Programmiersprache, die als sicherer und zuverlässiger in der Anwendung gilt. Ziel ist es, unvorhersehbares Verhalten von vornherein zu verhindern und die riskanten Sprachfunktionen, die es ermöglichen, einzuschränken.

Die einzige praktische, objektive und nachhaltige Möglichkeit, Codierungsstandards durchzusetzen, sind Tools zur statischen Codeanalyse, die enorme Mengen an Quellcode gleichzeitig automatisch analysieren können. Diese Tools lassen sich in Software-Builds in einer CI/CD-Pipeline integrieren und sind direkt in der IDE eines Entwicklers verfügbar. Und sie liefern Berichte, die die Konformität der analysierten Software mit dem ausgewählten Standard angeben.

In den folgenden Abschnitten werden die wichtigen Industriestandards in der Automobilsoftwarebranche behandelt und wie Automatisierung, Tools und Prozesse genutzt werden können, um die Einhaltung zu erleichtern.

Verschiedene Arten der statischen Codeanalyse

Eine der häufigsten Arten der statischen Codeanalyse ist SAST oder statischer Anwendungssicherheitstest. Dies gilt auch als Best Practice für Anwendungssicherheitstests, kann aber auch anderswo angewendet werden. Um alle Fehlerklassen zu identifizieren, müssen möglicherweise mehrere Codierungsstandards (MISRA, AUTOSAR, CERT, CWE) verwendet werden.

Daher ist es am besten, sich mit verschiedenen Arten der statischen Codeanalyse und den Fehlern, die sie erkennen sollen, vertraut zu machen.

Symbol in einem blauen Kreis, das einen weißen, nach oben zeigenden Pfeil zeigt.

Leistung

Diese Tests identifizieren Fehler, die die Gesamtleistung beeinträchtigen. Sie können auch verwendet werden, um sicherzustellen, dass Entwickler mit aktuellen Best Practices auf dem Laufenden bleiben.

Symbol in einem blauen Kreis, das ein weißes Vorhängeschloss zeigt.

Sicherheit

Bei der sicherheitsrelevanten Quellcodeanalyse handelt es sich zweifellos um einen kritischen Test, da sie Sicherheitsrisiken wie schwache Kryptografie, Konfigurationsprobleme und rahmenspezifische Befehlsinjektionsfehler aufdeckt.

Symbol in einem blauen Kreis, das ein weiß umrandetes Sicherheitsschild mit einem Häkchen in der Mitte zeigt.

Zuverlässigkeit

Diese Tests helfen, Funktionsproblemen vorzubeugen. Kein Entwickler möchte sich um 4 Uhr morgens mit einer Notfallmeldung über einen nicht reagierenden Dienst herumschlagen. Diese Art der statischen Codeanalyse ist nützlich, um Speicherlecks oder Threading-Probleme zu finden.

Symbol in einem blauen Kreis, das den weißen Umriss einer Lupe zeigt.

Design

Diese Art der statischen Analyse ermutigt Teams, einheitliche Codierungsstile zu übernehmen, um die Benutzerfreundlichkeit, das Verständnis und die Fehlerbehebung zu verbessern. Da Stilverstöße identifiziert werden, müssen Entwickler keine Zeit damit verschwenden, danach zu suchen.

Welche Fehler kann die statische Codeanalyse erkennen?

Jede statische Analyseregel oder -richtlinie behandelt unterschiedliche Probleme. Einige Probleme, die sich auf die Zuverlässigkeit auswirken, können Ressourcenlecks für C oder Nullzeigerausnahmen in C++ sein. Die MISRA C:2023-Richtlinie 4.12 dient dazu, die Verwendung von dynamischem Speicher zu verhindern, der zu Laufzeitfehlern außerhalb des Speichers führen kann, was unerwünscht ist.

In der Richtlinie heißt es: „Die Bezeichner ‚calloc‘, ‚malloc‘, ‚realloc‘, ‚aligned_alloc‘ und ‚free‘ dürfen nicht verwendet werden und kein Makro mit einem dieser Namen darf erweitert werden.“

Der folgende Code führt daher zu einem Verstoß.

int* p1 = (int*)malloc(10); /* Verstoß */

frei(p1); /* Verstoß */

Die empfohlene Lösung besteht darin, einen Speicherblock vorab zu reservieren und ihn nach Bedarf über Ihr definiertes Äquivalent von „malloc“ und „free“ zu verwalten. Ähnlich verhält es sich in C++, wenn die Operatoren „new“ und „delete“ überladen werden.

Die Absicht der Software, die Sprache und die Plattform wirken sich alle auf die Arten von Fehlern aus, die die statische Codeanalyse erkennen kann.

Abweichungen bei der statischen Codeanalyse

Die statische Codeanalyse identifiziert Fehler basierend auf vorgegebenen Regelsätzen. Das bedeutet, dass jede Zeile, die gegen eine Regel verstößt, markiert wird. Natürlich gibt es, wie im echten Leben, bei verschiedenen Softwaretypen einige Ausnahmen von diesen Regeln.

In solchen Situationen lassen Entwickler Abweichungen zu. Die Regeln können den Umständen angepasst werden und besondere Belange berücksichtigen. Ein Team kann mit „Ja“ oder „Nein“ entscheiden, ob diese Abweichung akzeptabel ist oder nicht. Dies wird auch dokumentiert, da es gegen die ursprünglichen Regeln verstößt.

So wählen Sie ein Analysetool für statischen Code aus

Parasofts Suite von Tools zur Automatisierung von Softwaretests funktioniert über verschiedene Arbeitsabläufe und Teamzusammensetzungen hinweg. Wenn es um die statische Codeanalyse geht, trifft das genauso zu. Sie beschleunigt den Entwicklungszyklus, reduziert die Fehlerquote und sorgt für kontinuierliche Verbesserungen. Um herauszufinden, welches Tool für Ihre Anforderungen am besten geeignet ist, beginnen Sie einfach mit der Basissprache des Quellcodes. Zusätzlich zu C- und C++-Lösungen, Parasoft bietet auch Lösungen für Java-Tests mit Jtest sowie Testen der Sprachen C# und VB.NET mit dotTEST.

Die statische Codeanalyse kann entweder in der IDE (Eclipse, VS Code, Visual Studio) oder über die Befehlszeilenschnittstelle für Automatisierungs- und kontinuierliche Integrationspipelines durchgeführt werden. Die Ergebnisse der Analyse können sofort innerhalb der IDE und aus generierten Berichten (HTML, PDF, XML) abgerufen sowie für die weitere Nachbearbeitung, Berichterstattung und Analyse vom preisgekrönten Parasoft DTP-Berichts- und Analyse-Dashboard aggregiert werden.

Dunkelblaues Banner mit dem Bild eines Mannes, der in einem Serverraum mit einer Frau spricht, die ein Tablet in der Hand hält.
Bild eines Mannes und einer Frau mit einem Tablet in der Hand, die in einem Serverraum diskutieren.

Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.