Genauso wie physikalische Komponenten einer statistischen Analyse zur Bestimmung der Ausfallzeit bedürfen, muss auch untersucht werden, inwieweit für Software eine Ausfallzeit tolerierbar ist. Der MISRA-C-Standard hat viel dazu beigetragen, Qualität in der Software-Entwicklung überprüfbar zu machen.
Genauso wie physikalische Komponenten einer statistischen Analyse zur Bestimmung der Ausfallzeit bedürfen, muss auch untersucht werden, inwieweit für Software eine Ausfallzeit tolerierbar ist. Der MISRA-C-Standard hat viel dazu beigetragen, Qualität in der Software-Entwicklung überprüfbar zu machen.
Die Programmiersprachen C und C++ haben sich auch in der Automobilindustrie für die Entwicklung von Echtzeit-Anwendungen bei der Embedded-Software etabliert. Um die Verwendung von „sicherem C“ in der Automobilindustrie voranzutreiben, hat die englische Motor Industry Software Reliability Association (MISRA) 1998 einen eigenen „C-Standard“ veröffentlicht. Nach mehreren Aktualisierungen wurde er 2004 als MISRA-C:2004 freigegeben. MISRA-C nimmt bezüglich des Einsatzes von C in sicherheitskritischen Systemen nicht Stellung, versucht aber, die Verwendung der Sprache mit der größtmöglichen Zuverlässigkeit zu unterstützen. In ähnlicher Weise wird mit C++ verfahren, d.h., es wird kein Urteil darüber abgegeben, ob C++ für Einsätze außerhalb der seit 2004 veröffentlichten Richtlinien geeignet ist oder nicht. Da die objektorientierte Variante C++ in der Automobilindustrie eine immer größere Rolle spielen wird, wird auch an dieser Stelle der Standard MISRA-C++:2008 an Bedeutung gewinnen.
Wie sehen die Regeln aus?
Für jede Regel enthält MISRA-C eine Regelnummer, eine Kategorie, einen Anforderungstext sowie einen Quellverweis. Der Beweggrund für die Regel wird vorangestellt – typischerweise auch ein Beispiel für Code, welcher der Regel nicht genügt (Tabelle 1). Auch MISRA-C++:2008 folgt einem ähnlichen Stil (Tabelle 2):
Die Zusammenstellung der MISRARegeln hat sich als ungemein nützlich erwiesen. Der Standard MISRA-C schafft die Voraussetzung für gute Programmierarbeit, die Einhaltung von Codierregeln, der Messung der Komplexität des Codes und der Code-Überdeckung. Bei vielen Zulieferern und OEMs kommt der MISRA-Standard in der Software-Entwicklung bereits zur Anwendung. Ohne ein passendes Verfahren, diese Regeln automatisch auf einen Code anzuwenden, war die Auswirkung dieser Regeln auf die Software-Qualität gering.
Testwerkzeug zur statischen Analyse
Die LDRA Software Technology, spezialisiert auf das automatische Testen von Software, hat 90 Prozent der insgesamt 141 MISRA:2004-Regeln in ihr TBmisra-Testwerkzeug integriert. Damit sich der Entwickler auf das Werkzeug zur statischen Analyse seines Codes verlassen kann, muss der Werkzeug-Lieferant den Nachweis führen, dass der Validierungstest für das Werkzeug die MISRA-Regeln erfüllt. Code, der die Richtlinien nicht erfüllt, ist hervorgehoben, so dass er dokumentiert und anschließend leicht modifiziert werden kann. Nützliche alphanumerische und grafische Berichte verbessern das Verständnis des Quell-Codes und führen somit zur Verbesserung der Testbarkeit, dem Auffinden von Fehlern und ihrer anschließenden Behebung. ms