SE Vertiefung Beuth-Hochschule Berlin Thema 5 Domain Specific Languages
MOF-Schichten (c) schmiedecke 11 SE3-5-metamodellierung 2
Was ist eine DSL? Domain Specific Language: Sprache zur Beschreibung (Modellierung) eines spezifischen Fachzusammenhangs Universalsprache enthält im Fachzusammenhang redundante Information (z.b. Richtung der Diode) verbirgt evtl. spezifisch wichtige Details muss fehlende Ausdrucksmittel prozedural implementieren. DSL kann fachliche Standardwerte voraussetzen (z.b. XMI-Header) kann wichtige Aspekte und Strukturen hervorheben stellt alle erforderlichen Ausdrucksmittel direkt zur Verfügung (c) schmiedecke 11 SE3-5-metamodellierung 3
DSL Eine DSL drückt fachspezifische Zusammenhänge einfacher präziser konziser strukturierter aus als eine Universalsprache. (c) schmiedecke 11 SE3-5-metamodellierung 4
DSL-Anlässe Hierarchische Datenstrukturen Organigramme Technische Pläne Befehlsketten Werkzeugketten Entscheidungsstrukturen, Regelwerke grafische Oberflächen, Webseiten Validierungszusammenhänge Reports Software-Architekturen und Plattformen Variable Abläufe Regieskripte. (c) schmiedecke 11 SE3-5-metamodellierung 5
DSL-Anforderungen Formal, überprüfbar im Fachkontext verständlich editierbar! automatisch verarbeitbar (c) schmiedecke 11 SE3-5-metamodellierung 6
Praktische Beispiele RDB: Metamodell umfasst Tabelle, Spalte, Fremdschlüssel, View Modell wäre ein konkretes DB-Schema Instanz wäre DB "in Betrieb" mit konkreten Datensätzen Webpage Metamodell umfasst statische Seiten, aktive Seiten, Templates, Links, Navigation, Servermodell Modell wäre ein typischer Webshop Instanz wäre ein konkreter Webshop mit konkretem Logo, Auswahl an Shopelementen und Eigenschaften, Css (c) schmiedecke 11 SE3-5-metamodellierung 7
DSL vs. UML-Profile Die UML ist ein sehr nützliches Metamodell aber nicht immer geeignet UML-Erweiterung mit Profilen einfach Art, das Metamodell anzupassen eigene DSL (z.b. in Ecore) Beschränkung auf die erforderlichen Sprachelemente sicher Wohlgeformtheit der Modelle (c) schmiedecke 11 SE3-5-metamodellierung 8
Fertige Metamodelle (DSLs) in Eclipse EMF bietet fertige Editoren ("Model Creation Wizards") für eine Reihe von Metamodellen: (c) schmiedecke 11 SE3-5-metamodellierung 9
Beispiel RDB-Editor (c) schmiedecke 11 SE3-5-metamodellierung 10
Beispiel Security (c) schmiedecke 11 SE3-5-metamodellierung 11
Einfaches Beispiel Vektorgrafik Metamodell wäre eine Menge von vordefinierten Shapes und ein zusammenfassendes Element Modell wäre eine Zeichnung (c) schmiedecke 11 SE3-5-metamodellierung 12
Arbeiten mit Metamodellen 1. Metamodell definieren d.h. Modellierungssprache festlegen Metamodell-Plugin 2. Generator erstellen / anpassen 3. Modell mit Plugin-Editor erstellen Generator 4. Code Generieren 13
EMF Eclipse Modeling Framework Basiert auf Ecore-Modellen Ermöglicht es, aus einem Ecore-Modell einen Editor zur Erzeugung von Instanzen zu generieren. Die technischen Details kommen später (c) schmiedecke 11 SE3-5-metamodellierung 14
DSL-Motivation der Uni Leipzig (c) schmiedecke 11 SE3-5-metamodellierung 15 Quelle: http://ebus.informatik.uni-leipzig.de/www/media/publications/se05-mdatutorial-agilemda.pdf
EMF-Werkzeugsicht Ecore UML* XMI Metamodell importieren Reflective Java Model Editor programmatisch Modelle erzeugen, abfragen, manipulieren, als XMI serialisieren EMF- Metamodell (genmodel) Java Metamodell (plugin) Java Model Editor (plugin) Graphical Model Editor Metamodell im EMF-Kontext verwenden, z.b. für M2T-Generatoren grafisch Modelle erzeugen, abfragen, manipulieren, als XMI serialisieren (c) schmiedecke 11 SE3-5-metamodellierung 16
Schritte der EMF-Anwendung (über eine M-Stufe) 1. Modell in Ecore definieren 2. EMF-Generator-Modell daraus erzeugen (.genmodel) 3. Aus dem Generator-Modell (Wurzelpaket) Java-Modell erzeugen Edit- und Editor-Projekt erzeugen ggf. Testcode erzeugen 4. Editor als Plugin oder RCP-Anwendung ausführen: Eclipse mit Plugin aus der plugin.xml des Editors starten darin neues leeres Projekt anlegen unter den Example EMF Generator Wizards den eigenen auswählen Baumeditor öffnet sich 5. Neue Instanz im Editor erstellen (c) schmiedecke 11 SE3-5-metamodellierung 17
Metamodell definieren (Ecore) und Generatormodell erzeugen (c) schmiedecke 11 SE3-5-metamodellierung 18
Java-Modell erzeugen und Klassen ansehen! (c) schmiedecke 11 SE3-5-metamodellierung 19
Editorprojekt generieren (2 Projekte: Edit und Editor) hieraus Eclipse- Applikation starten! (c) schmiedecke 11 SE3-5-metamodellierung 20
Editor und Edit Editor benutzt Edit (c) schmiedecke 11 SE3-5-metamodellierung 21
"Eigenen" Editor starten RCP eigenes Metamodell (c) schmiedecke 11 SE3-5-metamodellierung 22
Im Editor Modell erzeugen (c) schmiedecke 11 SE3-5-metamodellierung 23
Generator schreiben Im Acceleo-Projekt eigenes Metamodell referenzieren SVG- Metamodell (c) schmiedecke 11 SE3-5-metamodellierung 24
So sieht man es an der Uni Leipzig: (c) schmiedecke 11 SE3-5-metamodellierung 25 Quelle: http://ebus.informatik.uni-leipzig.de/www/media/publications/se05-mdatutorial-agilemda.pdf
So weit zum Thema DSL Nächstes schauen wir uns M2M-Transformatoren an.