Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

Aufschlüsselung der AUTOSAR C ++ 14-Codierungsrichtlinien für adaptives AUTOSAR

Aufschlüsselung der AUTOSAR C ++ 14-Codierungsrichtlinien für adaptives AUTOSAR 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 im letzten Jahrzehnt radikale Veränderungen erfahren. Neue Funktionen, die in modernen Autos eingeführt wurden, haben sie grundlegend in Rechenzentren verwandelt. Dies spiegelt sich in der Entwicklung der Plattformen wider, die für die Erstellung der Automobilsoftware verwendet werden, insbesondere AUTOSAR. Der „klassische“ Ansatz, der zur Kompilierungszeit eine statische Konfiguration, keine dynamische Speicherzuweisung und die Vorherrschaft der C-Sprache voraussetzte, reicht nicht mehr aus. Neue Funktionen erfordern viel erweiterten Code, wie z.

  • Automatisiertes Fahren
  • 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 Steuergeräten für Kraftfahrzeuge, 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. Einige der in Adaptive AUTOSAR eingeführten Neuheiten sind:

  • 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 die neuen Herausforderungen, die das Paradigma der „vernetzten Welt“ den Automobilsystemen auferlegte. Die C-Sprache, die in der Vergangenheit für Automobilentwickler die erste Wahl war, wurde zum Blocker oder zumindest zur Verlangsamung. Die Komplexität der Systeme erzwang einen Wechsel von der C-Sprache zu C ++, was eine bessere Unterstützung für die Strukturierung der großen und verteilten Systeme und bessere Mechanismen für die Datenkapselung bietet.

Adaptive AUTOSAR basiert auf dem Sprachstandard C ++ 14. Die Wahl der Sprachstandardversion war eine Wahl zwischen „nicht zu alt“ und „nicht zu neu“. Einerseits haben wir C ++ 98 und C ++ 03, die in der Automobilindustrie noch weit verbreitet sind, aber veraltet sind und nicht den modernen Entwicklungsmustern entsprechen. Auf der anderen Seite haben wir den C ++ 17-Standard, der noch sehr frisch ist. Das Argument, um C ++ 98 und C ++ 03 hinter sich zu lassen, war:

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

Einer der Hauptgründe, warum Sie sich nicht für C ++ 17 entschieden haben, 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 sind C ++ - Compiler, die dem C ++ 17-Standard entsprechen, noch sehr neu und erfordern mehr Tests und eine bessere Unterstützung für die Verwendung in der sicherheitskritischen Entwicklung. Daher wurde die Wahl getroffen, sich auf den C ++ 14-Standard als vernünftige mittlere Option zu stützen.

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 beschleunigte, schienen die Standards für die Automobilcodierung ins Hintertreffen zu geraten. Zum Zeitpunkt der Veröffentlichung von C ++ 11 und C ++ 14 war der beliebteste Automotive-Codierungsstandard für C ++, MISRA C ++ 2008, bereits stark veraltet und befasste sich nur mit der C ++ 03-Version der Sprache.

Mit jedem Jahr wuchs das Problem und wurde immer schlimmer. Die Entwickler akzeptierten die neuen Funktionen der neuesten C ++ - Standards weitgehend und begannen, sie ohne entsprechende Anleitung oder Best Practices zu verwenden. Diese Situation war besonders problematisch für Teams, die sicherheitskritische Systeme entwickeln, die nach ISO26262 für die Verwendung statischer Analysen mit einer geeigneten Teilmenge von Codierungsrichtlinien erforderlich sind.

Um dieses Problem zu lösen, veröffentlichte das AUTOSAR-Konsortium die spezielle Dokumentation der Richtlinien als Teil der adaptiven AUTOSAR-Plattform mit dem Titel „Richtlinien für die Verwendung der Sprache C ++ 14 in kritischen und sicherheitsrelevanten Systemen“. Sich auf unverändertes MISRA C ++ 2008 zu verlassen, wäre einfach eine Straftat. Die Situation wird in der folgenden Zeitleiste 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 (Dezember)

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
  • Beratend 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-Konformität: 2016 Erreichen der Konformität mit den MISRA-Codierungsrichtlinien“. Dieses Dokument wurde in der Branche sehr gut aufgenommen, da es sich mit einem sehr wichtigen Bedarf befasste, den Prozess zur Erreichung der Konformität zu definieren und genau anzugeben, was es 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, in der angegeben ist, wie die einzelnen Regeln durchgesetzt werden
  • Erstellen Sie ein Abweichungsverfahren
  • Formalisieren Sie die Arbeitspraktiken innerhalb des Qualitätsmanagementsystems

