Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
Die MISRA-Standards sind Benchmarks, die branchenübergreifend verwendet werden, um die von Entwicklern geschriebenen Quellcode-Standards zu messen. Lesen Sie weiter, um zu erfahren, wie die statische Analyse und die SAST-Lösungen von Parasoft Ihnen dabei helfen können, die MISRA-Compliance-Anforderungen zu erfüllen.
Zum Abschnitt springen
MISRA ist der legendäre Codierungsstandard, an dem Entwicklungsteams einen Großteil der heutigen Software messen. Aber was genau ist MISRA?
In diesem Stück untersuchen wir den überzeugenden Hintergrund, wie MISRA entstanden ist. Wir beantworten auch die oben genannten Fragen und zeigen, wie MISRA C++- und C-Code-Programmierern hilft, Code effizient zu schreiben und gleichzeitig aktuelle Sicherheitsbedenken anzugehen.
Konkret betrachten wir:
Die MISRA-Standards enthalten Programmierrichtlinien und Regeln zum Schreiben von Software. Unter anderem die Automobil-, Luft- und Raumfahrt- und Verteidigungsindustrie, die Medizintechnik, die Industrieautomation und die Eisenbahnindustrie verwenden den Standard, um ihren Entwicklern beim Schreiben von Quellcode zu helfen, der die Sicherheit und Zuverlässigkeit der Software gewährleistet.
Da Ingenieure eingebetteter Software die Programmiersprachen C und C++ verwenden, um Code für sicherheitskritische Software zu schreiben, haben die Ersteller des MISRA-Standards sie für Programmierer entwickelt, die diese beiden Sprachen verwenden.
Das MISRA-Konsortium besteht aus verschiedenen Unternehmen, die ihre Best Practices für die C- und C++-Programmierung austauschen. Es ähnelt der ISO (International Standards Organization) und der IEC (International Electrotechnical Commission), die allgemeine Branchenrichtlinien wie Standards für die Entwicklung elektrischer/elektronischer Systeme festlegen.
ISO 26262 , veröffentlicht im Jahr 2011, ist der internationale Standard für die Zertifizierung der Sicherheit von Elektronik in Straßenfahrzeugen. Softwaresysteme, die die Anforderungen der ISO/IEC-Norm erfüllen, können von Prüfstellen als sicher zertifiziert werden.
MISRA, ein Konsortium von Automobilindustrien, entwickelte 1998 seine ersten Richtlinien, MISRA C:1998. Das Konsortium kam als Ergebnis des UK Safety Critical Systems Research Programme zusammen, das von der britischen Regierung ins Leben gerufen wurde, um einige der Herausforderungen anzugehen, mit denen die Automobilindustrie aufgrund des zunehmenden Einsatzes von Software bei der Herstellung und dem Betrieb von Fahrzeugen konfrontiert ist. Zu den ursprünglichen Branchen, die an der Entwicklung des Standards mitgewirkt haben und die alle derzeit auch aktive Mitglieder des Lenkungsausschusses sind, gehören:
Obwohl das Konsortium den Standard ursprünglich für die Automobilindustrie entwickelt hat , haben ihn auch andere Branchen mit eingebetteten Systemen übernommen, darunter solche, die eingebettete Technologien zur Vernetzung von Geräten wie dem Internet der Dinge (IoT) und medizinischen IoT-Systemen nutzen.
Anfang der 1990er-Jahre gewann die Elektronik im Automobil immer mehr an Bedeutung. Ebenso die eingebettete Software, die ein integraler Bestandteil dieser Elektronik war. Daher begannen Ingenieure und Hersteller zu erkennen, dass die Zuverlässigkeit der Software sowohl aus Sicherheits- als auch aus kommerziellen Gründen von entscheidender Bedeutung war. Die Herausforderung ist heute sogar noch größer, da die Software für ein einzelnes Auto mehr als 100 Millionen Codierungszeilen umfassen kann!
Automobilhersteller verwenden Software im Motor- und Antriebsstrangbetrieb. Es überwacht und liefert die richtige Kraftstoffmenge in ICEs (Verbrennungsmotoren) und liefert Daten an das ECM (Motorsteuergerät, manchmal auch als ECU oder Motorsteuergerät bezeichnet). Dies ist der Hauptcomputer des Fahrzeugs, der Informationen über den Kraftstoffverbrauch, die vom Motor erzeugte Leistung, Emissionen und andere wichtige motorbezogene Daten sammelt, die für ein sicheres und effizientes Fahren unerlässlich sind. Elektrofahrzeuge (EVs) und Hybridfahrzeuge haben ähnliche Softwareanforderungen in Bezug auf Motor und Antriebsstrang.
Hersteller verwenden auch Software, um Bordcomputer für die allgegenwärtigen Sensoren in aktuellen Fahrzeugen zu betreiben, einschließlich Tür- und Fensterüberwachung, Klimaanlagen sowie Park- und Verkehrssensoren. Sie verwenden sie auch in sicherheitskritischen Systemen wie Airbags und ABS.
Die Zukunft von Straßenfahrzeugen wird sicherlich mehr betriebsbezogene Software beinhalten, wobei Ingenieure und Designer ernsthafte Aufmerksamkeit auf Selbstfahrfähigkeiten, verbesserte Energieeffizienz und erhöhte Sicherheit richten.
Branchen weltweit akzeptieren die MISRA-C- Regeln für die Entwicklung sicherheitskritischer C-Programme. Die Regeln und Richtlinien schaffen Vertrauen, da sie verständlich, prägnant und auf das Wesentliche fokussiert sind.
Während die Anwendung des MISRA-Standards nicht garantiert, dass Software frei von Sicherheits- und Qualitätsproblemen ist, hilft er Softwareentwicklern, Code zu schreiben, der sicherer, robuster, portabler und einfacher zu warten ist.
Die MISRA-Richtlinien behandeln auch Sicherheitslücken, aber andere Codierungsstandards wie CERT C gehen speziell auf Sicherheitslücken ein, die in Code geschrieben sind.
Heutzutage nutzen Entwicklungsteams Codierstandards, um verschiedene Codierpraktiken zu definieren, zu verwalten und anzuwenden. Dabei steht die Konsistenz im Vordergrund. Das Hauptziel einer Codierregel besteht darin, die falsche Verwendung der Sprache einzuschränken und Entwickler vor „falschen“ und potenziell gefährlichen Aktionen zu bewahren.
Entwickler können viele Fehler in der Software vermeiden, indem sie vernünftige Sprachverwendungsbeschränkungen anwenden. Dies führt auch zu einer Stileinheitlichkeit, die als Disziplin in einem Softwareprojekt wertvoll ist.
Die Vielseitigkeit der Programmiersprachen C und C++ ermöglicht es Entwicklern, unbeabsichtigt fehlerhaften und potenziell gefährlichen Code zu schreiben. Es ist zwar einfach, Code zu verfassen, der den Anforderungen des Sprachstandards entspricht, doch kann dies dennoch zu unerwünschtem Verhalten und Programmabstürzen führen. Beispielsweise kann Code, der auf Speicherbereiche außerhalb der Parameter einer arithmetischen Operation oder eines Arrays zugreift, Speicher- oder Bereichsüberschreitungen verursachen.
Es ist wichtig, diese potenziellen Probleme zu identifizieren. Das Ziel von MISRA ist es jedoch, Probleme zu vermeiden und nicht nur zu identifizieren. Ein Compiler kann einige von ihnen erkennen, aber die Verwendung eines speziellen Analysetools ist effektiver.
Der MISRA-Standard betont, dass die Einhaltung von Programmierregeln nur eine Komponente erfolgreicher Softwareentwicklung ist. Entwickler müssen jedes Programmierprojekt in ein diszipliniertes Engineering-Umfeld integrieren, das methodische Entwicklungsworkflows umfasst und bewährte Validierungstools im Einsatz anwendet.
Jeder MISRA-Standard umfasst eine Reihe von Codierungsparametern und -regeln sowie unterstützende Materialien. Die Begleitmaterialien sind ein ergänzender Teil des Standards und liefern wichtige Hintergrundinformationen, die für jeden Programmierer unerlässlich sind, der die Konformität erreichen möchte.
Schauen wir uns die C- und C++-MISRA-Codierungsstandards und kurze Beschreibungen an.
MISRA C 2012. MISRA C 2012 wurde 2013 veröffentlicht. Es stützte sich auf Erfahrungen aus der Zusammenarbeit mit Tausenden von Organisationen und auf bewährte Verfahren von Softwareentwicklern, um die besten Codierungsrichtlinien für die Programmiersprache C bereitzustellen.
Die erste Ausgabe des Standards war MISRA C 1998 und entwickelte sich im Laufe der Jahre zu MISRA C:2004 und dann zu MISRA C:2012. Ursprünglich bot der Standard Unterstützung für C90 und wurde weiterentwickelt, um seine Richtlinien zur Unterstützung von C99, C11 und C18 zu erweitern. MISRA C 2012 hat auch eine Reihe von Verbesserungen vorgenommen, die die Komplexität und die Kosten der Compliance verringert haben.
MISRA C 2023. Dies ist der neueste MISRA-C-Standard. Er konsolidiert MISRA C 2012 sowie alle bisher veröffentlichten Änderungen und Korrekturen. Der Standard unterstützt die Programmiersprache C sowie die Versionen C90, C99, C11 und C18 und ersetzt MISRA C 2012.
MISRA C++ 2008 wurde im Juni 2008 veröffentlicht und zur Unterstützung von C++98 und C++11 entwickelt. Obwohl die Programmiersprache C weiterhin die vorherrschende Programmiersprache war, trug dieser Standard der zunehmenden Entwicklung von C++-Anwendungen Rechnung. Viele Unternehmen entschieden sich jedoch für die Standardisierung mit dem AUTOSAR C++ 14-Codierungsstandard, da dieser die C++14-Version der Programmiersprache C++ anstelle des älteren C11 unterstützt. Die offizielle C++-Codierungsversion, ISO/IEC 14882:2014, wurde im Dezember 2014 veröffentlicht.
MISRA C++ 2023. AUTOSAR und MISRA haben gemeinsam die nächste Generation des C++-Codierungsstandards entwickelt. MISRA C++ 2023 wurde im Oktober 2023 veröffentlicht und bietet Softwareentwicklern die Möglichkeit, ihren modernen C++17- und C++20-Code auf Sicherheitslücken zu überprüfen.
MISRA-Konformität 2020. Dieses Dokument legt einen Rahmen für die Einhaltung des MISRA-Codierungsstandards fest. Es ersetzt die Konformitäts-, Prozess- und Abweichungsanforderungen früherer Versionen des Standards.
Der MISRA-Codierungsstandard liefert gründliche Regeln und Richtlinien, damit Unternehmen ihre Anwendungen vor Laufzeitfehlern und Softwareausfällen schützen und sie weniger anfällig für Sicherheitslücken machen können.
Die Einhaltung des MISRA-Standards trägt zur Verbesserung der Syntax bei, sorgt für einheitlichen Code und erleichtert die Portabilität. Für Teams, die keine statische Analyse oder SAST-Lösungen (Static Application Security Testing) verwenden , kann die Validierung der Konformität problematisch sein. Parasoft vereinfacht diesen Prozess, was entscheidend für die termingerechte Softwarebereitstellung und die Sicherheit des Codes ist.
Um eine erfolgreiche Konformität zu erreichen, müssen Lösungen Folgendes bieten.
Es ist wichtig, die MISRA-Konformität während des gesamten Softwareentwicklungslebenszyklus anzuwenden, einschließlich während der Codeimplementierung für Shift-Left-Tests und zur Beschleunigung von Codeüberprüfungen. Dies bietet Qualitätsverbesserungen sowie Fortschrittsmetriken, fortlaufende Rückverfolgbarkeit und Durchsetzung.
Die Automatisierung von Dokumentation und Compliance-Berichten gemäß MISRA Compliance 2020 ist ein Schlüsselfaktor, um Ressourcen und Zeit zu sparen und Frustrationen bei der Behebung der Verstöße selbst zu vermeiden.
Tools wie Parasoft können so konfiguriert werden, dass sie eine Teilmenge des gesamten MISRA-Standards erkennen. Dadurch wird das von der Analyse erzeugte Rauschen reduziert und der Fokus auf die Behandlung schwerwiegender Verstöße erhöht.
Eines der Probleme bei der Erreichung der MISRA-Konformität durch Unternehmen war das Fehlen eines Standardmechanismus zum Nachweis der Konformität. Um dieses Problem zu lösen, veröffentlichte MISRA die bereits erwähnte „MISRA Compliance 2020: Erreichen der Konformität mit den MISRA-Codierungsrichtlinien“. Sie bietet eine konkretere Definition der MISRA-Konformität und nennt mehrere Leistungen, die zum Nachweis der Konformität mit dem MISRA-Standard erforderlich sind.
Die Richtlinienkonformitätsübersicht (GCS) ist ein obligatorisches und zentrales Dokument zur Gesamtkonformität des Projekts. Die GCS enthält für jede Richtlinie einen Eintrag, den Grad der Konformität, etwaige Abweichungen und/oder Neukategorisierungen.
Plan zur Neukategorisierung von Richtlinien. Alle verbindlichen Richtlinien müssen befolgt werden, um die Konformität zu gewährleisten. Erforderliche und empfehlende Richtlinien können jedoch in strengere Kategorien umkategorisiert werden, z. B. von „Empfohlen“ zu „Verpflichtend“. Empfohlene Richtlinien können hingegen in weniger strenge Kategorien umkategorisiert werden, z. B. von „Empfohlen“ zu „Nicht anwendbar“.
Abweichungsbericht. Ihr Projekt kann Abweichungen von Richtlinien oder Regelverstöße aufweisen und dennoch als konform gelten, wenn die Abweichungen begründet und im Bericht dokumentiert sind und die Sicherheit nicht beeinträchtigen.
Richtliniendurchsetzungsplan. Zeigt, wie die einzelnen MISRA-Richtlinien überprüft werden. Im Kontext der MISRA-Konformität mit Parasoft ordnet der Richtliniendurchsetzungsplan die MISRA-Richtlinien den Parasoft-Codeanalyseregeln und der DTP-Funktionalität zu.
C/C++test ist TÜV SÜD-zertifiziert und automatisiert die Anwendung und Überwachung von Analyse- und Codierungskriterien wie MISRA. Dazu gehört eine Unit-Test-Plattform, die das Erstellen und Ausführen von Tests sowie die Berichterstellung zur Testabdeckung integriert. Die zentrale Analyse- und Berichtsplattform Parasoft DTP , ebenfalls TÜV-zertifiziert, aggregiert und korreliert Analyse- und Testdaten von Parasoft C/C++test.
Es ist eine Tatsache, dass Entwickler Legacy-Code für sicherheitskritische Software wiederverwenden. Die Wiederverwendung von Legacy-Code und die Verwirklichung der vollständigen MISRA C 2023-Konformität kann jedoch entmutigend sein.
MISRA-Compliance ist viel einfacher zu verwalten und zu erreichen, da der Code geschrieben wird. Das MISRA C 2023-Dokument enthält sogar eine Warnung, die wir interpretieren können, wenn wir es auf Legacy-Programme anwenden:
„… ein Projekt, das die MISRA-Konformität erst spät in seinem Zyklus prüft, wird wahrscheinlich viel Zeit mit Neucodierung, erneuter Überprüfung und erneutem Testen verbringen. Es ist daher zu erwarten, dass der Softwareentwicklungsprozess die frühzeitige Anwendung der MISRA-C-Prinzipien erfordert.“
MISRA Consortium Limited, die für die Erstellung und Pflege des MISRA-Standards verantwortliche Organisation, hat die Wiederverwendung von Legacy-Software ins Leben gerufen und MISRA Compliance:2020 erstellt. Dieses Dokument bietet Anleitungen für Entwickler, die neuen Code schreiben, und für diejenigen, die übernommenen oder Legacy-Code verwenden.
Die Unterscheidung ist jedoch möglicherweise nicht ganz klar. Beispielsweise schreibt ein Programmierer während der Produktentwicklung Software für einen Prototyp, nur um herauszufinden, dass das Projekt MISRA-Konformität erfordert, also muss er oder sie zurückgehen und die Richtlinien anwenden.
Während dies MISRA nicht auf Legacy-Code anwendet, ist es insofern ähnlich, als der Code gescannt oder analysiert wird und die Ergebnisse Tausende, wenn nicht Zehntausende von Verstößen aufdecken. Fügen Sie dies der Tatsache hinzu, dass Entwickler eingebetteter Software oft angeben, dass die Entwicklung von vollständig konformem Code zu schwierig ist und die Aufgabe, MISRA einzuhalten, überwältigend erscheinen kann. Es ist jedoch möglich, einen realistischen Mittelweg zwischen Entmutigung und Compliance zu finden.
MISRA Compliance 2020 hilft bei der Klärung, wie die Konformität am Ende eines Projekts nachgewiesen und nachgewiesen werden kann. Die Lieferung der vier obligatorischen Dokumente ist ein Muss. Berücksichtigen Sie Folgendes für die Konformität mit Legacy- und neuem Code.
Parasoft automatisiert die erforderlichen Berichte, um Unternehmen bei der Erfüllung der MISRA 2020-Compliance-Agenda zu unterstützen.
Es ist klug, einen Workflow einzurichten, um Verstöße in einem vernünftigen Zeitplan zu beheben, ohne die Entwicklung des Codes zu unterbrechen und ihn daher zu verschlechtern. Zu den wichtigsten Empfehlungen gehören:
Um dies zu vereinfachen, enthält der DTP-Reporting-Hub von Parasoft ein Compliance-Status-Dashboard.
Ziel der Werkzeugqualifizierung ist die Zertifizierung ihrer Eignung für den vorgesehenen Zweck. Dies umfasst den Nachweis, wie das Team die Qualifizierung durchgeführt hat und welche Gründe dafür vorlagen. Parasofts C/C++test und DTP sind TÜV SÜD-zertifiziert für den Einsatz in sicherheitskritischen Anwendungen. Für einige der strengsten Prozessstandards und deren Anforderungen, wie beispielsweise DO-178C , existiert ein Werkzeugqualifizierungs- Kit.
Der MISRA-Standard betont auch Kompetenz, Fachwissen und Schulung des Personals als Schlüsselfaktoren für die Bewertung der Produktreife. Dazu gehört das Erkennen der Risiken von Verstößen sowie die richtige Konfiguration und Verwendung von Entwicklungstools und statischer Analyse.
Die Einhaltung der MISRA-Richtlinien ist während des gesamten Softwareentwicklungszyklus wichtig. Mit der umfassenden Lösung von Parasoft wird die MISRA-Konformität deutlich erleichtert. Dank kontinuierlicher Überwachung, Nachverfolgbarkeit und automatisierter Dokumentation sparen Teams Zeit und Ressourcen und vermeiden Frustrationen, die mit der Einhaltung dieser Richtlinie einhergehen.
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.