Visuelle Programmierung Intuitives Systemdesign

Ein visualisierte Programmierung hilft frühzeitig bei Problemen.
Ein visualisierte Programmierung hilft frühzeitig bei Problemen.

Traditionell wird ein Entwurf in detaillierten Dokumenten und Abbildungen erfasst. Um zu verdeutlichen, dass ein Objekt mit Hilfe einer Fräsmaschine gefertigt werden soll, nutzt ein Entwickler vermutlich mehrere orthogonale Ansichten des Objekts. Dieses Vorgehen eignet sich für das Hinzufügen von Erläuterungen oder Abmessungen, doch es kann schwierig sein, diese Ansichten in die Darstellung des Objekts zu integrieren.

Traditionell wird ein Entwurf in detaillierten Dokumenten und Abbildungen erfasst. Um zu verdeutlichen, dass ein Objekt mit Hilfe einer Fräsmaschine gefertigt werden soll, nutzt ein Entwickler vermutlich mehrere orthogonale Ansichten des Objekts. Dieses Vorgehen eignet sich für das Hinzufügen von Erläuterungen oder Abmessungen, doch es kann schwierig sein, diese Ansichten in die Darstellung des Objekts zu integrieren.

Entwickler können ein Objekt auch darstellen, indem sie eine interaktive Entwicklungsumgebung nutzen. Es ist wesentlich produktiver, ein dreidimensionales Modell direkt während des Entwurfs eines Objekts anzupassen. Die Darstellung ist nicht auf bestimmte Projektionen begrenzt und Entwickler können einfach nachvollziehen, wie sich eine Änderung am dreidimensionalen Objekt auf die verschiedenen Abbildungen auswirkt.

Die Darstellung ist grundsätzlich ein entscheidender Bestandteil eines Entwurfs. Doch die Darstellung eines Entwurfs von Systemen, die eine Brücke zwischen der Informationstechnik („cyber“) und der physischen Welt („physical“) schlagen (auch als cyberphysische Systeme bekannt), stellt aufgrund der entscheidenden Rollen, die Software und Kommunikationstechnologien spielen, eine besondere Herausforderung dar.

Der Entwurf des physischen Systems mag vorgezeichnet sein, doch bei der Informationstechnik sind spezielle Werkzeuge erforderlich, um das Software-Design abzubilden, das sehr abstrakt, grenzenlos flexibel und höchst komplex ist.

Ein wesentliches Augenmerk beim Entwurf von cyberphysischen Systemen liegt auf der Software. Somit kann eine höhere Produktivität bei Software-Design und -Entwicklung einen sehr starken Einfluss auf ein Projekt haben. Aus diesem Grund hat National Instruments LabVIEW erfunden. LabVIEW ist eine Umgebung für das Erstellen und Bearbeiten der Darstellung eines Software-Designs. Sie nutzt grafische Datenflussdiagramme und interaktive Front Panels, um eine Hierarchie aus modularen, Software-definierten Messgeräten zu erstellen. Somit ist LabVIEW äußerst produktiv, da die grafische Darstellung der Datenflussdiagramme eines Entwurfs (Bild 1) gleichzeitig die Implementierung ist (Bild 2).

In LabVIEW entspricht die Darstellung der Implementierung. Dadurch ist die Software ein geeignetes Werkzeug für das Rapid Prototyping und die schrittweise Entwicklung. Die Darstellungen können von den Entwicklern sehr einfach verändert und so Bereiche im grafischen Code besser verstanden und optimiert werden. Dies führt zu besseren Lösungen und kürzeren Markteinführungszeiten. Die Bedeutung der grafischen Elemente nach dem Datenflussprinzip stellt die Zuverlässigkeit und Skalierbarkeit von Entwürfen sicher. Die hierarchische Zusammenstellung und entsprechend auch das Ausführungsverhalten sind auf allen Ebenen einheitlich. Und die nach Modulen geordneten Front Panels vereinfachen die Fehlerbehebung, den Komponententest und den Eingriff seitens des Anwenders auf allen Entwicklungsstufen. Diese und weitere Eigenschaften tragen zur Produktivität von LabVIEW bei.

Eines der wichtigsten Merkmale bei der Abgrenzung von LabVIEW gegenüber anderen Software-Werkzeugen ist, dass der Datenfluss inhärent parallel ist. Traditionelle Programmiersprachen sind sequenzielle Sprachen, die nach dem Prinzip der Von-Neumann-Rechnern konzipiert sind. Sequenzielle Sprachen sind nicht für parallele Architekturen geeignet. Dies ist eine große Stolperfalle auf dem Weg der Branche hin zu Multicore-Rechnern und FPGAs. Schon 1977 zeigte John Backus die Grenzen der Von-Neumann-Architektur auf – nicht nur als Engpass für Daten, sondern auch als intellektuelle Engstelle. 35 Jahre später ist dieser intellektuelle Engpass in traditionellen textbasierten, sequenziellen Sprachen nach wie vor vorhanden.

Die Datenflusssprache LabVIEW überwindet dieses Hindernis und ist dadurch ideal geeignet für die Entwicklungsherausforderungen, die cyberphysische Systeme und letztlich auch das Internet der Dinge heute darstellen. Dieser grafische Ansatz entwickelt sich noch immer – und mit ihm viele aktive Forschungsfelder, die sich auf die Software-Visualisierung und die zugrunde liegenden Hardware-Funktionen konzentrieren.

Eines dieser Forschungsgebiete ist Timing. Die meisten Software-Anwendungen sind eher für die Gesamtleistung optimiert als für präzises Timing. Cyberphysische Systeme hängen jedoch entscheidend von Letzterem ab. LabVIEW kann das erforderliche Timing mit Hilfe einer zeitgesteuerten Schleife bildhaft darstellen und eine Ausführungsleistung in Echtzeit hervorrufen. Obwohl Entwickler die Ausführungszeit mithilfe des Real-Time Trace Viewer detailliert abbilden können, haben sie keine Möglichkeit, das zeitliche Verhalten im Vorfeld als Teil des Entwurfsprozesses bis ins Detail zu bestimmen.

Da es notwendig ist, nur das genaue Timing von Sensoren und Aktoren zu spezifizieren, sollte der Compiler die übrige Software an die I/O anpassen. Innovationen bei der Abbildung können die Bestimmung des genauen I/O-Timing einfacher machen, ohne das Timing der übrigen Software übermäßig zu beeinträchtigen. Es ist heutzutage möglich, zeitlich genau abgestimmte verteilte cyberphysische Systeme zu erstellen, doch dies wird in Zukunft mit Hilfe einer eindeutigeren Abbildung der Zeit in der Software sowie einer verbesserten Hardware für isochrone Kommunikation wesentlich einfacher sein.