Anzeige
Modellbasierte Entwicklung einführen und nutzen (Teil 1/2)

Vom Nutzen der Modelle

Die Entwicklung von Embedded Systems wird aufwendiger. Grafische Modellierungssprachen und dazu passende Werkzeuge können helfen, die Komplexität in den Griff zu bekommen. Allerdings müssen einige grundsätzliche Dinge beachtet werden, um den Nutzen von Modellen wirklich auszuschöpfen.

 (Bild: SparxSystemsSoftware GmbH)

(Bild: SparxSystems Software GmbH)

In meinen Kursen stelle ich zu Beginn gerne die Frage: Warum modellieren wir eigentlich? Als Antworten höre ich z. B. „Weil wir es müssen“, „Unsere Software muss auch dokumentiert werden“ etc. Diese Antworten zeigen mir, dass die Vorteile eines Modellierungsansatzes (im Vergleich mit dem klassischen, textbasierten Ansatz) meist nicht umfassend gesehen werden. Daher habe ich nun ein Whitepaper erstellt, dass die einzelnen Aspekte näher beleuchtet. Nur mit einer möglichst umfassenden Sicht lässt sich nämlich abschätzen, welcher Modellierungsansatz für ein Unternehmen geeignet ist. Die Frage nach dem Vorteil von modellbasierten Ansätzen ist grundsätzlich einfach zu beantworten. Um über die Inhalte eines Dokuments diskutieren zu können, müssen wir bei einer textuellen Beschreibung viele Seiten lesen. Haben wir darüber hinaus Bilder verwendet, die keinem Standard entsprechen, sind auch diese meist erklärungsbedürftig. Bei Modellen dagegen, die mit standardisierten Modellierungssprachen (z.B. UML/SysML) erstellt wurden, folgen die Symbole einer definierten Semantik. Der Begleittext ist kurz und knapp den betreffenden Modell-Elementen zu entnehmen und damit leicht lesbar. Ein (richtig erstelltes) Modell/Diagramm ist nicht überfrachtet, beantwortet genau die Fragen einer bestimmten Personengruppe und dient als Grundlage für die Diskussion. Ein Modell kann also zur zentralen Informationsquelle ausgebaut werden, aus der sich unterschiedlichste Artefakte (Dokumente, Code, Schemata, etc.) automatisch generieren lassen. Das Modell dient als zentrale Informationsquelle und lässt sich automatisiert weiterverarbeiten.

Ein umfassendes Bild von Modellen

Wenn wir von Modellen und Modellierungssprachen sprechen, haben viele (je nach Erfahrung) gleich ein bestimmtes Bild im Kopf. Verfügt man über keine einschlägigen Vorkenntnisse, besteht dennoch oft eine Vermutung, wozu sich grafische Modelle verwenden lassen. Die Verwendungsmöglichkeiten und der Zweck von grafischen Modellen sind nach meiner Erfahrung aber oft sehr unterschiedlich. Die meisten der bestehenden Vorstellungen von grafischen Modellen sind zwar zutreffend, beschreiben aber oft nur einen bestimmten Aspekt und übersehen dabei viele weitere Nutzungsmöglichkeiten. Verallgemeinernd können wir sagen, Modelle sind strukturierte Daten, die einem Standard folgen und grafisch dargestellt werden können. Je nachdem, wer das Modell lesen soll, werden jeweils andere Informationen erwartet. Dieser Umstand führt uns direkt zu den zwei wichtigsten Fragen, die bei der Einführung von Modellierung zu stellen sind: Wer liest das Modell? Was soll aus dem Modell gelesen werden? Sie haben sicher gleich gemerkt, dass diese Fragen nicht nur für die Modellierung gelten, sondern auch bei einer textuellen Beschreibung gestellt werden sollten. Leider werden sie allerdings bei der Modellierung fast nie gestellt, da meist eine bestimmte Vorstellung vorhanden ist, was ein Modell können soll, bzw. wofür es eingesetzt wird. Eine detaillierte (oder gar vollständige) Beschreibung des Systems liegt allerdings in den wenigsten Fällen vor. Können wir diese zwei grundsätzlichen Fragen beantworten, wissen wir bereits, welche Information, auf welcher Abstraktionsebene und mit wie vielen Details im Modell vorhanden sein muss.

Ein Referenzmodell erstellen

Im ersten Schritt ist es also wichtig ein Beispielprojekt (Leuchtturm-Projekt) zu erstellen, mit dem alle gestellten Fragen beantwortet werden können. Dieses Beispielprojekt nennen wir ‚Referenzmodell‘. Damit Automatismen im Modell funktionieren, sind Modellierungsrichtlinien notwendig. Sie helfen dabei, den großen Spielraum, der durch die Modellierungssprache und das verwendete Werkzeugs gegeben ist, einzuschränken und das Arbeiten einfacher und überschaubarer zu machen. Das Referenzmodell ist also die Grundlage, aus der wir durch Anwendung einer bestimmten Methode unsere Richtlinien ableiten. Auf deren Grundlage wird das Modell automatisch überprüft, um anschließend alle anderen Artefakte ebenfalls automatisch und fehlerfrei aus dem Modell generieren zu können.

