Modellierung und Generierung für Embedded Software mit eTrice

Modellierung bringt Produkte schneller auf den Markt

Das Open Source Projekt Eclipse eTrice stellt ein Modellierungswerkzeug für Embedded Software zur Verfügung. Modelleditoren, Codegeneratoren und Laufzeitbibliotheken für die Zielsprachen C, C++ und Java ermöglichen modellgetriebene Entwicklung von Embedded Systemen. Die verwendete Modellierungssprache ist Real-Time Object-Oriented Modelling (ROOM). PROTOS leitet dieses Eclipse Projekt und stellt den Großteil der Entwickler.

Lesen Sie mehr

Warum Modellierung von Software?

Nach wie vor wird ein großer Teil neuer Software von Hand in der jeweiligen Zielsprache geschrieben. Diese Vorgehensweise erlaubt es, sehr spezifische Lösungen für vorliegende Programmieraufgaben umzusetzen.

Auf der anderen Seite gibt es seit mehreren Jahrzehnten den Ansatz, Software zu modellieren und den Quellcode aus diesen Modellen zu generieren. Als Beispiel hierfür sei die Familie der Matlab Werkzeuge genannt.

Voraussetzung für den sinnvollen Einsatz von Modellierung und Codegenerierung in der Softwareentwicklung ist, dass man es mit einer Klasse ähnlich gelagerter Probleme zu tun hat. Beispiele hierfür sind die Programmierung von Reglern oder das Erstellen und Gestalten von User Interfaces aus einer Bibliothek von Widgets und Layout-Komponenten.

Unter den genannten Voraussetzungen bietet Modellierung und Codegenerierung im Bereich der Softwareentwicklung im Allgemeinen folgende Vorteile:

  • Unterstützung standardisierter Vorgehensweisen und damit bessere Planbarkeit
  • Weitgehende Fehlerfreiheit bei einem gut validierten Codegenerator
  • Konzentration auf das Wesentliche
  • Der Entwickler muss keine sich wiederholenden Textbausteine herunter programmieren
  • Automatische Verwendung bewährter Methoden
  • Erhöhte Entwicklungsgeschwindigkeit
  • Dokumentation durch das Modell selbst und auch als Dokument generierbar

Abstraktion und Automation

Die Vorteile von Modellierung und Codegenerierung gehen letztlich auf ein Prinzip zurück, das wir „Abstraktion und Automation“ nennen können und das im folgenden Diagramm schematisch gezeigt wird.

Abstraktion und Automation

Besonderheiten von eTrice

Textueller Editor für Modelldateien

Die Modelle sind in rein textueller und leicht lesbarer Form gespeichert. Die textuelle Notation basiert auf ROOM. Es gibt einen reichhaltigen Editor mit Hervorhebung von Schlüsselworten, Inhaltsassistent, Überblicksansicht und einer Bibliothek an Textbausteinen.

Modelle können andere Modelle importieren und erlauben damit die Erstellung von Bibliotheken in beliebiger Granularität.

Ein weiterer Vorteil der textuellen Modelle besteht darin, dass sich bei der Arbeit mit einem Versionskontrollsystem gegebenenfalls entstehende Merge-Konflikte leicht auflösen lassen.

Grafischer Editor für die Struktur

Mit diesem Editor lässt sich alternativ zur textuellen Darstellung die Struktur auch bequem in einem Diagramm editieren. Das Diagramm basiert auf dem textuellen Modell und modifiziert dieses, das Layout wird jedoch separat gespeichert. Die grafische Notation ist Bestandteil von ROOM.

Grafischer Editor für State-Machines

Zustandsautomaten, insbesondere hierarchische, sind in einer Diagrammdarstellung sehr viel übersichtlicher als in reinem Text. Hiermit lassen sich alle Elemente einfach erzeugen und arrangieren. Das Diagramm basiert auf dem textuellen Modell und modifiziert dieses, das Layout wird jedoch separat gespeichert. Die grafische Notation ist Bestandteil von ROOM.

Code Generatoren

eTrice besitzt Codegeneratoren in die Zielsprachen C, C++ und Java. Die Generierung in C ist dabei für Target Hardware mit knappen Ressourcen ausgelegt.

Laufzeitbibliotheken

Die Laufzeitbibliotheken beinhalten Infrastruktur wie Messaging und Debug-Unterstützung, wie etwa die Generierung von Sequenzdiagrammen aus der laufenden Anwendung. Da eTrice innerhalb der Eclipse IDE bestens mit JDT bzw. CDT integriert, sind sehr kurze Zyklen bei der Entwicklung möglich.

