Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Aufschlüsselung der AUTOSAR C++14-Codierungsrichtlinien

Headshot von Miroslaw Zielinski, Direktor Produktmanagement bei Parasoft
13. Dezember 2023
8 min lesen

Was sind die AUTOSAR C++ 14-Codierungsrichtlinien? Lesen Sie, um zu erfahren, was die Richtlinien sind und wie sie für ein Update auf modernes C++ gesorgt haben.

Adaptives AUTOSAR

MISRA C++ 2008 wurde in die AUTOSAR C++14-Richtlinien integriert, die Codierungsrichtlinien für C++14 gemäß ISO/IEC 14882:2014 bereitstellen. MISRA C++ 2023 enthält viele der AUTOSAR C++14-Richtlinien. Allerdings konzentriert sich MISRA C++ 2023 ausschließlich auf C++17, die Implementierungssprache, während AUTOSAR sich stark auf die Automobilindustrie konzentriert und Richtlinien zu Toolchains, Dokumentation und Infrastruktur enthält.

Die Automobilindustrie hat sich in den letzten zehn Jahren radikal verändert. Neue Funktionalitäten haben moderne Autos grundlegend in Rechenzentren verwandelt. Dies spiegelt sich in der Entwicklung der Plattformen wider, die zum Erstellen von Automobilsoftware verwendet werden, insbesondere AUTOSAR.

Der klassische Ansatz, der von einer statischen Konfiguration zur Kompilierungszeit, keiner dynamischen Speicherzuweisung und einer Dominanz der Sprache C ausgeht, reicht nicht mehr aus. Neue Funktionen wie diese erfordern viel fortgeschrittenen Code:

  • Spurhalteassistent
  • Automatische Notbremsung
  • Überwachung des toten Winkels
  • V2X-Kommunikation (Fahrzeug-zu-Fahrzeug- und Fahrzeug-zu-Infrastruktur-Kommunikation)
  • Kontinuierliche drahtlose Updates
  • High Definition Multimedia
  • KI-Computing, Bilderkennung

Diese neuen Funktionen erfordern auch Änderungen der Paradigmen, die für den klassischen Ansatz ausreichend waren. Um diesen Herausforderungen zu begegnen und die Automobilentwicklung zu verbessern, hat das AUTOSAR-Konsortium, dem die meisten führenden Automobilhersteller der Welt angehören, im März 2017 die neue Ausgabe des AUTOSAR-Standards mit dem Namen Adaptive AUTOSAR veröffentlicht.

Die Veröffentlichung des neuen Standards macht die Classic-Plattform nicht ungültig. Sie bleibt jedoch die erste Wahl für Steuergeräte ohne Konnektivitätsanforderungen, eingeschränkte Hardwareanforderungen und harte Echtzeitfunktionen.

Adaptive AUTOSAR definiert eine Plattform für die Entwicklung von Fahrzeugsteuergeräten, die anspruchsvolle Funktionen wie fortschrittliche Fahrassistenzsysteme, Medien-Streaming oder Software-Updates über das Internet bereitstellen. Die Plattform enthält die Spezifikation von Schnittstellen, die Dienste und APIs definieren. Zu den Neuerungen, die in Adaptive AUTOSAR eingeführt wurden, gehören:

  • Objektorientierter Ansatz
  • Programmiersprache C ++
  • Serviceorientierte Architektur
  • POSIX-Betriebssystem
  • Änderungen der ECU-Konfiguration während der Systemlaufzeit
  • Over-the-Air-Bereitstellung und -Updates

C ist nicht genug

Adaptive AUTOSAR war eine Antwort auf die wachsende Komplexität der Anforderungen an moderne Autos und neue Herausforderungen, die das Paradigma der vernetzten Welt an Automobilsysteme stellte. Die C-Sprache, die in der Vergangenheit die erste Wahl für Automobilentwickler war, wurde zum Hindernis oder zumindest zur Verlangsamung.

Die Komplexität der Systeme erzwang einen Wechsel von der C-Sprache zu C++, das eine bessere Unterstützung für die Strukturierung großer und verteilter Systeme bietet und bessere Mechanismen für die Datenkapselung bereitstellt.

