Codierstandard Generalüberholung für MISRA-C

Der neue Standard berücksichtigt Sprachkonstrukte von C99 und präzisiert das Regelwerk in einigen Belangen - insbesondere, um eine bessere Überwachung der Codierrichtlinien mit automatisierten Verfahren zu ermöglichen.

MISRA-C ist ein von der Motor Industry Software Reliability Association (MISRA) entwickelter und gepflegter Softwareentwicklungs-Standard für die Programmiersprache C. Der ursprünglich im Jahr 1998 als MISRA-C:1998 herausgegebene und im Jahr 2004 (MISRA-C:2004) für C90 aktualisierte Standard wurde geschaffen, um die Verwendung der Sprache C in sicherheitskritischen Embedded-Anwendungen im Bereich der Automobilindustrie zu fördern. Im Laufe der Jahre wurde der Standard auch in anderen Branchen eingesetzt, etwa Luftfahrt, Telekommunikations, Medizintechnik, und Eisenbahnindustrie.

MISRA-C:2012 als neuestes Update, dessen Veröffentlichung für Anfang 2013 geplant ist, wird Unterstützung für ISO 9899:1999 (C99) bieten, dabei aber den Support für C90 beibehalten. Der neue Standard mindert Softwarerisiken in sicherheitskritischen Anwendungen. Insbesondere sind einige Regeln präziser formuliert oder wurden so umgestaltet, dass ihre Einhaltung besser durch automatisierte Tests überwacht werden kann. Zusätzlich haben Entwickler jetzt mehr Einfluss darauf, in welchem Umfang die Regeln durchgesetzt werden, ob eine Regel also ein allgemeines Verhalten für das gesamte Projekt festlegt oder nur für bestimmte Fälle gilt.

Weniger manuelle Überprüfung nötig

Die bessere automatische Testbarkeit hängt damit zusammen, dass in der Norm die Zahl der ‚entscheidbaren‘ Regeln vergrößert wurde. Hier kann ein Analyse-Tool in jedem Fall die Einhaltung oder Nichteinhaltung feststellen - gegenüber den nicht entscheidbaren Regeln, bei denen dies nicht der Fall ist (in der Regel deshalb, weil Zeiger- oder Datenwerte den Kontrollfluss beeinflussen). Nicht entscheidbare Regeln können zu falsch-positiven oder falsch-negativen Testergebnissen führen, weil das Tool während der Analyse nur über unzureichende Informationen verfügt. Diese Verbesserung sorgt dafür, dass sich der Aufwand an manueller Codeprüfung deutlich verringert.

Unabhängig davon, ob Programmierer den Funktionsumfang der Sprachversion C99 nutzen wollen oder ob es um laufende Projekte auf C90-Basis geht, wird MISRA-C:2012 bei der Erfüllung der strikten Zertifizierungs-Anforderungen für eine umfangreiche Palette sicherheitskritischer Applikationen helfen. Wir sprachen mit Mark Pitchford, Field Application Engineer bei LDRA, über den neuen MISRA-C-Standard.

Elektronik: Ursprünglich sollte der neue MISRA-C-Standard schon Ende 2011 veröffentlicht werden. Warum hat es mehr als ein Jahr länger gedauert?

Mark Pitchford: Leider arbeiten Standardisierungsgruppen meist recht langsam. Es müssen viele Argumente eingebracht, diskutiert und abgewogen werden. Am wichtigsten war dem MISRA-Komittee aber, eine ausreifte Spezifikation zu publizieren. Deswegen hat sich das Komitee von selbst gesetzten Terminen nicht unter Zeitdruck setzen lassen und lieber gründlich als schnell gearbeitet.

Elektronik: Warum wurde dann nicht gleich C11 (von 2011) in der neuen Spezifikation berücksichtigt?

Mark Pitchford: Weil ohnehin schon alles so stark hinter dem Zeitplan war. Hätte man die neue Version von C auch noch berücksichtigt, dann hätte das neue Anträge und Diskussionen und damit weitere Verzögerungen bedeutet.

Elektronik: Was hat es mit den „nicht-entscheidbaren“ Regeln auf sich?

Mark Pitchford: Die Entscheidung, ob eine Regel eingehalten wurde oder nicht, wird von den Tools manchmal in einem iterativen Prozess getroffen. Wenn diese Iterationen nicht konvergieren, dann kann keine Entscheidung getroffen werden und das Tool muss ein negatives Ergebnis ausgeben, das mit hoher Wahrscheinlichkeit falsch ist (false-negative). Hier ist eine zeitauwändige manuelle Prüfung nötig.

Elektronik: Das MISRA-Komittee hat 2007 eine „Expemplar Suite“ veröffentlicht. Wozu braucht man die?

Mark Pitchford: Eine „Exemplar Suite“ ist eine Sammlung von Code, in der Verletzungen des MISRA-Standards auf komplizierte Weise implementiert sind. Diese „Standard Exemplar Suite“ wird den Tool-Herstellern zur Verfügung gestellt, damit sie testen können, ob ihre Tools die Verletzungen erkennen. Die „Exemplar Suite“ ist aber nicht nur für Tool-Hersteller interessant. Auch die Kunden können sie nutzen, um Tools zu vergleichen und damit die Qualität der Tools zu testen.

Elektronik: Warum gibt es MISRA-Richtlinien für automatisch generierten Code? Da sollte doch eigentlich von Haus aus alles funktionieren, bzw. der Schwerpunkt müsste auf der Validierung des Codegenerators liegen...

Mark Pitchford: Es gibt wenige Projekte, die nur aus generiertem Code bestehen. Oft wird generierter Code mit handgeschriebenem Code in einem Projekt gemeinsam eingesetzt. Dann möchte man natürlich das gesamte Projekt auf MISRA-Konformität prüfen. Ein anderer Punkt ist, dass in generiertem Code Optimierungen stecken können, die zu möglichen Fehlern führen.

Elektronik: Ist C bei sicherheitskritischen Anwendungen überhaupt so wichtig? - Es gilt ja wegen seiner Pointer-Mechanismen als potenziell unsicher. Sollte man da nicht lieber in Ada programmieren, auch wenn Ada schon in die Jahre gekommen ist?

Mark Pitchford: Das Problem mit Ada ist nicht die Sprache an sich - die wurde immer wieder auf den neuesten Stand gebracht. Das Problem von Ada ist, Leute davon zu überzeugen, damit zu arbeiten und sich auf diese seltene Sprache einzulassen. Bei größeren Projekten, für die man entsprechend viele Leute braucht, kostet diese Überzeugungsarbeit viel Geld. Und wenn man die Leute hat, muss man sie auch bei der Stange halten und weiterbeschäftigen, sonst ist das ganze Know-how wieder weg. Es sind also eher pragmatische Gründe, die gegen Ada sprechen. Also hat sich als beste Lösung herauskristallisiert, eine Untermenge von C zu benutzen.

Elektronik: Was bedeutet der neue Standard für die Entwickler? Reicht es, wenn sie einfach ihre Tools upgraden?

Mark Pitchford: Es wird Upgrades geben für unsere Werkzeuge LDRA Rules und LDRA MISRA C. Wir erwarten aber, dass die Kunden nur dann nach dem neuen Standard arbeiten, wenn sie mit einem neuen Projekt beginnen. Bei einem bestehenden Projekt würde das wahrscheinlich umfangreiche Nacharbeiten nötig machen.