Asset-Herausgeber

Low Code

Low Code

Nov 2020
Nov 2020

Der Ansatz Low Code verspricht eine Softwareentwicklung von neuen Anwendungen weitgehend ohne klassischen Programmcode. So kann das „Zusammenklicken“ von Software-Bausteinen über eine grafische Oberfläche zumindest in Teilen die klassische textbasierte Programmierung und die dafür notwendigen Programmierkenntnisse ersetzen. Auf diese Weise wird es IT-Nutzer:innen immer einfacher gemacht, zumindest kleinere Aufgaben und Geschäftsvorgänge zu programmieren – im beruflichen Umfeld genauso wie im Privaten. Was bedeutet Programmieren in diesem Zusammenhang? Und welche Auswirkungen hat der verstärkte Einsatz von Low Code auf die Entwicklung und den Betrieb komplexer Softwaresysteme in Organisationen?

Von spezialisierten Anwendungen zu flexiblen Werkzeugen

Viele Aufgaben können mit üblicher, verfügbarer Standardsoftware erledigt werden, komplexere Aufgaben erfordern dann allerdings die Verwendung einer hohen Anzahl von Parametern. Dies erschwert die Verwendung von Standardsoftware, da sie durch eine umfangreiche Konfiguration ergänzt werden muss. Selbst für eigentlich ganz einfache Aufgaben kann es schwer sein, eine genau zu den eigenen Vorstellungen und Anforderungen passende Funktion in Standardanwendungen zu finden.
Ein grundsätzlich anderer Ansatz ist die Lösung der Aufgabe durch Programmierung einer neuen, maßgeschneiderten Anwendung. Allerdings erweist sich eine solche Neuprogrammierung schnell als aufwändig und die neue Anwendung muss in die bestehende IT-Landschaft integriert werden.

Einen Ausweg aus diesem Spannungsfeld bietet der Low-Code-Ansatz. Dabei wird versucht, die Programmierung so einfach wie möglich zu halten und die Einbindung in die bestehende IT-Infrastruktur zu automatisieren. Der Vorgang der Programmierung kann insbesondere dann vergleichsweise einfach sein, wenn dazu leistungsfähige, miteinander kombinierbare Grundfunktionen aus dem Anwendungsgebiet zur Verfügung stehen, die sich einfach kombinieren lassen.

Begriffliche Verortung

 
 

Einfaches Programmieren mit Low Code

Es gibt einige gute Beispiele für Low-Code-Ansätze, wo sich die Nutzer:innen auf einfache Weise um die fachliche Seite der Erstellung einer Anwendung kümmern, ohne sich mit den softwaretechnischen Details belasten zu müssen. Eine erste Idee des Low-Code-Konzeptes vermitteln Content-Management-Systeme (CMS, bspw. Wordpress) zur Pflege von Informations-Webseiten als Alternative zur Webseitenerstellung von Grund auf. Das CMS unterstützt die Bereitsteller:innen von Informationen bei der einheitlichen und sachgerechten Präsentation, ob als private Blogger:in, als Verantwortliche:r für Firmenwebseiten oder als Arbeitshilfe innerhalb einer zivilgesellschaftlichen Organisation. Vergleichbar, wenngleich in der Umsetzung oft anspruchsvoller, ist die Visualisierung von Messdaten. Fachexpert:innen wählen Datenquellen, mathematische Verknüpfungen und passende Darstellungsformen aus, um an spezifische Bedürfnisse angepasste Analysen von großen Datenmengen etwa als Dashboard oder webbasiertes Notebook bereitzustellen.

Low Code eröffnet auch jenseits klar umgrenzter Anwendungsgebiete neue Möglichkeit durch einfache Programmierung. Programmierung behandelt im Kern Abläufe und Entscheidungen. Das einfachste Beispiel für die Abbildung von Prozessen sind Wenn-dann-Beziehungen. Immer, wenn eine bestimmte Bedingung, wie vorgegebene Messwerte oder Ereignisse, erfüllt ist, wird eine Aktion ausgelöst.

Ein populärer, nach dem Low-Code-Prinzip arbeitender Dienst ist IFTTT, die Abkürzung von „If This Then That“. Er erlaubt die Automatisierung einfacher, alltäglicher Abläufe durch die Verknüpfung genutzter Dienste, wie bspw. das Versenden einer Nachricht nach Erreichen eines vom Fitnesstracker erfassten sportlichen Ziels. IFTTT nutzt dazu die Schnittstellen bekannter Anwendungen, wie ortsbezogene Dienste, soziale Netzwerke, Tabellenkalkulation, und bietet auch Unterstützung zur Einbindung beliebiger fremder webbasierter Anwendungen (bspw. mittels WebHooks).

Komplexere Regeln lassen sich über Workflow-Management-Systeme abbilden, in denen beispielsweise Geschäftsprozesse definiert und ausgeführt werden können (bspw. mittels der Standards BPMN und DMN, Business Process Model and Notation bzw. Decision Model and Notation). Aus dem Internet der Dinge (IoT) ist insbesondere die grafische Programmierung zur Verarbeitung von Ereignissen bzw. Informationsflüssen bekannt (Beispiel: Node-RED). Es gibt also schon eine Reihe von Werkzeugen, mit denen individuelle Anwendungen erstellt werden können, ohne tief in Programmierung und technische Details einzusteigen.