Adaptive AUTOSAR basiert auf dem Sprachstandard C++14. Bei der Wahl der Sprachstandardversion wurde zwischen „nicht zu alt“ und „nicht zu neu“ gewählt. Auf der einen Seite haben wir C++98 und C++03, die in der Automobilindustrie immer noch weit verbreitet sind, aber veraltet sind und nicht den modernen Entwicklungsmustern entsprechen. Als der C++17-Standard andererseits veröffentlicht wurde, war er noch frisch und es gab Argumente dafür, C++98 und C++03 hinter sich zu lassen, darunter:

  • Wesentliche Weiterentwicklung / Verbesserungen der C ++ - Sprache
  • Verfügbarkeit besserer Compiler
  • Verfügbarkeit besserer Test- und Analysetools

Einer der Hauptgründe, sich nicht für C++17 zu entscheiden, war, dass die im Standard eingeführten neuen Funktionen Sicherheitsrisiken für die Systeme mit sich bringen können – das Erkennen und Verstehen von Sicherheitslücken erfordert einige Zeit. Darüber hinaus waren C++-Compiler, die dem C++17-Standard entsprechen, noch neu und erforderten mehr Tests und eine bessere Unterstützung für den Einsatz in der sicherheitskritischen Entwicklung. Daher wurde die Wahl getroffen, sich auf den C++14-Standard als vernünftige Mitteloption zu verlassen.

Da sich die Sprache C++ weiterentwickelt, haben wir heute C++20 (ISO/IEC 14882:2020), das C++17 ersetzt.

Zur Unterstützung von C++17 haben AUTOSAR und MISRA ihre Kräfte bei der Entwicklung sicherer Codierungsrichtlinien für die Verwendung von C++17 gebündelt und planen, diese auch in C++20 fortzusetzen. Für viele Organisationen ist dies von großer Bedeutung, da moderne C++-Funktionen Innovationen bieten, die bei der Entwicklung von Systemen wichtig sind. Der Einsatz von KI basiert beispielsweise auf modernen Architekturen, modernen Plattformen und modernen Bibliotheken, die in den neuesten Ausgaben von C++ entwickelt wurden.

Was ist mit den AUTOSAR-Codierungsrichtlinien?

Die Veröffentlichung der Adaptive AUTOSAR-Plattform hat die Akzeptanz von modernem C ++ in Automobilprojekten erhöht. Dies machte ein spezifisches Problem viel sichtbarer: Während sich die Entwicklung der C++-Sprache in den letzten Jahren beschleunigt hat, scheinen die Codierungsstandards für die Automobilindustrie ins Hintertreffen geraten zu sein. MISRA C++ 2023 bringt die Branche auf den neuesten Stand.

Als C++11 und C++14 veröffentlicht wurden, war der beliebteste Automotive-Codierungsstandard für C++, MISRA C++2008, bereits stark veraltet und adressierte nur die C++03-Version der Sprache.

Mit jedem Jahr wuchs das Problem und wurde quälender. Entwickler akzeptierten die neuen Features der neuesten C++-Standards weitgehend und begannen, sie ohne angemessene Anleitung oder Best Practices zu verwenden. Diese Situation war besonders problematisch für Teams, die sicherheitskritische Systeme entwickeln von ISO 26262 gefordert statische Analyse mit einer geeigneten Teilmenge von Codierungsrichtlinien zu verwenden.

Um dieses Problem zu lösen, veröffentlichte das AUTOSAR-Konsortium die spezielle Richtliniendokumentation als Teil der Adaptive AUTOSAR-Plattform mit dem Titel „Richtlinien für die Verwendung der C++14-Sprache in kritischen und sicherheitsbezogenen Systemen“. Sich auf unmodifiziertes MISRA C++ 2008 zu verlassen, wäre einfach eine Straftat. Die Situation wird durch die Zeitleiste unten dargestellt.

1998 - C ++ 98 Standard wird veröffentlicht

2003 - C ++ 03 Standard wird veröffentlicht

