Low-Code – eine Lösung für den Digitalisierungsstau

Der Digitalisierungsstau in Deutschland ist in aller Munde. Man sieht ihn als Bürger bei der öffentlichen Verwaltung, wenn Stapel von Bauplankopien beim Bauamt zur Genehmigung eines Bauantrags eingereicht werden müssen oder bei einfachen Verwaltungsleistungen lästige Wege zu Ämtern hingenommen werden müssen. Dabei ließen sich auch nach Auskunft der Beamten die Arbeiten viel einfacher digital erledigen, wenn nur die geeigneten Systeme vorhanden wären. Hier stößt man aber auf das bekannte Problem des Mangels von Fachkräften in der Informationstechnik.

Auch in Unternehmungen steht bei der Informationsverarbeitung nicht alles zum Besten. Klagen werden über zu komplizierte und unübersichtliche Benutzeroberflächen geführt, oder innovative Ideen der Fachabteilungen für schnell zu entwickelnde Lösungen können aufgrund des Kapazitätsmangels in der IT nicht realisiert werden.
Hier bietet das Low-Code-Konzept einen Ausweg: Wenn die IT-Abteilung nicht liefern kann, dann können die Mitarbeiterinnen und Mitarbeiter der Fachabteilungen vielleicht selbst ihre Probleme lösen, wenn sie die geeigneten Werkzeuge dazu bekommen.
Dieser Gedanke ist nicht ganz neu, sondern ist auch schon bei dem Konzept der „Robotic Process Automation (RPA)“ die Triebfeder. Nur will man dort lediglich Schnittstellen zwischen verschiedenen Anwendungs-systemen durch von Mitarbeitern der Fachabteilung entwickelte Software-Roboter überbrücken, aber keine neuen Anwendungen entwickeln. Das kann zwar zur Beschleunigung von Abläufen und Rationalisierungs-effekten führen. Da aber keine neuen Anwendungen entwickelt werden, werden kaum Innovationen durch neue Geschäftsprozesse erzielt oder komplette Abläufe digitalisiert.
Der Anspruch von Low-Code ist deshalb höher. Hier werden kleine Anwendungen von IT-interessierten Mitarbeitern der Fachabteilungen entwickelt, die aber keine tiefen IT-Kenntnisse besitzen müssen. Deshalb müssen auch die Werkzeuge entsprechend mächtiger sein.
Wenn die Fachabteilungen selbst ihre Anwendungen entwickeln, entfallen auch die häufig schwierigen und langwierigen Abstimmungszyklen zwischen den Anforderungen der Fachabteilungen und der technischen Umsetzung durch IT-Spezialisten. Beiden Effekten, dem Kapazitätsmangel und den Abstimmungsproblemen, wird durch das Low-Code-Konzept entgegengewirkt.
Die Bezeichnung Low-Code bezieht sich darauf, dass die Anwendungen durch eine einfache grafische Modellierungssprache beschrieben werden, die anschließend automatisch in eine Programmiersprache umgesetzt wird. Dem Low-Code-Ansatz wird eine 10-fache Entwicklungsgeschwindigkeit gegenüber der klassischen Programmierung zugeschrieben.
Low-Code-Systeme werden allgemein als Plattformen (LCDP = Low-Code Development Platform) bezeichnet. Dafür gibt es einen eigenen Softwaremarkt.

Anwendungsfeld für Citizen Developer und Power User

Die IT-affinen Mitarbeiter in den Fachabteilungen, Citizen Developer oder auch Power User genannt, werden durch Low-Code-Systeme in die Lage versetzt, kleine Anwendungen selbst zu entwickeln. Die „tiefen“ digitalen Anwendungen mit komplexen Bearbeitungsregeln, langen Entwicklungszeiten und hohem Integrationsbedarf wie Finanzen, Logistik, Personalabrechnung und Produktion bleiben weiterhin die Domäne von ERP-Systemen und IT-Spezialisten. Dies sagt aber nichts über eine geringere Wertigkeit der Low-Code-Anwendungsfälle aus. Denn es gibt viele wichtige „flache“ Anwendungen, die für schnelle Kundenaktionen, zur Ablösung umständlicher Papiervorgänge, benutzerunfreundliche Oberflächen oder Zusätze zu den tiefen Anwendungen das turbulente Tagesgeschäft unterstützen können. Bei der Beschreibung einer Anwendung kommt es mehr darauf an, das „Was“ zu beschreiben, also deklarativ, als das „Wie“ der prozeduralen Ausführung, wie es beim klassischen Programmieren der Fall ist. Eine komfortable Benutzeroberfläche unterstützt den Entwickler bei der Erstellung durch „drag and drop“ oder „point and drop“-Funktionen.
Vorgefertigte Teile wie Zugriffe auf Daten werden durch grafische Symbole dargestellt und können so einfach auf den Arbeitsbereich des Bildschirms gezogen werden. Bei sehr komplexen Problemen kann dieses Vorgehen auch seine Grenzen finden und algorithmische Teile müssen durch professionellen Code (Pro-Code) entwickelt werden. Da das Fachwissen aber weiterhin im Vordergrund steht, ist dann eine kooperative Zusammenarbeit zwischen Citizen Developer und IT-Mitarbeitern erforderlich. Generell sollten auch örtlich verteilte Mitarbeiter an der gemeinsamen Modellerstellung arbeiten können. Dieses ist für die zunehmenden Homeoffice- Tätigkeiten und interdisziplinären Teams wichtig.

