Software-Entwicklung Schlüsselaspekte der ISO 26262 mit MISRA C:2012 erfüllen

Schlüsselaspekte mit MISRA C
MISRA C:12 hilft Schlüsselaspekte der ISO 26262 einzuhalten

Sicherheit ist ein entscheidender Faktor bei der Entwicklung von Automobilsystemen. Der zunehmende Einsatz von E/E/PE-Systemen in Bereichen wie Fahrerassistenz-, Brems-, Lenk- oder Sicherheitssystemen machte eine Norm notwendig - die ISO 26262. Eine ihrer wichtigsten Forderungen: die Einhaltung angemessener Codierungs-Regeln. Mit der aktuellen MISRA-Version steht eine Programmiersprache für die Entwicklung funktionssicherer Automotive-Applikationen zur Verfügung.

Für C-Programmierer, die an Automotive-Applikationen arbeiten, ist es oft schwierig, Restriktionen und Vorschriften zur Gewährleistung sicherer Codierungs-Praktiken zu beachten. Genau die Merkmale einer Programmiersprache, die den Programmierern eigentlich die Arbeit erleichtern oder ihnen das Umgehen von Hindernissen ermöglichen sollen, sind häufig identisch mit jenen Merkmalen, deren Anwendung die Vorschriften untersagen. Allerdings veranlassen Qualitätserwägungen die Automobilindustrie inzwischen dazu, sich ernsthaft mit Möglichkeiten auseinanderzusetzen, die Entwicklung von Qualitäts-Software zu verbessern. Immerhin resultieren die Qualitätsmängel vieler Fahrzeuge oftmals aus dem vermehrten Einsatz elektronischer Systeme, die Auswirkungen auf die Sicherheit der Autos haben. Die Automobilhersteller setzen hier auf Normen wie ISO 26262, um den besonderen Anforderungen elektrischer, elektronischer und programmierbar elektronischer Systeme für Straßenfahrzeuge gerecht zu werden. Dazu müssen angemessene Codierungs-Regeln eingehalten werden.

Obwohl ISO 26262 die gleichen Wurzeln hat wie die Normen anderer sicherheitskritischer Bereiche (Bild 1), ist sie noch relativ neu. Sie stellt ein solides Gerüst für die Entwicklung funktionssicherer Automotive-Applikationen zur Verfügung, lässt dabei allerdings offen, wie diese Entwicklung zu erfolgen hat. Automotive-Entwickler halten sich hierbei oft an hausinterne Vorlagen. Der wachsende Umfang sicherheitskritischer Elektronik in heutigen Fahrzeugen hat zusammen mit wachsenden Prozesskosten für den Fall, dass die -Bemühungen zur Software-Qualitäts-sicherung nicht nachgewiesen werden können, zur Folge, dass viele dieser Entwickler inzwischen auf anerkannte externe Richtlinien setzen. MISRA, eine von der Ford Motor Company und der Rover Group definierte Untermenge der C-Sprache, ist seitdem zu einer Codierungs-Basis für viele sicherheitskritische Normen geworden. ISO 26262 schreibt die Anwendung von MISRA C nicht ausdrücklich vor. Die aktualisierten Richtlinien enthalten allerdings anerkannte Verfahrensweisen, um Automobilherstellern dabei zu helfen, diverse sicherheitskritische Risiken zu minimieren. MISRA C:2012 eröffnet Programmierern neue Möglichkeiten, indem sie eine flexiblere Anwendung der Sprache bei gleichzeitiger hoher Sicherheit gestattet.

Zeit sparen durch reduzierten Compliance-Aufwand

MISRA C war ursprünglich im Jahr 1998 (MISRA C:1998) für C90 eingeführt worden. 2004 wurde sie durch die Version MISRA C:2004 ersetzt, die mit einer Vielzahl von Ergänzungen und Verbesserungen aufwartete. Mit der MISRA C:2012 wird das Ziel verfolgt, die Entwicklung über verschiedene Projekte oder Code-Elemente hinweg so vorhersagbar wie möglich zu machen, ohne dass es zu Interpretationsfehlern kommt. Reproduzierbarkeit und Vorhersagbarkeit sind die entscheidenden Triebfedern. Selbst ein Entwicklungs-Team mit mehreren Subunternehmern kann, wenn sich diese an die MISRA-Richtlinien halten, darauf vertrauen, dass der gesamte Code des Projekts konsistent ist. Die Einhaltung der neuen Richtlinien - egal, ob diese als Regeln oder als Direktiven eingestuft sind - hilft den Programmierern bei der Abmilderung Software-bezogener Risiken in sicherheitskritischen Applikationen. Letztendlich können die Programmierer hierdurch mehr Zeit für das eigentliche Codieren verwenden, weil sie weniger Zeit in Compliance-Maßnahmen investieren müssen.