2008 - MISRA C ++ 2008 (umfasst C ++ 03)

2011 - C ++ 11 Standard wird veröffentlicht

2014 - C ++ 14 Standard wird veröffentlicht

2017 - AUTOSAR C ++ 14 (März)

2017 - C ++ 17 Standard wird veröffentlicht

2020 - C ++ 20 Standard wird veröffentlicht

2023 - MISRA C ++ 2023 (umfasst C ++ 17)

AUTOSAR C ++ 14 Codierungsrichtlinien

Das AUTOSAR C++14-Richtliniendokument ist ein Update für MISRA C++ 2008 und bietet Codierungsrichtlinien für modernes C++ gemäß ISO/IEC 14882:2014. Diese sind in MISRA C++ 2023 integriert. Die Hauptanwendung dieses Codierungsstandards ist die Automobilindustrie, er kann jedoch auch in anderen Branchen eingesetzt werden, in denen eingebettete Programmierung erforderlich ist.

Der Standard legt 342 Regeln fest:

  • 154 Regeln werden ohne Änderungen aus MISRA C ++ 2008 übernommen (67%)
  • 131 Regeln basieren auf vorhandenen C ++ - Standards
  • 57 Regeln basieren auf der Forschung oder anderer Literatur oder Ressourcen

Der Standard ist gut dokumentiert und bietet Rückverfolgbarkeit auf andere bestehende C++-Standards wie HIC++ 4.0, JSF, SEI CERT C++, C++ Core Guidelines und natürlich zu MISRA C++ 2008.

AUTOSAR C ++ 14 folgt dem Regelklassifizierungsansatz von MISRA C ++ 2008. Die Regeln werden nach der Verpflichtungsstufe klassifiziert:

  • Erforderliche Regeln: obligatorisch für die Geltendmachung der Einhaltung der Norm
  • Advisory Regeln: empfohlen, aber ohne obligatorischen Status

Darüber hinaus werden die Regeln auch dahingehend klassifiziert, ob sie von statischen Analysewerkzeugen automatisch erzwungen werden:

  • Automatisiert: kann von statischen Analysetools vollständig unterstützt werden
  • Teilweise automatisiert: kann von statischen Analysetools unterstützt werden, erfordert jedoch möglicherweise zusätzliche Vorgehensweisen wie die Codeüberprüfung
  • Nicht automatisiert: kann mit statischen Analysetools nicht unterstützt werden.

Abschließend werden die Regeln nach Zuteilungszielen klassifiziert: Implementierung, Verifizierung, Toolchain und Infrastruktur. Regeln im AUTOSAR C++14-Standard sind mit Informationen zur Klassifizierung gekennzeichnet, zum Beispiel:

So wählen Sie das richtige Tool für die AUTOSAR C ++ - Konformität zur Unterstützung von ISO 26262 aus

Wie werde ich konform?

Im Jahr 2016 veröffentlichte das MISRA-Konsortium ein Dokument mit dem Titel „MISRA Compliance:2016 Achieving Compliance with MISRA Coding Guidelines“. Dieses Dokument wurde aktualisiert und durch das Dokument „MISRA Compliance:2020“ ersetzt.

Die Compliance-Dokumente wurden in der Branche sehr gut aufgenommen, da sie einen wichtigen Bedarf ansprachen, den Prozess zur Erreichung der Compliance zu definieren und zu spezifizieren, was es genau bedeutet, konform zu sein.

AUTOSAR C ++ 14 bietet keine ähnlichen Anleitungen zum Erreichen der Konformität, zumindest nicht direkt. Angesichts der Tatsache, dass die AUTOSAR C ++ - Richtlinien auf MISRA C ++ 2008 basieren, ist es sinnvoll, auf den MISRA-Standard zurückzugreifen, um Anleitungen zum Erreichen der Konformität zu erhalten.

  • Erstellen Sie eine Compliance-Matrix, die angibt, wie jede Regel durchgesetzt wird.
  • Erstellen Sie ein Abweichungsverfahren.
  • Formalisieren Sie die Arbeitspraktiken innerhalb des Qualitätsmanagementsystems.

