Kann man mit Low-Code-Tools auch komplexe Anwendungen entwickeln-

Kann man mit Low-Code-Tools auch komplexe Anwendungen entwickeln-
 

Low-Code-Plattformen bzw. -Tools erfreuen sich in den letzten Jahren immer größerer Beliebtheit, da sie schnelle erste Erfolge und eine hohe Agilität bei der Anwendungsentwicklung individueller Software-Lösungen und einen hohen Grad an Automatisierung versprechen, wie es für die digitale Transformation erwünscht ist, die in vielen Organisationen und allgemein Sektoren noch schleppend vorangeht. Dabei macht sich allerdings ein grundsätzliches Problem bemerkbar, das umso größer ist, je mehr eine Entwicklungsumgebung oder Plattform in Richtung No-Code optimiert ist.

Was bedeuten überhaupt „Low-Code“, „No Code“ und „Pro Code“?

Mit diesen Begriffen werden Tools und Umgebungen zur Erstellung und Bereitstellung von Software-Komponenten bis hin zu umfassenden Software-Lösungen bezeichnet, die ohne („No-Code“), mit nur wenig („Low-Code“) oder überwiegend manuell geschriebenem Programmcode („Pro-Code“) erstellt werden.

Sie versprechen, den Prozess der Softwareentwicklung zu beschleunigen und die Produktivität durch den Wegfall von Programmieraufwand zu steigern. Typischerweise fokussieren sich No-Code-Tools auf die Workflows zur Abbildung von Geschäftsprozessen, so dass typische Anwendungen von eher niedriger Komplexität schnell bereitgestellt werden können.

Vereinfacht gesagt, stellen No-Code-Plattformen ihren Benutzern eine begrenzte Auswahl vorgefertigter Bausteine zur Verfügung, die nur konfiguriert und miteinander verknüpft werden müssen, um z.B. die Benutzeroberfläche, das Verhalten und die Abläufe sowie die Schnittstellen zur Integration mit anderen Systemen effizient zu definieren. Dabei gilt die Grundregel, dass je einfacher ein No-Code-Werkzeug bedienbar ist, desto weniger Konfigurations- und Kombinationsmöglichkeiten gibt es. Daraus folgt direkt, dass entweder die Breite der erstellbaren Lösungen oder deren Komplexität und Tiefe begrenzt ist.

Low-Code-Entwicklung erlaubt Skript-Einbindung für mehr Flexibilität

Meist weniger komfortabel in der Bedienung, aber flexibler und damit für komplexere Anwendungsfälle besser geeignet, sind Low-Code-Plattformen und -Tools, die in der Regel die Einbindung von eigenem Markup oder Code, z.B. in HTML, CSS, JavaScript im Frontend, oder Java, JavaScript, Python, PHP, Ruby oder R im Backend zur weitergehenden Individualisierung erlauben. Dies erfordert natürlich gewisse Programmierkenntnisse, aber im Gegenzug erhält man die weitgehende Freiheit beim Development seiner Software.

Funktionsprinzip und limitierende Faktoren

Generell funktionieren Low- und No-Code-Frameworks nach dem Prinzip, dass verschiedene Bausteine mit einem vordefinierten Funktionsumfang zur Entwicklung von Anwendungen als Vorlagen vorbereitet sind. Die exakte Funktion ergibt sich aus den Parametern, die von den Entwickler:inn:en gewählt werden.

Man kann sich die Parametrisierung wie das Stellen von Weichen (No-Code) oder der Programmierung von Stellwerken (Low-Code) in einem komplexen Netzwerk an Gleissträngen vorstellen. Je mehr individuelle Ziele und Routen ein Zug darauf erreichen kann, desto mehr Gleise und Weichen bzw. Stellwerke müssen natürlich existieren. Übertragen auf Software bedeutet dies, dass ein hoher Individualisierungsgrad, der für innovative Anwendungen wichtig ist, mit einer hohen Komplexität des Systems einhergeht, da die Komponenten alle vorab entwickelt und vor allem in jeglicher Kombination getestet werden müssen.

Hoher Individualisierungsgrad und komplexe Anwendungsfälle

Im Gegenzug kann man sich das Programmieren, also das Schreiben und Kompilieren von manuellem Code, vorstellen wie den Bau von Direktverbindungen zwischen beliebigen Start- und Zielpunkten, was natürlich aufwendiger ist, aber maximale Flexibilität und Geschwindigkeit bringt.

Bei Low- und insbesondere No-Code-Plattformen ist der begrenzende Faktor die Anzahl bzw. Tiefe der Abstraktionen. Mit Abstraktion ist hier die Auftrennung der tatsächlichen Funktionalität in Modell und Parameter gemeint. Je komplexer das Modell ist, d.h. je mehr Funktionsbausteine und benutzerdefinierte Parameter es für das Management einer Anwendung zur Verfügung stellt, umso genauer lassen sich konkrete Anforderungen umsetzen. Jede Abstraktion bringt aber auch i.d.R. eine eigene technische Schicht mit sich, die den gesamten Stack der Low-Code-Plattform bzw. No-Code-Plattform komplexer macht.

