Durchgängige Modellierung und Codegenerierung für eingebettete Systeme

Der Entwurf von Softwaresystemen mit der Modellierungssprache UML (Unified Modeling Language) hat sich in vielen Anwendungsbereichen etabliert. Anfangs nur als graphische Notation genutzt, ermöglichen inzwischen verschiedene Werkzeughersteller das Generieren von lauffähigem Programmcode aus UML-Modellen. Um solchen Programmcode auch für eingebettete Systeme nutzen zu können, müssen Codegenerator und Laufzeitumgebung hinsichtlich der Laufzeiteffizienz optimiert werden. Darüber hinaus ergeben sich bei der modellbasierten Entwicklung neue Fragen bezüglich der Abstraktion von Hardware, um Anwendungsmodelle wiederverwenden zu können.

Das Fraunhofer ESK hat in Kooperation mit der AUDI AG die durchgängige Modellierung und Codegenerierung anhand des Werkzeugs IBM Rational Rhapsody für eingebettete Systeme untersucht. Neben der Analyse der verschiedenen Laufzeitumgebungen wurden speziell die verschiedenen Modellierungsmöglichkeiten betrachtet. Ein Hauptaugenmerk lag auf der Suche nach Lösungen zur Hardwareabstraktion.

© Foto panthermedia.net / Kittikun Atsawintarangkul
© Foto Fraunhofer ESK

Die Einführung der Hardwareabstraktion erlaubt eine hohe Wiederverwendbarkeit von Anwendungsmodellen.

Modellierungsumgebung

Zur Generierung von Programmcode aus UML-Modellen sind drei Komponenten notwendig: Das Modellierungswerkzeug, der Codegenerator und das Laufzeitframework. Das Modellierungswerkzeug zeigt mittels graphischer Notation ein Modell des Systems an. Oft stellt es auch UML-Erweiterungen zur Verfügung, um die Codegenerierung zu konfigurieren. Der Codegenerator erstellt basierend auf dem Modell und der Konfiguration den Programmcode. Das Laufzeitframework wiederum bildet die Modellierungskonzepte auf entsprechende Laufzeitkomponenten ab.

Analyse von UML-Laufzeitframeworks

Modellierungswerkzeuge und Codegeneratoren lassen gewöhnlich nur wenige Spielräume für anwendungsspezifische Anpassungen. Das hier untersuchte Rhapsody ermöglicht z. B. nur die Wahl zwischen C und C++ Codegenerierung.
Eine größere Auswahl von Alternativen bieten einsetzbare Laufzeitframeworks. Diese unterscheiden sich hinsichtlich der Leistungsfähigkeit, der unterstützten Mikrocontroller und der Möglichkeiten zur Anpassung an spezielle Hardware. Je kompakter das Laufzeitframework ist, desto einfacher gestaltet sich die Anpassung an neue Hardware. Die Herausforderung für Framework-Hersteller besteht darin, eine ausgewogene Kombination aus Leistungsumfang sowie Anpassungsfähigkeit zu finden. Daher sollte vor der Wahl des Laufzeitframeworks eine umfangreiche Analyse stattfinden, die besonders die Hardware sowie deren Einsatzzweck fokussiert. Zu berücksichtigende Rahmenbedingungen sind z. B. die Leistungsfähigkeit des Prozessors, verfügbare Compiler und vorhandene Betriebssysteme.

Nach einer ersten Untersuchung konnten verschiedene Laufzeitframeworks für eingebettete automobile Systeme in die engere Auswahl gezogen werden. Um qualitative Entscheidungskriterien zu erhalten, haben die Forscher die Frameworks hinsichtlich ihrer Performance-Eigenschaften wie Laufzeit- und Speichereffizienz verglichen. Die Laufzeiteffizienz wurde mittels generierter Statecharts untersucht, welche eine unterschiedliche Anzahl von Zuständen und Transitionen besaßen. Als Bewertungsgrundlage der Speichereffizienz diente hauptsächlich die Codegröße des Frameworks und der Statecharts.

Notwendigkeit einer Hardwareabstraktion

Um Anwendungsmodelle wiederverwenden zu können, muss die zugrunde liegende Hardware abstrahiert werden. Beispielsweise sollte das Anwendungsmodell unabhängig davon sein, ob sich ein betätigter Schalter am Gerät selbst oder im Netzwerk befindet. Bei der Untersuchung verschiedener Abstraktionsmechanismen hat sich gezeigt, dass insbesondere Signale als ausdrucksstarke Abstraktionsmechanismen geeignet sind. Für das Anwendungsmodell ist dadurch die eigentliche Quelle des Signals irrelevant, nur der vorgegebene Datentyp wird von der modellierten Komponente erwartet. Abhängigkeiten zwischen der Hardware und Anwendung können hiermit definiert und separiert werden.

UML-Codegenerierung im Einsatz

In dem mit Audi durchgeführten Projekt konnten die Wissenschaftler des Fraunhofer ESK zeigen, dass sich bestehende UML-Werkzeuge sowie Laufzeitframeworks zum Entwurf und zur Codegenerierung von automobilen eingebetteten Systemen nutzen lassen. Es ist jedoch notwendig, diese unter Berücksichtigung der jeweils spezifischen Anforderungen zu untersuchen.

Die Wissenschaftler haben ihre gewonnenen Erkenntnisse in die prototypische Umsetzung einer Hardwareabstraktion einfließen lassen. Dadurch konnten sie die Vorteile einer Hardwareabstraktion nachweisen und verschiedene Ansätze zur Implementierung umsetzen. Die Trennung des Anwendungsmodells von der darunter liegenden Hardware ermöglicht eine Wiederverwendung selbst bei umfangreichen Änderungen der System- und Hardwarearchitektur und erlaubt somit eine Kostenreduktion im Entwicklungsprozess.

Modellgetriebene Werkzeugketten

Anhand der durchgeführten Untersuchungen hat sich die Eignung modellbasierter Entwicklung mit UML für eingebettete Systeme im Automotive-Bereich bestätigt. Weitere, zukünftige Arbeiten richten sich auf den Aufbau durchgängiger Werkzeugketten mit frühzeitigen, modellgetriebenen Analysemöglichkeiten, die einen effizienten und sicheren Entwicklungsprozess ermöglichen. Das Fraunhofer ESK unterstützt Projektpartner und Auftraggeber bei der Evaluierung, dem Aufbau und der Überführung solcher Frameworks in die Unternehmenspraxis.