Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Aufschlüsselung der AUTOSAR C++14-Codierungsrichtlinien

Aufschlüsselung der AUTOSAR C++14-Codierungsrichtlinien Lesezeit: 8 Minuten

Die AUTOSAR C ++ 14-Richtlinien sind ein Update für MISRA C ++ 2008 und enthalten Codierungsrichtlinien für modernes C ++ gemäß ISO / IEC 14882: 2014.

Adaptives AUTOSAR

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 die Automobilsysteme stellte. Die C-Sprache, die in der Vergangenheit die primäre Wahl für Automobilentwickler war, wurde zum Blocker 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 der großen und verteilten Systeme bietet und bessere Mechanismen für die Datenkapselung bereitstellt.

Adaptive AUTOSAR basiert auf dem Sprachstandard C++14. Die Wahl der Sprachstandardversion war eine Auswahl zwischen „nicht zu alt“ und „nicht zu neu“. Auf der einen Seite haben wir C++98 und C++03, die in der Automobilindustrie zwar noch weit verbreitet, aber veraltet sind und nicht den modernen Entwicklungsmustern entsprechen. Als der C++17-Standard veröffentlicht wurde, war er dagegen 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, mit Plänen, diese in C++20 fortzusetzen. Für viele Organisationen ist dies von großer Bedeutung, da moderne C++-Funktionen neue Innovationen bieten, die für die Entwicklung von Systemen wichtig sind. Die Verwendung von KI beispielsweise stützt sich auf moderne Architekturen, moderne Plattformen und moderne 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.

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

2022 – MISRA & AUTOSAR C++17 (TBA)

2022 – MISRA & AUTOSAR C++20 (TBD)

AUTOSAR C ++ 14 Codierungsrichtlinien

Das AUTOSAR C ++ 14-Richtliniendokument ist als Update für MISRA C ++ 2008 gedacht und enthält Codierungsrichtlinien für modernes C ++ gemäß ISO / IEC 14882: 2014. Die Hauptanwendung dieses Codierungsstandards ist die Automobilindustrie, sie 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 zu den anderen vorhandenen C ++ - Standards wie HIC ++ 4.0, JSF, SEI CERT C ++, C ++ - Kernrichtlinien 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.

Und schließlich werden Regeln nach Zuweisungsziel klassifiziert: Implementierung, Überprüfung, Toolchain und Infrastruktur. Regeln im AUTOSAR C ++ 14-Standard sind mit Informationen zur Klassifizierung versehen, 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 willkürlich abweichende Entwickler. Tatsächlich benötigen wir eine Art formelle Tickets, die in unserem System gespeichert sind und jede Abweichung im Quellcode dokumentieren. Dasselbe 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 jetzt mit allen zukünftigen Versionen der MISRA-Richtlinien verwendet werden, wenn ein Anspruch auf MISRA-Konformität geltend gemacht wird. „MISRA Compliance:2020“ aktualisiert die in MISRA C++2008 gegebenen Anweisungen zur Einrichtung des Compliance-Prozesses. Einige Teams ziehen es möglicherweise vor, es als Grundlage für den AUTOSAR C++14-Compliance-Prozess 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 Tool zur Codequalität, das mehrere Testtechnologien unterstützt. Parasoft C/C++test unterstützt AUTOSAR C++ besser als jedes andere Codequalitätstool.

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.
Eine 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 die sicherheitskritische C / C ++ - Entwicklung mit mehr Unterstützung für Codierungsstandards für die Automobilindustrie (AUTOSAR C ++, CERT C / C ++, MISRA) als jeder andere Toolhersteller und einem dynamischen, flexiblen und nützlichen Berichtssystem, das dies ermöglicht Ihr gesamtes Team, um mit Compliance 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.

Geschrieben von

Miroslaw Zielinski

Zu den Spezialitäten von Miroslaw, dem Produktmanager für die eingebetteten Testlösungen von Parasoft, gehören C / C ++, RTOS, statische Code-Analyse, Komponententests, Verwaltung der Softwarequalität für sicherheitskritische Anwendungen und Einhaltung der Sicherheitsstandards durch die Software.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.