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 >>
MISRA ist der legendäre Standard, an dem Entwicklungsteams einen Großteil der heutigen Software messen. Aber was genau ist MISRA, wie ist es entstanden, wie messen C- und C++-Entwickler Standards daran und woher wissen sie, dass sie konform sind?
In diesem Beitrag untersuchen wir den zwingenden Hintergrund der Entstehung von MISRA. Wir beantworten auch die oben genannten Fragen und zeigen, wie MISRA C++- und C-Code-Programmierern hilft, effizient zu schreiben und gleichzeitig aktuelle Sicherheitsbedenken zu berücksichtigen.
Konkret betrachten wir:
Die MISRA-Standards enthalten Richtlinien und Coderegeln zum Schreiben von Software. Unter anderem verwenden die Automobil-, Luft- und Raumfahrt- und Verteidigungsindustrie, Medizintechnik, Industrieautomation und Bahnindustrie den Standard, um ihre Entwickler beim Schreiben von Quellcode zu unterstützen, der Sicherheit und Zuverlässigkeit in der Software gewährleistet. Da Embedded-Software-Ingenieure die Programmiersprachen C und C++ verwenden, um Code für sicherheitskritische Software zu schreiben, haben die Schöpfer des MISRA-Standards sie für Programmierer entwickelt, die diese beiden Sprachen verwenden.
Das Konsortium der Motor Industry Software Reliability Association (MISRA) ähnelt der ISO (International Standards Organization) und der IEC (International Electrotechnical Commission), die allgemeine Compliance-Richtlinien für die Industrie festlegen, beispielsweise Standards für die Entwicklung elektrischer/elektronischer Systeme. ISO 26262 , veröffentlicht im Jahr 2011, ist der internationale Standard zur Zertifizierung der Sicherheit von Elektronik in Straßenfahrzeugen. ISO/IEC-konforme Softwaresysteme können von Prüfstellen als sicher zertifiziert werden.
MISRA, ein Konsortium automobilnaher Industrien, hat 1998 seine ersten Richtlinien entwickelt, MISRA c1998. Das Konsortium entstand als Ergebnis des britischen Forschungsprogramms für sicherheitskritische Systeme, das die britische Regierung ins Leben gerufen hat, um einige der Herausforderungen anzugehen, denen sich die Automobilindustrie aufgrund des zunehmenden Einsatzes von Software bei der Herstellung und dem Betrieb von Fahrzeugen gegenübersieht. Einige der ursprünglichen Branchen, die an der Entwicklung des Standards mitgewirkt haben und die derzeit alle auch aktive Mitglieder des Lenkungsausschusses sind, waren:
Obwohl das Konsortium ursprünglich den Standard für die Automobilindustrie, haben andere Embedded-Branchen den Standard übernommen, einschließlich solcher, die Embedded-Technologie verwenden, die Geräte wie LoT-Systeme verbindet.
In den frühen 1990er Jahren gewann die Elektronik im Automobil immer mehr an Bedeutung. Ebenso die eingebettete Software, die ein integraler Bestandteil dieser Elektronik war. So 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 noch größer, da Software für ein einzelnes Auto mehr als 100 Millionen Codezeilen 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 ECU oder Motorsteuergerät genannt). Dies ist der wichtigste Fahrzeugcomputer, der Informationen über Kraftstoffverbrauch, Leistung des Motors, Emissionen und andere wichtige motorbezogene Daten sammelt, die für sicheres und effizientes Fahren unerlässlich sind. (Elektro- und Hybridfahrzeuge haben ähnliche Softwareanforderungen in Bezug auf Motor und Antriebsstrang.)
Die Hersteller verwenden auch Software zum Betrieb von Bordcomputern für die allgegenwärtigen Sensoren aktueller Fahrzeuge, einschließlich Tür- und Fensterüberwachung, Klimatisierungssysteme sowie Park- und Verkehrssensoren. Sie setzen sie auch in sicherheitskritischen Systemen wie Airbags und ABS ein. Mehr betriebsbezogene Software liegt sicherlich in der Zukunft von Straßenfahrzeugen, wobei Ingenieure und Designer den autonomen Fahrfunktionen, verbesserter Energieeffizienz und erhöhter Sicherheit ernsthafte Aufmerksamkeit widmen.
Industrien auf der ganzen Welt akzeptieren die MISRA C-Regeln zum Schreiben von sicherheitskritischem C-Code. Die Regeln und Richtlinien schaffen Vertrauen, weil sie lesbar und prägnant sind und sich auf das Wesentliche konzentrieren. Obwohl die Anwendung des MISRA-Standards nicht garantiert, dass Software frei von Sicherheits- und Qualitätsproblemen ist, hilft er Software-Ingenieuren, Code zu schreiben, der sicherer, robuster, portabler und einfacher zu warten ist. (MISRA-Richtlinien behandeln auch Sicherheitslücken, aber andere Codierungsstandards wie CERT C behandeln speziell in Code geschriebene Sicherheitsprobleme.)
Heutzutage verwenden Entwicklungsteams Codierungsstandards als Methode, um eine Gruppe von Codierungspraktiken zu definieren, zu verwalten und zu nutzen, wobei das Hauptziel die Konsistenz ist. Das Hauptziel einer Codierungsregel besteht darin, die Verwendung der Sprache einzuschränken, um zu verhindern, dass der Entwickler „falsche“ und potenziell gefährliche Dinge tut.
Entwickler können viele Fehler in der Software vermeiden, indem sie sinnvolle Einschränkungen bei der Sprachverwendung vornehmen. Daraus resultiert eine stilistische Einheitlichkeit, die als Disziplin in einem Softwareprojekt wertvoll ist.
Der Vielseitigkeitsaspekt der Sprachen C++ und C ermöglicht es einem Entwickler, Code zu schreiben, der unbeabsichtigt falsch und möglicherweise gefährlich sein kann. Es ist einfach für ihn oder sie, Code zu schreiben, der den Anforderungen des Sprachstandards entspricht, aber dies kann dennoch zu unerwünschtem Verhalten und Programm-„Abstürzen“ führen. Dazu gehören beispielsweise Code, der über die Parameter eines arithmetischen Prozesses hinaus auf Speicher zugreift, oder eines Arrays, der zu Speicher- oder Grenzverletzungen führt.
Es ist offensichtlich wichtig, diese potenziellen Probleme zu identifizieren. Aber das Ziel von MISRA ist es, Probleme zu vermeiden und nicht nur zu identifizieren. Ein Compiler kann einige von ihnen erkennen, aber die Verwendung eines dedizierten Analysetools ist effektiver.
Der MISRA-Standard betont, dass die Einhaltung von Codierregeln nur eine Komponente für die erfolgreiche Entwicklung von Software ist. Entwickler müssen jedes Programmierprojekt in ein diszipliniertes Engineering-Setting integrieren, das methodische Entwicklungsworkflows und die Anwendung bewährter Validierungstools umfasst.
Jeder MISRA-Standard enthält eine Reihe von Codierungsparametern und -regeln sowie unterstützende Materialien. Die Begleitmaterialien sind ein ergänzender Bestandteil des Standards und bieten wichtige Hintergrundinformationen für jeden Programmierer, der die Konformität erreichen möchte.
Schauen wir uns die aktuellen MISRA-Codierungsstandards für C und C++ selbst und kurze Beschreibungen an.
Der MISRA-Codierungsstandard bietet umfassende Regeln und Richtlinien, damit Unternehmen ihre Anwendungen vor Laufzeitfehlern und Softwarefehlern 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, schafft Code-Konformität und erleichtert die Portabilität. Für Teams, die keine Lösungen oder Tools zur statischen Analyse (oder SAST – Static Application Security Testing) verwenden, kann die Validierung der Compliance problematisch sein. Parasoft vereinfacht den Prozess, der für die Gewährleistung einer rechtzeitigen Softwarebereitstellung und Codierungssicherheit von entscheidender Bedeutung ist.
Um eine erfolgreiche Compliance zu erreichen, müssen Lösungen Folgendes bieten:
Es ist wichtig, die MISRA-Compliance während des gesamten Softwareentwicklungslebenszyklus anzuwenden, einschließlich während der Codeimplementierung für Shift-Left-Tests und um Code-Reviews zu beschleunigen. Dies bietet nicht nur Qualitätsverbesserungen, sondern auch Fortschrittsmetriken, kontinuierliche Rückverfolgbarkeit und Durchsetzung. Die Automatisierung der Dokumentation und des Compliance-Reportings gemäß MISRA Compliance 2020 ist zudem ein wesentlicher Faktor, 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 durch die Analyse erzeugte Rauschen verringert und der Fokus auf die Behandlung schwerwiegender Verstöße erhöht.
Eines der Probleme im Zusammenhang mit Unternehmen, die MISRA-Konformität erreichen, war das Fehlen eines Standardmechanismus zum Nachweis der Konformität. Um dieses Problem anzugehen, hat MISRA „MISRA Compliance 2020: Achieving Compliance with MISRA Coding Guidelines“ veröffentlicht, das neueste Update, das eine konkretere Definition von „MISRA Compliance“ bietet und mehrere Ergebnisse identifiziert, die zum Nachweis der Einhaltung des MISRA-Standards erforderlich sind.
C/C++test ist vom TÜV SÜD zertifiziert und automatisiert die Anwendung und Überwachung von Analysecodierungskriterien wie MISRA. Dazu gehört eine Unit-Test-Plattform. Diese Plattform integriert die Erstellung von Tests und deren Ausführung sowie die Berichterstattung über die Abdeckung. Dann der zentralisierte Analyse- und Reporting-Hub von Parasoft Parasoft DTP, das ebenfalls TÜV-zertifiziert ist, aggregiert und korreliert Analyse- und Prüfdaten aus den 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 2012-Konformität kann jedoch entmutigend sein.
Die Einhaltung von MISRA ist beim Schreiben von Code viel einfacher zu verwalten und zu erreichen. Das Dokument MISRA C 2012 enthält sogar eine Warnung, die wir bei der Anwendung auf Legacy-Programme interpretieren können:
„ … ein Projekt, das die MISRA-Konformität erst spät in seinem Zyklus überprüft, wird wahrscheinlich viel Zeit mit der Neucodierung, erneuten Überprüfung und erneuten Prüfung verbringen. Es wird daher erwartet, dass der Softwareentwicklungsprozess die frühzeitige Anwendung der MISRA C-Prinzipien erfordert.“
Unter Hinweis auf die Wiederverwendung von Legacy-Software hat das MISRA Consortium Limited, die für die Erstellung und Pflege des MISRA-Standards verantwortliche Organisation, die heute aktualisierte und aktuelle Version von MISRA Compliance:2020 erstellt. Dieses Dokument bietet eine Anleitung für Entwickler, die neuen Code schreiben, und für diejenigen, die übernommenen oder veralteten Code verwenden.
Die Unterscheidung ist jedoch möglicherweise nicht ganz klar. Zum Beispiel 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 die Richtlinien zurückverfolgen und anwenden. Obwohl MISRA nicht auf Legacy-Code angewendet wird, ist es ähnlich, dass beim Scannen oder Analysieren des Codes Tausende, wenn nicht sogar Zehntausende von Verstößen aufgedeckt werden. Hinzu kommt die Tatsache, dass die Entwickler von eingebetteter Software oft sagen, dass die Entwicklung von vollständig konformem Code zu schwierig ist, die Aufgabe, MISRA zu erfüllen, kann überwältigend erscheinen. Aber es ist möglich, einen realistischen Mittelweg zwischen „einschüchternd“ und Compliance zu finden.
MISRA Compliance 2020 hilft zu klären, wie die Konformität am Ende eines Projekts nachgewiesen und nachgewiesen werden kann. Die Abgabe der vier obligatorischen Dokumente ist ein Muss. Berücksichtigen Sie Folgendes für die Einhaltung von Legacy- und neuem Code:
Parasoft automatisiert die notwendigen 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 Qualifizierung von Werkzeugen ist es, ihre Gültigkeit für die beabsichtigte Verwendung zu bescheinigen. Es enthält Beweise dafür, wie das Team sie qualifiziert hat, und die Gründe dafür. Parasoft C/C++test und unser Reporting-Tool Parasoft DTP wurden für den Einsatz in sicherheitskritischen Anwendungen vom TÜV SÜD zertifiziert und es existiert ein Tool-Qualifizierungs-Kit für einige der strengsten Prozessstandards wie DO-178B / C. und was sie benötigen.
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.
Es ist wichtig, die MISRA-Compliance während des gesamten Softwareentwicklungslebenszyklus zu unterstützen. Mit der umfassenden Lösung von Parasoft ist es einfacher, die Einhaltung von MISRA zu erreichen. Durch die kontinuierliche Durchsetzung, Rückverfolgbarkeit und die Automatisierung der Dokumentation können Teams Zeit und Ressourcen sparen und Frustrationen, die mit der Einhaltung dieser Richtlinie einhergehen, abbauen.
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.
Ricardo ist Senior Technical Product Marketing Manager für die eingebetteten Testlösungen von Parasoft und verfügt über Erfahrung in der SDLC- und Testautomatisierung eingebetteter Echtzeit-, sicherheits- und sicherheitskritischer Anwendungen sowie in der Softwarekonformität mit Industriestandards.