MISRA C: Quasi-Standard nicht nur für Automotive

Seite 2: Fazit

Inhaltsverzeichnis

Ein wesentliches Merkmal für Kodierungsregeln ist, wie sich ihre Einhaltung prüfen lässt. Je besser statische Analysetools die Prüfung der Regelkonformität automatisieren können, desto effektiver ist die Programmierung. Erstmals unterscheidet MISRA C in seiner neuen Version zwischen Regeln und Anordnungen. Die 143 Regeln sind präzise definierte Anforderungen, die sich ausschließlich durch eine Analyse des Quellcodes durchsetzen lassen. Die 16 Anordnungen (Directives) in MISRA C:2012 sind weniger exakt definiert. Ob sie eingehalten wurden, obliegt in gewissem Maße subjektiver Beurteilung, oder sie verweisen auf die Design-Dokumentation. Beispiele für Anordnungen sind:

  • Codeabschnitte dürfen nicht herauskommentiert werden;
  • Assembleranweisungen sollen gekapselt und isoliert sein, oder
  • Vorsichtsmaßnahmen sollen getroffen werden, damit der Inhalt der Header-Datei nicht mehr als einmal erscheint.

Alle MISRA-Richtlinien enthalten eine detaillierte Begründung. Damit wird es Entwicklern möglich zu verstehen, weshalb eine einzelne Richtlinie notwendig ist.

Die Regeln im Regelwerk gibt es in zwei weiteren Regelkategorien. Ob ein Code MISRA-konform ist, lässt sich zum Teil an einzelnen Codesequenzen ermitteln (Single Translation Units). Andere Prüfungen erfordern eine erheblich umfassendere Analyse, unter Umständen unter Einbeziehung der gesamten Codebasis. Hier spricht man von Systemregeln in MISRA C:2012.

Automatisierte Checks ermöglichen die Umsetzung eines komplexen Regelwerks wie MISRA ohne viel Overhead,

Unabhängig davon, wie gut die Regeln definiert sind, kann niemand mit letzter Sicherheit gewährleisten, dass sie auch tatsächlich eingehalten wurden. Bei Analysewerkzeugen unterscheidet man zwischen entscheidbaren (decidable) und nichtentscheidbaren (un-decidable) Regeln. Eine entscheidbare Regel ist eine, bei der das Analysewerkzeug immer zweifelsfrei entscheiden kann, ob eine Regel verletzt wurde – der Vorgang der Beschlussfindung erfolgt automatisiert. Bei nichtentscheidbaren Regeln gibt es dagegen Situationen, bei denen auch eine noch so umfangreiche Analyse keine eindeutige Diagnose liefern kann. Hier muss die Prüfung durch einen Menschen erfolgen. Vor diesem Hintergrund sind in MISRA C:2012 die Richtlinien präziser gefasst. Wenn eigene Standards keine unerwünschten Konsequenzen haben, können sie weiter Anwendung finden.

Richtig eingesetzt ist MISRA C2012 alles andere als ein Gängelband für Entwickler. Der neue Standard schafft eine wohl definierte Basis für die Entwicklung sicherheitskritischer Applikationen. Zusammen mit den passenden Werkzeugen können Entwicklerteams ihr Regelwerk passgenau auf ihre Anforderungen anpassen. Ob sie nun hauseigene Regeln ergänzen oder bestimmte MISRA-Regeln außer Kraft setzen – der Standard lässt den Teams unter bestimmten Voraussetzungen viele Freiheiten.

Andreas Sczepansky
ist geschäftsführender Gesellschafter von QA-Systems. Das Unternehmen vertreibt unter anderem QA-C, ein MISRA-konformes Tool zur statischen Codeanalyse.
(ane)