Bekommen wir endlich interaktive Spezifikationen?
Spezifikationen definieren Systeme und beschreiben deren Verhalten. Was liegt näher, die Spezifikationen selbst interaktiv zu machen? Die Idee ist nicht neu und gibt es auch schon seit Jahrzehnten. Aber wirklich weit verbreitet sind interaktive Spezifikationen nicht, sondern sind eher in Nischen zu finden. Doch seit einiger Zeit werden immer häufiger Jupyter Notebooks herumgereicht, die in diese Kategorie passen. Grund genug, sich dieses Thema etwas genauer anzuschauen.
Interaktive Spezifikationen
Eine Interaktive Spezifikation hat viel Ähnlichkeit mit einer Simulation. Bei einer Simulation ermöglicht eine Simulationsumgebung, interaktiv mit dem System zu interagieren. Ein einfaches Beispiel ist die Spezifikation einer Ampel. Eine ereignisorientierte Simulation würde dem Nutzer die Zustände der Ampeln (Farben) anzeigen und eine Interaktion ermöglichen. Der Nutzer könnte zum Beispiel das Äquivalent eines Knopfdrucks auslösen. Die Simulation funktioniert, ohne die Ampel (Lampen, Knöpfe, etc.) erst bauen zu müssen. Allerdings ist die Simulationsumgebung nicht mit der Spezifikationsumgebung identische.
Bei einer interaktiven Spezifikation sind Spezifikations- und Simulationsumgebung miteinander vereint. Dadurch bekommt der Nutzer sofort eine Rückmeldung über Änderungen in der Spezifikation. Wie das konkret aussehen kann zeigte Bret Victor schon 2012 in dem beeindruckenden und sehenswerten Video „Inventing on Principle“ (die Demo beginnt bei 3:30).
Jupyter Notebooks
Im Beispiel von Bret Victor geht es um Programmierung. Software Code ist zwar eine Spezifikation, aber eine hochspezialisierte. Jupyter Notebooks verfolgen einen anderen Ansatz:
Ein Jupyter Notebook ist eine web-basierte interaktive Umgebung, die wie ein Dokumente aussieht, aber interaktive Elemente enthält. Der Inhalt des Notebooks in einer entsprechenden Umgebung direkt verändert werden.
Jupyter Notebooks werden insbesondere in der Lehre viel eingesetzt, da sie Lernstoff, Übungen und Beispiele in einer nahtlosen Umgebung vereinigen. Die Studierenden können die Beispiele ändern und sehen sofort die Auswirkungen davon.
Der Name Jupyter stammt von den drei Programmiersprachen Julia, Python und R. Um ein interessantes Jupyter Notebook zu erstellen sind Programmierkenntnisse schon erforderlich. Zum lesen (und experimentieren) hingegen nicht unbedingt.
Interaktive Spezifikationen im Systems Engineering
Wie bereits gesagt sind Simulationen schon lange ein fester Bestandteil des Systems Engineering. Eine schöne Visualisierung ist im folgenden Video von Willert zu sehen:
Einerseits finde ich das Video sehr beeindruckend weil es zeigt, wie mächtig eine durchgängige Modellierung sein kann. Andererseits habe ich mit vielen der gezeigten Werkzeuge aus dem IBM-Portfolio gearbeitet. Diese sind teilweise Jahrzehnte alt und nicht wirklich nutzerfreundlich. IBM und andere Hersteller sind dabei, viele dieser Werkzeuge neu zu erfinden: Webbasiert und mit einem starken Fokus auf leichter Benutzbarkeit und Integrierbarkeit.
Ein gutes Beispiel für ein modernes webbasiertes Werkzeug ist zum Beispiel Innoslate, welches zwar Simulation unterstützt, aber keine interaktiven Spezifikationen.
Fazit
Systems Engineering hat mit Komplexität zu kämpfen. Die Teams werden größer und unterschiedliche Disziplinen müssen zusammenarbeiten. Interaktive Spezifikationen könnten ein Weg sein, hier Reibungsverluste zu vermeiden.
Der Erfolg der Jupyter Notebooks zeigt, dass interaktive Beschreibungen endlich das Potential für den Mainstream haben (nun ja, zumindest in der Forschung). Ähnliche Lösungen für das Systems Engineering würden viele der aktuellen Herausforderungen entschärfen. Ich bin gespannt, ob wir hier in den nächsten Jahren neue Entwicklungen sehen, oder ob sich Jupyter Notebooks auch im industriellen Einsatz etablieren werden.
Photo by Dose Media on Unsplash