Steuergeräte schneller programmieren Die AUTOSAR-Architektur – und ihre Anforderungen an Laufzeitumgebungen

Autor / Redakteur: Ricardo Camacho* / Michael Eckstein

AUTORSAR und MISRA sind wichtige Rahmenwerke, die Herstellern Leitlinien für die sichere Entwicklung von Embedded Software für elektronische Fahrzeug-Steuergeräte an die Hand geben. Mit spezialisierten Tools lässt sich das Einhalten dieser Leitlinien sicherstellen.

Firmen zum Thema

Das Automotive Compliance Pack von Parasoft C/C++test liefert automatisch Reports zur Code-Konformität.
Das Automotive Compliance Pack von Parasoft C/C++test liefert automatisch Reports zur Code-Konformität.
(Bild: Parasoft)

Die AUTOSAR-Organisation (Automotive Open System Architecture) wurde im Jahr 2003 gegründet, um Herstellern Leitlinien für die sichere Entwicklung von Embedded Software für elektronische Steuergeräte (Electronic Control Units, ECUs) in Automobilen an die Hand zu geben.

AUTOSAR ist eine Partnerschaft mehrerer führender Automobilhersteller aus aller Welt, darunter Toyota, BMW, Ford und viele andere. Dem Zusammenschluss geht es vor allem um die Standardisierung der Softwarearchitektur in der gesamten Industrie mit dem Ziel, sich auf die immer komplexer werdenden Steuerungssysteme einzustellen und gleichzeitig die Qualität und Zuverlässigkeit dieser sicherheitskritischen Software zu verbessern.

Die Schaffung der AUTOSAR-Architektur

Eine durchschnittliche ECU kann Tausende von Funktionen enthalten. Vor der Einführung der AUTOSAR-Architektur musste die Software für jede ECU noch einmal komplett neu geschrieben werden, sobald es Änderungen an der Hardware gab. Nach ihrer Gründung erarbeitete die AUTOSAR-Organisation einen Weg, um die Software von der Hardware unabhängig zu machen und schuf damit einen neuen Standard für die gesamte Industrie, um modulare und nachhaltige Anwendungen zu erstellen. Mehr noch: Die neuen Standards waren konform zu internationalen Sicherheitsnormen wie die ISO 14229 und ISO 27145.

Obwohl die MISRA (Motor Industry Software Reliability Association) mit MISRA C++:2008 einen Codierstandard für C++ erarbeitet hatte, beruhen die Regeln dieses Standards auf C++03 (ISO/IEC 14882:2003) und somit auf einer Sprachversion, die viele der benötigten, kritischen und sicherheitsrelevanten Softwareaspekte nicht unterstützt.

Deshalb entschied sich die AUTOSAR-Gruppe für C++14 (ISO/IEC 14882:2014) und rief auf dieser Grundlage ihren eigenen Codierstandard mit der Bezeichnung AUTOSAR C++14 ins Leben. Dieser wird seit März 2017 zweimal jährlich aktualisiert und freigegeben.

Was ist AUTOSAR C++14?

Im Jahr 2017 veröffentlichte die AUTOSAR-Gruppe ihre „Richtlinien für die Anwendung von C++14 in kritischen und Safety-bezogenen Systemen“. Sie werden für gewöhnlich als AUTOSAR C++14 bezeichnet und sind mittlerweile Bestandteil der übergreifenden AUTOSAR-Architekturplattform. Die Einführung von AUTOSAR C++14 erfolgte mit der Intention, MISRA C++:2008 abzulösen und sie zum De-facto-Codierstandard der gesamten Automobilindustrie zu machen.

Tatsächlich sind diese Richtlinien jedoch so robust, dass sie sich auch für jede andere Branche eignen, in der eine Embedded-Programmierung erforderlich ist.

Ein weiterer Grund für die Wahl von C++14 war die Tatsache, dass objektorientierte Programmiersprachen inzwischen Akzeptanz bei den Entwicklern gefunden hatten, und dass C++14 den Entwicklern die Möglichkeit bot, hochwertige Compiler und verbesserte Prüf-, Verifikations- und Analyse-Tools zu nutzen.