Typische Low-Code-Anwendungen
Typische Anwendungen sind die Ablösung von Papier-Dokumenten durch digitale Workflows. In einer Behördenorganisation konnten dadurch Hunderte von Formularen wie Urlaubsanträge,  Krankmeldungen und Beschaffungsanträge ersetzt werden.
Aber auch weitergehende Anwendungen mit komplexeren Geschäftsregeln werden durch Citizen-Developer entwickelt, wenn sich die Anwendungen häufig ändern und das Fachwissen im Vordergrund steht. So kann für die Auswahl von Lieferanten für eine spezielle Verkaufsaktion von der Fachabteilung eine Lieferantenplattform entwickelt werden. Typische Anwendungen ergeben sich auch im Marketing, indem besondere Werbeaktionen geplant, durchgeführt und kontrolliert werden. Zur Akquisition neuer Mitarbeiter können Aktionen wie Wettbewerbe, Preisausschreiben oder Informationsveranstaltungen organisiert und durchgeführt werden.
Auch können Zusätze zu bestehenden „tiefen“ Anwendungssystemen wie ERP, SCM oder CRM von Citizen Developern erstellt werden.
Da die Benutzeroberflächen von Standardsoftware, insbesondere Dashboards, besonders oft an neue Anforderungen angepasst werden müssen und dies auf den Engpass von professionellen Entwicklern stößt, besteht eine Tendenz für sogenannte Headless-Anwendungssoftware: Hier wird die Anwendungssoftware ohne User Interfaces ausgeliefert, und der Anwender kann das User Interface mit Low-Code selbst entwickeln und ständig anpassen. Im Extremfall kann die gesamte Benutzeroberfläche zu den tiefen Systemen durch eigene Low-Code-Anwendungen entwickelt werden. Die tiefen Systeme werden dann quasi hinter ihnen versteckt und sind für den Anwender unsichtbar.

Wesentliche Funktionen des Low-Code

Eine Low-Code-Plattform kann durch drei Ebenen charakterisiert werden:
Die Ebene 1 ist die Anwendungsebene, und die Sicht des Entwicklers steht im Vordergrund. Er erfährt also die Benutzerfreundlichkeit, die„Experience“, des Systems. Hier stehen die Funktionen zur Verfügung, mit denen der Entwickler seine Anwendung beschreibt oder besser: modelliert. Auf der rechten Seite sind die Modellierungsobjekte und Widgets angegeben, die durch drag and drop oder point and drop auf den Arbeitsbereich übertragen werden. Widgets sind kleine Programme, die häufig als Standardelemente einer Anwendung eingesetzt werden und deshalb bereits vorgefertigt sind.
Als Modellierungssprache wird eine Teilmenge einer Standard-Prozessmodellierungsmethode wie ARIS-EPK oder BPMN eingesetzt, mit der Datenmodelle, Workflows, Geschäftsregeln, Sicherheitsregeln und Authentifizierung definiert werden. Auch werden die benötigten Funktionen und Daten aus externen Systemen definiert.
Über eine Kollaborationsplattform können bei der Modellierung örtlich verteilte Teams zusammenarbeiten.
Auf Ebene 2 wird die modellierte Anwendung dem Low-Code-Plattform-Server übergeben, der die Anwendung auf Richtigkeit überprüft und optimiert. Anschließend wird das Modell automatisch in eine Programmiersprache übersetzt. Dazu besteht eine 1:1-Beziehung zwischen den Modellobjekten des Low-Code-Ansatzes und den ausgewählten Konstrukten der Programmiersprache.
Als Programmiersprache sollte eine Standardsprache wie Java zur Verfügung stehen, da bei einer proprietären Sprache des Low-Code-Anbieters die Gefahr eines „vendor lock-in“ besteht, da der Quellcode nur auf der Plattform des Low-Code-Anbieters ablaufen kann. Vor allem ist durch eine Standardsprache bei zusätzlichem Einsatz von Pro-Code das Zielprogramm in einer  einheitlichen Programmiersprache. Dadurch kann der Quellcode auch außerhalb der Low-Code-Plattform verwendet werden.
Die Nutzung von Pro-Code ist erforderlich, wenn kompliziertere Algorithmen oder Integrationslösungen entwickelt werden müssen, die den Rahmen des Low-Code-Ansatzes überschreiten. Dann werden hybride Teams aus Citizen Developer und professionellen Entwicklern zusammengestellt. Wichtig ist, dass die Entwicklungsumgebung bestehen bleibt, so dass ein einheitliches Zielprogramm entsteht.
Datenaufrufe und Funktionsaufrufe aus anderen Systemen werden über API’s (Application  Program Interface) angebunden.
Das Programm wird dann vom Compiler in den ausführbaren Code übersetzt. Anschließend wird das Programm der Hardware- und Betriebssystemebene in der geeigneten Form zur Verfügung gestellt (deployed).
Bei Low-Code-Systemen, bei denen das Modell ohne Übersetzung in eine Programmiersprache direkt interpretiert und ausgeführt wird, können Modelle noch während der Ausführung (run-time) geändert werden. Hier ist also eine sehr hohe Flexibilität in Bezug auf kurzfristige Änderungen gegeben. Dies besitzt aber die Nachteile, dass mit der Interpretation der Metadaten bei jeder Ausführung ein Performance-Nachteil gegenüber einer vorherigen Compilierung des Programmcodes besteht und die höhere Flexibilität auch zu höherer Fehleranfälligkeit und Unkontrollierbarkeit führt.
Auf Ebene 3 werden Modelle und Code für eine Weiterverwendung in einem Repository abgelegt. In der Regel werden Low-Code-Plattformen als Cloudlösungen angeboten, um deren Komfort der vereinfachten Administration zu nutzen. Aber auch die Ausführung auf lokaler Hardware ist möglich.
Insgesamt unterstützen Low-Code-Plattformen den gesamten Software-Lifecycle von der Modellierung, Entwicklung, Deployment und Ausführung bis zum Monitoring.