Die Erfüllung dieser Anforderungen erfordert einige zusätzliche Formalitäten. Das erste, was passieren sollte, ist eine Definition der Compliance-Matrix, die effektiv eine Erklärung darüber ist, wie wir jede Richtlinie durchsetzen werden. Siehe 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 sehr wichtiger Teil des Puzzles - es verhindert, dass Entwickler das Abweichungskonzept nach Belieben missbrauchen. Tatsächlich benötigen wir formelle Tickets, die in unserem System gespeichert sind und jede Abweichung im Quellcode dokumentieren. Gleiches gilt für die Compliance-Matrix und alle zusätzlichen Konfigurationen und Prozessbeschreibungen, die zur Durchsetzung der Compliance erstellt wurden. 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 ausgefüllt, die zeigt, wie die Compliance durchgesetzt wurde
  • Der gesamte C ++ - Code im Produkt entspricht den Regeln des MISRA C ++ 2008-Dokuments oder unterliegt dokumentierten Abweichungen
  • Eine Liste aller Instanzen der Regeln, die nicht befolgt werden, wird gepflegt, und für jede Instanz gibt es eine entsprechend abgemeldete Abweichung

Das Dokument „MISRA Compliance: 2016“ aktualisiert die Anweisungen in MISRA C ++ 2008 zum Einrichten des Compliance-Prozesses. Einige Teams ziehen es möglicherweise vor, es als Basis 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: 2016“ einen formalen Prozess für den Umgang mit Abweichungen, und Sie müssen die Angabe der Durchsetzungsmethoden für jede anwendbare Richtlinie dokumentieren. Dieses Dokument wird als Guidelines Enforcement Plan (GEP) bezeichnet.

„MISRA Compliance: 2016“ 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.

In „MISRA Compliance: 2016“ werden auch Regelkategorisierungen verwendet, die in MISRA C 2012 eingeführt wurden und sich von denen in den Standards MISRA C ++ 2008 und AUTOSAR C ++ 14 unterscheiden. Diese Unterschiede scheinen jedoch nicht grundlegend zu sein, und die Übernahme von „MISRA Compliance: 2016“ als Basis für AUTOSAR C ++ 14 ist sicherlich eine Option.

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äts-Tool, das mehrere Testtechnologien unterstützt. Der Parasoft C / C ++ - Test unterstützt AUTOSAR C ++ besser als jedes andere Tool zur Codequalität. AUTOSAR C ++ 14-Regeln sind Teil des Parasoft Automotive Compliance Pack, das die Funktionalität des Parasoft C / C ++ - Tests speziell für Automobilentwickler erweitert. Zusätzlich zu den branchenspezifischen statischen Analyseregeln wie AUTOSAR C ++ 14, HIC ++ oder MISRA bietet das Automotive Compliance Pack von Parasoft ein ausgeklügeltes interaktives Berichtssystem, das an die Anforderungen von AUTOSAR, HIC ++ und MISRA angepasst ist und eine Effizienter täglicher Workflow 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.
Sehen Sie sich eine Demo an

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 möglicherweise die Entwicklungszeit zu verkürzen, benötigt die Automobilindustrie ständige Innovationen im Bereich der Hardware- und Softwareplattformen, die in modernen Autos eingesetzt werden. Diese Innovationen müssen auf verschiedenen Ebenen mit geeigneten Standards unterstützt werden, die funktionale Sicherheit, Qualität und Sicherheit gewährleisten. AUTOSAR C ++ 14 trägt sicherlich zu diesem Prozess bei.

Standards selbst sind jedoch nur ein Stück Papier (wenn wir sie drucken), und ihre Implementierung ist ohne Tools, die die Praktiken und Prozesse automatisieren und es den Entwicklungsteams für Automobilsoftware ermöglichen, sich auf die Bereitstellung besserer und fortschrittlicherer Funktionen zu konzentrieren, einfach nicht möglich. 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.

„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.