Schneller soll(te) es gehen – Software gilt als das neue Öl und ist damit Motor und Treiber von Innovationen gleichermaßen. Damit dieser Treibstoff genügend zur Verfügung steht, müssen die Methoden der Softwareentwicklung effizienter und leichtgewichtiger werden. Sind Rapid Application Development und Low Code die passenden Ansätze. Der Artikel sucht nach Antworten – auch mit Hilfe eines Experten.
Die Digitalisierung ganzer Unternehmensbereich schreitet stetig voran. IT spielt dabei eine Schlüsselrolle und liefert wichtige Beiträge zur Weiterentwicklung der Unternehmen bzw. verändert deren Geschäftsmodelle sogar dauerhaft. Diejenigen, welche auf diesem Weg erfolgreich sind, haben die Chance auf echte Wettbewerbsvorteile gegenüber der Konkurrenz. Mit der Digitalisierung der Unternehmensprozesse steigt der Bedarf an individuellen Applikationen. Gleichzeitig sind Zeit und Kosten beschränkt, um Software zu entwickeln. Gefragt sind daher moderne Ansätze der Entwicklung, welche enorm effizient sind und dennoch eine sehr hohe Qualität der entstehenden Applikationen garantieren.
Dieser Quantensprung in der Effizienz soll durch einen ausgereiften Werkzeugeinsatz erreicht werden. In der Softwareentwicklung werden schon immer umfassend Tools verwendet, um den Prozess zur Entwicklung von Applikationen zu beschleunigen. Das Ziel ist es, dass möglichst bestmögliche Maß an Unterstützung für die jeweilige Aufgabe zu finden. Weder ein so genanntes „Overtooling“ noch ein zu minimalistischer Werkzeugeinsatz sind zielführend mit Blick auf eine hohe Effizienz des Entwicklungszyklus
Rapid Application Development (RAD) ist ein Synonym der schnellen Anwendungsentwicklung.
Der Ansatz verfolgt das Ziel, die Softwareentwicklung im Vergleich zu klassischen Vorgehensmodellen flexibler zu gestalten und sich an schnell ändernde Anforderungen anzupassen. Ursprüngliche Grundlage ist das Spiralmodell, welches ein prototypisches Vorgehen vorsieht. Natürlich ist dieses Konzept auch auf agile Vorgehensmodelle übertragbar. RAD Tools weisen üblicherweise die Gemeinsamkeit auf, dass man mit ihnen die Benutzeroberfläche mit Hilfe eines Designers per Drag & Drop und über die Anpassung von Eigenschaften erstellt. Ebenso stehen i.d.R. auch nicht visuelle Komponenten zur Verfügung. Beispielsweise, um auf eine Datenbank zuzugreifen oder um einen Dateidialog aufzurufen.
Über Extensions, Plugins oder externe Bibliotheken kann das Angebot der Komponenten meist vielfältig erweitert werden. Das Ziel von RAD Tools ist es dabei den Entwickler von Routineaufgaben der Softwareentwicklung zu entlasten. Damit wird die Effizienz des Entwicklungsprozesses erheblich gesteigert. Beim Einsatz dieser Art von Werkzeugen behält der Entwickler jedoch jederzeit die vollständige Kontrolle über den Quellcode. Die meisten der heute eingesetzten integrierten Entwicklungsumgebungen sind schon seit vielen Jahren auf dem Markt, werden stetig weiterentwickelt und stellen damit gewissermaßen auch einen Investitionsschutz dar. Software, welche auf dieser Basis produziert wurde, kann i.d.R. auch noch Jahre später in einer neuen Version des RAD Tools bearbeitet und weiterentwickelt werden. Beim Rapid Application Development ist das Evaluieren der Anforderungen mit Hilfe von Prototypen direkter Bestandteil des Vorgehensmodells (Bild 1).
Noch einen vermeintlichen Schritt weiter geht Low Code Development
Dieser Ansatz verfolgt die Idee, dass man die Entwicklung von Business Anwendungen teilweise auf versierte Anwender in den jeweiligen Fachabteilungen verschieben möchte. Die Gründe sind vielfältig. Zum einem sind Entwicklungskapazitäten knapp und zum anderen steigt stetig der Bedarf an individuellen Softwarelösungen in Unternehmen. Technikbegeisterte und versierte Anwender (so genannte Citizen Developer) in den Fachabteilungen sind durchaus in der Lage ein Teil der Entwicklungsaufgaben zu übernehmen. Dazu werden ihnen hochintegrierte Tools an die Hand gegeben, welche ihnen das weitgehende Erstellen von Softwarelösungen erlauben. Diese Tools werden als Low Code– bzw. im Sonderfall auch als No Code-Plattformen bezeichnet.
Low Code – so sagt es bereits der Name – steht für möglichst wenig Code bei der Erstellung von Software. Typischerweise werden sie für Anwendungen aus den Bereichen Vertrieb, Marketing oder Produktionsplanung eingesetzt. Low Code Plattformen haben also das Ziel wiederkehrende Aufgaben der Softwareentwicklung zu standardisieren. Dabei setzen diese nicht auf technischer Ebene an, d.h. es geht nicht um die Wiederverwendung von Programmcode, sondern ihr Fokus ist die Ebene der Funktionen einer Software (Use Cases). Hier gibt es ein großes Potenzial zur Standardisierung. Typische, sich wiederholende Aufgaben sind zum Beispiel: formularbasierte Datenerfassung, Validierung der Daten, Bereitstellung der Benutzeroberfläche, lokale Datenhaltung, Umsetzung eines spezifischen Workflows und die Anbindung an der neuen Software an die bestehende Unternehmens IT.
Meist stellen die Low Code Plattformen dem Anwender folgende Möglichkeiten zur Verfügung: eine quellcodearme oder quellcodelose Realisierung der Benutzeroberfläche, die Umsetzung der Businesslogik mittels grafischer Modellierung der Geschäftsprozesse und die Anbindung der Datenbanken. Eine spezielle Ausprägung sind No Code-Systeme. Diese versprechen eine Softwarebereitstellung ohne Codierung. Das kann nach dem heutigen Stand der Technik jedoch nur für sehr begrenzte Aufgabenbereiche funktionieren.
Der Markt der RAD Tools und Low Code Plattformen ist durch eine hohe Heterogenität und große Angebotsvielfalt gekennzeichnet. Die angebotenen Werkzeuge unterscheiden sich durch Funktionsumfang, Vorgehensweise, adressierte Zielgruppe und Preis. Für eine Auswahlentscheidung sollten darüber hinaus die Vorkenntnisse, Zeitbudget und die Lernbereitschaft der Mitarbeiter berücksichtigt werden.
Die Ansätze im Vergleich
Rapid Application Development und Low Code haben das gemeinsame Ziel die Entwicklung von Applikationen zu beschleunigen. Beide richten sich primär an Anforderungen von Unternehmenssoftware. Der wichtigste Unterschied zwischen beiden Ansätzen besteht darin, dass man beim Einsatz eines RAD Tools i.d.R. über alle Projektphasen hinweg die vollständige Kontrolle über den generierten Quellcode behält. Bei der Gestaltung des User Interfaces erhält man eine bestmögliche Unterstützung durch einen integrierten Designer und kann auf eine Vielzahl von vorgefertigten Komponenten zurückgreifen. Im Bedarfsfall kann man diese Auswahl an Komponenten jedoch jederzeit durch Eigenentwicklung oder den Einsatz von Komponenten von Drittanbietern erweitern.
Bei der Implementierung der Logik der Software arbeitet man mit einer höheren Programmiersprache, wie zum Beispiel Delphi oder Java. Auch hier ist man in seinen Möglichkeiten in keiner Weise eingeschränkt. Moderne Sprachkonzepte unterstützen dabei den Vorgang der Codierung und erlauben das Formulieren von Quelltext, welcher stets nah an der Problemstellung ist. Die Anbindung von Datenbanken erfolgt wahlweise durch Komponenten, welche die unterschiedlichen Schnittstellen der Datenbankanbieter kapseln und für eine einfache und einheitliche Vorgehensweise aus der Sichtweise des Entwicklers sorgen. Auch hier kann man direkt in den Code bei Bedarf eingreifen und damit besondere Anforderungen umsetzen.
Low Code Tools haben dagegen das Ziel den Vorgang der Softwareentwicklung noch weiter zu standardisieren und die Tools auch für nicht Softwareentwickler handhabbar zu machen. Daher müssen Low Code Tools den Entwicklungsprozess stärker vorgeben. Bei richtiger Anwendung kann die Softwareentwicklung weiter beschleunigt werden, aber die Auswahl der Optionen und die individuelle Anpassbarkeit wird gleichermaßen eingeschränkt. Man ist i.d.R. an die vorgegebenen Optionen des Low Code Tools gebunden. Oftmals lassen Low Code Tools eine weitere Bearbeitung des Quellcodes durch die Entwickler in einer ausgewählten Entwicklungsumgebung zu.
Das ist vorteilhaft, denn man kann über diesen Weg noch ergänzende Anforderungen manuell umsetzen. Da der Quellcode jedoch durch die Low Code Plattform vollautomatisch generiert wurde, ist er für einen Programmierer oft schwer verständlich. Komplexe Logik, maschinell festgelegte Namen für Variablen, Klassen usw. und fehlende Kommentare erschweren nachgehende manuelle Quellcodeänderungen. Um die Vorteile einer Low Code Plattform auszuschöpfen, muss es gelingen einen Großteil der Anforderungen an die zu erstellende Software auch mit diesem Werkzeug zu realisieren.
Welche Vorgehensweise im Einzelfall die bessere Wahl ist, dass muss individuell beurteilt werden. Tabelle 1 berücksichtigt wichtige Kriterien bei der Auswahl zwischen RAD Tools und Low Code (No Code) Plattformen.
Kriterium | RAD | Low Code (No Code) |
Zielsysteme | alle Anwendungstypen: Desktop-, Mobile-, Web-Applikationen | primär Web Applikationen, ggf. auch Mobile Apps |
Arten von Applikationen | Business Applications
Consumer Applications Applications für IoT Spiele (eingeschränkt) |
Business Applications |
Nutzer | Entwickler | Entwickler und Fachanwender nach Einarbeitung |
Eignung für Migrationsprojekte | geeignet, da vorhandener Quellcode übernommen werden kann | eher nicht geeignet |
Flexibilität der Lösungen | volle Flexibilität, da kompletter Zugriff auf Quellcode | Flexibilität eingeschränkt, da man an die Vorgaben des Low Code Systems gebunden ist |
Interface Gestaltung | UI Designer, Einsatz von Komponenten | |
Programmierung der Applikation | Quellcode, Unterstützung durch Assistenten und Designer | Designer und Assistenten, Export von Quellcode oft möglich |
Workflow für Business Layer | Quellcode | Workflow Designer |
Integration von Prototyping | Verzahnung mit Prototyping über gemeinsame Vorlagen möglich | Prototyping ist Bestandteil des Tools |
Entwicklungssystem | meist Desktop Systeme | Desktop Systeme oder Web-Applikationen |
Datenbankzugriff | über Provider, erweiterbar und vollständig konfigurierbar Zugriff auch direkt aus Quellcode möglich | über konfigurierbare Konnektoren |
Weiterverwendung Quellcode | keine Einschränkungen Quellcode vollständig verfügbar | ggf. Export von Quellcode |
Integration von Tools und Komponenten von Drittanbietern | umfassend, oft vielfältiges Angebot | an den Hersteller gebunden |
Bindung an Anbieter | Quellcode ist frei verfügbar | weitgehend an System gebunden, ggf. kann Quellcode exportiert werden |
Tabelle 1: Vergleich der Entwicklungsansätze: Rapid Application Development und Low Code (No Code).
Bekannte Vertreter von Low Code-Tools sind beispielsweise: Mendix [2], Outsystems [3] Microsoft Power Apps [4] und Visual Lansa [8]. In die Kategorie der RAD Tools gehören beispielsweise die folgend integrierten Entwicklungsumgebungen: RapidClipse [5], Visual Studio [6] und RAD Studio [7]. Diese Aufzählung stellt nur einen kleinen Ausschnitt aus der Angebotsvielfalt dar. Die passende Plattform auszuwählen ist keine leichte Entscheidung. Unterschiedliche Kriterien, wie Anforderungen, unterstützte Zielsysteme, Lizenzbestimmungen, Vorgehensweisen, Kosten und Erfahrungen der Mitarbeiter sind wichtige Kriterien.
Im Interview haben wir Atanas Popov – CEO von Embarcadero und damit langjähriger Hersteller des Entwicklungswerkzeuges RAD Studio gebeten, die Entwicklung der künftigen Softwareentwicklungstools kritisch einzuschätzen.
Interview mit Atanas Popov
Hallo Herr Popov, wir möchten Ihnen gern ein paar Fragen zur Zukunft der Softwareentwicklungstools stellen:
- Wie schätzen Sie die künftige Ausrichtung der Werkzeuge für die Softwareentwicklung ein? Geht der Trend in Richtung Low Code und vielleicht sogar No Code?
Sowohl Low Code als auch No Code sind wichtige Trends. Ich denke, dass No Code zu viele Einschränkungen hat, um in Unternehmen ernsthaft eingesetzt werden zu können. Sogar Low Code auf Unternehmensebene hat sich in Hybrid Low Code verwandelt, da man erkannt hat, dass „Drag and Drop“ nicht ausreicht, wenn man anspruchsvolle Anwendungen benötigt und dass eine echtes Coding erforderlich ist. Die Idee von Low Code ist nicht neu, ich denke, dass sie in gewisser Weise mit neuen Fortschritten wiederentdeckt wurde, basierend auf der gestiegenen Nachfrage nach Digitalisierung, die das traditionelle Entwickler-Ökosystem nicht erfüllen kann.
- Im Bereich der Web-Entwicklung ist dagegen teilweise wieder eine Bewegung zu den „Wurzeln“ der Softwareentwicklung zu sehen. Statt integrierter Entwicklungsumgebungen arbeitet man verstärkt mit Editoren und direkt am Quellcode statt mit Designern. Ist das die Zukunft der Softwareentwicklung oder eher ein Schritt zurück?
Nun, ich denke, dass die Webentwicklung vor mehr als einem Jahrzehnt von der Entwicklung mit IDEs weggegangen ist. Meine Theorie ist, dass die Verbreitung von Open Source und ein bisschen „Wilder Westen“ auf Kosten von Produktivitäts-Tools gingen. Natürlich trieben sie eine Reihe von erstaunlichen neuen technologischen Fortschritten voran, aber die Produktivität war dabei einfach nicht der Hauptfokus. In der Tat glaube ich, dass die „Rückkehr“ von Low Code eine Antwort auf diesen Trend ist. Low Code-Technologien steigern die Möglichkeit, wie einfach es ist, zu lernen und wie produktiv man bei der Entwicklung von Software ist. Das braucht man heute mehr denn je.
- Wie positioniert sich RAD Studio (Delphi, C++Builder) in diesem dynamischen Markt? Welche Zielgruppe adressieren Sie hier?
RAD Studio ist ein Pionier unter den Produktivitätswerkzeugen für Entwickler. In vielerlei Hinsicht ist es mit Low Code verwandt, da die visuelle Entwicklung (Drag-and-Drop-Konfiguration) im Mittelpunkt des IDE-Paradigmas steht. Ich glaube, dass es das Beste aus beiden Welten kombiniert, wo man die Produktivitätsbeschleuniger hat, aber man hat auch die umfassenden und robusten Entwicklungssprachen an der Hand. Bei den meisten Low Codes müssen Sie mit mehr Konzepten vertraut sein, einschließlich einer visuellen IDE, einer proprietären Skriptsprache und normalerweise einer Front-End- und einer Back-End-Sprache (z. B. JavaScript und Java).
- Softwareentwicklung ist heute immer noch hoch komplex. Glauben Sie, dass es in der Zukunft gelingen kann, den Prozess deutlich zu vereinfachen und damit zum Beispiel auf Fachanwender für die Entwicklung von Business Applikationen in großem Maße zu gewinnen?
Ich denke, dass mit visuellen Tools und KI die Leute leichter lernen und entwickeln werden, so dass sicherlich die Einstiegshürden für neue Entwickler niedriger sein könnten. Allerdings ist es die Denkweise, die gute Programmierer gut macht und das wird immer der Fall sein. Natürlich werden Funktionen oder Aspekte von Anwendungen leichter von „Geschäftsleuten“ entwickelt werden können. Anwendungen zu entwickeln ist schwer, insbesondere wenn sie gut werden sollen. Ich bin mir nicht sicher, dass weniger qualifizierte Entwickler eine Lösung sind.
- Ein Beispiel: Die Entwicklung einer mobilen App für iOS und Android ist aufwändig, fehleranfällig und damit auch kostenintensiv. Können intelligente Werkzeuge diesen Prozess vereinfachen und damit schneller zu Ergebnissen führen?
Absolut, ich denke, dass KI als weit gefasster Begriff dramatisch dabei helfen wird, die Erstellung von Anwendungen einfacher und weniger fehleranfällig zu machen. Ich denke allerdings auch, dass wir davon noch ein paar Jahre entfernt sind.
- Wie sehen Sie die Hardwareentwicklung bei Apple, insbesondere mit der M1 Familie?
Der M1 ist ein unglaublich leistungsstarker Chip. Er macht die Desktop-Leistung deutlich besser. Doch wenn man sich anschaut, wo die meisten Fortschritte bei der App-Entwicklung stattfinden, geschieht dies eindeutig nicht auf dem Desktop. Wir sind abhängig vom Web. Für mich müssen Desktop-First-Anwendungen erst noch wiederentdeckt werden, ähnlich wie Low Code. Wir kratzen noch nicht einmal an der Oberfläche dessen, was möglich ist, aber die Entwickler denken noch nicht daran, oder zumindest noch nicht genug Entwickler. Embarcadero hat letztes Jahr eine Konferenz über Desktop First Apps veranstaltet. Sie war gut besucht, aber sie ist nur ein erster Schritt. Ich denke, dass wir eine ganze Reihe von Dingen brauchen um zu erkennen, was wir mit nativen lokalen Apps machen können. RAD Studio ist eine der wichtigsten IDEs, die davon profitieren.
- Ein Blick in die Glaskugel: Wie wird die Entwicklung von Software vielleicht in 10 oder 15 Jahren aussehen? Sitzen wir immer noch vor einer integrierten Entwicklungsumgebung und codieren wir den Quellcode mühsam Schritt für Schritt oder wird uns zum Beispiel KI umfassend unterstützen?
In 10-15 Jahren wird KI eine viel größere Rolle in der Anwendungsentwicklung spielen. Ich denke, dass wir jedoch noch weit davon entfernt sind, dass sie unabhängig arbeitet. Ich denke, dass wir definitiv eine IDE haben werden, aber stark unterstützt durch KI. Ich bevorzuge irgendwie das Bild von verteilter KI auf leistungsstarken lokalen Maschinen gegenüber dem Bild von mehreren großen zentralisierten KIs. Es erscheint mir privater, sicherer und unternehmerisch sinnvoller zu sein, aber das heißt nicht, dass ich Recht habe.
- Früher waren Delphi und Pascal eine bevorzugte Sprache zum Erlernen von der Programmierung. Was unternimmt Embarcadero in der Richtung Aus- und Weiterbildung?
Welche Sprachen aktuell favorisiert werden, unterliegen großen Trends und sind eher organisch. Man kann versuchen, sie zu beeinflussen, und viele sind damit gut gefahren, insbesondere Oracle und Microsoft. Aber dann gibt es z. B. die Sprache Python, die von niemandem besonders forciert wurde. Ich denke, dass Delphi / Pascal ursprünglich durch Microsofts Vorstoß von C# und Oracles Vorstoß von Java geschädigt wurde. Die Tatsache, dass es keine einfache freie Lösung zum Lernen gab, war auch ein dauerhaftes Problem. Seit wir unsere Delphi Community Edition eingeführt haben, bekommen wir hunderttausende von Downloads pro Jahr, das ist also positiv. Auch die Community ist lebendiger geworden. Es gibt mehr Innovationen. Ich denke, dass ein großer Wandel stattfinden wird, wenn wir als die beste Lösung für ein großes Problem angesehen werden. Auf diese Weise wurde Python wiederentdeckt. Ich denke, dass die Wiederentdeckung der Leistungsfähigkeit von nativen Desktop-Anwendungen einer dieser Trends sein könnte.
- Ist es geplant für die aktuellen Versionen der Embarcadero Tools auch wieder kostenfreie Community Editionen zu erstellen um den Nachwuchs zu fördern?
Auf jeden Fall. Unser Ziel ist es immer, eine gute Community Edition zu haben, aber sie wird immer hinter der professionellen Software zurückbleiben, was Funktionen und Möglichkeiten angeht. Wenn Sie ein kommerzieller Entwickler sind, dann können Sie es sich leisten, für die neuesten und fortschrittlichsten Funktionen zu bezahlen. Der Low-Code-Aspekt von RAD Studio hat auch viel damit zu tun. Ein oder zwei Entwickler können eine Menge erstaunlicher Dinge tun. Dies ist bei Visual Studio nicht der Fall, da C# und die Toolchain komplexer sind. Daher kann Microsoft die kommerzielle Nutzung leichter kontrollieren, indem es einfach die Größe der Entwicklerteams überwacht. Ich freue mich, dass unsere Community lernt und wir weniger Verstöße gegen die Nutzung der Community Edition sehen. Wenn man mit den Tools Geld verdient, ist es OK, zu zahlen…
- Eine letzte Frage in Bezug auf RAD Studio: Welche Innovationen plant Embarcadero hier in Zukunft, um die Produktivität der Entwickler weiter zu steigern? Auf welche Features können wir uns hier vielleicht freuen?
Von der Low Code Idee lernend, führen wir Low Code Wizards (TM) ein, die den Entwicklern dabei helfen, Funktionen und Komponenten von Anwendungen schneller zu erstellen und zu implementieren. Wir werden das Konzept weiter ausbauen. Wir denken über weitere KI-unterstützte Code-Assist-Funktionen nach, einige unmittelbarer als andere. Wir werden auch die UX mit neuen Versionen etwas aktualisieren. Und schließlich wollen wir es Partnern leichter machen, solche Produktivitätsfunktionen zu erstellen und damit zu monetarisieren, da das Ökosystem aktuell wieder an Fahrt gewinnt. Unser Team ist nicht riesig, aber das Maß an Einfallsreichtum und Praxisnähe, dass wir in die Produktentwicklung einbringen können, ist gewaltig und Sie werden mit den kommenden Releases immer mehr beeindruckende Funktionen sehen.
Herr Popov vielen Dank für das interessante Gespräch. (Hinweis: Dieses hat der Autor am 03.05.2021 geführt).
Fazit und Ausblick
Die moderne Softwareentwicklung bemüht sich weiterhin mit einem intelligenten Werkzeugeinsatz den Prozess zur Erstellung von Applikationen zu vereinfachen und zu beschleunigen. RAD und Low Code sind dabei wichtige Bausteine. Aktuell wird jedoch noch i.d.R. das Knowhow eines Softwareentwicklers benötigt. Aber auch deren Arbeit kann durch hochintegrierte Tools effizienter ablaufen. Vertiefend wird das Thema in [9] behandelt.
Links
[1] https://kissflow.com/rad/rapid-application-development/
[3] https://www.outsystems.com/
[4] https://powerapps.microsoft.com/de-de/
[5] https://www.rapidclipse.com/de
[6] https://visualstudio.microsoft.com/de/
[7] https://www.embarcadero.com/de/products/rad-studio
[9] https://lp.embarcadero.com/WhitepaperRADvsLowCode?utm_medium=press