Da alle Parameter jederzeit änderbar sind, um das Aussehen und Verhalten der Low- bzw. No-Code-Anwendung zu beeinflussen, müssen diese in einer Datenbank vorgehalten und zur Laufzeit bei jeder Anfrage abgerufen werden, so dass die im Modell vorgesehenen möglichen Wege bei jeder Anfrage entsprechend der persistierten Daten selektiert und korrekt abgelaufen werden.

Während das Speichern aufgrund der im Vergleich zu den Abfragen seltenen Zugriffen unkritisch ist, ergeben sich beim Abruf der Modelle und Parameter umso höhere Anforderungen an die Systeme, je komplexer ein Anwendungsfall ist. Die Gesamtkomplexität wird von der Anzahl der Individualisierungsparameter und der Komplexität des Anwendungsfalls an sich bestimmt.

Faktoren, die zu hoher Gesamtkomplexität führen:

Individualität des User Interfaces (viele eigene visuelle Elemente, spezielle Eingabemasken und Anzeigen)

Anzahl der Datentypen und Abhängigkeiten/Verknüpfungen zwischen diesen

Komplexität des Verhaltens / Anzahl der möglichen Prozesse

Anzahl und Komplexität der Schnittstellen (intern und zu externen Systemen)

Auswirkungen hoher Komplexität auf die Performance

Es ist kein Wunder, dass der Aufwand für den Entwicklungsprozess, individuelle, skalierbare Lösungen und insbesondere komplexe Anwendungen mithilfe von Low-Code-Tools zu erstellen, mit der Komplexität der Anforderungen stark zunimmt.

Dabei spielt insbesondere die Form der Persistenz der Modelle und Parameter für die Definition der Daten und Prozesse eine große Rolle. Je besser ein Tool geeignet ist, komplexe Daten zu speichern und zu verarbeiten, z.B. durch die Nutzung einer Graphdatenbank, desto höher ist die Performance nicht nur der Plattform und der Tools selbst, sondern auch der damit erstellen Anwendungen.

Fazit:

Je individueller eine Softwareanwendung ist und je komplexer die Datenmodelle und Geschäftsprozesse, die damit abgebildet werden sollen, desto höher ist der interne Aufwand für Low-Code-Tools und insbesondere No-Code-Plattformen, die dafür notwendigen Daten zu speichern und zu verarbeiten. Insbesondere der Rechenaufand, ansprechende, auch mobil benutzerfreundliche, grafische Benutzeroberflächen schnell und einfach zu generieren und den Prozess der Bereitstellung zu automatisieren, ist äußerst anspruchsvoll.

Ideal eignen sich dafür Tools, die auf die Low-Code-Entwickung komplexer Anwendungen optimiert sind. Zusammen mit leistungsstarke, skalierbarer Hardware spielen sie ihre Stärken aus und erlauben es, Anwendungen schnell zu erstellen.

Ideale Low-Code-Werkzeuge für komplexe Anwendungsfälle müssen dafür optimiert sein

Ideale Low-Code-Plattformen sind bereits von ihrer Architektur her auf Komplexität optimiert und zielen auf professionelle Entwickler. Sie bieten vorgefertigte Komponenten und eine Reihe von Tools und Funktionen, um im besten Sinne von Rapid Application Development es zu ermöglichen, mithilfe von Low-Code neue Anwendungen, aber auch mobile Apps bestehender Anwendungen zu erstellen. Sie sind ideal für das Erstellen von Anwendungen optimiert, in dem sie es erlauben, Anwendungen mit minimalem Programmieraufwand zu erstellen.

Darüber hinaus bieten gute Low-Code-Plattformen auch No-Code-Tools, die bestimmte Entwicklungsschritte ermöglichen, ohne jeglichen Code schreiben zu müssen, z.B. die Schema-Erstellung. Auch wird die Entwicklung mobiler Anwendungen unterstützt und für ausgewählte Anwendungsfälle lässt sich auch Künstliche Intelligenz zielgerichtet einsetzen. Unternehmen müssen sich heute schon damit auseinandersetzen, wie sie KI beim Erstellen von Anwendungen nutzen.

Schnelle Erstellung von Anwendungen, um die Produktivität zu steigern

Gute Systeme lassen sich reibungslos in der Cloud betreiben und unterstützen dabei verschiedene Plattformen bei der Bereitstellung von Anwendungen. Low-Code bietet nicht nur, dass man Anwendungen erstellen kann, ohne viel Code zu schreiben, sondern dass Unternehmen jederzeit eine eigene Anwendung erstellen und anpassen und dabei auf vorgefertigte Komponenten zurückgreifen kann.

Low-Code unterstützt vor allem dabei, Geschäftsprozesse zu automatisieren. Eine gute Plattform bietet hier nicht nur die Möglichkeit, einfache Apps zu erstellen, sondern umfangreiche, komplexe Lösungen zu erstellen, die alle aktuellen und möglichst viele zukünftigen Anforderungen erfüllen. Einer guten Low-Code Plattform kommt dabei eine große Bedeutung zu, die über das reine „low-code verwenden“ hinausgeht.

Letztendlich ist es aber weniger, ob eine Plattform eher low-code oder no-code ist. Idealerweise bietet die Plattform Unterstützung für alle für die Entwicklung von Anwendungen mit realistischer Komplexität relevanten Schritte und bietet den Entwicklern Werkzeuge, die jeweils auf die Aufgabe optimiert sind, von no- über low- zu pro-code.