Serie Software Engineering für Embedded Systeme, Teil 5

Modellbasierte Entwicklung eingebetteter Softwaresysteme

| Autor / Redakteur: Dr. Mario Trapp, Dr. Thomas Kuhn und Prof. Dr. Peter Liggesmeyer* / Hendrik Härter

Entwicklungswerkzeuge integrieren: Bei der modellbasierten Entwicklung ist es notwendig, die Werkzeuge den individuellen Bedürfnissen der Firma anzupassen (S. Hofschlaeger, pixelio.de)
Entwicklungswerkzeuge integrieren: Bei der modellbasierten Entwicklung ist es notwendig, die Werkzeuge den individuellen Bedürfnissen der Firma anzupassen (S. Hofschlaeger, pixelio.de)

Im letzten Teil unserer Serie erklären wir Ihnen, wie die modellbasierte Entwicklung hilft, die Komplexität bei der Entwicklung eingebetteter Softwaresysteme zu beherrschen. Entwicklungswerkzeuge müssen allerdings den individuellen Bedürfnisse der Firma, des Produktes oder der jeweiligen Projekte angepasst werden.

In der Vergangenheit wurden eingebettete Systeme mit dem hauptsächlichen Fokus auf elektrotechnische und maschienentechnische Komponenten entwickelt. Software wurde nur als notwendiges Hilfsmittel gesehen, als ein letzter kleiner Schritt, um die Funktionen umzusetzen. Aufgrund der ursprünglich sehr begrenzten Ressourcen der eingebetteten Systeme, war die Komplexität der entwickelten Software wesentlich leichter beherrschbar als heute.

Mit fortschreitender Entwicklung der Hardware wurden die Systeme leistungsfähiger und die Software komplexer. Daher wurde die Tatsache, dass die Entwicklung der eingebetteten Software für sich selbst schon eine Ingenieursleistung darstellt, lange vernachlässigt.

Man versuchte die Schwierigkeiten der Softwareentwicklung mit dem Computer Aided Software Engineering (CASE) in den Griff zu bekommen. Hierbei nutzt der Softwareingenieur Tools zur Planung, zum Entwurf und zur Dokumentation der Software. Während die Anfänge des CASE keinen flächendeckenden Erfolg hatten, wurde durch die Einführung der modellgetriebenen Entwicklung ein wesentlicher Grundstein zur effizienten Umsetzung der ingenieurmäßigen Softwareentwicklung gelegt.

Unterschied zur CAE-Software

Im Unterschied zum Computer Aided Software Engineering, stellen die in der modellgetriebenen Entwicklung erstellten Modelle keine erklärende Dokumentation dar, sondern sind die Arbeitsgrundlage für die Entwickler. Der Entwickler kann Systeme auf einer hohen Abstraktionsebene graphisch modellieren anstatt diese programmieren zu müssen.

Modellierungssprachen bieten sehr leistungsfähige Modellierungselemente und nehmen weitestgehend die Implementierung vorweg. Anstatt mit Variablen, Schleifen und Funktionsaufrufen zu arbeiten, stehen in Modellierungssprachen Elemente wie Übertragungsfunktionen, Fouriertransformationen oder Zustandsautomaten im Vordergrund. Da der eigentliche Quellcode nicht mehr manuell programmiert werden muss, sondern weitgehend automatisch generiert wird, steht nicht mehr der Code sondern das Modell im Mittelpunkt der Entwicklung.

Modellbasierte Entwicklung wird wichtiger

Auch wenn die modellbasierte Entwicklung heute noch nicht flächendeckend eingesetzt wird, so ist deutlich zu erkennen, dass die Abstraktion von der Implementierungs- auf die konzeptionelle Modellierungsebene deutlich die Entwicklungskomplexität reduziert und der Ansatz eine entsprechend große Akzeptanz erfährt.

In Domänen, in denen komplexe Systeme entwickelt werden, wie beispielsweise im Automobilbau oder der Luftfahrt, ist modellbasierte Entwicklung bereits heute verbreitet. In der nahen Zukunft ist damit zu rechnen, dass die modellbasierte Entwicklung in vielen Anwendungsbereichen die Programmierung in der Applikationsentwicklung ersetzen wird.

Modellgetriebene Entwicklung in der Praxis

Prinzipiell sehen modellgetriebene Ansätze, wie beispielsweise die Model Driven Architecture (MDA) der Object Management Group (OMG) den durchgehenden Einsatz von Modellen im gesamten Lebenszyklus vor. Allerdings deckt keines der heute verfügbaren Werkzeuge den gesamten Entwicklungslebenszyklus adäquat ab. Zur Modellierung einer Architektur ist es beispielsweise notwendig mehrere Sichten zu definieren, die jeweils unterschiedliche Aspekte des Systems repräsentieren [ISO 42010]. Beispiele sind die logische Strukturierung des Systems, die Kommunikation der Systemkomponenten untereinander oder die Verteilung einzelner Subsysteme auf Prozesse oder Rechenknoten.

Trend zur Kombination von Werkzeugen

Dazu werden unterschiedliche Notationen verwendet, wie sie von der Unified Modeling Language, kurz UML, zur Verfügung gestellt werden. Die UML hat allerdings Schwächen insbesondere in der Modellierung von Verhalten. So lässt sich bei der Entwicklung von Komponenten wie Reglern oder Filtern deren Verhalten im Dauerbetrieb nicht geeignet darstellen. Dies ist wiederum eine der Stärken von Werkzeugen wie Matlab/Simulink oder LabView, die umgekehrt allerdings keine ausreichenden Möglichkeiten zur Modellierung von Architekturen bieten.

In der Praxis wird entweder ein kleiner Teil des Entwicklungslebenszyklus, insbesondere der Softwareentwurf, modellbasiert durchgeführt wird, oder ein Werkzeug für alle Phasen genutzt, obwohl es für viele Aspekte der Modellierung ungeeignet ist. Da beide Varianten nur unbefriedigende Lösungen sind, hat sich über die letzten Jahre der Trend zur Nutzung kombinierter Ansätze verstärkt. Die Kombinationsmöglichkeiten sind dabei so vielfältig wie die verfügbaren Modellierungssprachen und –werkzeuge.

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? Infos finden Sie unter www.mycontentfactory.de (ID: 25115840 / Software-Entwurf & Echtzeit-Design)