(Bild: SparxSystems Software GmbH)

Das Modell als Basis

Im Unterschied zum textbasierten Ansatz beschreiben wir die Inhalte mit Modellen und generieren daraus elegant die textuelle Spezifikation. Natürlich werden wir die einzelnen Modellelemente auch mit Kommentaren – also Text – beschreiben, die anschließend automatisch in eine textuelle Spezifikation einfließen. So erhalten wir ein Dokument mit Diagrammen und der dazu passenden Beschreibung. Aus einem Modell lassen sich nicht nur mehrere Dokumente generieren, sondern auch mehrere Ziel-Modelle. Das Ausgangsmodell ist dabei in der Regel abstrakter als das Zielmodell. So entsteht z. B. aus einem logischen ein physisches Datenmodell und daraus die DDL Skripte, mit denen wir die Datenbank erstellen können. Neben Datenmodellen für Datenbanken lassen sich auch andere Modelle automatisch erstellen, aus denen anschließend Code oder andere Schemata (XSD, RDF, Jason, etc.) generiert werden können.

Code direkt aus dem Modell

Aus einem ausreichend vollständigen und richtigen Modell lässt sich automatisch Code generieren, wobei zwei grundlegende Ansätze zu unterscheiden sind:

1) Generische Code-Generatoren: Dafür benötigen wir ein Modell, das bereits sehr detailliert die Implementierung beschreibt und einen generischen Codegenerator, der aus jedem Modell dieser Abstraktionsebene Code generieren kann. Das Erstellen des detaillierten Modells ist meist aufwändig, der Code-Generator muss allerdings nicht angepasst werden.

2) Domänenspezifische Code-Generatoren: Hier wirken ein einfaches Modell einer höheren Abstraktionsebene sowie ein spezieller Code-Generator zusammen, der für ein Modell-Element des abstrakten Modells mit ein paar Zusatzinformationen, Code generiert. Das Modell ist meist einfacher zu erstellen und entspricht exakt unserer Domäne. In die Anpassung des Code-Generators muss einmalig mehr Aufwand investiert werden.

Hier erhalten Sie über die Vorteile und den Nutzen der modellbasierten Software- und Systementwicklung ein Whitepaper zum herunterladen: Whitepaper.pdf (15 Downloads)

Dr. Horst Kargl,
SparxSystems Software GmbH
www.sparxsystems.de

Rüdiger Maier,
LieberLieber Software
www.lieberlieber.com

Hier gelangen Sie zum zweiten Teil des Beitrages.

Vom Nutzen der Modelle (Teil 1/2)
Bild: SparxSystemsSoftware GmbH


Das könnte Sie auch interessieren

Die Produktfamilie der embedded Kommunikationsschnittstellen Anybus CompactCom von HMS Industrial Networks unterstützt künftig auch die IoT-Protokolle OPC UA und MQTT. Damit bietet HMS Geräteherstellern und Maschinenbauern, die Anybus CompactCom einsetzen, eine einfache Möglichkeit, Daten im Umfeld von Industrie 4.0 / IIoT sicher auszutauschen.‣ weiterlesen

Beim gemeinsamen Messeauftritt auf der SPS IPC Drives 2017 haben Janz Tec und Verlinked ihre Kooperation besiegelt. Gemeinsam bieten sie ein Lösungspaket für Data Broker Aufgaben in der digitalisierten Produktion.‣ weiterlesen

MVTec Software macht umfassende Deep-Learning-Funktionen nun auch auf Embedded-Boards mit der NVIDIA Pascal-Architektur verfügbar.‣ weiterlesen

Anzeige

Fujitsu erweitert die Palette seiner Mainboards der Industrial Series um die zwei Modellreihen D3543-S und D3544-S.‣ weiterlesen

Mit MAX14878, MAX14879 und MAX14880, den 2,75kV- und 5kV-Familien isolierter CAN-Transceiver von Maxim Integrated, können Entwickler eine robuste Kommunikation und eine längere Betriebszeit für industrielle Anwendungen erzielen.

Für das Unit- und Integrationstestwerkzeug Tessy stellt Razorcat ab Version 4.1 eine neue Funktion vor. Mit ihr lassen sich Testfälle per Fault Injection einfach und komfortabel ohne Quellcode-Änderung erzeugen, verwalten und in Unit Tests, Integrationstests und Komponententests implementieren – mit geringerem zeitlichen und finanziellen Aufwand.

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige