Experteninterview

Die 10 wichtigsten Fragen zu MISRA-C++:2008

12.02.2009 | Redakteur: Martina Hafner

Fergus Bolger ist CTO bei Programming Research, Anbieter von Tools zur Überprüfung von Programmierstandards in C und C++. Er war mit seinem Unternehmen aktiv an der Entwicklung der MISRA-C++-Richtlinien beteiligt. Partner von Programming Research im deutschsprachigen Raum ist die QA Systems GmbH mit Sitz in Stuttgart, die auch bei der Entstehung dieses Interviews mitwirkte.
Fergus Bolger ist CTO bei Programming Research, Anbieter von Tools zur Überprüfung von Programmierstandards in C und C++. Er war mit seinem Unternehmen aktiv an der Entwicklung der MISRA-C++-Richtlinien beteiligt. Partner von Programming Research im deutschsprachigen Raum ist die QA Systems GmbH mit Sitz in Stuttgart, die auch bei der Entstehung dieses Interviews mitwirkte.

Im Juni 2008 wurde mit MISRA-C++:2008 ein Regelsatz für die Programmierung in C++ veröffentlicht. Fergus Bolger, CTO der Programming Research Group, gibt im Interview Auskunft über die Bedeutung und Möglichkeiten dieses neuen Standards.

Herr Bolger, warum braucht man Programmierstandards wie MISRA-C++?

Alle Programmiersprachen haben Schwachstellen, insbesondere die mächtigen und vielseitig einsetzbaren Sprachen C und C++. Die Fortschritte in der Entwicklung vieler Rechnerplattformen und besonders im Bereich Embedded- und Systemsoftware haben dazu beigetragen, dass C++ bevorzugt für die Programmierung komplexer Entwicklungsumgebungen eingesetzt wird. C++ hat inhärente Schwachstellen, und auch die bekannten Kompatibilitätsprobleme von C darf man nicht außer Acht lassen. Programmierstandards bieten Schutz vor solcher Problematik und helfen Entwicklern, die Sprache sicherer anzuwenden.

Können Sie uns etwas über die Entstehung von MISRA-C++ erzählen?

Die Wurzeln von MISRA-C++ liegen in den äußerst erfolgreichen MISRA-C-Programmierrichtlinien. Dieser Standard wurde erstmals 1998 veröffentlicht und 2004 umfangreich aktualisiert. Mittlerweile wird er in vielen verschiedenen Bereichen angewendet, und man kann ohne jede Übertreibung sagen, dass MISRA-C der weltweit erfolgreichste Best-Practice-Industriestandard für Programmierrichtlinien in der C-Entwicklung ist. MISRA-C++ soll diesen Erfolg für die C++-Entwicklung fortsetzen.

Was ist der Schwerpunkt des neuen MISRA-C++?

Es ist interessant zu beobachten, wie sich Programmierstandards entwickeln, besonders die proprietären. Viele werden zu einer Art Style-Guide, der einerseits großen Wert auf Layout und Namenskonventionen legt, andererseits aber kaum Ratschläge bietet, wie Entwickler die inhärente Gefahr der jeweiligen Sprache erkennen und die Sprache sicher anwenden können. MISRA-C++ wurde mit der klaren Anforderung entwickelt, dass jede Regel einen Sicherheitsnachweis enthalten muss, um aufgenommen zu werden. Kein Leistungsmerkmal der Sprache wurde verboten, und der Regelsatz deckt alles ab — vom Präprozessor bis hin zu Templates, redundantem Code oder Vererbung.

Wer war an der Entstehung von MISRA-C++ beteiligt?

Da MISRA-C++ seinen Ursprung in der MISRA-C-Initiative hat, bestand das Komitee zunächst aus den daran beteiligten Unternehmen. Dazu gehörten natürlich Anbieter von Software-Tools, denen naturgemäß sehr an der Durchsetzung eines Programmierstandards lag. (Wer würde die Einhaltung solcher Regeln schon manuell überprüfen wollen?). Programming Research hat sich schon immer in der Entwicklung von Sprach- und Programmierstandards engagiert und war eines der 4 bis 5 aktiven Mitglieder. Da wir stark auf die Sprache C++ fokussiert und stimmberechtigtes Mitglied in den ISO-Sprachstandard-Komitees sind, konnten wir einen guten Beitrag zu MISRA-C++ leisten, indem wir unseren erfahrensten Vertreter aus dem ISO-C++-Komitee zur Verfügung stellten .

Welche Bereiche deckt MISRA-C++ ab?

Der Schwerpunkt liegt auf sicheren Programmiertechniken. Die Richtlinien decken alle Bereiche der Sprache ab, und es ist sehr ermutigend, dass keines der Leistungsmerkmale entfernt wurde. Hauptziel war es, die Sprache sicher zu machen, anstatt sie einzuschränken. Sie werden auch keine Stilvorgaben finden, ebenso wenig wie subjektive Richtlinien. Ich persönlich finde die Regel am besten, die die weit verbreitete goto-Anweisung nicht einfach verbietet. MISRA-C++ erlaubt diese Anweisung, schränkt jedoch ihre Nutzung ein und vermeidet so die Komplexitätsprobleme, die durch die Anwendung von goto bei der Programmierung von Schleifen auftreten können.

Ein sehr wichtiges Element in MISRA-C++ war der 2001 vom ISO-C++-Komitee erstellte Performance Report. Er skizziert eindeutig die Kosten, die durch die Verwendung verschiedener Sprachkonstrukte entstehen können, und entkräftet das Gerücht, C++ enthielte Merkmale, die in einem ressourcenbeschränkten System zu extrem hohen Kosten führen können.

Was sind die Unterschiede zu anderen Standards, wie z.B. Industrial Strength C++, JSF AV++ oder den Regelempfehlungen von Scott Meyers?

Interessanterweise ist MISRA-C++ tief in einigen dieser früher veröffentlichten Standards verwurzelt. Als das Komitee geeignete und anwendbare Richtlinien zusammenstellte, prüfte es auch andere Standards, wie z.B. JSF AV++ (Lockheed Martin), High Integrity C++ (HICPP) von Programming Research, MISRA-C (2004) sowie weitere Programmierrichtlinien von Einzelpersonen oder Unternehmen.

HICPP nimmt besonders Bezug auf einige Richtlinien, die aus weit verbreiteten und zuverlässigen Quellen stammen, wie z.B. Büchern von Scott Meyers, sowie auch auf die inzwischen etwas überholten Industrial-Stength-C++-Richtlinien, die deshalb im Wesentlichen auch als Quellen in MISRA-C++ aufgenommen wurden.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 285809 / Software-Entwurf & Echtzeit-Design)