Die Fusion von MISRA C ++ und AUTOSAR C ++: Eine Roundtable-Diskussion
Von Parasoft
26. September 2019
11 min lesen
Die Motor Industry Software Reliability Association (MISRA) hat die zukünftige Zusammenführung von MISRA C++ und AUTOSAR C++, den beiden führenden sicherheitskritischen C++-Codierungsstandards, angekündigt. Was bedeutet das für Anwender des Standards und wie wirkt sich das auf Organisationen aus, die Compliance erreichen?
Wir haben hier bei Parasoft eine Gruppe von Branchenexperten zusammengebracht, um im Roundtable-Stil zu diskutieren, was die Zukunft für MISRA C ++ bereithält und welche Auswirkungen und Vorteile dieser neue, zusammengeführte Standard erwarten lässt.
Die Teilnehmer sind:
- Andrej Madan, Leitender Lösungsarchitekt bei Parasoft
- Piotr Pepek, Software Development Manager für Parasoft C / C ++ Test
- Michal Rosenau, Projektleiter Software Engineer bei Parasoft und Mitglied von MISRA C und C ++ WG
- Miroslaw Zielinski, Produktmanager für Parasoft C / C ++ - Test
Diskussion am runden Tisch
Wie werden die Standards MISRA C ++ und AUTOSAR C ++ heute verwendet und welche allgemeinen Probleme treten in der Automobilindustrie auf?
Mirek: Obwohl diese beiden Normen einen automobilen Ursprung haben, werden sie häufig im Konformitätsprozess nicht nur mit ISO 26262 für Kraftfahrzeuge, sondern auch mit IEC 61508, dem Standard für industrielle Automatisierung, sowie mit medizinischen Geräten und IEC verwendet 62304. Wenn wir also über MISRA und AUTOSAR sprechen, dann nicht nur für die Automobilindustrie.
In Bezug auf Probleme würde ich aufgrund meiner Erfahrung mit verschiedenen Kunden in verschiedenen Branchen sagen, dass die schwierigsten Teile der Einhaltung eines Codierungsstandards sind:
- Einrichten des Standards in den statischen Analysewerkzeugen des Teams
- Die Anfangsphase nach der ersten Analyse
- Umgang mit einer Vielzahl von Verstößen
Erfolg hängt definitiv davon ab die Art und Weise, wie der Standard in die Organisation eingeführt wirdDer Aufbau des Konformitätsprozesses ist entscheidend für den Erfolg der Annahme eines funktionalen Sicherheitsstandards, einschließlich dieser beiden.
Verwenden von AUTOSAR C ++ - Codierungsrichtlinien zur Optimierung der ISO 26262-Konformität
Andrey: Ich stimme definitiv zu. Ein häufiges Problem bei der Verwendung der statischen Analyse für MISRA C ++ - und AUTOSAR C ++ - Regeln ist die Anzahl der gemeldeten Verstöße. Wenn Sie alle Regeln aktivieren, werden Sie viele Verstöße haben, und ich meine viel, insbesondere für eine Legacy-Codebasis.
Ich denke, der Ansatz, den die meisten Kunden verfolgen, besteht derzeit darin, einen Mittelweg zu finden. Nicht Alle der Regeln sind obligatorisch oder erforderlich. Sie müssen also einen guten Prozess entwickeln. Zum Beispiel führen sie einige Prüfer aus und analysieren den Code und finden heraus, welche Teilmenge von Regeln für ihre Entwicklung und Dokumentation dieser Teilmenge gelten würde. Sie verstehen, dass sie nicht alle Regeln einhalten müssen - sie müssen nur begründen, warum die Regel nicht verwendet wurde, dokumentieren, und das ist vollkommen in Ordnung.
Sobald sie den Prozess verstanden haben, führen sie eine Analyse durch, und selbst bei einem Rückstand von Tausenden von Warnungen können diese Kunden eine Linie in den Sand ziehen und mit einem Rückstand an Problemen fortfahren, um zu ihnen zurückzukehren und sie zu beheben Irgendwann.
Michael: Ja - Ich denke, ein weiterer Grund für den Kampf hier ist, dass Unternehmen, die versuchen, endlich die Einhaltung eines Codierungsstandards wie MISRA zu erreichen, obwohl sie mit der Entwicklung neuen Codes beginnen, die Einhaltung gegen Ende des Jahres in Betracht ziehen Entwicklungslebenszyklus, anstatt zu versuchen, am Anfang zu beginnen. Ein verspäteter Start ist einer der Hauptgründe, warum sie überhaupt auf eine große Anzahl von Verstößen stoßen könnten.
Was hindert Unternehmen daran, diese Kodierungsstandards in der Praxis durchzusetzen?
Andrey: Viele Unternehmen verwenden bereits einen eigenen internen Codierungsstandard für C und C ++, der intern entwickelt und seit Jahren verwendet wird. Diese Unternehmen verfügen über ein internes Dokument und Richtlinien, die sie befolgen, und müssen auf einen Standard wie MISRA modernisiert werden. Die Dynamik des Unternehmens ist jedoch so groß, dass Änderungen lange dauern.
Die Strategie für diese Organisationen besteht darin, Verstöße zu durchlaufen, ihren eigenen Codierungsstandard zu überprüfen und dann die statischen Analyseprüfer von Parasoft ihrem eigenen Codierungsstandard zuzuordnen und gleichzeitig zu untersuchen, wo ihr eigener Codierungsstandard in Bezug auf MISRA und Aktualisierungen des MISRA aktualisiert werden muss C Sprache.
Mit C ++ ist die Situation derzeit aufgrund der älteren Codierungsstandards tatsächlich schlechter. Sie unterstützen keine neuen Sprachkonstrukte wie Autozeiger und andere Dinge, die das neue moderne C ++ auf den Tisch bringt, so dass der Prozess zeitaufwändiger ist.
Mirek: Ich erwähnte, dass AUTOSAR C ++ und MISRA C ++ häufig als Teil des Konformitätsprozesses für funktionale Sicherheitsstandards wie ISO 26262 und IEC 61508 verwendet werden. Die Einhaltung dieser funktionalen Sicherheitsstandards erfordert einen disziplinierten Entwicklungsprozess, der die Erstellung von Dokumentationen umfasst. Kunden benötigen eine Möglichkeit, formell nachzuweisen, dass sie den Standards für funktionale Sicherheit sowie einem Kodierungsstandard entsprechen, der Teil des Konformitätsprozesses für funktionale Sicherheit ist.
Mit MISRA C++ und AUTOSAR C++ bieten Parasoft-Tools dedizierte Unterstützung für diese formale Seite des Compliance-Prozesses. Unser Berichtsrahmen erstellt eine spezielle Dokumentation, die den Anforderungen entspricht, die im Dokument MISRA Compliance:2016 „Achieving Compliance with MISRA Coding Guidelines“ definiert sind. Dies ist am Ende sehr wichtig. Kunden, die versuchen, die Einhaltung des Standards zu erreichen, lassen diesen Teil des Einhaltungsprozesses mithilfe von Parasoft-Tools automatisieren.
Standards ist, dass die Standards selbst auch einige Kategorisierungsmechanismen für ihre Regeln bereitstellen, was der Organisation sehr hilft, den Standard einzuführen. Für MISRA C ++ gibt es beispielsweise verschiedene Kategorien für die Richtlinien (obligatorisch, erforderlich und beratend). Gleiches gilt für das AUTOSAR C ++ - Set, und es gibt auch ein zusätzliches Framework für Kategorisierungen. Dieser Mechanismus kann auch verwendet werden, um den gesamten Implementierungsprozess zu vereinfachen und die Benutzer in Phasen zu unterstützen, angefangen bei der kritischsten Kategorie über die Bereinigung des Codes bis hin zur Weiterentwicklung.
Verstehen Organisationen, die mit diesen Standards beginnen, die Bedeutung der Kategorisierung und Priorisierung?
Andrey: Organisationen haben nicht unbedingt darüber nachgedacht. Die größte Anfrage, die ich als Lösungsarchitekt bekomme, lautet: „Okay, Parasoft, wir sehen, dass Sie Tausende von Regeln haben und wir haben diese große Codebasis. Helfen Sie uns, die Regeln auszuwählen, die uns helfen, echte Fehler zu finden, etwas Interessantes zu finden, etwas Wertvolles, etwas, das es wert ist, behoben zu werden. “
An diesem Punkt treten wir einen Schritt zurück, um herauszufinden, was ihre spezifischen Ziele sind. Wir sehen jedoch häufig, dass Kunden allgemeiner anfangen, weil sie trotz der Notwendigkeit, einen Codierungsstandard einzuhalten, nicht die Zeit haben, alle Regeln durchzugehen und sie zu analysieren. Hier kommt also die Kategorisierung und allgemeine Priorisierung ins Spiel.
Wir können das Teammanagement auch fragen, ob ein Hardline-Ansatz für die Einhaltung erforderlich ist oder nicht, beispielsweise unter Einhaltung aller erforderlichen und verbindlichen Regeln. In den meisten Fällen wird das Management diese Grenze nicht ziehen und die Entscheidung stattdessen ihren Ingenieuren überlassen, die „klug genug“ sind, um herauszufinden, welche Regeln für die Konformität erforderlich sind. Es wird erwartet, dass das Entwicklungsteam dokumentiert, warum Regeln ein- oder ausgeschaltet wurden.
Aus dieser Perspektive habe ich noch keine Leute gesehen, die tatsächlich „durchgesetzt“ haben. Es ist eher ein pädagogischer Ansatz. Wenn ich zum Beispiel erkläre, dass es erforderliche und verbindliche Regeln gibt und Sie von den Regeln abweichen können (aber Sie müssen dokumentieren, wie im MISRA 2016-Konformitätsdokument angegeben), kann dies für viele tatsächlich ein Augenöffner sein Menschen. Nach meiner Erfahrung gibt es definitiv eine Lernkurve und einen Beratungsbedarf in diesem Bereich.
Mirek: Ich stimme zu - wir sehen hier nicht nur in der Automobilindustrie, sondern auch in anderen sicherheitskritischen Organisationen einen erheblichen Bedarf, Beratungsdienste zu erhalten, um den Standard praktischer durchzusetzen und Maßnahmen zu priorisieren, um dorthin zu gelangen. Wir haben mehrere Partner, die unseren Kunden in diesem Bereich helfen, aber es besteht eindeutig die Notwendigkeit, mehr Aufklärung und Durchsetzung zu erhalten.
Was war Ihrer Meinung nach die treibende Kraft für die Integration der AUTOSAR C ++ - und MISRA C ++ - Richtlinien? Fehlen wichtige Teile in der einen oder anderen Norm?
Piotr: Der Hauptgrund für das Zusammenführen der Standards war einfach ein einziger Standard für C ++. In der Vergangenheit basierte MISRA C ++ 2008 auf C ++ 2003, und MISRA C ++ ist fast 10 Jahre alt. AUTOSAR C ++ basierte zu Beginn stark auf MISRA C ++ 2008, fügte dann aber viele neue Regeln hinzu, die für modernes C ++ relevanter sind, einschließlich Funktionen aus C ++ 11 und C ++ 14. Die Hauptantriebskraft für die Integration beider Standards bestand darin, das, was die AUTOSAR C ++ - Gruppe getan hat, in den nächsten MISRA C ++ - Standard umzuwandeln.
Wird der AUTOSAR C ++ - Codierungsstandard als Standard durch MISRA C ++ ersetzt?
Michael: Ja, das ist der Plan. Die Anmerkungen in der aktuellen Version von AUTOSAR C ++ verweisen zukünftige Deltas auf die Codierungsrichtlinien, die von MISRA gesteuert werden sollen. Wir können uns also AUTOSAR C ++ vorstellen, wie Piotr sagte, als eine aktualisierte Version des MISRA C ++ - Standards, der auf MISRA C ++ basiert und eine Reihe von Regeln enthält, die buchstäblich aus MISRA stammen. Einige dieser Regeln wurden aktualisiert und Regeln hinzugefügt. Daher ist geplant, diese aktualisierten Regeln zu übernehmen und sie wieder in MISRA C ++ zu bringen.
Inwiefern hilft dieser neue integrierte Standard den Benutzern?
Mirek: Ich denke, es ist sehr wertvoll, einen Standard auf dem Markt zu haben. Wir haben mit vielen Organisationen gesprochen, die sich weigerten, einen Standard für die Einhaltung von Vorschriften einzuführen, weil sie nicht sicher waren, ob es ein Update von MISRA geben würde, und stattdessen über die Einführung von AUTOSAR C ++ nachdachten. Also haben sie diese Entscheidung verschoben. Der Zusammenschluss verdeutlicht die Situation und der offensichtliche Vorteil besteht darin, dass es nur einen Standard auf dem Markt gibt und im Grunde genommen kein Zweifel darüber besteht, welcher Weg zu gehen ist - der neue MISRA C ++ - Standard wird zur primären Wahl für die Einhaltung.
Wird sich die Integration von MISRA C ++ und AUTOSAR C ++ auf vorhandene Benutzer auswirken?
Mirek: Auf jeden Fall wird es Auswirkungen geben. Wenn beispielsweise eine Organisation, die auf MISRA C ++ 2008 basiert, auf AUTOSAR C ++ umsteigen möchte, muss sie sich mit ungefähr 200 neuen Regeln befassen (da in der aktuellen AUTOSAR C ++ Version 18.10 ungefähr 45% der Regeln direkt von MISRA C ++ 2008 geerbt wurden ).
Wenn sich eine Organisation auf MISRA C ++ 2008 verlässt, ist die Migration auf AUTOSAR C ++ für sie ein erheblicher Aufwand. Dies ist jedoch auch von großem Wert, da das Delta zwischen MISRA C ++ 2008 und AUTOSAR C ++ die Änderungen in der C ++ - Sprache seit 2003 berücksichtigt. Daher sind alle Neuheiten in C ++ 11 und C ++ 14 in AUTOSAR enthalten C ++. Ja, es gibt Auswirkungen, aber die Aktualisierung auf den neuen Standard ist auch sehr wertvoll.
Andrey: Wenn ein Kunde von MISRA C ++ wechselt und bereits seinen etablierten Codierungsstandard einhält und die Standards ändert, um beispielsweise AUTOSAR C ++ zu sagen, können die Auswirkungen manchmal auch logistischer sein.
Diese Kunden haben bereits intern Warnungen begründet, dokumentiert und unterdrückt und möglicherweise sogar Audits durchlaufen. Angenommen, die MISRA C ++ - Regel 11.5 wurde verletzt, die Abweichung wurde jedoch aufgezeichnet und dokumentiert. Dies ist ein Beispiel für eine Unterdrückung oder in diesem Fall eine Abweichung und erfordert Berichte und Papierkram. Wenn ich jetzt zu AUTOSAR C ++ wechsle, ist diese Regel aus MISRA C ++ möglicherweise dieselbe Regel unter der Haube, aber der Tool-Hersteller meldet dies als AUTOSAR C ++ - Regel 17.6. Es ist ein anderer Name, aber das ist der einzige Unterschied - nur das Etikett. Das statische Analysetool kennzeichnet dies jedoch erneut als Fehler und ignoriert die Unterdrückung. Die Unterdrückung wurde mit einer anderen Regelnummer versehen und jetzt gibt es eine große Anzahl von Verstößen.
Was ist mit Sicherheit? Deckt AUTOSAR C ++ und vermutlich das neue MISRA C ++ die Sicherheit ab?
Mirek: Nun, in erster Linie handelt es sich um einen funktionalen Sicherheitsstandard, aber Sicherheit und Schutz hängen zusammen. In beiden Fällen geht es darum, Software zu erstellen, die frei von Konstrukten ist, die zu unvorhersehbarem Verhalten führen. Dies bedeutet, dass Organisationen, die aus Gründen der funktionalen Sicherheit AUTOSAR C ++ oder MISRA C ++ folgen, aus Sicherheitsgründen normalerweise ziemlich gut abgedeckt sind. Bei Sicherheit geht es darum, Unvorhersehbarkeit aus dem Programm zu entfernen, und das fördert natürlich auch die Sicherheit.
Sicherheitsrichtlinien wie CERT sind jedoch gründlicher und enthalten mehr Richtlinien, die sich speziell auf die Sicherheit beziehen. Derzeit sehen wir in vielen Unternehmen, insbesondere in ausgereiften Automobilunternehmen, dass sie ihren funktionalen Sicherheitsstandard als primäre Quelle auswählen und dann ihren Regelsatz erweitern, indem sie zusätzliche ausgewählte Richtlinien aus einem Sicherheitsstandard wie CERT C ++ aufnehmen.
Gibt es eine treibende Kraft, um mehr Sicherheit in diese sicherheitskritischen Standards zu bringen, beispielsweise die Zusammenführung eines Sicherheitsstandards wie CERT C ++? Oder glauben Sie, dass Unternehmen weiterhin Regelsätze selbst zusammenführen werden?
Mirek: Ich persönlich würde nicht vorhersagen, dass CERT bald in MISRA oder AUTOSAR integriert oder zusammengeführt wird. Da die Sicherheit einen breiteren Umfang hat und in Bezug auf die Sprachuntermenge weniger streng ist, werden immer sicherheitsorientierte Standards erforderlich sein, die von den Sicherheitsstandards getrennt sind.
So haben Sie beispielsweise in MISRA C ++ 2008 eine Regel, die Sie daran hindert, die dynamische Speicherzuweisung zu verwenden. Sie können es nicht verwenden, wenn Sie mit MISRA C ++ 2008 kompatibel sein möchten. Für CERT C ++ ist dies jedoch vollkommen in Ordnung. Sie können die dynamische Speicherzuweisung verwenden, und es gibt Regeln, wie dies auf sichere Weise durchgeführt werden kann.
Piotr: Ja, und auf der MISRA-Website finden Sie offizielle Dokumente, die beispielsweise Informationen zur Zuordnung zwischen MISRA C 2012 und CERT C enthalten. Diese Zuordnungen zeigen Ihnen deutlich den Unterschied, was fehlt. Entwickler haben also Informationen darüber, welche Richtlinien aus CERT C / C ++ in ihre Auswahl von Regeln aufgenommen werden sollen. Außerdem gibt es eine Rückverfolgbarkeitszuordnung zwischen AUTOSAR C ++ und CERT C ++. Ich denke, dass ungefähr 50% aller CERT C ++ - Richtlinien eine ähnliche Regel in AUTOSAR C ++ selbst haben.
Mirek: Darüber hinaus denke ich, dass die Annahme dieser Standards einen regionalen Aspekt hat. Wie wir mit der Einführung von MISRA im Laufe der Zeit gesehen haben, sehen wir jetzt ein ähnliches Muster bei CERT C und C ++. Zum Beispiel übernehmen unsere Kunden in Japan sehr schnell die neuesten Standards und scheinen dem Rest der Welt voraus zu sein. Unsere japanischen Kunden waren die ersten, die mindestens ein Jahr vor anderen Regionen MISRA C 2012-Support angefordert haben. Derzeit sehen wir ein ähnliches Muster bei CERT C und C ++, wobei mehr Anfragen aus dem japanischen Automobilmarkt CERT C / C ++ - Support wünschen .
AUTOSAR C ++ ist ein sehr dynamischer Standard mit zwei Releases pro Jahr. Welche Auswirkungen haben häufige Aktualisierungen auf die Organisationen, die versuchen, Compliance zu erreichen? Planen Sie, dass der neue MISRA C ++ - Standard diesen Zeitplan einhält?
Piotr: Es ist wichtig zu bedenken, dass die AUTOSAR C ++ - Richtlinien Teil der sind Adaptive AUTOSAR-PlattformDaher sind diese beiden Releases pro Jahr der Release-Zyklus für die gesamte Plattform. Wenn sie die C ++ - Richtlinien mit der Plattform synchron halten möchten, muss dies auf lange Sicht irgendwie verwaltet werden. Es ist jedoch nicht unbedingt so, dass sich mit jeder Veröffentlichung viele Dinge geändert haben.
Mirek: Wie wir bereits besprochen haben, gibt es Probleme mit der Änderung von Standards. Mit häufigen Änderungen des Standards haben Sie alle Probleme, die Andrey im Zusammenhang mit der Logistik besprochen hat. Wenn sich eine Richtlinie geändert hat, müssen Kunden ihr Compliance-Framework aktualisieren, da sie alle Probleme mit erneut gemeldeten Verstößen haben, die jetzt plötzlich nicht mehr unterdrückt werden. Dies ist eine große Herausforderung und kostet viel Geld. Wenn Sie 50, 70 oder 100 Entwickler haben und bereits einen Compliance-Prozess in Ihrem Entwicklungsprozess eingeführt haben, Sie jedoch die geschäftliche Anforderung haben, dass Ihr Produkt mit der neuesten Ausgabe des Standards kompatibel sein muss, haben Sie diese Herausforderung.
Wenn sich der Standard mit wesentlichen Änderungen des Standards schnell weiterentwickelt, müssen Kunden dies irgendwie angehen. Oft bedeutet dies zusätzliche Stunden aus Zeitplan und Budget. Es ist ein Problem, aber wie Piotr sagte, denke ich, dass sich der Standard langfristig stabilisieren wird und die Änderungen zwischen den einzelnen Versionen nicht so bedeutend sein werden, wie wir zum Beispiel beim Übergang zwischen AUTOSARC ++ Version 17.32 und 18.10 gesehen haben , beispielsweise.
Die Entwicklung der C ++ - Sprache hat sich in den letzten zwei Jahren beschleunigt. AUTOSAR C ++ basiert derzeit auf C ++ 14. Was ist die Erwartung der Entwicklung von MISRA C ++ in Bezug auf die C ++ - Sprache?
Michael: Derzeit ist für die nächste Version von MISRA C ++ geplant, AUTOSAR C ++ 14 zu integrieren und auch C ++ 17, die aktuelle Version der Sprache, abzudecken. Ich kann jedoch nicht darüber sprechen, wie schnell es sich in Zukunft entwickeln wird oder wie diese neuen Versionen veröffentlicht werden. Persönlich würde ich erwarten, dass für jede neue Version der Sprache eine neue Version des Standards erstellt wird. Die Grundidee besteht darin, den Standard zu aktualisieren, wenn er ausgereift genug ist. Dies sollte den Fall vermeiden, den wir mit AUTOSAR C ++ hatten, das auf C ++ 14 basiert, sich aber immer noch zweimal im Jahr ändert.
Wie lange sehen Sie die neue Verzögerung zwischen der Aktualisierung des MISRA C ++ - Standards und der Veröffentlichung der Sprache durch das ISO C ++ - Komitee?
Michael: Es ist schwer zu sagen, da im Fall von AUTOSAR C ++ die Standardisierung später als die Veröffentlichung von C ++ 14 begann. Die Veröffentlichung von AUTSAR C ++ hatte nichts mit der Veröffentlichung der Sprachversion oder dem Erscheinen der Sprache zu tun.
AUTOSAR C ++ basierte von Anfang an auf C ++ 14. Als AUTOSAR die Adaptive Platform veröffentlichte, stellten sie fest, dass es keine Codierungsstandards für C ++ 14 gab. Daher beschlossen sie, den Standard auf MISRA C ++ 2008 zu stützen und mit neuen Regeln und Unterstützung für C ++ 14 zu aktualisieren.
Werden AUTOSAR C ++ - Updates eher vom Release-Zeitplan der Adaptive Platform als von der Sprache gesteuert?
Piotr: Ja, das würde ich sagen.
Mirek: Es ist wichtig darauf hinzuweisen, dass der neue zusammengeführte MISRA C ++ - Standard über AUTOSAR C ++ hinaus aktualisiert wird. Der neue integrierte Standard wurde als aktualisiert deklariert und enthält alle Neuerungen, die in neuen Versionen der C ++ - Sprache eingeführt wurden, einschließlich C ++ 17 und C ++ 20. Für viele Organisationen war dies von größter Bedeutung. Moderne C ++ - Funktionen sind beispielsweise in Systemen mit KI wichtig, die auf modernen Architekturen, modernen Plattformen und einer modernen Bibliothek basieren, die häufig in den neuesten Editionen von C ++ entwickelt werden. Daher ist die Erklärung, dass der Standard der Entwicklung der Sprache folgen wird, sehr wichtig.
Erobern Sie mit dem Parasoft C / C ++ - Test umständliche Standards zur Einhaltung der funktionalen Sicherheit.
Demo anfordern
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.