You are here: SE » ThesisLowCodePlatforms

Vergleich und Evaluation von Low-Code-Plattformen gegenüber konventioneller Softwareentwicklung

bearbeitet von: Altan Mehmet Karacan

Einleitung

Der Bedarf an technologischen Lösungen wächst durch die Digitalisierung in den verschiedenen Branchen stetig. Immer mehr Unternehmen und Institutionen nutzen Softwarelösungen, um ihre Arbeitsprozesse zu beschleunigen und zu automatisieren. Die Corona-Pandemie ist ein Beispiel für die Digitalisierung im Gesundheitswesen, bei der viele Prozesse mit technischen Softwarelösungen umgesetzt wurden. Die ständige Nachfrage nach technischen Lösungen führt dazu, dass viele IT-Dienstleister oft unter Druck stehen und ihre Lösungen in begrenzter Zeit bereitstellen müssen, denn Software muss schnell, effektiv, effizient, sicher und von hoher Qualität geliefert werden.

Der Einsatz von Low-Code-Plattformen kann hier helfen, die Bereitstellung der Anwendungen deutlich zu beschleunigen. Mit Hilfe von visuellen Schnittstellen lassen sich notwendige Komponenten der Anwendung wie die Benutzeroberfläche, das Datenmodell und die Arbeitsabläufe der Anwendung ohne Programmierkenntnisse oder technisches Hintergrundwissen umsetzen. Die Plattform ist dann in der Lage, mit diesen Informationen eine echte Anwendung zu erstellen. Es existieren eine Vielzahl unterschiedlicher Low-Code-Plattformlösungen auf dem Markt, die alle die gleiche Grundintention haben, sich aber insgesamt in Funktionalität und Qualität unterscheiden.

Fragestellung

In dieser Arbeit wird eine Reihe von Low-Code-Plattformen untersucht und miteinander verglichen. Ziel dieser Arbeit ist es zu beurteilen, inwieweit die Entwicklung mit Low-Code- Plattformen effizienter ist als der klassische Entwicklungsprozess mit gängigen Frameworks.

Ein wesentlicher Grund für den Einsatz von Low-Code-Plattformen ist die potenzielle Zeitersparnis. Im Gegensatz zur klassischen Softwareentwicklung spielt sie insbesondere bei der initialen Entwicklung einer Anwendung mit Low-Code-Plattformen eine zentrale Rolle, da hierdurch die Planungs- und Implementierungsphasen deutlich verkürzt werden können. Neben der Betrachtung der Zeitersparnis gilt es auch herauszufinden, welche Prozesse bei der initialen Entwicklung länger dauern können als mit klassischen Entwicklungsansätzen.

Der Austausch von Daten zwischen verschiedenen Anwendungen über Programmschnittstellen ist in der heutigen Softwareindustrie unverzichtbar. Daher ist sowohl die Einbindung eines externen Dienstes als auch die Bereitstellung eigener Dienste für Drittsysteme unabdingbar. Es sollte geprüft werden, ob auf Low-Code-Plattformen ein flexibler Umgang mit diesen Mechanismen gewährleistet ist.

Die ausschließliche Verwendung vorgegebener Werkzeuge für die Entwicklung könnte für eine geringe Flexibilität der Low-Code-Plattformen sprechen. Daher sollte geprüft werden, ob individuelle Anpassungen wie selbstgeschriebener Quellcode in den Entwicklungsprozess einbezogen werden können. Auch Werkzeuge zur Laufzeitanalyse von einzelnen Programmfragmenten für Performanceverbesserungen könnten von Vorteil sein.

Um das volle Potenzial der Low-Code-Plattformen auszuschöpfen, ist es notwendig, eine mögliche Grenze für Anwendungen mit komplexen Datenmodellen und Arbeitsprozessen abzuschätzen. Daher stellt sich die Frage nach dem Umfang der angebotenen Features zur Realisierung von komplexen Anwendungen.

Interessant ist auch herauszufinden und zu bewerten, ob und inwieweit die generierte Anwendung über Low-Code-Plattformen durch einen Entwickler effektiv weiterentwickelt werden kann. Es ist möglich, dass gegebene Funktionen erweitert werden müssen. Ein Mehraufwand für die Weiterentwicklung aufgrund der Komplexität gegenüber konventioneller Softwareentwicklung ist nicht wünschenswert.