Möglich wurde zudem die Anwendung neuer Entwicklungsmethoden wie etwa CI/CD (Continuous Integration/Continuous Delivery), die eine frühzeitigere Erkennung von Fehlern im Softwareentwicklungs-Lebenszyklus erlauben. MISRA C++:2008 dagegen ließ alle diese Innovationen außen vor.

AUTOSAR C++14 für neue Automobil-Technologien

Die AUTOSAR C++14 Richtlinien werden für neue Automobil-Technologien wie automatisiertes Fahren, die V2V- (Vehicle to Vehicle) und die V2X-Kommunikation (Vehicle to Infrastructure), kontinuierliche Over-The-Air-Updates (OTA), hochauflösende Displays und KI-Rechentechniken angewendet. Obgleich MISRA C++:2008 in einigen Projekten immer noch Einsatz findet und vielen Entwicklern geholfen hat, einen Codierstandard zu übernehmen, bleibt es ein unvollständiger Standard. Dies liegt daran, dass es seit der Einführung von C++ 03 enorm viele Verbesserungen an der C++-Sprache gegeben hat, die in MISRA C++:2008 schlichtweg fehlen.

Für Unternehmen, die bisher auf MISRA C++:2008 setzten, bedeutet die Umstellung auf AUTOSAR C++14 einen erheblichen Aufwand, der allerdings auch großen Nutzen bietet, da die Unterschiede zwischen MISRA C++:2008 und AUTOSAR C++14 all die Änderungen abdecken, die es an C++ seit 2003 gegeben hat. Sämtliche Neuerungen von C++ 11 und C++14 sind also in AUTOSAR C++14 enthalten. Die Umstellung auf den neuen Standard geht deshalb nicht spurlos vorüber, bietet aber einen hohen Gegenwert.

Architektur und Codieranforderungen von AUTOSAR

Zusammensetzung des AUTOSAR C++14 Standards
Zusammensetzung des AUTOSAR C++14 Standards
(Bild: Parasoft)

AUTOSAR C++14 enthält 342 Regeln, die dabei helfen, den Anwendern ein klares Verständnis zu vermitteln und Leitlinien hinsichtlich der Codieranforderungen zu geben. Jede Regel wird entweder als „erforderlich“ oder als „empfohlen“ eingestuft. „Required Rules“ sind für die Konformität zu AUTOSAR C++14 zwingend notwendig, während „Advisory Rules” nicht unbedingt befolgt werden müssen, aber dringend empfohlen werden.

Eine Abweichung von einer Regel oder Richtlinie kann zulässig sein, wobei allerdings eine bestimmte Prozedur einzuhalten ist, um die Freigabe einer jeden Regelabweichung einzuholen. Das soll vermeiden, dass Entwickler die Möglichkeit der Regelabweichung missbräuchlich nutzen.

Aufschlüsselung der Codierrichtlinien von AUTOSAR C++14 für Adaptive AUTOSAR

Die einzig praktikable Lösung, die Einhaltung eines Codierstandards wie AUTOSAR C++14 zu erzwingen, ist die Anwendung eines statischen Analysetools, das über ein ausgefeiltes, interaktives Reportsystem verfügt und einen effizienten täglichen Workflow ermöglicht. Geeignet ist beispielsweise eine Lösung, die den Scanprozess in die CI-Builds auf den Servern einbindet – eine Automatisierung, die viel Zeit und Geld spart.

Bei der Bereinigung bestehender Codebasen ist es außerdem empfehlenswert, mit einer Teilmenge der Regeln des Standards zu beginnen und dann Schritt für Schritt immer mehr Regeln zu aktivieren. Dies verhindert, dass das Team mit einer übermäßigen Anzahl von Regelverletzungen überschüttet wird. Zugleich ist es möglich, den Fortschritt der Codebasis zu überwachen, den Abweichungsprozess zu kontrollieren und fundierte Entscheidungen zur Erweiterung des Regelsatzes zu fällen.

