MISRA C++:2023 unterstützt Unternehmen, die die Programmiersprache C++ nutzen, bei der Entwicklung sicherheitskritischer Software. Mit dem neuen MISRA-Standard können Entwickler die Anforderungen an die statische Analyse erfüllen, die von funktionalen Sicherheitsnormen wie der ISO 26262 vorgegeben werden, indem sie die MISRA-Konformität ihrer Software-Anwendungen sicherstellen und dokumentieren.
Sicherer Code ist im Automotive-Bereich äußerst wichtig. MISRA C++:2023 unterstützt Unternehmen, die die Programmiersprache C++ nutzen, bei der Entwicklung sicherheitskritischer Software.
(Bild: frei lizensiert von Pixabay)
AUTOSAR und MISRA haben gemeinsam eine Reihe von Programmierrichtlinien entwickelt, die eine sichere Programmierung mit C++17 ermöglichen. Das veröffentlichte Dokument heißt MISRA C++:2023. Bei MISRA C++ handelt es sich um eine Sammlung von Coding Guidelines, die eine Untermenge der Sprache C++ für den Einsatz in kritischen Systemen definiert, um das Risiko von Fehlern und nicht konformen Programmen zu minimieren.
Der C++ Standard definiert die Sprache nicht vollständig. Es gibt Situationen, in denen das Verhalten undefiniert, nicht spezifiziert oder durch die Implementierung definiert ist. Wenn ein C++-Programm auf solchen Situationen basiert, gibt es keine Garantie, dass es sich vorhersehbar verhält oder portabel ist. Genau hier setzen die MISRA-Richtlinien an – sie helfen, solche Situationen zu erkennen, um die Sicherheit und Zuverlässigkeit der Software zu gewährleisten. Darüber hinaus können konforme Programme so geschrieben sein, dass sie eindeutig auf einen Fehler im Code hinweisen oder mit hoher Wahrscheinlichkeit von den Entwicklern falsch interpretiert werden. Die MISRA-Richtlinien zielen auf solche Fälle ab.
Die Entwicklung von MISRA C++
Die erste Version von MISRA C++ aus dem Jahr 2008 konzentrierte sich auf C++03 und erfreute sich großer Beliebtheit, wurde jedoch durch die Weiterentwicklung von C++ und neue Funktionen in C++11 überholt. Um diese Lücke zu schließen, hat das AUTOSAR-Konsortium im März 2017 die AUTOSAR C++ Guidelines als Teil der Adaptive Platform veröffentlicht.
Jüngstes Kind des MISRA-Standards ist MISRA C++:2023.
(Bild: Parasoft)
Adaptive AUTOSAR verwendet C++14 als Sprache der Wahl, und die Plattform benötigte einen sicherheitsorientierten Codierungsstandard zur Unterstützung der Entwickler. Etwa 70 Prozent der unveränderten MISRA C++2008 Richtlinien wurden in AUTOSAR C++ übernommen. Mit der kontinuierlichen Weiterentwicklung der Sprache gibt es 17 neue Sprachfeatures für C++, die einen Bedarf an neuen Programmierrichtlinien generierten. MISRA und AUTOSAR beschlossen, die Standards in einer Publikation zusammenzufassen, und MISRA übernahm die Arbeit an der neuen Ausgabe des Standards mit allen notwendigen Aktualisierungen für C++17. Das Ergebnis dieser Arbeit ist das im Oktober 2023 veröffentlichte MISRA C++:2023.
Guidelines und Regeln
MISRA C++:2023 Guidelines werden als Regeln oder Richtlinien (Direktiven) klassifiziert. Regeln sind diejenigen Richtlinien, die eine vollständige Definition von Konformität und Nicht-Konformität enthalten. Bei Richtlinien ist es nicht möglich, die vollständige Beschreibung zu liefern, die für eine Konformitätsprüfung erforderlich ist, weil sie beispielsweise von Design-Entscheidungen abhängt, die im Rahmen eines bestimmten Projekts getroffen werden.
Jede Leitlinie wird einer der folgenden Kategorien zugeordnet:
zwingend
erforderlich
beratend
Regeln/Direktiven werden außerdem nach Entscheidbarkeit und Geltungsbereich klassifiziert.
Zwingende Leitlinien müssen ohne die Möglichkeit einer Abweichung befolgt werden. Von erforderlichen Leitlinien lässt sich abweichen – vorausgesetzt, dass das formale Abweichungsverfahren eingehalten und alle potenziellen Probleme anderweitig gelöst werden. Beratende Leitlinien sind eine Art Empfehlung, die so weit wie möglich befolgt werden sollte.
„Entscheidbarkeit“ definiert, ob die Regel generell durch das automatisierte Werkzeug analysierbar ist oder nicht. „Scope“ stellt dar, ob eine Leitlinie durch die Analyse einer einzelnen Übersetzungseinheit oder des gesamten Systems überprüft werden soll.
Es gibt 179 MISRA C++:2023 Guidelines, vier Direktiven und 175 Regeln, die in Abschnitte gruppiert sind, die den Abschnitten des C++-Standards entsprechen. Das sind:
Grundlegende Konzepte
Standard-Konvertierungen
Ausdrücke
Anweisungen
Spezielle Member-Funktionen
Behandlung von Ausnahmen
Einige dieser Regeln sind von den AUTOSAR-Coding-Guidelines oder dem alten MISRA C++:2008 abgeleitet. Allerdings konzentrierten sich die MISRA-Leitlinien nur auf die Implementierung, während AUTOSAR auch Empfehlungen für das Design, die Toolchain-Infrastruktur oder die Dokumentation lieferte. Im Allgemeinen konzentriert sich MISRA C++:2023 auf die Semantik des Codes und die Vermeidung von Fehlern, ohne zu viele stilistische Vorgaben zu machen.
Konformität mit MISRA C++:2023
Gemäß MISRA C++:2023 müssen die im Compliance-Dokument definierten Konformitätsprozesse eingehalten werden. Dabei handelt es sich um ein separates Dokument, das von den Standards MISRA C und MISRA C++ gemeinsam genutzt wird. Die letzte Version wurde 2020 veröffentlicht und ersetzt die Vorgängerversion von 2016.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Der Parasoft MISRA C2023 Guideline Enforcement Plan.
(Bild: Parasoft)
MISRA Compliance enthält eine Sammlung von Anforderungen an den Konformitätsprozess und die Berichterstattung. Es definiert spezifische Berichte, die als Compliance-Artefakte erwartet werden.
Der Guideline Enforcement Plan definiert alle technischen Mittel, die zur Durchsetzung der Richtlinien eingesetzt werden.
Der Guideline Recategorization Plan beschreibt alle Änderungen an den Richtlinienkategorien, die für das spezifische Projekt eingeführt wurden.
Die "Guideline Compliance Summary" dokumentiert den Grad der Konformität mit jeder einzelnen Richtlinie.
Darüber hinaus empfiehlt das Compliance-Dokument ein vollständiges Verfahren für den Umgang mit Abweichungen, das Anforderungen für die Aufzeichnung von Abweichungen, die Verwendung von Abweichungsgenehmigungen und eine Liste von Gründen enthält, aus denen Abweichungen zulässig sind.
Der Parasoft MISRA C2023 Compliance Report.
(Bild: Parasoft)
Standardisierte Anforderungen, um die MISRA-Konformität von Projekten zu bestätigen, hilft Unternehmen, ein angemessenes Maß an Vertrauen zu gewährleisten und Konformitätsberichte zu kombinieren, wenn mehrere von Auftragnehmern gelieferte Module integriert werden. Voraussetzung: Für jedes dieser Module wurde eine MISRA C/C++ Code Review durchgeführt.
Einige der Richtlinien ließen sich mit Hilfe des Code-Review-Verfahrens überprüfen, auch wenn das aufwändig ist. Andere, insbesondere diejenigen, die eine Analyse des gesamten Systems erfordern, einschließlich der Richtlinien, die eine Daten- und Kontrollflussanalyse des gesamten Anwendungsquellcodes erfordern, können praktisch nicht manuell geprüft werden. Daher ist es wichtig, automatisierte statische Code-Ananalysewerkzeuge wie Parasoft C/C++Test zu verwenden. Die Werkzeuge bieten eine volle Unterstützung für MISRA C++:2023, um den Code anhand der entsprechenden Richtlinien zu analysieren und die entsprechenden Konformitätsdokumente zu erstellen.
Mit dem Compliance Dashboard als Teil des Reportings erhalten Entwickler und das Management schnellen Überblick über die Konformität der Software.
(Bild: Parasoft)
MISRA C++:2023 und sichere Software
MISRA C++ zielt darauf ab, eine sichere Untermenge der Sprache C++ zur Verfügung zu stellen. Das wird durch verschiedene Anforderungen und Einschränkungen für den C++ Quellcode erreicht, um die Sicherheit von Anwendungen zu verbessern.
Fehlervermeidung
Der C++-Standard spezifiziert bestimmte Situationen als undefiniertes Verhalten, vor allem, um Compilern die Möglichkeit zu geben, effizienteren Code zu erzeugen. Compiler dürfen davon ausgehen, dass die Situation des undefinierten Verhaltens nie eintritt und aufgrund dieser Annahme zusätzliche Optimierungen vornehmen. Das birgt das Risiko, dass das Verhalten des Programms unvorhersehbar ist, wenn die Situation eintritt. Und in einigen Fällen bedeutet das, dass sich das Programm bei der Testausführung korrekt verhält, aber in der Produktion versagt, was den gesamten Verifikationsprozess sinnlos machen kann. MISRA C++ bietet Richtlinien, die direkt oder indirekt vor undefiniertem Verhalten schützen. Ein Beispiel hierfür ist die Auswertung des unbestimmten Wertes eines Objekts, die durch die „Regel 11.6.2 Der Wert eines Objekts darf nicht gelesen werden, bevor er gesetzt wurde“, verhindert wird.
Wartbarkeit des Codes
Bestimmte Aspekte der abstrakten Maschine werden im C++-Standard als implementierungsdefiniert beschrieben. Das bedeutet, dass das Verhalten des Codes wohldefiniert ist. Es muss dokumentiert werden, dass es sich aber von Implementierung zu Implementierung unterscheiden kann.
Es ist aber nicht einfach ein derartiges Programm auf ein anderes Ziel zu portieren.
Ein Beispiel für ein solches Verhalten ist sizeof(int), das sich auf das Verhalten von arithmetischen Berechnungen auswirkt. Beispielsweise werden alle Operanden mit engeren Typen vor der eigentlichen arithmetischen Operation weitergeleitet. Das kann zu unterschiedlichen Ergebnissen der arithmetischen Operation führen, je nach Kompilierungsziel. Die MISRA C++- Richtlinien vermeiden solche Probleme mit ihren Standard-Konvertierungsregeln.
Risikomanagement
Die MISRA-Richtlinien behandeln auch eine Reihe potenzieller Risiken, die durch Verwirrung oder falsches Verständnis des Entwicklers über gültigen C++-Quellcode entstehen können. Beispielsweise ist der Code if (x = y) durchaus gültiger C++-Code, aber höchstwahrscheinlich das Ergebnis eines Tippfehlers, bei dem versehentlich der Zuweisungsoperator anstelle des Gleichheitsoperators verwendet wurde. Die „Regel 8.18.2 Das Ergebnis eines Zuweisungsoperators darf nicht verwendet werden“ stellt sicher, dass ein solcher Code gemeldet und auf Korrektheit überprüft wird.
Fazit
Die Verwendung vernünftiger Programmierrichtlinien und einer sicheren Sprachuntermenge wird von den Standards für funktionale Sicherheit nicht ohne Grund gefordert. Unternehmen, die die Einhaltung von MISRA C++:2023 vorweisen können, verbessern die Sicherheit ihrer C++-Anwendungen. (se)