Anwender:innen werden zu Entwickler:innen

Schon lange bilden wiederverwendbare Bausteine aus Softwarebibliotheken und Frameworks die Grundfunktionen von Anwendungen. Zum üblichen Vorgehen gehören auch Design- und Architekturvorgaben für Entwicklungsprozesse und die IT-Landschaft. Das erlaubt nicht nur eine schnellere Entwicklung und bessere Pflege der Software, sondern auch eine Aufteilung der Software in wiederkehrende Funktionen, die von Spezialisten entwickelt und optimiert werden können (Microservices), sowie die individuelle Verknüpfung dieser Grundfunktionen zu einer konkreten Anwendung. Durch dieses Vorgehen wird auch die Komplexität der Grundfunktionen verborgen und die Programmierung der Anwendungen auf einem abstrakten Niveau einfacher.

Auch grafische Nutzerschnittstellen (Mensch-Maschine-Interaktion) basieren auf umfangreichen Grundfunktionen, die sich über Entwicklungswerkzeuge per „Drag & Drop“ oder mit wenigen Zeilen Code zusammenstellen lassen. Als Vorteil zeigt sich nicht nur der verringerte Entwicklungsaufwand für eine leistungsfähige Anwendung, sondern auch die Möglichkeit, in einem dynamischen Entwicklungsprozess früh die Nutzbarkeit zu untersuchen und gleich zu verbessern (Usability).

Beim Ansatz Low Code werden Abstraktion und einfache Nutzerschnittstellen so kombiniert und weiterentwickelt, dass die Anwender:innen selbst in die Lage versetzt werden, ihre Anwendungen zu erstellen und an ihre Bedürfnisse anzupassen. Als Expert:innen bspw. für ihre Bedürfnisse im Smart Home oder für Datenflüsse, Geschäftsprozesse und -regeln in ihrem Arbeitsgebiet bekommen sie Werkzeuge an die Hand, um selbst Teile von Anwendungen zu erstellen und zu pflegen, ohne sich mit den Details und der Komplexität der Programmierung verwendeter Bausteine beschäftigen zu müssen. Die Programmierung erfolgt auf der fachlichen Ebene durch die Modellierung von Datenflüssen, Datenmodellen und Geschäftsprozessen.

Eine Möglichkeit zur Programmierung weitgehend ohne menschliches Zutun ist die Nutzung von Beispieldaten, um daraus Anforderungen für die Entwicklung der Anwendung abzuleiten (Specification by Example). Neben Low Code wird auch der Begriff No Code verwendet, wenn betont werden soll, dass die Notwendigkeit (wie auch die Möglichkeit) zur manuellen Anpassung des Codes gegen Null reduziert wird.
Die Nutzung des Low-Code-Ansatzes ermöglicht für mehr Menschen einen einfacheren Zugang zur Programmierung. Programmieren ist mächtiger als die Nutzung bestehender Anwendungen, da es weit weniger durch vorgegebene Optionen begrenzt wird. Damit können neue und andersartige Anwendungen geschaffen bzw. eine mögliche Kluft zwischen Standardsoftware und tagtäglich vollzogenen (Geschäfts-)Prozessen und Vorgängen verringert werden. Low Code kann auch dazu beitragen, in Programmierung einzusteigen (bspw. durch die Nutzung grafischer Programmierung in der Lehre) bzw. insgesamt die Softwareentwicklung zu demokratisieren.

Low Code in der professionellen Programmierung

Neben der Nutzung von bereits verfügbaren Low-Code-Werkzeugen kann der Ansatz auch genutzt werden, um komplexe kundenspezifische Softwaresysteme zu entwickeln, wie sie in Unternehmen und öffentlicher Verwaltung eingesetzt werden. Für ein ganz spezifisches Anwendungsgebiet und/oder für eine individuelle Sichtweise auf Geschäftsprozesse werden von IT-Expert:innen Bausteine und Baupläne entwickelt, mit denen Anwender:innen innerhalb der Organisation ihre Anwendungen selbst (weiter-)entwickeln können.

Bei der klassischen Software-Entwicklung legt der Auftraggeber vorab Ziele, Vorstellungen, konkrete funktionale Anforderungen, Qualitätsanforderungen und Randbedingungen fest. Dann übernehmen die Entwickler diesen Aufgabenkatalog und implementieren die gewünschte Lösung. Zusätzliche Anpassungen oder Weiterentwicklungen der fertigen Lösung werden bei Bedarf mittels Änderungswünschen (Change Requests) durch die Entwickler nach zusätzlicher Beauftragung in gleicher Weise realisiert.

