AUTOSAR C++14 Codierungsrichtlinien

„Die Richtlinien für die Verwendung der Sprache C++14 in kritischen und sicherheitsrelevanten Systemen“ – wurden etwa 2017-2018 von einer spezialisierten Untergruppe der AUTOSAR-Mitglieder entwickelt. Dies erfolgte mit der besonderen Absicht, einen neuen, sichereren C++-Codierungsstandard zu erreichen. Der neue Standard AUTOSAR C++14 sollte es ermöglichen, die sich weiterentwickelnde C++-Sprache stärker zu nutzen, insbesondere die neuen C++11- und C++14-Codierungsfunktionen.

Damals verlangte der bestehende MISRA C++ 2008-Codierungsstandard für C++ ausdrücklich die Verwendung der Sprachversion C++ 2003. Er ließ die Verwendung moderner C++-Konstrukte nicht zu. Dies bedeutete, dass die Entwickler im schnelllebigen Automobilsektor – mit neuen Anforderungen in Bezug auf autonome und teilautonome Fahrsysteme – vor der Wahl standen: Entweder auf ältere und restriktivere Versionen der C++-Sprache zurückzugreifen oder sich an Codierungsrichtlinien zu halten, die für einen Großteil der neu zu entwickelnder Software nicht wirklich geeignet waren. Für sicherheitskritische Automobil-Softwaresysteme gelten Codierrichtlinien oder -standards als ein Schlüsselelement des zugehörigen funktionalen Sicherheitssystems nach ISO 26262. So wurde AUTOSAR C++ 14 geboren.

Die neueste Version des MISRA C++-Standards, befindet sich derzeit noch in der Entwicklung. Diese soll auch die Verwendung modernerer C++-Versionen in einem sichereren und besser wartbaren Kontext mit Unterstützung für C++ 17 berücksichtigen. Da dieser Standard jedoch noch nicht freigegeben ist wird erwartet, dass AUTOSAR C++14 noch einige Zeit für sicherheitsrelevante C++-Software weit verbreitet sein wird.

AUTOSAR C++14 Revisionen

AUTOSAR Logo
AUTOSAR Logo

Die AUTOSAR C++14-Gruppe veröffentlichte von 2017 bis 2019 alle sechs Monate (im März und Oktober) Revisionen des Standards. Dabei war die offizielle Veröffentlichung, die Version 18-10 (Oktober 2018). Nachfolgende Veröffentlichungen wie 19-03 (März 2019) enthielten lediglich Aktualisierungen der Dokumente, ohne weitere Änderungen an den Regeln selbst.

Das AUTOSAR C++14 (18-10) Leitliniendokument ist bei AUTOSAR erhältlich.

AUTOSAR C++14 Regel-Klassifizierung

Jede der AUTOSAR C++14-Regeln erhält sowohl eine Klassifizierung des „Verpflichtungsgrads“, welcher entweder als „erforderlich“ oder „beratend“ definiert ist, als auch eine Klassifizierung nach der Durchsetzung durch statische Analyse, die entweder „automatisiert“, „teilweise automatisiert“ oder „nicht automatisiert“ ist. Diese Einstufungen werden für jede Regel im Leitliniendokument angegeben.

Verpflichtungsgrad

Gemäß den AUTOSAR-Leitlinien für C++14 müssen die „erforderlichen“ Regeln eingehalten werden, um die Einhaltung der Norm gewährleisten zu können. Dagegen sollten „beratende“ Regeln befolgt werden, wenn dies praktisch möglich ist. Sie haben aber offiziell keinen Einfluss auf die Erfüllung der Anforderungen.

Umsetzung mittels statischer Analyse

Wie bei allen Codierungsstandards, ist eine der bequemsten und effizientesten Methoden zur Durchsetzung des Standards, die statische Analyse. Entweder als einziges Durchsetzungssystem oder als Ergänzung zu manuellen Codeprüfungen. Der AUTOSAR-Standard C++14, der fast 400 Regeln umfasst, eignet sich besonders gut für eine Form der automatisierten Überprüfung. Statische Analysewerkzeuge sind sehr gut in der Lage, große Mengen von Regeln konstant und konsistent auf viele Softwaremodule und unzählige Codezeilen anzuwenden. Die Klassifizierung, ob eine Regel „automatisiert“, „teilweise automatisiert“ oder „nicht automatisiert“ ist, bezieht sich darauf, ob sie (theoretisch) vollständig, teilweise oder gar nicht durch statische Analysewerkzeuge geprüft werden kann.

Umsetzung von AUTOSAR C++14 mit SciTools Understand

Die in SciTools Understand enthaltene Code-Check Funktion für die statische Analyse, eignet sich hervorragend für die Einhaltung der AUTOSAR C++14-Richtlinien. Nach der letzten Produktaktualisierung beträgt die Abdeckung nun 95% aller statisch durchsetzbaren Regeln (automatisiert + teilautomatisiert). Damit weist SciTools Understand einen der höchsten Abdeckungsgrade aller statischen Analysewerkzeuge auf dem Markt auf.

Übersicht zur Abdeckung

All RulesRequired RulesAdvisory RulesAutomatedPartially AutomatedNon-Automated
Total Rules397365323351844
Coverage353322313211418
% Coverage89%88%97%96%78%41%

Vollständige Liste der Einhaltung von SciTools Understand AUTOSAR C++14 Standards