Vorteile von MISRA C:2012

In MISRA C:2012 sind die Richtlinien präziser gefasst. Damit wird erreicht, dass die Norm keine sinnvollen Verwendungen oder Verhaltensweisen, die erwünschte Konsequenzen nach sich ziehen, unterbindet. Somit lassen sich unnötig restriktive Regeln verhindern. Während in der MISRA C:2004 nur von Regeln die Rede war, unterteilt die MISRA C:2012 die Richtlinien in Regeln und Direktiven. Unter einer Direktive ist dabei eine Richtlinie zu verstehen, für die sich eine vollständige, für die Compliance-Prüfung erforderliche Beschreibung nicht erbringen lässt. Nach der Definition des neuen Standards beziehen sich Regeln außerdem auf die Analyse eines Systems oder einer einzelnen Übersetzungseinheit.

Alle Richtlinien enthalten nun zusätzlich eine detaillierte Begründung, die es den Entwicklern ermöglicht, die Notwendigkeit der Richtlinie zu verstehen, anstatt über die mit ihr verbundenen Beweggründe spekulieren zu müssen.

Die aktualisierte Version informiert die Entwickler außerdem, ob eine Regel entscheidbar ist oder nicht. Im ersten Fall kann ein Analysewerkzeug stets feststellen, ob die Regel eingehalten wurde oder nicht. Im zweiten Fall muss das ein Mensch prüfen. Das erfolgt üblicherweise dann, wenn Zeiger oder Datenwerte Einfluss auf den Kontrollfluss haben, wie Bild 2 verdeutlicht.

Nicht entscheidbare Regeln können schon allein deshalb zu falsch positiven oder falsch negativen Testergebnissen führen, weil dem Werkzeug während der Analyse nur unzureichende Informationen zur Verfügung stehen. Diese Verbesserung in der Regeldefinition minimiert den manuellen Code-Prüfungs-Aufwand erheblich und teilt den Entwicklern frühzeitig mit, ob eine andere Prüfmethode zum Einsatz kommen soll.

Beweggründe zur Einführung einer neuen MISRA-Version

 
 Wann immer Codierungs-Praktiken oder Standards aktualisiert werden, müssen die Entwickler neue Richtlinien erlernen und ihre Tools und Programmiermethodiken auf den aktuellen Stand bringen. Vorteile: Die Regeln werden verbessert, die Unterstützung für die neueste Sprachversion wird ausgebaut und der insgesamt entstehende Entwicklungsaufwand verringert sich. Mit der Einführung von MISRA C:2012 wurden folgende Ziele realisiert:

- Erweiterung der Codierungs-Richtlinien, um unsicheren Elementen von C99 Rechnung zu tragen, gleichzeitig aber die Unterstützung für C90 beizubehalten.
- Unterstützung und Aufwertung der verbesserten Definition von nicht definiertem oder nicht spezifiziertem Verhalten in C99.
- Behebung der in der 2004er-Version gefundenen Probleme.
- Sicherstellung einer möglichst weitreichenden Abwärtskompatibilität, um beim Übergang von MISRA C:2004 auf MISRA C:2012 ohne Modifikation des Codes auszukommen.
- Sicherstellung, dass es für alle Richtlinien eine detaillierte Begründung gibt, und Entfernung von Regeln ohne belastbare Begründung.
- Erhöhung der Zahl entscheidbarer Regeln, um eine bessere zwingende Vorgabe von Tools zu ermöglichen und den manuellen Prüfaufwand zu verringern, was Zeit und Geld sparen hilft.
- Einbeziehung von Hinweisen zur Anwendbarkeit von Richtlinien auf automatisch generierten Code.