Timo Kehrer • Maik Schmidt • Fachgruppe Praktische Informatik • Fachbereich 12 • Hölderlinstr. 3 • 57068 Siegen Softwaretechnik II, SS 2009 Modellgetriebene Softwareentwicklung mit EMF (Teil 1) Einführung Gegenstand dieser Übungsaufgabe ist die Übersetzung von Analyse-Datenmodellen in geeignete Schemadefinitionen eines relationalen Datenbankmanagementsystems (RDBMS). Eine solche Transformation ist eine der häufigsten Aktivitäten im Rahmen eines Software-Entwicklungsprozesses. Wird das Analyse-Datenmodell in einer geeigneten Modellierungssprache erfasst, so lässt sich diese Transformation automatisieren. Die der Transformation zu Grunde liegenden Transformationsregelen ergeben sich aus den Abbildungsregelen objektorientierter Analyse-Datenmodelle auf die Tabellendefinitionen eines relationalen Datenbankschemas. Die Transformationsregeln beinhalten dabei bereits Entwurfsentscheidungen. Den Transformator bezeichnet man aufgrund der Generierung der Tabellendefinitionen auch als Generator. Das Paradigma der Generierung verschiedenster Artefakte eines Software-Systems auf Basis von Modellen wird auch als modellgetriebene Softwareentwicklung (MDSE) bezeichnet. Die Entwicklung eigener Transformatoren/Generatoren stellt eine der zentralen Herausforderungen der MDSE dar. Grundlagen Für eine automatisierte Transformation ist es notwendig, dass der Generator sowohl die Struktur der einzulesenden Analyse-Datenmodelle, als auch den syntaktischen Aufbau der zu generierenden Tabellendefinitionen kennt. Die Struktur eines Modells wird im Rahmen der Modellierung in der Software-Technik meist durch ein Meta-Modell festgelegt, welches die Regeln zur Bildung syntaktisch korrekter Modelle festlegt. Ein Meta-Modell ist somit nichts anderes als ein Modell, das wiederum ein Modell beschreibt. Prinzipiell können wir Meta-Modelle also auch wiederum als Datenmodelle auffassen. Die zu modellierenden Nutzdaten stellen in unserem Fall ER-Modelle dar, weshalb wir das zu erstellende Meta-Modell im Folgenden als ER-Modell-Datenmodell bezeichnen. Zur Spezifikation der Tabellendefinitionen verwenden wir die Structured Query Language (SQL). SQL ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. Im Rahmen dieser Übung ist lediglich der Sprachanteil zur Definition eines Datenbankschemas (Data Definition Langauge, kurz DDL) relevant, wobei wir auch hier nur eine Teilmenge aller existierenden DDL-Befehle benötigen werden. Abbildung 1 skizziert die an unserer Transformation beteiligten Komponenten und deren Beziehungen. Abbildung 1: Beteiligte Komponenten und deren Beziehungen Vorgehen Das Vorgehen zur Bearbeitung der Übungsaufgabe lässt sich in folgende Schritte untergliedern, welche in mehreren Iterationen durchlaufen werden können und in separaten Aufgabenblättern konkretisiert werden: • Schritt 1: Definition eines geeigneten ER-Modell-Datenmodells (Meta-Modell) • Schritt 2: Erstellung eines exemplarischen Analyse-Datenmodells • Schritt 3: Implementierung des Generators in Java Schritt 1: Definition eines Datenmodells für ER-Modelle In diesem Schritt soll ein geeignetes Meta-Modell zur Festlegung der wichtigsten Konzepte von ERModellen definiert werden. Ein solches Meta-Modell können wir wiederum als Datenmodell auffassen, weshalb wir dieses als ER-Modell-Datenmodell bezeichnen. Dieses soll die Struktur syntaktisch korrekter ER-Modelle beschreiben. Die zu modellierenden Nutzdaten stellen in diesem Fall ER-Modelle dar. Die Modellierungssprache Ecore Mit Hilfe von EMF können beliebige Datenmodelle in der von EMF bereit gestellten Modellierungssprache Ecore erstellt werden. Die Syntax des grafischen Diagramm-Editors ist dabei an die aus der UML bekannten Klassendiagramme angelehnt. Die wichtigsten Modellierungs-Konstrukte sind Klassen (EClass), Attribute (EAttribute) und Assoziationen/Kompositionen (EReference). Weiterhin spezifiziert Ecore eine Menge elementarer Datentypen. Im Rahmen dieser Übungsaufgabe werden die beiden Datentypen EString und EInt verwendet. Ein weiteres nützliches Element der Modellierungssprache Ecore ist die Enumeration (EEnum), für welche eine Menge an Enumerations-Literalen (EEnumLiteral) spezifiziert werden kann. Das ER-Modell-Datenmodell Unser ER-Modell-Datenmodell soll die folgenden Eigenschaften besitzen: Ein ER-Modell hat einen Namen und besteht aus Entitätstypen und Beziehungstypen. Entitätstypen haben einen Namen und besitzen Attribute. Wir vereinfachen unsere ER-Modelle dahingehend, dass genau ein Attribut den Primärschlüssel einer Entität darstellt. Attribute haben einen Namen und einen Datentyp, wobei wir uns auf die elementaren Datentypen String, Number und Date beschränken wollen. Ein Beziehungstyp, welcher ebenfalls einen Namen hat, setzt sich aus einer beliebigen Anzahl (mindestens jedoch 2) an Rollen zusammen. Über eine Rolle wird genau eine Entität referenziert. Darüber hinaus kann einer Rolle ein Name und eine Kardinalität zugeordnet werden. Als mögliche Kardinalitäten für Beziehungstypen beschränken wir uns auf die Werte 1 („zu-1-Beziehung“) und -1 („zu-n-Beziehung“). Erstellen Sie ein ERDataModel mit Hilfe des durch EMF bereit gestellten Diagramm-Editors zur Spezifikation von Ecore-Modellen. Schritt 2: Erstellung eines exemplarischen ER-Modells Konkrete Nutzdaten, in unserem Fall also ER-Modelle, können ebenfalls in einem von EMF bereit gestellten Editor spezifiziert werden. EMF stellt dabei sicher, dass nur syntaktisch korrekt aufgebaute ERModelle (korrekt im Sinne unseres bereits definierten ER-Modell-Datenmodells) erstellt werden können. Die zu modellierende fachliche Domäne wird ein Fußballspiel sein, weshalb wir das zu erstellende ERModell im Folgenden als Fussball-ER-Modell bezeichnen. Es soll folgenden Anforderungen genügen: Als durch einen Eintitätstyp zu modellierende Entitäten betrachten wir Spieler, Mannschaften und Spiele. Spieler und Mannschaften können anhand ihres Namens eindeutig identifiziert werden. Ein Spiel kann anhand einer Kennziffer eindeutig identifiziert werden und soll durch weitere Eigenschaften wie bspw. den Endstand näher beschrieben werden können. Darüber hinaus sollen folgende Beziehungen erfasst werden. Spieler können als Mitglieder einer Mannschaft zugeordnet werden, wobei jeder Spieler nur bei höchstens einer Mannschaft spielen darf. Einer Mannschaft gehört somit eine unbestimmte Anzahl an Spielern an. Eine 3-stellige Beziehung ordnet einem Spiel genau eine Mannschaft als Heim- und eine als Auswärts-Mannschaft zu. Weiterhin sollen alle durch eine Beziehung zwischen Spielern und Spielen alle Torschützen eines Spiels erfaßt werden. Erstellen Sie ein Fussball-ER-Modell mit Hilfe des EMF-eigenen, generischen Modell-Editors zur Bearbeitung von Instanzen eines Ecore-Modells. Dieser erlaubt es, Instanzen eines Datenmodells auf Grundlage eines Ecore-Modells zu erzeugen. Anmerkungen Eine Einführung zur Arbeit mit EMF, weiterführende Literaturhinweise sowie ein Eclipse Projekt-Gerüst zur Bearbeitung der Übungsaufgabe finden Sie unter der folgenden URL: http://pi.informatik.uni-siegen.de/Mitarbeiter/mschmidt/lehre/SS09/ST2/