Neben der Wartbarkeit spielt auch die Testbarkeit der Anwendungen eine wichtige Rolle. Daher stellt sich die Frage, inwieweit hier die Testbarkeit in den Plattformen gegeben ist. Darüber hinaus sollte festgelegt werden, welche Art von Tests unterstützt werden und wie aufwändig die Durchführung ist. Eine Möglichkeit zum Debuggen, um potenzielle Programmfehler zu diagnostizieren und finden, wäre ebenfalls sehr nützlich.

Auch der Aufwand für die automatische Bereitstellung neuer Versionen sollte abgeschätzt werden. Unter anderem ist zu prüfen, ob die Skalierbarkeit der Anwendung in Form von Hardwareanpassungen oder den Einsatz von Clustern abgedeckt ist. Auch die Robustheit der Anwendung gegenüber Hardware- oder anderen Ausfällen sollte berücksichtigt werden.

Die Forschungsfragen wurden wie folgt zusammengefasst:
  • In welchen Prozessen ist beim initialen Entwicklungsaufwand mit Zeitersparnis / Zeitverlust zu rechnen?
  • Wird die Integration / Bereitstellung von Services unterstützt?
  • Ist eine individuelle Anpassung durch selbstgeschriebenen Code möglich?
  • Werden Werkzeuge zur Laufzeitanalyse zur Verfügung gestellt?
  • Wie groß ist der Featureumfang für die Umsetzung komplexer Anwendungen?
  • Kann die Anwendung ohne Mehraufwand weiterentwickelt werden?
  • Ist dieTestbarkeit der Anwendungen gegeben und wie aufwändig st die Testdurchführung?
  • Kann Debugging zur Fehlerdiagnose verwendet werden?
  • Wie aufwändig ist eine Automatisierung durch Continuous Integration / Continuous Delivery?
  • Ist die Anwendung skalierbar und wie hoch ist die Ausfallsicherheit?

Methodik

Zur Untersuchung der genannten Probleme werden phasenweise reale Anwendungsbeispiele definiert und mit verschiedenen Plattformen umgesetzt. Eine Phase ist der Entwicklungsprozess eines Anwendungsbeispiels, welches sequenziell mit allen Plattformen umgesetzt wird. Die Reihenfolge, in der die Plattformen ausgewählt werden, kann nach jeder Phase variieren, da die Erfahrungen für jedes Anwendungsbeispiel zu Beginn geringer sind als später, sodass der Vergleich der Plattformen am Ende fair sein sollte.

Das Ziel hierbei ist es, in den verschiedenen Phasen Anwendungsbeispiele zu finden, mit denen die beschriebenen Probleme näher untersucht werden können. Ausgehend von einfachen Anwendungsbeispielen steigt die Komplexität der Anwendungsbeispiele entsprechend den Erfahrungen und Erkenntnissen aus den vorherigen Phasen. Es sollen auch Anwendungsbeispiele gefunden werden, die nicht primär mit allen Plattformen umsetzbar sind. Das bedeutet, dass in manchen Phasen einige Plattformen nicht berücksichtigt werden können, weil sie die Anforderungen des Anwendungsbeispiels nicht erfüllen.

Beobachtungen, Erkenntnisse und Ergebnisse aus dem Entwicklungsprozess der Anwendungsbeispiele werden für jede Plattform in Form von ähnlich aufgebauten Textprotokollen festgehalten. Für jedes Anwendungsbeispiel werden so viele Protokolle erstellt, wie es viele Plattformen aus der jeweiligen Phase gibt.

In den Textprotokollen werden die einzelnen Schritte des gesamten Entwicklungsprozesses eines Anwendungsbeispiels und die damit gewonnenen Einsichten dargestellt. Wichtig ist, dass sie im gleichen Zyklus und während der Entwicklung gepflegt werden. Eine Protokollierung am Ende der Entwicklung sollte vermieden werden, da die Gefahr besteht, dass persönliche Erfahrungen und Kenntnisse der Plattformen verloren gehen können.

Der Hauptzweck der Protokolle besteht darin, die Plattformen miteinander zu vergleichen und evaluieren, welche Anwendungsfälle sich für die Low-Code-Entwicklung besonders eignen und welche Nachteile im Verlauf des Softwareentwicklungsprozesses zu erwarten sind.