Die Erfüllung dieser Anforderungen bedeutet zusätzlichen Papierkram. Das erste, was passieren sollte, ist eine Definition der Compliance-Matrix, die praktisch eine Erklärung dafür ist, wie wir jede Richtlinie durchsetzen werden. Siehe das Beispiel unten.

Die gewünschte Situation ist ein statisches Analysewerkzeug, das so viele Richtlinien wie möglich abdeckt. Die Regeln, die mit statischen Analysen nicht durchgesetzt werden können, erfordern höchstwahrscheinlich manuelle Überprüfungen, die teuer sind.

Zusätzlich zur Compliance-Matrix muss ein Verfahren zur Behandlung von Abweichungen festgelegt werden. Das Abweichungsverfahren formalisiert die Schritte, die unternommen werden müssen, wenn die Entwicklung von einer bestimmten Richtlinie abweichen muss. Wie MISRA es vorschreibt, wird dies erwartet

„… Das Verfahren basiert darauf, für jede Abweichung oder Abweichungsklasse eine Genehmigung zu erhalten.“

– MISRA

Dies ist ein wichtiger Teil des Puzzles. Es verhindert den Missbrauch des Abweichungskonzepts durch Entwickler, die willkürlich abweichen. Tatsächlich benötigen wir eine Art formelles Ticket, das in unserem System gespeichert ist und jede Abweichung im Quellcode dokumentiert. Gleiches gilt für die Compliance-Matrix und alle zusätzlichen Konfigurationen und Prozessbeschreibungen, die zur Durchsetzung der Compliance erstellt werden. MISRA C++ 2008 ist hier sehr klar und erfordert eine „Formalisierung innerhalb des Qualitätssystems“.

Wenn alle in MISRA C ++ 2008 Punkt 4.3 beschriebenen Verfahren vorhanden sind, können wir die Konformität durch Nachweis des Folgenden geltend machen:

  • Es wurde eine Compliance-Matrix erstellt, die zeigt, wie Compliance durchgesetzt wurde.
  • Der gesamte C++-Code im Produkt entspricht den Regeln des MISRA C++2008-Dokuments oder unterliegt dokumentierten Abweichungen.
  • Es wird eine Liste aller Nichtbefolgungen der Regeln geführt und für jeden Fall gibt es eine entsprechend genehmigte Abweichung.

Das Dokument „MISRA Compliance:2020“ muss bei allen künftigen Versionen der MISRA-Richtlinien verwendet werden, wenn ein Anspruch auf MISRA-Konformität geltend gemacht wird. Einige Teams ziehen es möglicherweise vor, es als Grundlage für den AUTOSAR C++14-Konformitätsprozess zu verwenden, da es neuer und detaillierter ist.

Genau wie bei MISRA C++ 2008 erfordert „MISRA Compliance:2020“ einen formalen Prozess zum Umgang mit Abweichungen, und Sie müssen die Angabe von Durchsetzungsmethoden für jede anwendbare Richtlinie dokumentieren. Dieses Dokument wird Richtliniendurchsetzungsplan (GEP) genannt.

„MISRA Compliance: 2020“ erweitert die Anforderungen für den Compliance-Prozess und führt einige neue Konzepte ein, wie den Guidelines Recategorization Plan (GRP), der alle Änderungen an Regelkategorien formell dokumentiert, und die Guidelines Compliance Summary (GCS) ), das im Grunde ein letztes Artefakt aus dem Compliance-Prozess ist, das den Grad der Compliance darstellt, der für jede Richtlinie erreicht wurde.

„MISRA Compliance:2020“ verwendet auch Regelkategorisierungen, die in MISRA C 2012 eingeführt wurden und sich von denen in den Standards MISRA C++ 2008 und AUTOSAR C++14 unterscheiden.

Unterstützung für AUTOSAR C ++ 14 im Parasoft C / C ++ - Test