Vereinheitlichter AUTOSAR-MISRA-Regelsatz

Die AUTOSAR-Gruppe hat seit 2017 zweimal jährlich AUTOSAR C++14 Richtlinien veröffentlicht und dabei mit mehr als 200 Automobilunternehmen zusammengearbeitet, um den Support im Zusammenhang mit den Änderungen zu wahren, die sich durch Updates an C++ ergaben.

Mit Blick auf die Zukunft kündigte die AUTOSAR-Gruppe für 2019 eine Zusammenarbeit mit der MISRA an, um die beiden C++-Regelsätze zu einer universellen Richtlinie für die Entwicklung von C++-Software zu verschmelzen. Diese neuen, von der MISRA dirigierten Richtlinien dürften vollständige Unterstützung für moderne Versionen der C++-Sprache wie C++17 und C++20 bieten.

Zusammenführung von MISRA C++ und AUTOSAR C++

Angesichts dieser neuen Verschmelzung bzw. Zusammenarbeit zwischen MISRA und AUTOSAR mit dem Ziel, den neuesten und besten Satz an Codierregeln und Richtlinien für C++ zu realisieren, ist damit zu rechnen, dass das Resultat auch außerhalb der Automobilindustrie großen Anklang finden wird, beispielsweise auf dem Aerospace-Sektor und in den Bereichen Medizintechnik, Industrie, Schienenverkehr, Telekommunikation und Energietechnik sowie vielen weiteren Sparten. Softwareentwickler freuen sich sehr auf die Möglichkeit zur Ablieferung sicherer Projekte, die in den Programmiersprachen C++17 und C++20 programmiert sind oder werden sollen.

Ein wichtiger Aspekt der Norm ISO 26262 ist die Empfehlung, einen Codierstandard wie AUTOSAR C++14 zu verwenden. Die beste Möglichkeit, die Konformität zu erreichen, ist die Automatisierung unter Verwendung eines vom TÜV zertifizierten Tools wie Parasoft C/C++test.

Statische Analyse zur Erstellung von sicherem C++ Code

Dieses Tool kann ebenfalls mehrere Prüftechnologien und Fähigkeiten wie u.a. Modultests, die strukturelle Codeabdeckung, die Rückverfolgbarkeit der Anforderungen unterstützen. Als vollständig integrierte Softwaretest-Lösung für sicherheitskritische Branchen lässt sich Parasoft C/C++test auch in die jeweils benutzte C++ IDE oder CI/CD-Pipeline integrieren, um etwaige Defekte möglichst frühzeitig zu erkennen und automatisch für Konformität zu sorgen.

Das eigens auf die Automobilindustrie zugeschnittene Automotive Compliance Pack des Tools enthält Regeln für AUTOSAR C++14 und MISRA C++2008 sowie High Integrity (HI) C++.

So erhalten alle Automobilentwickler die Möglichkeit, die Testfunktionalität zu erweitern und das Testen für die Entwicklungsteams rationeller zu gestalten. Entwickler können das Tool auch zum Analysieren der Code-Konformität aus der IDE heraus nutzen. Dabei werden automatisch Reports generiert, welche die Teams über etwaige Status-Updates informieren.

Als eine der umfassendsten Lösungen für das Testen von sicherheitskritischen Anwendungen bietet Parasoft C/C++test eine vereinfachte Lösung für die statische Analyse und zugleich mehr Unterstützung für die von der Automobilindustrie geforderten Codierstandards. Mit einer Plattform, die automatisch die Konformität von sicherheitskritischen Systemen sicherstellt, können Unternehmen Defekte frühzeitig erkennen und Zeit im Entwicklungsprozess sparen, Updates priorisieren, um wichtige Dinge zuerst zu beheben, und die Konformität automatisieren.

* Ricardo Camacho ist Technischer Redakteur bei Parasoft.

(ID:47479863)