Mastering Software Complexity

Nutzen von eTrice: Beherrschung von Komplexität

Die große Herausforderung bei der Entwicklung von Echtzeit-Software besteht in deren beträchtlicher Komplexität, die in einer ganzen Reihe verschiedener Aspekte zutage tritt. Das Eclipse Open Source Projekt eTrice hilft Ihnen durch seine Beschränkung auf das Wesentliche wie auch durch seine einfachen, klaren und gleichwohl mächtigen Konzepte, diese Komplexität zu bewältigen.

  • Strukturelle Komplexität
    • Modellierung der Systemarchitektur als hierarchische, statische Struktur.
  • Komplexität des Verhaltens
    • Verwendung hierarchischer Zustandsautomaten (FSM).
  • Zusammenarbeit
    • Die Trennung von Schnittstelle und Implementierung erleichtert die Aufteilung der Arbeit im Projekt.
    • Die textuelle Notation eignet sich ausgezeichnet zum Einsatz mit einem Versionskontrollsystem.
  • Komplexität nebenläufiger und verteilter Systeme
    • Schwach gekoppelte, asynchron kommunizierende Komponenten (Aktoren in ROOM) lassen sich leicht auf Threads, Prozesse und Knoten aufteilen.
  • Varianten und Wiederverwendung, Produktlinien
    • Aktoren sind prädestiniert für ihre Wiederverwendung in neuen Systemen und Strukturen.
    • Aktoren werden durch die Verwendung von Protokollen und Ports austauschbar.
    • Variantenbildung durch Vererbung auf Modellebene: Protokolle, Aktoren, State-Machines.
    • Erstellung von Modellbibliotheken.
  • Fehlersuche
    • Fehlersuche auf Modellebene: Animation von State-Machines, Darstellung und Bearbeitung von Daten, Injektion von Nachrichten, generierte Sequenzdiagramme.
    • Automatisiertes Model-Checking hilft Fehler zu finden bevor sie auftreten.

Integration und Erweiterbarkeit

Ein wesentliches Merkmal von eTrice ist seine Auslegung auf und Offenheit für Integration. Dies umfasst ganz unterschiedliche Aspekte, auf die im Folgenden eingegangen werden soll.

Integration mit Matlab

eTrice eignet sich nicht nur für ereignisgetriebene Systeme. In Ergänzung zu der nachrichtenbasierten Kommunikation aus ROOM bietet eTrice die Möglichkeit, auch datenorientiert zu kommunizieren. Damit erlaubt eTrice die Kapselung regelungstechnischer Elemente in Aktoren und deren Integration in ein ansonsten ereignisgetriebenes System. So lassen sich etwa Modelle aus der Matlab-Familie problemlos in mit eTrice modellierte Systeme integrieren,

Integration mit manuellem Code

Standardmäßig wird das Verhalten von eTrice-Aktoren über Finite State Machines modelliert. Es ist jedoch ebenso möglich, das Verhalten manuell zu implementieren. Eine einfache Annotation im Modell weist den Codegenerator an, den Code entsprechend zu erzeugen.

Integration mit anderen Eclipse-basierten Werkzeugen

Die Eclipse IDE ist nicht zuletzt eine Plattform zur Integration von Werkzeugen. So lässt sich eTrice bequem im Verein mit CDT bzw. JDT (je nach Zielsprache) verwenden. Aber da z.B. auch Chip-Hersteller häufig eine Eclipse-basierte IDE anbieten, lässt sich eTrice auch dort integrieren.

Basis für andere Werkzeuge

Selbstverständlich integriert eTrice auch mit anderen Modellierungswerkzeugen. So baut etwa CaGe, das Modellierungswerkzeug für Tests aus dem Protos miniHIL Produkt, auf eTrice auf. Testabläufe werden von diesem als ROOM-Modell generiert, woraus eTrice dann den Target-Code generiert.

Das Open-Source-Projekt Eclipse Franca erlaubt aus spezifizierten Interfaces eTrice-Aktoren zu generieren, die diese Interfaces als mock-up implementieren. Gleichzeitig wird ein Aktor als Testtreiber generiert.

Aber auch auf Source-Code-Ebene lässt sich eTrice in andere Tools einbinden, z.B. die grafischen und textuellen Editoren für Finite State-Machines.

Text

eTrice Consulting und Engineering

PROTOS bietet Ihnen professionelle Dienstleistungen zur modellgetriebenen Entwicklung von Embedded Systemen mit dem Open Source Werkzeug eTrice. Wenn Sie mehr wissen wollen, nehmen Sie Kontakt mit uns auf!