Die einzige praktische Möglichkeit, die Einhaltung eines Codierungsstandards wie AUTOSAR C ++ 14 durchzusetzen, ist ein statisches Analysetool wie Parasoft C / C ++ test, ein Codequalitätstool, das mehrere Testtechnologien unterstützt. Parasoft C/C++test unterstützt AUTOSAR C++ 14 besser als jedes andere Codequalitätstool und bietet vollständige Unterstützung für MISRA C++ 2023.

AUTOSAR C++14-Regeln sind Teil des Automotive Compliance Pack von Parasoft, das die Funktionalität von Parasoft C/C++test speziell für Automobilentwickler erweitert. Neben den branchenspezifischen statischen Analyseregeln wie AUTOSAR C++14, HIC++ und MISRA bringt das Automotive Compliance Pack von Parasoft ein ausgefeiltes interaktives Berichtssystem, das auf die Anforderungen von AUTOSAR, HIC++ und MISRA zugeschnitten ist und ermöglicht ein effizienter täglicher Arbeitsablauf für das Team.

Mit dem Parasoft C / C ++ - Test können Entwickler die Konformität ihres Codes überprüfen, ohne ihre IDEs zu verlassen, und den Scanvorgang in die CI-Builds auf Servern integrieren. Mit dem automobilspezifischen Berichtssystem von Parasoft können Teammitglieder ihren Compliance-Prozess problemlos und kontinuierlich überwachen.

Bei der Bereinigung vorhandener Codebasen profitieren Teams von der Möglichkeit, Compliance-Richtlinien zu erstellen, die definieren, was die Konsistenz der Testpraxis gewährleistet. In solchen Fällen wird empfohlen, mit der Teilmenge der Regeln aus dem Standard zu beginnen und die Anzahl der aktiven Regeln mit fortschreitender Bereinigung des Codes schrittweise zu erhöhen. Mit dieser Berichtsebene können Sie den Fortschritt Ihrer Codebasis ständig überwachen, den Abweichungsprozess steuern und fundierte Entscheidungen zur Erweiterung des Regelsatzes treffen.

Testen Sie den Parasoft C / C ++ - Test: Eine einheitliche C- und C ++ - Entwicklungstestlösung für eingebettete und sicherheitskritische Softwareprojekte.

Demo anfordern

Was machen wir jetzt?

Die Automobilindustrie entwickelt sich dynamisch weiter. Neben vielen anderen Veränderungen erleben wir die Umwandlung des Autos in eine Erfahrung, die eher der Verwendung eines Smartphones ähnelt. Das Konzept, eine bestimmte Funktionalität eines Autos in Form einer App zu kaufen, ist Realität. Lange Fahrt in den Urlaub? Warum nicht 2 Wochen lang Tempomat kaufen?

Um diese Herausforderungen zu bewältigen und die Entwicklungszeit potenziell zu verkürzen, benötigt die Automobilindustrie ständige Innovationen im Bereich der Hardware- und Softwareplattformen, die in modernen Autos verwendet werden. Diese Innovationen müssen mit entsprechenden Standards auf verschiedenen Ebenen unterstützt werden, die funktionale Sicherheit, Qualität und Sicherheit gewährleisten. AUTOSAR C++14 trägt sicherlich zu diesem Prozess bei.

Aber Standards selbst sind nur ein Stück Papier (wenn wir sie drucken) und ihre Implementierung ist einfach nicht möglich ohne Tools, die die Praktiken und Prozesse automatisieren und es Entwicklungsteams für Automobilsoftware ermöglichen, sich auf die Bereitstellung besserer und fortschrittlicherer Funktionalitäten zu konzentrieren. Parasoft C / C ++ test ist die umfassendste Lösung für sicherheitskritische C/C++-Entwicklung, mit mehr Unterstützung für Automotive-Codierungsstandards (AUTOSAR C++ 14, CERT C/C++, MISRA C/C++) als jeder andere Tool-Anbieter und einem dynamischen, flexiblen und nützlichen Tool Berichtssystem, das es Ihrem gesamten Team ermöglicht, bei der Einhaltung von Vorschriften erfolgreich zu sein.

Verwenden Sie die AUTOSAR C++-Codierungsrichtlinien, um die ISO 26262-Konformität zu optimieren

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.