Erweiterungen und Weiterentwicklungen

Low-Code-Anbieter stellen im Zuge der Weiterentwicklung der Systeme immer mehr vorgefertigte Lösungen zur Verfügung, die von Kunden als Ausgangslösung für ihre Anwendung genutzt werden können. Diese können wiederum in die eigene Bibliothek zur Weiterverwendung eingestellt werden. Das gleiche gilt für vorgefertigte API‘s.
Bekannte Hersteller von Standardsoftware für ERP, CRM oder Office-Anwendungen bieten Low-Code-Zusätze zu ihren Systemen an, um vom Anwender individuelle Erweiterungen entwickeln zu lassen. Diese sind aber vor allem auf die jeweiligen Hauptsysteme bezogen und stellen damit weniger einen unabhängigen Low-Code-Ansatz dar.
Viele Zeilen eines Programms sind nicht einmalig, sondern werden in vielen anderen Programmen ebenfalls verwendet. Es ist üblich, Programmzeilen textlich zu kommentieren. Aus einer großen Datenmenge aus Kommentaren können dann über ein KI-System aus einer Textbeschreibung einer Aufgabe die zugehörenden Programmierstatements zugeordnet werden. Dann wird natürlich sprachige Prozessbeschreibung automatisch in eine Programmiersprache wie Java übersetzt. Dieses klingt wie Zukunftsmusik, ist aber durchaus realistisch.
Insgesamt bekommt das Gebiet Low-Code-Entwicklung eine so große Bedeutung, dass es bereits als neues Berufsbild innerhalb der Digitalisierung diskutiert wird. Die Entwicklung zur (teil-) automatischen Softwareentwicklung ist mit dem Low-Code-Ansatz sicher noch nicht abgeschlossen. Insbesondere durch den Einsatz von KI können noch disruptive Innovationen erwartet werden.

Der Autor:
Prof. Dr. Dr. h.c. mult. August-Wilhelm Scheer, Herausgeber dieses Specials, ist einer der prägendsten Wissenschaftler und Unternehmer der deutschen Wirtschaftsinformatik und Softwareindustrie. Als Unternehmer und Politikberater arbeitet er aktiv an der Ausgestaltung  der Digital Economy. Prof. Scheer hat mehrere IT-Unternehmen mit den Schwerpunkten Softwareentwicklung und IT-Beratung gegründet. Zum gegenwärtigen Unternehmensnetzwerk mit rund 1.200 Mitarbeitern gehört als Flaggschiff die Scheer GmbH, die Unternehmen über IT-Beratungs- und Implementierungs-projekte bei der digitalen Transformation begleitet.

 

 


 

Literaturhinweis: Sahay, A., Indamutsa, A., Di Ruscio, D., & Pierantonio, A. (2020, August). Supporting the understanding and comparison of low-code development platforms. In 2020 46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA) (pp. 171-178). IEE.