Entwicklung einer RAD-Plattform im Kontext verteilter Systeme - Chemnitzer Informatik-Berichte - CSR-19-02 - TU Chemnitz
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Fakultät für Informatik CSR-19-02 Entwicklung einer RAD-Plattform im Kontext verteilter Systeme Martin Springwald · Wolfram Hardt März 2019 Chemnitzer Informatik-Berichte
Entwicklung einer RAD-Plattform im Kontext verteilter Systeme Martin Springwald TU Chemnitz Fakultät für Informatik martin.springwald@informatik.tu-chemnitz.de Häug wird für kommerzielle oder wissenschaftliche Zwecke Individualsoft- ware benötigt. Obwohl Anwendungen häug denselben Mustern folgen, müs- sen oft auch triviale Bestandteile immer wieder neu entwickelt werden, zudem erfordert die Entwicklung allgemein entsprechende Fachkenntnisse. Daher be- steht die Idee Plattformen zu entwickeln, die keine oder wenig Programmie- rung erfordern und somit die einfache und schnelle Entwicklung von Anwen- dungen unterstützen, um Zeit und Kosten zu sparen. Das W3C hat für ver- teilte Dienste Standards für die Beschreibung von Diensten, Prozessen und auch die Präsentation etabliert. Es ist Ziel dieser Arbeit diese Standards zu kombinieren und ein kompatibles, jedoch vereinfachtes Beschreibungsformat zu entwickeln, einschlieÿlich einem Werkzeugkasten für die Codegenerierung und Bereitstellung einer Laufzeitumgebung. Durch Modularisierung soll die Plattform einfach erweiterbar bleiben. Keywords: low code, meta language, rapid application development, tem- plate engine, web engineering 1 Einleitung Die Nutzung von Informationstechnologie (IT) ist oft integraler Bestandteil der meisten Projekte kommerzieller oder wissenschaftlicher Natur. Dies liegt darin begründet, dass Abläufe automatisiert und dadurch auch beschleunigt werden können. Dadurch entsteht eine Ersparnis an Zeit und Kosten. Allerdings erfordert die Entwicklung von individuellen Systemen eine bestimmte Menge an Ressourcen.
Zeit und Kosten für Abläufe zusätzliche Zeit und Kosten für Abläufe ohne mit zugeschnittener IT zugeschnittene IT Ziel: senken Zeit und Kosten für individuelle Entwicklung IT Abbildung 1: Trade-O zwischen Ersparnis an Zeit und Kosten und Entwicklungsauf- wand beim Einsatz von IT für Projekte Die benötigte Menge kann dadurch begrenzt werden, dass der Entwicklungsprozess eben- falls optimal gestaltet wird. Zielstellung ist es daher den Entwicklungsprozess an wissen- schaftlich herausgearbeiteten oder als Best Practice anerkannten Prinzipien auszurichten. Eine Orientierung für die Softwareentwicklung bietet dazu das Buch The Pragmatic Pro- grammer von Andrew Hunt und David Thomas. Den wichtigsten Fokus verdienen nach Hunt und Thomas die Wiederverwendbarkeit und Verständlichkeit einzelner Komponen- ten. Dazu dienen unter anderem die Prinzipien Don't repeat yourself (DRY), Ortho- gonalität und Reversibilität. Das erste Prinzip sagt aus, dass Tätigkeiten nicht ständig redundant wiederholt werden sollen. Orthogonalität bezeichnet die Entechtung von Ab- hängigkeiten und Reversibilität die Wahrung von Austauschbarkeit. Ebenfalls nennen die Autoren auch nur auf spezielle Problembereiche ausgerichtete Domänensprachen als Maÿnahme um unnötige Redundanzen zu vermeiden. Die weiteren Prinzipien betreen agile Methoden, wie prototypengetriebene Entwicklung.[1, S. 25] Aufgrund der etablierten Standards des World Wide Web Consortiums (W3C) und der ge- ringen Einstiegshürde werden immer mehr Anwendungen mit Webtechnologien realisiert. Dabei ist es unabhängig davon, ob diese auf einem Server oder lokal auf einem Rechner laufen sollen. Um die vorgenannten Prinzipien auch im Web Engineering anwenden zu können, hat sich die Nutzung von Frameworks etabliert. Eines der ersten Frameworks in diesem Zusammenhang war ColdFusion, welches bereits eine Tag-basierte Auszeichnungs- sprache mitbrachte und damit Webseiten vorlagenbasiert ausgeben konnte.[2] Verbreitet hat sich später auch Ruby on Rails.[3] Aus Ruby ist auch der Befehl scaold bekannt, der das Erzeugen von Gerüsten für die Datenbank ermöglicht.[4] Daraus hat sich das Prinzip des scaolding für derartige Frameworks etabliert. Neben dem Gerüstbau sind Datenbankabstraktion, Templating und Mailversand wiederkehrende Bestandteile von Web-Frameworks. 2
Datenbankabstraktion Templating Mailversand Scaffolding Abbildung 2: Kernfunktionen von Webframeworks Trotz des Einsatzes von Rahmenwerken ist immer noch einiges an Entwicklungsaufwand und entsprechende Fachkenntnis erforderlich. Auch Forrester stellte 2014 in einem Report fest: Hand-coding is too slow to develop und spricht dann als Lösung erstmals von low code application platforms.[5] Seit dieser Zeit verbreiten sich diese sogenannten Low- Code-Plattformen, die gemäÿ ihrer Eigenbezeichnung den Programmieraufwand soweit wie möglich, teilweise bis auf Null, reduzieren wollen und die Entwicklung von Anwen- dungen auf Grundlage von Beschreibungen und Zusammenstellungen unterstützen. Das Marktvolumen dieser Plattformen wird nach Marktvorhersagen von Forrester bis 2020 auf voraussichtlich 15,5 Milliarden US-Dollar anwachsen.[6, S. 16] Es kann vorweggenommen werden, dass verbreitete Low-Code-Plattformen durch man- gelnde Anpassbarkeit oder Proprietarismus die Prinzipien einer ezienten Softwareent- wicklung derzeit nicht optimal verwirklichen lassen. Daher wurde eine neue Plattform konzipiert und prototypisch umgesetzt, um diese Lücke zu füllen. 2 Methoden Die Arbeit ist dreigeteilt. Zuerst wurden bestehende Produkte evaluiert. Danach wur- de ein Konzept und die prototypische Umsetzung vorgenommen. Schlieÿlich wurde das Arbeitsergebnis mit einem Fallbeispiel evaluiert. 2.1 Bestehende Produkte Für die Evaluation bestehender Produkte wurde eine Marktstudie von Markets and Mar- kets herangezogen, die aktuelle Schlüsselhersteller und -produkte identiziert.[7] Damit wurde eine Vorauswahl der zu evaluierenden Produkte auf die wichtigsten Produkte ge- troen. Um eine Bewertung vornehmen zu können wurden sechs Kriterien herausgearbei- tet, die eng mit den Prinzipien ezienter Softwareentwicklung zusammenhängen und aus diesen ableitbar sind. Das ist Versionskontrolle, Initialisierungsaufwand, Einfachheit der Designtools, Anpassbarkeit des Aussehens oder Verhaltens bereitgestellter Widgets, Be- reitstellung externer Schnittstellen für Plugins und die Verwendung von Standards. Für die hier identizierten Produkte wurden aus Kommentaren auf der Bewertungsplattform TrustRadius[8] und den jeweiligen Produktdokumentationen mit den eben genannten Kriterien qualitative Bewertungen vorgenommen. 3
2.2 Konzeptentwicklung und prototypische Umsetzung Ausgangspunkt der Konzeptentwicklung ist die Entscheidung für die Denition einer Me- tasprache. Denn diese muss nicht notwendigerweise Turing-vollständig sein, um nützlich zu sein.[9, S. 49] Eine Metasprache erlaubt auch eine bessere Abstraktion und damit Re- duzierung von weiteren Abhängigkeiten. Da das Model-View-Controller-Muster (MVC) nach wie vor das wichtigste Paradigma für Anwendungen innerhalb verteilter Systeme ist, soll sich das zu beschreibende System auch an diesem Modell orientieren. Auch Pop und Altar sind im Kontext von Web Engineering der Ansicht: The MVC design pattern is such a good t for web application development because they combine several tech- nologies usually split into a set of layers..[10, S. 1174] Das Muster ist geeignet um die natürlichen Belange von verteilten Systemen zu berücksichtigen. Anfrage Controller Antwort Datenmodelle Präsentation Abbildung 3: MVC Flow im Web Engineering Es werden drei Schichten gebildet: einerseits die Datenmodelle, andererseits die Control- ler und zuletzt die Präsentationsschicht. Dabei interagieren die Schichten miteinander. In der Regel sorgt der Controller für den Austausch zwischen Datenschicht und Präsen- tationsschicht. Anfragen gehen zuerst an den Controller, die Präsentationsschicht liefert schlieÿlich die Antwort aus. Die prototypische Umsetzung kann auf Basis eines bestehenden Frameworks geschehen, dass grundlegende Komponenten für den vorgenannten Aufbau bereits vorsieht. Infrage kommen Ruby on Rails, Django, Symfony oder Flask.[11] Allerdings el die Entscheidung hier auf ein selbst betreutes Framework, da damit eine höhere Kontrolle einhergeht, die es ermöglicht während der forschenden Entwicklung die Auswirkungen von Änderungen an Framework oder Generator-Toolkit zu untersuchen und zu Entscheiden, an welcher Stelle beziehungsweise welchem Bereich die Änderungen vorgenommen werden sollten. Es wurde daher das PHP-basierte Blobsh-Framework ausgewählt, welches sich auch an DRY und anderen Kriterien orientiert und die Komponenten Datenbankabstraktion, Templating und Mailversand bündelt.[12] Auÿerdem war es notwendig ein Ökosystem in Form einer Tool-Infrastruktur zu entwer- fen und prototypisch umzusetzen, um verschiedene Aufgaben, wie grasches Editieren, Generieren, Exportieren, Bereitstellen oder Dokumentieren abzubilden. 4
2.3 Evaluation anhand eines Fallbeispiels Für die Evaluation von E-Learning-Angeboten wurde das Structure Oriented Evaluati- on Model for E-Learning (SURE) an der Technischen Universität Chemnitz entwickelt. Das Ziel dieses Modells ist es ein instrument or tool for improvement of E-Learning bereitzustellen.[13, S. 5] Es besteht aus einem Vorgehensmodell zur Auswahl von Evalua- tionskriterien und Datenerhebung sowie Methoden zur Berechnung und Aufbereitung der Ergebnisse. Um dieses Modell unterstützen und anwenden zu können, sollen ohne Me- dienbruch Online-Tools für die Schritte des Vorgehensmodells eingesetzt werden. Zwar existiert eine Betaversion eines solchen Tools, jedoch könnte zur Bereitstellung einer um- fassenderen und exibel erweiterbaren Lösung eine neue Umsetzung mit der in dieser Arbeit konzipierten Low-Code-Plattform erfolgen. Im Folgenden werden die wichtigen Punkte herausgestellt, die Anforderungen des Tools sind. Das Tool für das SURE-Modell soll Fragebögen und Nutzer verwalten sowie die Fra- gebögen den Nutzern präsentieren können und auf Basis der Antworten statistische Aus- wertungen nach den vorgegebenen Formeln erstellen und grasch präsentieren können.[13, S. 39 - 42] Daraus folgt die Anforderung Benutzer im System authentizieren und verwal- ten zu können. Zudem muss es möglich sein die Benutzerkreise für Frontend und Backend zu trennen und entsprechende Seiten für jeden Kreis bereitzustellen. Es sollte möglichst einfach sein, die Zielstruktur für die Auswertung in der generierten Oberäche zu erstel- len, also Ziele und Unterziele zu erstellen und miteinander zu verknüpfen sowie Fragen aus Fragebögen mit den Zielen zu verknüpfen. Es muss auch Schnittstellen geben um die nötigen Berechnungen für die Auswertungen zu implementieren. Als grasche Kom- ponenten müssen Listen und Formulare mit entsprechenden Feldern sowie Möglichkeiten zur Darstellung der Auswertungen bereitgestellt werden. Dabei wurde auch evaluiert, wie gut bestehende Plattformen dies leisten könnten. 3 Ergebnisse 3.1 Bestehende Produkte Die Vergleichstabelle bewertet die Eigenschaften der Schlüsselprodukte. Als relevante Ei- genschaften wurden Versionskontrolle (1), Initialisierungsaufwand (2), Einfachheit der Designtools (3), Anpassbarkeit des Aussehens oder Verhaltens bereitgestellter Widgets (4), Bereitstellung externer Schnittstellen für Plugins (5) und die Verwendung von Stan- dards (6) herausgearbeitet. Die Werte reichen entweder von Ja bis Nein oder aber von Gering über Mittel bis Hoch. Nicht alle Eigenschaften konnten objektiv bewertet werden. 5
Produkt 1 2 3 4 5 6 Appian Nein Hoch Gering Nein Gering Gering Salesforce Nein Gering Ja Ja Ja Mittel ServiceNow Ja Gering Gering Ja Ja Mittel AgilePoint Ja Gering Ja Ja Ja Mittel Bizagi Ja Gering Ja Ja Mittel Mittel Caspio Nein Gering Ja Mittel Mittel Gering K2 Nein Gering Mittel Gering Mittel Mittel MatsSoft Limited Ja Gering Mittel Nein Gering Gering Mendix Ja Mittel Ja Ja Ja Mittel OutSystems Ja Mittel Ja Ja Ja Mittel Tabelle 1: Vergleich existierender Plattformen Kein Produkt erfüllt alle Kriterien optimal. Die höchste Bewertung erhält AgilePoint. Al- lerdings orientiert sich auch dieses nicht an Formularbeschreibungsstandards (etwa XFDL oder XForms). Zudem ist keines der aufgeführten Produkte freie Software. 3.2 Konzeptentwicklung und prototypische Umsetzung Mit der Kombination aus Structured Query Language (SQL)[14], Web Services Descrip- tion Language (WSDL)[15] (bzw. das kommende JSON Schema mit Erweiterungen[16]), Business Process Model and Notation (BPMN)[17]/Business Process Execution Langua- ge (BPEL)[18], XForms[19]/Extensible Forms Description Language (XFDL)[20] und den Hypertext[21] und Cascading[22] Standards besteht ein mächtiges Set an Beschreibungs- sprachen, mit denen alle wesentlichen Aspekte von verteilten Diensten beschrieben werden können. Nachteilig ist, dass WSDL, BPMN/BPEL und XForms/XFDL auf Extensible Markup Language (XML)[23] und Simple Object Access Protocol (SOAP)[24] setzen, was zu Overhead führt, einerseits aufgrund zusätzlicher nicht immer benötigter Elemente im sogenannten SOAP-Envelop, andererseits bereits durch die XML-Eigenheit Tags ö- nen und schlieÿen zu müssen. Das JavaScript Object Notation-Format (JSON) spart dies ein.[25] Ein Ersatz durch ezientere und weniger komplexe Formate wäre auch besonders für kleinere Projekte empfehlenswert. JSON und handlichere Dienste auf Basis von Representational State Transfer (REST) werden dadurch vermehrt bevorzugt. Tatsächlich nden XML-basierte Dienste fast nur noch in Intranets ihre Verbreitung.[26] In Hinblick auf Zukunftssicherheit und Einfach- heit sollte daher weniger auf XML gesetzt werden. Allerdings sollte zu den etablierten Standards aufgrund vorhandener Tools und der beschriebenen Vorteile eine gewisse Kom- patibilität gewahrt werden und beim Design neuer Formate daran orientiert werden. Die neu zu entwickelnde Beschreibungssprache wird daher JSON als Grundlage verwen- den. Gemäÿ dem MVC-Modell wird die Beschreibungssprache zunächst in drei zu be- schreibende Teile geteilt: Datenmodelle, Darstellung sowie Dienste und Prozesse. Ins- gesamt entstehen elf Sektionen: prex, vendor, domains, datalists, relations, views, lists, forms, pages, services, processes. Dabei gehören domains, datalists, relations und views zu 6
den Datenmodellen, während lists, forms und pages zur Darstellung gehören und services sowie processes entsprechend zu Diensten und Prozessen. Es ist stets das Ziel kompatibel zu bestehenden Standards zu sein oder sich an diesen zu orientieren. Für den Bereich Datenmodelle wurde daher SQL als Domänensprache ge- wählt. Es können Domänen mit Feldern und Feldtypen, Relationen und Views deniert werden. Eine einfache Domäne mit einem Textfeld wird wie folgt deniert: example: { text_elds: [ value ], methods: crud }. Es stehen verschiedene Feldtypen zur Verfügung. Daraus werden SQL-Templates generiert, die alle Methoden für CREATE, READ, UPDATE und DELETE (CRUD) sowie Datendenitions-Anweisungen (DDL) zur Verfügung stellen. Später kann im Darstellungsmodul das value-Feld über den Namen referenziert werden ohne den Typ angeben zu müssen, es wird automatisch ein passendes Widget verwendet, auÿer es wird etwas anderes explizit angegeben. Es sind auch virtuelle Datenmodelle über ein virtual-Flag möglich, die keine Entität in der Datenbank erzeu- gen und nur für das Präsentationsmodul relevant sind oder die Verwendung von nicht zu generierenden und bestehenden Entitäten über ein alias-Attribut ermöglichen. Verknüp- fungen zwischen Domänen sind unter Angabe von Kardinalitäten (1:1, 1:n, n:m) über ein type-Feld möglich, wobei automatisch die passenden Constraints erzeugt werden. Wich- tig sind auch Views, die vornehmlich JOINs und UNIONs ermöglichen. Bei ihnen wird eine Liste von Domänen über das domains-Feld angegeben und mit einer Auswahl im Feld join_type gekreuzt. Weitere Feldfunktionen sind der Dokumentation zu entnehmen. Insgesamt ist die Menge an den bereitgestellten Operationen Dierenz, Kreuzprodukt, Projektion, Selektion, Vereinigung und Umbenennung relational vollständig. Somit kön- nen alle relationalen Abfragen und Manipulationen dargestellt werden. Listen sind Widgets, die Datensätze als Ergebnis des Aufrufs von Diensten auisten und Aktionen sowie Anwahl und Abwahl anbieten. Bei Anwahl eines Datensatzes können durch Verlinkungen mit weiteren Listen Abfrageketten erzeugt werden, so dass Hierarchi- en abgebildet werden können. Formulare sind Widgets, die einen bestimmten Datensatz als Ergebnis des Aufrufs eines Dienstes darstellen und Aktionen unter anderem für Er- stellen, Speichern oder Löschen anbieten. Listen können auch auf Formulare verlinken, so dass damit Editoren realisiert werden können. Seiten werden als aufrufbare URL bereit- gestellt. Ihr Template kann im HTML-Format vorgegeben werden, sowie Gestaltungen mit CSS durchgeführt werden. In den Seiten werden die Widgets über Platzhalter an- gegeben und beim Aufruf automatisch geladen. Bei Bedarf kann weiterer Client-Code eingebunden werden. Der Aufbau der Beschreibung orientiert sich an der Struktur von XFDL- und XForms-Beschreibungen. Die Struktur kann der Dokumentation entnommen werden. Dienste und Prozesse werden in den zwei entsprechenden Sektionen deniert. Alle Deni- tionen werden als Aktion über die REST-API erreichbar gemacht. Bei Diensten werden die gewünschte Datenbankmethode und die gewünschten Domänen oder Relationen mit- samt den Objektpfaden für die Parameter angegeben. Als Parameter stehen auch System- variablen wie die eingeloggte User-ID zur Verfügung. Unter der Sektion Prozesse können Ketten von Diensten angegeben werden, die nacheinander oder nach bestimmten Regeln abgearbeitet werden und das vorherige Ergebnis als mögliche Eingabe erhalten. Damit kann ein Workow funktional abgebildet werden. Als Datenaustauschformat ist JSON vorgesehen. Im Vergleich zu XML können damit redundante Daten eingespart werden. 7
XML und JSON sind gleichmächtig. Dieser Teil der Beschreibung zielt auf die Kompa- tibilität mit den Standards für WSDL beziehungsweise das im Standardisierungsverfah- ren bendliche JSON Hyper Schema sowie BPMN/BPEL ab. Die Beschreibung eines Dienstes erfolgt dabei in einem sogenannten return-Objekt. Dieses enthält die Attribute domain, optional relation sowie method und parameters. Damit werden Datenbankinter- aktionen auf vorher denierten Entitäten oder Views beschrieben mit den vordenierten Methoden delete, enumerate, enumerate_cached, lter, lter_cached, ltergroup, lter- group_cached, rst, insert, read, update oder upsert. Das weitere Verhalten und die richtige Reihenfolge bei der Angabe von Parametern ist der Dokumentation zu entneh- men. Für die Tool-Infrastruktur ist ein modulares Konzept vorgesehen. Jedes Tool soll sich mög- lichst auf eine bestimmte Aufgabe beschränken. Neben einem unterstützten Framework als Laufzeitumgebung ist das Herzstück der Generator, welcher aus der Beschreibung die Anwendungsdistribution erzeugt. Ein grascher Beschreibungseditor dient der benutzer- freundlichen Erstellung der Beschreibung. Weitere Tools dienen dem Import und Export bestimmter Teile der Beschreibung und der Assets. Auch für Migrationsaufgaben wer- den Tools bereitgestellt. Der Toolkanon besteht prototypisch aus dem Generator, dem Beschreibungseditor, den Importern und Exportern, Migrationstools und einem Doku- mentationstool. Der Generator liest die Beschreibung, welche in der oben konzipierten Beschreibungsspra- che gefasst ist, ein und generiert daraus die erforderlichen Artefakte: Abfragen für Daten- modelle (queries/%name%/*.sql), Templates für Listen, Formulare und Seiten (templa- tes/list_*.html.tpl, templates/form_*.html.tpl, templates/page_*.html.tpl) sowie Con- troller (%prex%/*.controller.php). Dabei greift der Generator auf Prototypen zurück. Es existieren Prototypen für HTML-Komponenten, Datenbank-Abfragen, Seiten-Controller, API-Controller und den clientseitigen Code. Es handelt sich insgesamt um einen Codege- nerator. Jeder generierte Code ist automatisiert prüfbar hinsichtlich Syntax und weiterer Auälligkeiten. Der verantwortlichen Person steht es frei den Code unverändert zu belas- sen oder eigene Modikationen vorzunehmen. Empfehlenswerter ist jedoch die Verwen- dung der denierten Schnittstellen zur Erweiterung. Solche Schnittstellen sind innerhalb der Controller und des clientseitigen Codes vorgesehen. Ein grascher Beschreibungseditor unterstützt die Erstellung der Beschreibung und er- leichtert deutlich ihre Handhabung. Die Erstellungszeit kann damit beschleunigt werden. Laut Forrester ist die visuelle Modellierung von Datenmodellen, Geschäftslogik und Be- nutzeroberächen ein wesentlicher Bestandteil von Low-Code-Plattformen und trägt zu einer signikanten Produktivitätssteigerung bei.[6, S. 5] Ein Screenshot aus der prototypisch entwickelten Anwendung wird hier dargestellt: 8
Abbildung 4: Screenshot Beschreibungseditor mit Fallbeispiel Jeder Bestandteil der ersten Ebene in der Beschreibung ist als Reiter dargestellt. Un- terhalb eines Reiters benden sich die weiteren Optionen. Dies sind Listen weiterer zu dem Bestandteil gehörender Einträge. Jeder Eintrag kann weitere Einträge oder eigene Optionen besitzen. Dadurch ist eine listengesteuerte Bedienung realisiert worden. Sinn der Anwendung ist auch dem Benutzer Hinweise zu geben, welche Optionen möglich oder sinnvoll sind, welche Einschränkungen zu beachten sind und welche Auswirkungen bestimmte Änderungen haben können. Durch die Einhaltung von Standards können Datenmodelle, Benutzeroberächen und Geschäftslogik grundsätzlich importiert und exportiert werden. Dies erleichtert die Por- tabilität bestehender Anwendungen und reduziert den Aufwand für Neuentwicklungen auf Basis bestehender Realisierungen. Auch erleichtert es die Portierung für andere Fra- meworks und Laufzeitumgebungen. Die Änderung von Datenmodellen erfordert die Anpassung der Schemata in der Daten- bank. Damit bestehende Daten nicht verloren gehen, müssen Migrationsschritte durch- geführt werden, die erstens die geänderten Attribute in die Schemata einpegen und zweitens Regeln für bestehende oder nicht bestehende Daten für geänderte Attribute de- niert werden. Eine automatische Generierung der Änderungsschritte für die Struktur und Denition der Regeln für die Übernahme von Daten erleichtert eine Aktualisierung der Anwendung erheblich und soll durch entsprechende Tools realisiert werden. Migrationen fallen bei Änderungen in generierten Anwendungen genauso häug an, wie in nicht ge- nerierten Anwendungen. Jedoch wird bei generierten Anwendungen sinnvollerweise auch eine automatische Migration erwartet. Bei Änderungen können im Wesentlichen zwei Be- reiche betroen sein: das sind zum einen die aus der Beschreibung generierten Assets und zum anderen die aus der Beschreibung abgeleiteten Entitäten in der Datenbank. Die Migration von Assets ist in der Regel durch Überscheiben möglich. Dies ist jedoch nur möglich, wenn die generierten Assets nicht nachträglich modiziert worden sind. Denn in diesem Fall müssten die Modikationen erneut durchgeführt werden. Aber sofern keine Modikationen notwendig waren oder keine Modikationen vorgenommen worden sind, ist ein Überschreiben möglich. Sofern Entitäten in der Datenbank geändert werden müs- sen, muss ein Migrationsskript ausgeführt werden. Dabei ist zu unterscheiden, ob bereits produktive Daten vorhanden sind und somit Ersetzungen ohne Datenverlust möglich sind oder inkrementelle Änderungen durchgeführt werden müssen. Eine Erstellung der Dokumentation ist teilweise automatisierbar. Unterstützt wird die Er- 9
stellung der Dokumentation durch die maschinenlesbare Beschreibung, aus der Abschnitte generiert werden können. Tiefer gehende semantische Erklärungen können durch benut- zerdenierte Beschreibungen ergänzt werden. Diese benutzerdenierten Beschreibungen können an denierten Stellen eingepegt werden. Damit ist die Dokumentation teilau- tomatisiert und vergleichbar mit der codebasierten Generierung von Dokumentation aus Kommentaren. Angestoÿen wird die Generierung mithilfe eines Dokumentationsgenera- tors. Viele Softwareprojekte setzen auf automatisierte Generierung von Dokumentationen aus Kommentaren im Code. Teilweise genügen auch automatisch generierte Kommentare, die lediglich Namen und Parameter nennen. Häug werden die semantischen Erklärungen noch durch den Entwickler ergänzt, sofern die Bedeutung sich nicht selbsterklärend aus dem Kontext ableitet. In Low-Code-Plattformen fällt wenig selbstgeschriebener Code an und damit auch weniger Kommentare die für Dokumentationen relevant sind. Jedoch liegt der Fokus auf Beschreibungen und diese sind durchaus kommentierbar und nicht immer selbsterklärend. Die Dienste und Prozesse werden aus der Beschreibung automatisiert extrahiert und grundlegend dokumentiert. Hier sind Namen, Parameter und semantische Erklärungen relevant. Externe Entwickler sollen wissen, welche Dienste sie aufrufen kön- nen, welche Parameter sie angeben können und was der Dienst oder Prozess bewirkt. Als Zielformat wurde Markdown[27] gewählt. Dieses bietet ausreichend viele Formatie- rungsoptionen, hält aber die Kompatibilität zu weiteren Zielformaten oen. Hinsichtlich einer Abdeckung der gewöhnlichen Bestandteile einer Softwaredokumentation kann die automatisierte Dokumentation den Quellcode und die Daten abdecken, Methoden und Entwicklung erfordern eine Beisteuerung durch die Entwickler. Aufgrund der standardi- sierten Laufzeitumgebung ist eine teilweise automatisierte Beschreibung der Installation aber ebenfalls möglich. Nur die Dokumentation für Endbenutzer und von Tests muss gesondert erfolgen. Allerdings könnten automatisiert erstellte Tests ebenfalls automa- tisch dokumentiert werden. Insgesamt können damit perspektivisch die überwiegenden Bestandteile einer Softwaredokumentation abgebildet werden. Import Beschreibungseditor Generator Migration Dokumentation Export Abbildung 5: Zusammenspiel der Komponenten im zeitlichen Ablauf Das Ablaufdiagramm zeigt das Zusammenspiel aller eben beschriebenen Komponenten. Der Beschreibungseditor ermöglicht die Änderungen an der Beschreibung, wobei wieder- um Beschreibungen durch einen Import eingebunden werden können sowie auch bestehen- de Beschreibungen exportiert werden können. Die Beschreibung wird schlieÿlich an den Generator übergeben, der die Artefakte erstellt und als weitere Schritte gegebenenfalls 10
zu einer Datenbankmigration führt sowie bei Bedarf automatisch eine Dokumentation er- zeugt wird. Exportierfähige Elemente entstehen auch während der Aktivität des Genera- tors oder der Erstellung der Dokumentation. Damit ist der Software-Entwicklungszyklus von Codeproduktion bis Dokumentation und Inbetriebnahme vollständig abgedeckt. 3.3 Evaluation anhand eines Fallbeispiels Um das Fallbeispiel zu realisieren, kann ein neues Projekt wie folgt initialisiert werden: Mit `composer init` wird ein Composer-Projekt unter Abfrage wesentlicher Parameter wie Bezeichnung, Beschreibung und Autoren des Projekts angelegt und mit `composer require lsdl/protogen` die prototypische Umsetzung des Generators eingebunden. Als nächster Schritt ist die contract.json im oben beschriebenen Format vorzubereiten. Dort werden zunächst benötigte Domänen angelegt für Nutzer (einschlieÿlich Rolle), Fra- gebögen, Fragen, Antworten sowie Ziele. Fragebögen und Fragen sind über eine Relation zu verbinden, ebenso Nutzer (Verwalter) mit Fragebögen. Eine benötigte View ist ein JOIN zwischen der Fragebögen-Fragen-Relation und der Fragen-Domäne sowie eine wei- tere View die ebendiese noch zusätzlich mit der Antwort-Domäne kreuzt, um gegebene Antworten zu erhalten. Als Seiten werden unter anderem Nutzer-, Fragebogen- und Ziel- verwaltung sowie Fragebogenauslieferung deniert. Dabei enthält die Nutzerverwaltung eine Nutzerliste und ein Nutzerformular, welches einen Nutzereditor abbildet. Ebenso die Fragebogenverwaltung einen Fragebogeneditor sowie einen davon abhängigen Fragenedi- tor. Schlieÿlich enthält die Zielverwaltung einen Zieleditor. Die Fragebogenauslieferung wird ebenfalls mithilfe eines Editors realisiert, der Fragen auistet und zu jeder Frage ei- ne Eingabe mittels eines önenden Formulars ermöglicht. Zur Auswertung kann ebenfalls eine Seite hinzugefügt werden, die eine Auswahl des gewünschten Fragebogens ermöglicht und durch Plugins entsprechende aufbereitete Statistiken präsentiert. Die Anforderungen des Lastenheftes konnten durch Umsetzung der Vorschläge im Pich- tenheft erfüllt werden. Das umfasst die Schwerpunkte Authentizierung, Nutzerverwal- tung, Fragebogenverwaltung, Fragebogendarstellung, Zielverwaltung und Auswertungs- logik. Für die Authentizierung wird ein vorbereitetes Plugin verwendet, welches die an der Universität verwendeten Shibboleth-Informationen ausliest. Vollständig beschrie- ben werden können Nutzerverwaltung, Fragebogenverwaltung und Zielverwaltung. Die Schwerpunkte Fragebogendarstellung und Auswertungslogik, die beide den Bereich der Kernlogik und der Präsentation umfassen, lassen sich durch benutzerdenierte Plugins umsetzen. Damit lässt sich ein umfassender Teil beschreiben, so dass nur noch die tat- sächlich anwendungsspezischen Punkte programmiert werden müssen. Das führt zu einer erheblichen Zeitersparnis bei der Entwicklung einer solchen Anwendung. Obwohl eine Realisierung des SURE-Tools hinsichtlich der Anforderungen auch mit ei- nem Produkt der Schlüsselhersteller im Markt der Low-Code-Plattformen möglich wäre, konnte dies so kostengünstiger mit einer schlankeren Umgebung und mehr Kompatibilität zu Standards erreicht werden. 11
Abbildung 6: Screenshot der generierten Fragebogenverwaltung aus dem Fallbeispiel 4 Fazit Es konnten mit dieser Arbeit zwei Meilensteine erreicht werden. Der erste Meilen- stein ist die Realisierung eines Konzepts für eine Beschreibungssprache und einer Tool- Infrastruktur einer Low-Code-Plattform, welche handlich und standardkompatibel ist sowie die in der Einleitung formulierten Zielstellungen erfüllt. Auÿerdem wurde das Kon- zept in einem ersten Prototypen umgesetzt. Als zweiter Meilenstein kann die Anwendung an dem Fallbeispiel zur Entwicklung des Tools für das E-Learning Evaluationsmodell SURE angesehen werden. Mithilfe der entwickelten Low-Code-Plattformen konnten die Anforderungen umgesetzt werden und die Anwendung realisiert werden. In Bezug auf die entwickelte Low-Code-Plattformen sind die Zielstellungen erfüllt. Durch die Struktur und die automatische Generierung wird die Menge an zu schreibendem Code deutlich reduziert und vermindert Redundanzen. Die Komponenten der einzelnen Berei- che (Datenmodelle, Listen, Formulare, Seiten, Dienste, Prozesse) sind entechtet und wiederverwendbar und erfüllen damit das Prinzip der Orthogonalität. Die Beschreibun- gen können mit geringem Aufwand geändert werden und einzelne Bestandteile ausge- tauscht werden, auch bestehen Schnittstellen die es ermöglichen andere Endprodukte zu 12
verwenden, das kann etwa ein anderes Datenbanksystem sein oder ein anderer What- You-See-Is-What-You-Get-Editor (WYSIWYG) für Ansichten, so dass auch das Prinzip der Reversibilität erfüllt ist. Auch von Domänensprachen wird Gebrauch gemacht (SQL, Orientierung an Formularbeschreibungsstandards oder Prozessmodellierungsstandards, HTML, CSS). Es ist möglich mit der Plattform eine prototypengetriebene Entwicklung zu betreiben, indem Auswirkungen in der Beschreibung verhältnismäÿig schnell geprüft werden können. Verschiedene Schnittstellen ermöglichen Eingrie ohne das generierte Gerüst direkt ver- ändern zu müssen. Solche Schnittstellen benden sich serverseitig durch die Möglichkeit Plugin-Skripte einbinden zu können und dort global denierte Funktionen aufrufen zu können oder an Pluginschnittstellen bei Authentizierung oder dem Seitenladen zu bin- den. Des Weiteren können clientseitig Funktionen deniert werden, die entweder beim Laden von Widgets oder Interaktionen mit diesen oder aber bei Serverinteraktionen get- riggert werden. Es ist zukünftig möglich diese Schnittstellen im Sinne einer Modularität noch weiter auszubauen. Zentrale Aufgabe für die Zukunft ist die Weiterentwicklung der einzelnen Tools der Plattform. Der Beschreibungseditor sollte um intuitive Elemente, Vorschläge, Drag-and- Drop/Copy-and-Paste-Unterstützung und Plausibilitätsprüfungen erweitert werden. Ins- gesamt können On-Top unterstützende Tools bereitgestellt werden, dazu ist nicht not- wendigerweise eine Änderung der Beschreibungsspezikation oder der Kernkomponenten erforderlich. Zukünftige Forschungsfelder könnten neuartige Arten zum Design und zur Beschreibung sein. Das schlieÿt eine Bedienung mit Sprachkommandos aber auch die Ab- leitung von Beschreibungen aus anderen intuitiven Eingaben ein. Denkbar ist auÿerdem die Nutzung von künstlicher Intelligenz oder Maschinenlernen um Vorschläge für Design oder Beschreibung auf der Grundlage von Vorhersagen zu machen, was den Aufwand zur Umsetzung von Anwendungen noch weiter reduziert. Eine besondere Stärke der Plattform liegt oenkundig in formularbasierten Anwendun- gen, die einen erheblichen Teil unternehmensinterner oder wissenschaftlicher Software ausmachen. Für die Zukunft könnte die Plattform auch für die Erstellung und Pege öentlich zugänglicher Webseiten sowie deren Belange und Nebenbedingungen, die leicht von unternehmensinternen oder wissenschaftlichen Anwendungen abweichen können, wie etwa Suchmaschinenoptimierung oder Performance, optimiert werden. Hinweis Der Autor weist darauf hin, dass diese Veröentlichung auf seiner zuvor angefertigten Masterarbeit basiert. Literatur [1] A. Hunt and D. Thomas, Pragmatic Programmer, The: From Journeyman to Master, ch. A Pragmatic Approach, pp. 2569. Reading, Massachusetts: Addison Wesley, 1999. 13
[2] Foundeo, Inc., ColdFusion Versions. https://cfdocs.org/coldfusion-versions, 2018. [Online, Stand: Januar 2019]. [3] D. H. Hansson, Creator of Ruby on Rails. https://dhh.dk/#rails, 2018. [Online, Stand: Januar 2019]. [4] D. H. Hansson, The Rails Command Line. https://guides.rubyonrails.org/ command_line.html, 2018. [Online, Stand: Januar 2019]. [5] C. Richardson, J. R. Rymer, C. Mines, A. Cullen, and D. Whittaker, New Deve- lopment Platforms Emerge For Customer-Facing Applications, 2014. [6] C. Richardson and J. R. Rymer, Vendor Landscape: The Fractured, Fertile Terrain of Low-code Application Platforms, 2016. [7] Markets and Markets, Low-Code Development Platform Market, 2018. [8] TrustRadius, Low-Code Development Platforms. https://www.trustradius. com/low-code-development, 2018. [Online, Stand: Januar 2019]. [9] J. Arnoldus, M. Brand, A. Serebrenik, and J. J. Brunekreef, Code generation with templates, Rheologica Acta - RHEOL ACTA, 01 2012. [10] D.-P. Pop and A. Altar, Designing an MVC Model for Rapid Web Application Development, Procedia Engineering, vol. 69, pp. 1172 1179, 2014. 24th DAAAM International Symposium on Intelligent Manufacturing and Automation, 2013. [11] HotFrameworks, Web framework rankings. https://hotframeworks.com/, 2018. [Online, Stand: Januar 2019]. [12] M. Springwald, Blobsh is a generic web framework written in php. https: //packagist.org/packages/greenscale/blobfish, 2018. [Online, Stand: Januar 2019]. [13] U. Tudevdagva, Structure Oriented Evaluation Model for E-Learning. Habilitations- schrift, Universitätsverlag Chemnitz, 2014. [14] ISO Central Secretary, Information technology Database languages SQL, Tech. Rep. ISO/IEC 9075, International Organization for Standardization, 2016. [15] R. Chinnici, R. A. Moreau, J.-J., and S. Weerawarana, Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language. https://www.w3.org/TR/ wsdl/, 2007. [Online, Stand: Januar 2019]. [16] H. Andrews et al., JSON Schema. https://json-schema.org/, 2018. [Online, Stand: Januar 2019]. [17] O. M. Group, Business Process Model and Notation. https://www.omg.org/spec/ BPMN/2.0.1/, 2013. [Online, Stand: Januar 2019]. [18] D. Jordan and J. Evdemon, Web Services Business Process Execution Langua- ge Version 2.0. http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS. html, 2007. [Online, Stand: Januar 2019]. 14
[19] J. M. Boyer, L. L. Klotz Jr., S. Pemberton, and N. Van den Bleeken, XForms 2.0. https://www.w3.org/TR/xforms20/, 2012. [Online, Stand: Januar 2019]. https://www.ibm.com/support/knowledgecenter/ [20] IBM, XFDL Specication. en/SSS28S_8.2.1/XFDL_Specification/xfdl_overview.html, 2015. [Online, Stand: Januar 2019]. [21] S. Faulkner, A. Eicholz, T. Leithead, A. Danilo, and S. Moon, HTML 5.2. https: //www.w3.org/TR/html52/, 2017. [Online, Stand: Januar 2019]. [22] T. Atkins Jr., E. J. Etemad, and F. Rivoal, CSS Snapshot 2018. https://www.w3. org/TR/css-2018/, 2018. [Online, Stand: Januar 2019]. [23] T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, and F. Yergeau, Extensible Markup Language (XML) 1.0 (Fifth Edition). https://www.w3.org/TR/xml/, 2008. [Online, Stand: Januar 2019]. [24] M. Gudgin, M. Hadley, N. Mendelsohn, J.-J. Moreau, H. F. Nielsen, A. Karmarkar, and Y. Lafon, SOAP Version 1.2 Part 1: Messaging Framework (Second Edition). https://www.w3.org/TR/soap12-part1/, 2007. [Online, Stand: Januar 2019]. [25] T. W. Bray, The JavaScript Object Notation (JSON) Data Interchange Format. https://tools.ietf.org/html/rfc7159, 2014. [Online, Stand: Januar 2019]. https://www.heise.de/ix/ [26] C. Kirsch, Webservices-Konsortium löst sich auf. meldung/Webservices-Konsortium-loest-sich-auf-1134920.html, 2010. [Onli- ne, Stand: Januar 2019]. [27] J. Gruber and A. Swartz, Markdown. https://daringfireball.net/projects/ markdown/, 2018. [Online, Stand: Januar 2019]. 15
Chemnitzer Informatik-Berichte In der Reihe der Chemnitzer Informatik-Berichte sind folgende Berichte erschienen: CSR-10-01 Maximilian Eibl, Jens Kürsten, Robert Knauf, Marc Ritter , Workshop Au- diovisuelle Medien, Mai 2010, Chemnitz CSR-10-02 Thomas Reichel, Gudula Rünger, Daniel Steger, Haibin Xu, IT- Unterstützung zur energiesensitiven Produktentwicklung, Juli 2010, Chemnitz CSR-10-03 Björn Kre llner, Thomas Reichel, Gudula Rünger, Marvin Ferber, Sascha Hunold, Thomas Rauber, Jürgen Berndt, Ingo Nobbers, Transformation mo- nolithischer Business-Softwaresysteme in verteilte, workflowbasierte Client- Server-Architekturen, Juli 2010, Chemnitz CSR-10-04 Björn Krellner, Gudula Rünger, Daniel Steger, Anforderungen an ein Da- tenmodell für energiesensitive Prozessketten von Powertrain-Komponenten, Juli 2010, Chemnitz CSR-11-01 David Brunner, Guido Brunnett, Closing feature regions, März 2011, Chem- nitz CSR-11-02 Tom Kühnert, David Brunner, Guido Brunnett, Betrachtungen zur Skelet- textraktion umformtechnischer Bauteile, März 2011, Chemnitz CSR-11-03 Uranchimeg Tudevdagva, Wolfram Hardt, A new evaluation model for eLearning programs, Dezember 2011, Chemnitz CSR-12-01 Studentensymposium Informatik Chemnitz 2012, Tagungsband zum 1. Stu- dentensymposium Chemnitz vom 4. Juli 2012, Juni 2012, Chemnitz CSR-12-02 Tom Kühnert, Stephan Rusdorf, Guido Brunnett, Technischer Bericht zum virtuellen 3D-Stiefeldesign, Juli 2012, Chemnitz CSR-12-03 René Bergelt, Matthias Vodel, Wolfram Hardt, Generische Datenerfassung und Aufbereitung im Kontext verteilter, heterogener Sensor-Aktor-Systeme, August 2012, Chemnitz CSR-12-04 Arne Berger, Maximilian Eibl, Stephan Heinich, Robert Knauf, Jens Kürsten, Albrecht Kurze, Markus Rickert, Marc Ritter , Schlussbericht zum InnoProfile Forschungsvorhaben sachsMedia - Cooperative Producing, Sto- rag, Retrieval and Distribution of Audiovisual Media (FKZ: 03IP608), Sep- tember 2012, Chemnitz CSR-12-05 Anke Tallig, Grenzgänger - Roboter als Mittler zwischen der virtuellen und realen sozialen Welt, Oktober 2012, Chemnitz
Chemnitzer Informatik-Berichte CSR-13-01 Navchaa Tserendorj, Uranchimeg Tudevdagva, Ariane Heller, Grenzgänger - Integration of Learning Management System into University-level Teaching and Learning, Januar 2013, Chemnitz CSR-13-02 Thomas Reichel, Gudula Rünger, Multi-Criteria Decision Support for Ma- nufacturing Process Chains, März 2013, Chemnitz CSR-13-03 Haibin Xu,Thomas Reichel, Gudula Rünger, Michael Schwind, Softwaretech- nische Verknüpfung der interaktiven Softwareplattform Energy Navigator und der Virtual Reality Control Platform, Juli 2013, Chemnitz CSR-13-04 International Summerworkshop Computer Science 2013, Proceedings of In- ternational Summerworkshop 17.7. - 19.7.2013, Juli 2013, Chemnitz CSR-13-05 Jens Lang, Gudula Rünger, Paul Stöcker, Dynamische Simulationskopplung von Simulink-Modellen durch einen Functional-Mock-up-Interface- Export- filter, August 2013, Chemnitz CSR-14-01 International Summerschool Computer Science 2014, Proceedings of Sum- merschool 7.7.-13.7.2014, Juni 2014, Chemnitz CSR-15-01 Arne Berger, Maximilian Eibl, Stephan Heinich, Robert Herms, Stefan Kahl, Jens Kürsten, Albrecht Kurze, Robert Manthey, Markus Rickert, Marc Rit- ter, ValidAX - Validierung der Frameworks AMOPA und XTRIEVAL, Ja- nuar 2015, Chemnitz CSR-15-02 Maximilian Speicher, What is Usability? A Characterization based on ISO 9241-11 and ISO/IEC 25010, Januar 2015, Chemnitz CSR-16-01 Maxim Bakaev, Martin Gaedke, Sebastian Heil, Kansei Engineering Expe- rimental Research with University Websites, April 2016, Chemnitz CSR-18-01 Jan-Philipp Heinrich, Carsten Neise, Andreas Müller, Ähnlichkeitsmessung von ausgewählten Datentypen in Datenbanksystemen zur Berechnung des Grades der Anonymisierung, Februar 2018, Chemnitz CSR-18-02 Liang Zhang, Guido Brunnett, Efficient Dynamic Alignment of Motions, Februar 2018, Chemnitz CSR-18-03 Guido Brunnett, Maximilian Eibl, Fred Hamker, Peter Ohler, Peter Prot- zel, StayCentered - Methodenbasis eines Assistenzsystems für Centerlotsen (MACeLot) Schlussbericht, November 2018, Chemnitz CSR-19-01 Johannes Dörfelt, Wolfram Hardt, Christian Rosjat, Intelligente Gebäude- klimatisierung auf Basis eines Sensornetzwerks und künstlicher Intelligenz, Februar 2019, Chemnitz CSR-19-02 Martin Springwald, Wolfram Hardt, Entwicklung einer RAD-Plattform im Kontext verteilter Systeme, März 2019, Chemnitz
Chemnitzer Informatik-Berichte ISSN 0947-5125 Herausgeber: Fakultät für Informatik, TU Chemnitz Straße der Nationen 62, D-09111 Chemnitz
Sie können auch lesen