Systems Engineering Trends

Donnerstags in 5 Minuten für Ingenieure und Entscheider: Systems Engineering ohne Hype, dafür mit Tiefgang

Modellierung & MBSEWerkzeuge

Low-Code — ist das nicht einfach Modellieren?

Low-Code ist ein Konzept, welches verspricht, die Softwareentwicklung drastisch zu vereinfachen. Statt mit einer Programmiersprache zu programmieren, können Domainexperten funktionierende Software erstellen, oft per Drag-and-Drop.

Das, was dabei vom Nutzer erstellt wird, ist ein Modell. Im Folgenden beantworte ich die Fragen: Was sind die Ähnlichkeiten und Gemeinsamkeiten zwischen Low-Code-Entwicklung und Modellierung? Was sind die Möglichkeiten und Grenzen? Und: Ist Low-Code wirklich neu und nützlich? Oder einfach nur ein weiterer Hype, der alten Wein in neuen Schläuchen verkauft?

Low-Code mit BPMN

Ein gutes Beispiel für eine Low-Code Plattform ist Appian für Prozessautomatisierung. Jede Firma hat interne Prozesse, die teilweise erschreckend papierlastig sein können: Einkauf, Urlaubsantrag, Reisekostenabrechnung und vieles mehr. Auch wenn es für die verschiedenen Aktivitäten Werkzeuge gibt, so sind diese oft nicht verknüpft. Die Assistenz könnte dann wie im folgenden Screenshot gezeigt eine Low-Code-Anwendung entwickeln, zum Beispiel für Urlaubsanträge. So eine Anwendung würde dann die Maske für den Urlaubsantrag bereitstellen, den Antrag mit diversen Kalendern abgleichen, den Antrag dem (richtigen) Vorgesetzten zum Abzeichnen vorlegen und die diversen IT-Systeme (Kalender, HR) aktualisieren.

Die Entwicklungsumgebung von Appian, die BPMN als Notation benutzt. Quelle: Appian

Was Appian zur Verfügung stellt ist ein Modellierungswerkzeug. Appian setzt sogar eine formale Modellierungssprache ein, BPMN. Daher ist die Frage bezüglich des Zusammenhangs von Modellierung und Low-Code durchaus berechtigt.

Modellierung und Low-Code: Die Unterschiede

1. UnterschiedZweck

Der wichtigste Unterschied ist das Ergebnis: Das Ergebnis der Modellierung ist (Überraschung!) ein Modell. Dieses Modell unterstützt eine Vielzahl von Aktivitäten, wie Analyse, Simulation und vieles mehr. Im Gegensatz dazu ist das Ergebnis einer Low-Code-Entwicklung funktionierender Softwarecode.

2. UnterschiedImplementierung

Auch aus Modellen kann Code generiert werden. Das ist aber selten der wichtigste Anwendungsfall. Doch auch wenn Code aus einem Modell generiert wird, ist in der Regel noch eine Menge Arbeit zu tun, bevor wir funktionierende Software haben. Low-Code-Plattformen agieren häufig nicht nur als Code-Generator, sondern sogar als Betriebsplattform.

3. UnterschiedAbstraktionsebene

Bei der Low-Code-Entwicklung steht die Abstraktionsebene in der Regel fest und ist relativ hoch angesiedelt, auf Nutzer/Problemebene. Im Gegensatz dazu ermöglicht Modellierung in der Regel, auf vielen Ebenen zu arbeiten und diese auch zu überbrücken. Low-Code-Plattformen bieten in der Regel vorgefertigte Komponenten und visuelle Schnittstellen, mit welchen typische Aufgaben schnell und Best Practices entsprechend gelöst werden.

4. UnterschiedZielgruppe

Die Low-Code-Entwicklung richtet sich in der Regel an nichttechnische Benutzer, die funktionale Softwareanwendungen erstellen möchten, ohne Code schreiben zu müssen, während die Modellierung von Entwicklern und technischen Teams zur Planung und Gestaltung von Softwareanwendungen verwendet wird.

5. UnterschiedFlexibilität

Alles hat seine Grenzen! Und bei der Low-Code-Entwicklung stoßen wir viel schneller an diese als bei einer generischen Modellierung. Daher ist es wichtig sich vor Beginn der Entwicklung mit den Grenzen vertraut zu machen und sicherzustellen, dass es keine KO-Kriterien gibt.

Die Risiken von Low-Code

Der Einsatz von Low-Code birgt eine Reihe von Risiken. Die wichtigsten sind:

  1. Begrenzte Möglichkeiten: Alles, was über den Anwendungsbereich von Low-Code-Plattformen hinausgeht kann oft gar nicht oder nur schwer umgesetzt werden.
  2. Sicherheitsrisiken: Als intransparente Lösung ist unklar, wie gut die generierte Anwendung abgesichert ist. Das ist besonders dann kritisch, wenn die generierte Anwendung nicht nur intern, sondern auch Kunden und Partnern über das Internet zur Verfügung gestellt werden soll.
  3. Herstellerabhängigkeit: Zu mindest im Moment gibt es keine Portabilität. Der Wechsel zu einer anderen Plattform wird mit großer Wahrscheinlichkeit schmerzhaft.
  4. Lernkurve: Ja, es ist leichter als Programmieren. Das bedeutet aber nicht, dass die Anwendung leicht ist. Genauso, wie es Spaghetticode gibt, können schnell unwartbare Anwendungen entwickelt werden, die voller (logischer) Bugs sind.

Anbieter

Auf dem Markt tummeln sich inzwischen eine Menge von Anbietern. Viele Lösungen sind domänenspezifisch, wie das oben gezeigte Appian. In die selbe Kategorie gehören auch K2 und Quick Base, die sich auch auf Geschäftsprozesse fokussieren.

Manche Unternehmen sind so groß, dass sie Low-Code-Lösungen anbieten, die auf ihr Ökosystem zugeschnitten sind. Dazu gehört zum Beispiel Salesforce Lightning und Zoho Creator.

Und die großen Konzerne haben die Marktstärke, auch generische Lösungen anzubieten. Dazu gehören Microsoft Power Apps oder Goolge App Maker.

Fazit

Modellierungskenntnisse sind sehr hilfreich beim Einsatz von Low-Code-Lösungen. Allerdings haben die beiden sehr unterschiedliche Ziele: Wenn wir schnell lauffähige Software brauchen und die Domäne gut verstanden und klar umrissen ist, dann ist es eine gute Wahl. In der Praxis trifft dies aber nicht auf den Systems Engineer zu. Für das Systems Engineering halte ich Low-Code nur in einem sehr eingeschränktem Maß für geeignet.

Bildquelle: FreePic

Michael Jastram

Creator and Author of SE-Trends