Dokumente
Ausarbeitung
Folien: Zwischenvortrag
Folien: Abschlussvortrag
Hintergrund
Heute werden in der Softwareentwicklung immer höhere Ansprüche an Softwarequalität und Entwicklungsgeschwindigkeit gestellt. Um diesen Ansprüchen zu genügen werden verstärkt Modell-getriebene-Entwicklungsansätze (MDD) verwendet. Der Erfolg von MDD ist jedoch stark von der Zieldomäne abhängig. Besonders bei der wiederholten Entwicklung ähnlicher Software-Produkte kann MDD Produktivitätssteigernd eingesetzt werden. Eine Herausforderung ist, unter anderem, die Modellierung einer abstrakten graphischen Oberfläche (GUI). Gängige Modellierungssprachen, wie z.B. UML, erlauben keine explizite Modellierung einer GUI. Sie kann lediglich aus Klassendiagrammen und Aktivitätsdiagrammen abgeleitet werden. Ein Grund dafür ist, das eine GUI immer anwendungsspezifisch ist und daher keine allgemeingültige Interpretation von Modellierungselementen erfolgen kann. Die Oberfläche muss also implizit im Codegenerator definiert werden. Des Weiteren gibt es Ansätze welche die UML mit Hilfe von Profilen erweitern, um eine explizite GUI-Modellierung zu ermöglichen. Bei Anwendungen die der einfachen Datenverwaltung dienen, also nur grundlegende CRUDOperationen zur Verfügung stellen, funktioniert der generative Ansatz jedoch gut. Die dafür benötigten atomaren Operationen und GUI-Elemente können relativ einfach automatisch generiert werden. An dieser Stelle erfolgt eine implizite Modellierung durch den Codegenerator, d.h. für Anpassungen an der GUI muss immer der Codegenerator angepasst werden. Man hat nicht die Möglichkeit einfach ein entsprechendes Modell anzupassen, wie es eigentlich bei MDD zu erwarten wäre. Die Object Model Group definiert die sogenannte Model Driven Architecture (MDA). Bei der MDA werden mehrere Modelle während des Generierungsprozesses verwendet. Dies sind die Computational Independent Models, Platform Independent Models und Platform Specific Models. Aus letzteren werden die Quelltexte generiert. Der dieser Einteilung zugrunde liegende Gedanke ist, das auf der ersten Ebene nur fachliche Aspekte modelliert werden. Diese werden dann mithilfe von Transformationen nach und nach mit technischen Informationen ergänzt. Zusätzlich zu den Transformationen soll auf jeder Ebene auch noch eine manuelle Manipulation der Modelle erfolgen können. Der MDA nach ist also eine Konzentration auf fachliche Modelle gewünscht. Bei den meisten UML-Diagrammen werden jedoch sowohl fachliche als auch technische Aspekte modelliert. Da Versicherungsprodukte zumeist eine ähnliche Struktur haben, ist es möglich einen generativen Entwicklungsansatz zu nutzen. Das Versicherungsproduktsystem Faktor-IPS, der Firma Faktor Zehn, macht sich diese Tatsache bereits zu nutze. Es setzt Modelle ein um Versicherungsprodukte auf einer fachlichen Ebene zu modellieren. Als technologische Basis dient dabei das Eclipse Modeling Framework (EMF). Faktor-IPS stellt eine auf Eclipse basierende Oberfläche zur Manipulation der Produktmodelle und Produktinstanzen bereit. Ein Aspekt der von Faktor-IPS nicht abgedeckt wird, ist die für den Endanwender, z.B. einen Versicherungskaufmann, relevante Oberfläche zur Verwaltung von Verträgen. Diese muss separat und per Hand erstellt werden. Es wird von Faktor-IPS kein GUI-Code aus den vorhandenen fachlichen Modellen generiert. Soll nun GUI-Code generiert werden, ist aufgrund der heterogenen Ziellandschaft (GUIFrameworks, Endgeräte, Systemlandschaft, etc.) die Erzeugung eines abstrakten GUI-Modells aus den fachlichen Modellen unabdinglich. Aus dem abstrakten GUI-Modell kann dann ein Prototyp für die gewünschte Zieltechnologie generiert werden. Ein solcher Prototyp kann genutzt werden um die korrekte Abbildung des Modells zu prüfen und als Grundlage für das Endprodukt dienen. Der Verzicht auf eine vollständige Generierung erlaubt es die Codegeneratoren und die Modelle einfacher und damit besser wartbar zu gestalten. Ein Codegenerator für eine neue Zielumgebung hätte ebenfalls einen geringeren Entwicklungsaufwand. Faktor-IPS setzt die Templatesprache Xpand ein, welche auch vom Gargoyle-Codegenerator des LuFG i3 verwendet wird.
Aufgabe
In dieser Masterarbeit soll untersucht werden, ob es möglich und sinnvoll ist, Prototypen von graphischen Oberflächen, für die Verwaltung von auf Faktor-IPS basierenden Versicherungsverträgen, zu generieren. Ausgangspunkt für die Code-Generierung sind die fachlichen Modelle der Versicherungsprodukte. Es ist notwendig aus diesen Modellen zunächst ein GUI-Modell abzuleiten, welches vor der eigentlichen Code-Generierung nochmal manuell angepasst werden kann. Da ein rein generativer Ansatz einen hohen Modellierungsaufwand und komplexe, und somit wartungsaufwendige, Codegeneratoren erfordert, wird vor allem ein Teilgenerativer-Ansatz verfolgt. Diese prototypische Vorgehensweise erlaubt es von der Modellierung komplexer Spezialfälle Abstand zu nehmen. Vor allem die Usability einer Anwendung lässt sich schwer mit einem generativen Ansatz sicher stellen. Daher soll der Fokus auch auf der Erzeugung der grundlegenden Funktionalitäten liegen. Generiert werden soll auf jeden Fall die Datenzugriffsebene und eine prototypische aber voll funktionale Oberfläche. Ein besonderer Augenmerk muss hier auf der Wartbarkeit des erzeugten Codes liegen, da er in der Regel noch angepasst wird. Die Machbarkeit des Ansatzes soll anhand eines zu erstellenden domänenspezifischen GUIGenerators erprobt werden. Zur Beurteilung des Ansatzes soll ein Teil einer bestehenden Anwendung nachgebaut werden und mit dem etablierten Vorgehen verglichen werden. Bei der Umsetzung soll auch der Einsatz und die Weiterentwicklung des Gargoyle-Codegenerators des LuFG i3 in Betracht gezogen werden.
Resources
Project information
Finished
Master
Jens Noschinski
2013-015