Verantwortung und Nachhaltigkeit stehen derzeit in nahezu allen Bereichen unserer Lebenswelt im Fokus. Auch im Embedded-Kontext müssen sie zur zentralen Handlungsmaxime werden. Ein Blick in die Praxis zeigt jedoch vielerorts ein geradezu gegenläufiges Bild: Die Komplexität von Softwareprojekten in kritischen Branchen wie dem Automotive-Sektor oder der Medical-Device-Industrie steigt unaufhaltsam an, ein immer stärkerer Fokus liegt dabei auch auf visuell ansprechenden User-Interfaces.
Entwicklungen wie diese blähen die Code-Basen immer weiter auf, die IT-Teams effizient bewältigen müssen. So halten derzeit gar mehr und mehr Engines und Tools aus der Gaming-Welt Einzug in die Embedded-Branche, deren Stärken in Effizienz und Leistung liegen. Doch während Bugs oder Fehlfunktionen in Videospielen allenfalls ärgerlich sind, können sie in sensiblen Embedded-Anwendungen im schlimmsten Fall Menschenleben gefährden. Für eine moderne Embedded-Entwicklung gilt es daher, sowohl Leistung als auch Sicherheit und Nachhaltigkeit in sinnvoller Weise zusammenzubringen.
Weitere C11/C18-Features für mehr Sicherheit und Portierbarkeit
Der Compliance-Standard für funktionale Sicherheit, MISRA C, zählt zu den zentralen Regularien für die Software-Entwicklung in sicherheitskritischen Embedded-Branchen. Das im Oktober 2022 erschienene MISRA-C:2012-Amendment 3 bietet nun erstmals Richtlinien für den Umgang mit C11- beziehungsweise C18-Features, die bislang für Entwickler, die Compliance zu MISRA C sicherstellen mussten, nicht zur Verfügung standen. Durch die neuen Richtlinien können Projekte diese nun sicher nutzen. Dazu zählen beispielsweise das Alignment von Objekten und der Einsatz von No-Return-Funktionen.
Auch die Nutzung der Features zum Schreiben von typengenerischem Code ist nun geregelt und damit möglich. Dieser bezeichnet beispielweise Funktionen, die nicht auf die Nutzung und Verarbeitung bestimmter Datentypen wie Integer oder String festgelegt sind. Stattdessen kommen Makro-Ausdrücke zum Einsatz, wodurch die Funktion deutlich flexibler genutzt werden kann. Dies erhöht unter anderem die Portierbarkeit des Codes, sodass dieser zum Beispiel im Automotive-Kontext einfacher von einem Chipset – und damit Fahrzeug – zum anderen übertragen werden kann.
Darüber hinaus bietet der Standard auch weiterführende Richtlinien für Sprach-Features, die für alle Versionen von C gelten. Dazu zählt beispielsweise die Nutzung des Random Number Generator, der es ermöglicht, echte Zufallszahlen im Code zu nutzen. Dies wiederum erhöht die Sicherheit in sensiblen Bereichen der Automotive- oder Medical-Device-Branche, zum Beispiel durch die Generierung von sicheren Verschlüsselungs-Keys für drahtlose Updates oder die Übertragung von sensiblen Daten.
Mithilfe der Lösungen von Perforce – selbst MISRA-Mitglied – lässt sich die Einhaltung des Standards jetzt auch inklusive der neuen Richtlinien aus Amendment 3 umfassend in der Praxis prüfen und sicherstellen.
Expertenvorträge zu MISRA-Versionen und typengenerischem Code
Um die entsprechenden Themen zu vertiefen, beteiligt sich Perforce Software zudem mit zwei Expertenvorträgen am Konferenzprogramm der Embedded World:
„Genericity vs. Explicitness in C, for Maintainable and Correct Code”: Die klassische C-Sprache bietet Entwicklern nur wenig Möglichkeiten, typengenerischen Code zu schreiben. Dies ändert sich nun mit neuen Funktionalitäten von C11 und C23. Alex Gilding, Senior Software Engineer bei Perforce Software, untersucht am 14. März von 14:15 bis 14:45 Uhr, was dies für die Codequalität in Bezug auf Wartbarkeit, Korrektheit und Klarheit bedeutet, und wägt dabei auch den Umstieg auf einen typengenerischen Stil in C gegen eine Weiternutzung eines typenexpliziten Stils ab. Dabei geht sie auch auf die Perspektive von MISRA ein, die klassischerweise Klarheit auf Operations-Ebene für Software-Code einfordert.
„Compliance MISRA C++2x vs. MISRA C++08“: Compliance mit dem MISRA-C++08-Standard ist in vielen sicherheitskritischen Projekten obligatorisch, doch dieser bot Richtlinien für Software, die in C++03 geschrieben wurde. Seit der Veröffentlichung von MISRA-C++08, hat sich die C++-Sprache jedoch stark gewandelt. Projekte, in denen spätere Versionen als C++03 zum Einsatz kommen, können daher unter Umständen keine Compliance zu allen Regeln von MISRA C++ 2008 erreichen. Darüber hinaus können sicherheitskritische Features bestehen, die vom Standard nicht abgedeckt sind. Entsprechend entwickelt die MISRA-C++-Arbeitsgruppe derzeit ein Update für MISRA C++, das sich auf C++ 2017 anwenden lässt. In seinem Vortrag am 15. März von 17:00 Uhr bis 17:30 Uhr stellt Dr. Frank van den Beuken, Principal Technical Support Engineer, Static Code Analysis bei Perforce Software, die zentralen Richtlinien in den MISRA-C++-Versionen einander gegenüber und beleuchtet, was die Aktualisierung für die Compliance bestehender Projekte bedeutet.
Perforce Software auf der Embedded World 2023
Alle Produktneuheiten von Perforce Software rund um die Themen Sicherheit, Effizienz und Nachhaltigkeit in der Embedded-Entwicklung präsentieren die Experten des Unternehmens interessierten Fachbesuchern am Unternehmensstand 4-510 in Halle 4.