Was diesem Grafiksystem noch fehlt, um das oben beschriebene Profil voll zu erfüllen, ist ein Paradigmenwechsel im Embedded-Software-Design: Die Unterstützung von modellgetriebener Softwareentwicklung. Im Wesentlichen führen zwei Aspekte zu diesem Ansatz: Zum einen ist es die zunehmende Komplexität von Embedded Systemen, die strukturiert und übersichtlich beherrscht werden soll - das vermeidet die bekannten Datengräber. Zum anderen möchte man Systemfunktionen nicht immer wieder neu programmieren - vorhandene und künftige Systembausteine sollen in Komponentenform, baukastenähnlich einsetzbar und wiederverwendbar sein. Damit einhergehend ist es notwendig, aufwendige Programmierung einfacher zu gestalten, um die Komplexität zu beherrschen und zusätzlich die Entwicklungszeiten für die Projekte im Zaum zu halten. Bei der modellbasierten Softwareentwicklung versucht man deshalb aus formalen Modellen automatisch Software zu erzeugen, d.h. es müssen Methoden und Werkzeuge existieren, die es erlauben, einen gewünschten Sachverhalt auf einer abstrakten Ebene zu beschreiben. Die Umsetzung in ausführbaren Code wird dann automatisiert. Beispiele dafür sind Produkte wie Matlab-Simulink von The MathWorks oder Rhapsodie von IBM.
Bei der modellorientierten Softwareentwicklung geht es vor allem darum, komplexe Entwicklungsprojekte zu vereinfachen. Eine Auswahl der Rahmenbedingungen, die heute zu berücksichtigen sind:
- Langlebige Produkte - es wird moderne Hardware gefordert, die bewährte Anwendungen ohne weit reichende Modifikationen unterstützt.
- Moderne I/O-Anbindungen.
- Neue Netzwerktechnologien.
- Neue Sensorik und Aktuatoren sollen einbindbar sein.
Herkömmliche Entwicklungen haben in diesem Umfeld gravierende Nachteile. Bei Änderungen, Anpassungen und Neuentwicklungen muss vielfach bis auf »C«-Code-Ebene aufwendig neu programmiert werden - die Wiederverwendbarkeit von Komponenten gestaltet sich bislang schwierig. Das schlägt sich in erhöhten Projektkosten und langen Entwicklungszeiten nieder. In dem hier beschriebenen Ansatz werden zwei neue Abstraktionsschichten eingeführt, die eine komponentenorientierte Systemarchitektur zulassen und den reinen Programmieraufwand drastisch verringern.
Die Modellierung durch ein datenzentrisches Beschreibungsmodell führt zum Einsatz des CASE-Tools »Gamma«, dem »Softwarestecker«. Der Softwarestecker greift die Erfolgsgeschichte und Idee standardisierter Hardwareinterfaces wie VME oder CPCI auf und setzt sie auf die jeweilige Software- und Systemumgebung um. Der Ansatz auf Softwareebene die Komponenten sozusagen steck- bzw. konfigurierbar auszulegen, enthebt den Entwicklungsprozess von aufwendigen Betriebssystemadaptionen, Treiberanpassungen und der Integration von Netzwerkfunktionen auf der Basis zeitraubender »C«-Programmierung. Der Softwarestecker abstrahiert, konfiguriert und integriert deshalb:
- die gesamte Hardwareplattformen inkl. CPUs, Bus-, Speicher- und lokales I/O-System,
- Betriebssysteme,
- Kommunikations- und Netzwerkinfrastrukturen,
- Programmiersprachen,
- Grafikserver,
- Grafische Entwicklungsumgebungen,
- Heterogene Rechnerarchitekturen,
- SPS-Systeme,
- Firmenspezifisches Software-Know-how in Form von Komponenten,
- über OPC-Schnittstellen weitere Techniken, wie Prozessvisualisierungen.
Ein wesentlicher Bestandteil des Softwaresteckers ist eine datenzentrische Organisation der Systemvariablen durch ihre Abbildung in einem Datenmodell. In diesem datenzentrischen Modell wird die Applikation um ein Softwaremodell gestaltet, bei dem die Daten im zentralen Fokus und vor allem außerhalb der Applikation als eigenes Konstrukt stehen. Die Zugriffe auf diese Daten sind so konzipiert, dass sie lokal, über Netzwerke, über verschiedene Rechner mit verschiedenen Betriebssystemen und Programmiersprachen funktionieren. Die Funktionen einer gesamten Steuerung werden in einem Designprozess konzipiert, die Umsetzung in ausführbare Programme auf den verschiedenen Systemkomponenten wird über den Softwarestecker Gamma realisiert. Voraussetzung dafür ist die vorherige Integration der Komponenten (Hard- und Software) in das »Gamma-Framework«. Auf diese Weise sind Anlagen realisierbar, in denen heterogene Rechnerumgebungen, Datenlogger, I/O-Systeme, Sensoren und Aktuatoren transparent miteinander kommunizieren.