Bei der Nutzung von Low Code wird die Programmierung aufgeteilt, in die Programmierung der Low-Code-Werkzeuge (Low Code Application Platform, LCAP) durch Expert:innen für Programmierung bzw. klassische Software-Entwickler:innen, in die Bereitstellung der Low-Code-Umgebung durch die zentrale IT-Abteilung bzw. einen IT-Dienstleister (Cloud Computing) und in die Erstellung der direkt nutzbaren Anwendungen durch fachliche Expert:innen mit ihrem Wissen um Geschäftsprozesse sowie die notwendigen Formeln und Regeln. Die sich daraus ergebende Werkzeugkette zur automatisierten Generierung der Anwendung kann auch wesentlich zur Automatisierung von Tests und zur Verbesserung der Dokumentation beitragen.

Bei dieser Art der Nutzung des Low-Code-Ansatzes empfiehlt sich ein agiles, schrittweises Vorgehen. Zum einen kümmern sich Fachexpert:innen - unterstützt von fachlich-spezialisierten Software-Entwickler:innen (bspw. Verwaltungsinformatiker:innen) - um die Anpassung und Erweiterung der fachlichen Anwendungen, zum anderen erweitern und optimieren die klassischen Software-Entwickler:innen die notwendigen Werkzeuge wie auch wiederverwendbare Standard-Bausteine und Dienste (Microservices). Die Werkzeugkette sollte dafür so flexibel sein, dass die Fachexpert:innen Änderungen an der Fachlichkeit ohne Änderung der Werkzeugkette selbstständig vornehmen können. Eine neue Version eines IT-Fachverfahrens wird, entsprechend dem Vorgehensmodell für den IT-Betrieb, durch die Fachexpert:innen angestoßen und automatisiert in die Betriebsumgebung übernommen (Deployment). Anpassungen an der Werkzeugkette durch die Software-Entwickler:innen sollten nur notwendig sein, wenn neue technische Eigenschaften (Features) benötigt oder Anpassungen an eine neue Softwareumgebung notwendig werden.

Themenkonjunkturen

 
 

Folgenabschätzung

Möglichkeiten

  • direkte Umsetzung von Regeln und Normen durch Fachexpert:innen
  • generell verständlichere, überprüfbare digitale Abläufe
  • kostengünstige Entwicklung durch hohe Abstraktion
  • direkte, kurzfristige Anpassbarkeit von Verfahren
  • Entschärfung des IT-Fachkräftemangels
  • Unterstützung der digitalen Transformation
  • Demokratisierung der Softwareentwicklung durch Laien und in der Bildung

Wagnisse

  • komplexe Entwicklung kundenspezifischer Low-Code-Werkzeugkästen
  • Abhängigkeiten von Herstellern individueller Werkzeugketten
  • übersteigerte Erwartungen an die Universalität der Werkzeuge
  • Intransparenz der umfangreichen Werkzeugkette
  • fehlende Bereitschaft zur IT-Weiterbildung bei Fachexpert:innen
  • Kostensteigerung durch Domänen-spezifische Anpassung der Werkzeuge

Handlungsräume

Aufbau von Kompetenzen für digitale Prozesse in Organisationen

Es braucht mehr Digitalisierungs-Expert:innen, benötigt werden hauptsächlich methodische, aber auch technische Grundlagen für die fachgerechte Modellierung von Anwendungen und Prozessen. Nicht zuletzt bei der Nutzung komplexer kundenspezifischer Low-Code-Softwaresysteme bedarf es ergänzend Methoden agiler Entwicklung, agiler Arbeitsweisen und der zugehörigen Arbeits- und Organisationskultur.

Low Code als Anforderung in Ausschreibungen

Die Entwicklung und Pflege eines IT-Fachverfahrens bzgl. der Fachmodelle, Fachlogik und Fachprozesse kann zunehmend durch die Verwaltung selbst erfolgen. Entsprechend sollten Software-Hersteller und -Entwickler den Einstieg in Low Code über modellbasierte Entwicklung und domänenspezifische Beschreibungssprachen ermöglichen und bei Bedarf durch weitergehende Lösungen ergänzen, bis zum Einsatz einer Low-Code-Application-Plattform.

Aufbau von Low-Code-Entwicklungskompetenzen

Sowohl Anwender:innen als auch IT-Dienstleister benötigen Entwicklungskapazitäten für den Low-Code-Ansatz. Dies umfasst in ihren verschiedenen Rollen Verwaltungsmitarbeiter:innen, die Verwaltungsvorgänge digitalisieren können, Softwareentwickler:innen mit fachlichen und technischen Kenntnissen sowie einen IT-Betrieb, der die agilen Betriebsprozesse unterstützen kann. Low Code als umfassender Ansatz beinhaltet wesentliche zeitgemäße Aspekte der Softwareentwicklung und des Betriebs von IT-Infrastrukturen.

IT-Dienstleister stellt Entwicklungsinfrastruktur bereit

Um kollaboratives Arbeiten zwischen Auftraggeber (bspw. der Verwaltung), Software-Hersteller/-Entwickler, Qualitätssicherung und IT-Dienstleister zu ermöglichen, muss der IT-Dienstleister technische und organisatorische Aspekte unterstützen. So muss es möglich sein, Dokumente und Quellcode gemeinsam zu bearbeiten, dem IT-Dienstleister Quellcode automatisiert und medienbruchfrei zu übergeben sowie generell Werkzeuge für das kollaborative, agile Arbeiten zur Verfügung zu haben.