Klassifikation von Modelltransformationen



Ähnliche Dokumente
Model Driven Development im Überblick

Vortrag von: Ilias Agorakis & Robert Roginer

Model Driven Architecture Praxisbeispiel

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Model Driven Architecture (MDA)

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

BPMN. Suzana Milovanovic

Test-Driven Design: Ein einfaches Beispiel

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Use Cases. Use Cases

Programmiersprachen und Übersetzer

XINDICE. The Apache XML Project Name: J acqueline Langhorst blackyuriko@hotmail.de

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Objektorientierte Programmierung OOP

Grundlagen von Python

Entwicklung einer formalen Sprache zur Modelltransformation auf Basis von UML & XMI

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 6

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

J.6 Programmierung eingebetteter Systeme

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Java: Vererbung. Teil 3: super()

Formale Sprachen und Grammatiken

Vorkurs Informatik WiSe 15/16

Faktor-IPS. Modellgetriebene Softwareentwicklung mit Faktor-IPS. Faktor Zehn AG. Seite 1

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Generatives Programmieren

Vorlesung "Software-Engineering"

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Programmierkurs Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Das Metamodell der UML und in FUJABA. Vortrag von Alexander Geburzi

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne

Design Patterns 2. Model-View-Controller in der Praxis

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

SEP 114. Design by Contract

Die Excel Schnittstelle - Pro Pack

WhiteStarUML Tutorial

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

Übungen Programmieren 1 Felix Rohrer. Übungen

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

ARAkoll 2013 Dokumentation. Datum:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Objektorientierte Programmierung

Arbeiten mit UMLed und Delphi

Client-Server-Beziehungen

12.4 Sicherheitsarchitektur

Dateninteroperabilität für INSPIRE in der Praxis Datenintegration und -harmonisierung

OO Softwareentwicklung

DSL Entwicklung und Modellierung

Produktskizze. 28. November 2005 Projektgruppe Syspect

Objektorientierte Programmierung

Innere Klassen in Java

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Software-Engineering SS03. Zustandsautomat

Rahmenbedingungen und Integrationsvoraussetzungen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Zeichen bei Zahlen entschlüsseln

Leitfaden zu Jameica Hibiscus

Hochschule Karlsruhe Klausur EAI Prof. Dr. Christian Pape. Klausur EAI WS 05/06. Note: Bearbeitungszeit 90 Minuten Keine Hilfsmittel

Einführung in die Java- Programmierung

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

WORKFLOW DESIGNDOKUMENT

Übungen zur Softwaretechnik

Patch-Management. Leibniz-Akademie Hannover Wirtschaftsinformatik B. Sc. Praxisreflexion im Bereich Management im SS 2011

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

4. AuD Tafelübung T-C3

Naked-FHIR. Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. Textmasterformate durch Klicken bearbeiten

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Eine Anwendung mit InstantRails 1.7

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Prolog basiert auf Prädikatenlogik

5. Abstrakte Klassen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Klassendiagramm. (class diagram)

Theoretische Informatik I

A Domain Specific Language for Project Execution Models

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Java Einführung Packages

Präsentation Von Laura Baake und Janina Schwemer

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Professionelle Seminare im Bereich MS-Office

Requirements Engineering WS 11/12

Kundenspezifische Preise im Shop WyRu Online-Shop

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Theorie der Informatik

Objektorientierte Programmierung. Kapitel 12: Interfaces

Konzepte der Informatik

Transkript:

Klassifikation von Modelltransformationen feat. feature diagrams Andreas Blunk blunk@informatik.hu-berlin.de 1

Agenda 1. Einführung in Modelltransformationen 2. Vorstellung von Merkmalsdiagrammen 3. Beschreibung der Merkmale von Modelltransformationen (auszugsweise am Beispiel von Transformationsregeln) 4. Einteilung der Modelltransformationen in Kategorien Model-to-Code Model-to-Model 2

1. Einführung MDA = Intiative der OMG für Softwareentwicklung auf der Basis von Modellen automatische Umwandlung PIM-nach-PSM MDA-Basismuster: Transformation PSM Java PIM Transformation PSM C++ 3

1. Einführung MOF + UML bieten gesicherte Basis für die Definition von PIM s und PSM s Aber: keine solche existiert für die Transformation von PIM s in PSM s MDA-Basismuster: Transformation PSM Java PIM Transformation PSM C++ 4

1. Einführung MOF + UML bieten gesicherte Basis für die Definition von PIM s und PSM s Aber: keine solche existiert für die Transformation von PIM s in PSM s 2002: Standardisierungprozess für Modelltransformation durch OMG initiiert (QVT RFP siehe nachfolgender Vortrag) Motiviert durch OMG und Bedarf in der Praxis: vielzahl von Ansätzen für Modelltransformationen 5

2. Merkmalsmodellierung Merkmalsmodell ( feature model ) als Ergebnis der Domain-Analyse Darstellung der Gemeinsamkeiten und Unterschiede zwischen den Mitgliedern einer Systemfamilie Merkmalsdiagramm ( feature diagram ) grafische Notation zur Darstellung von Abhängigkeiten zwischen Merkmalen beschreibt alle möglichen Konfigurationen bzw. Instanzen eines Systems Anwendungsfelder: - Entwurf domänspezifischer Sprachen - Beschreibung von Produktfamilien 6

2. Merkmalsmodellierung verbindlich optional exklusive Auswahl inklusive Auswahl besteht aus 7

2. Merkmalsmodellierung verbindlich optional exklusive Auswahl inklusive Auswahl besteht aus Instanz = Auswahl atomarer Merkmale mögliche Instanzen: 12 1 (Karrosserie) x 3 (Motor) x 2 (Schaltung) x 2 (Anhängerkupplung) = 12 8

3. Merkmale von Modelltransformationen Das Merkmalsmodell für Modelltransformationen: Darstellung der möglichen Entwurfsentscheidungen 8 Hauptunterscheidungspunkte 9

3. Merkmale Transformationsregeln 10

3. Merkmale Transformationsregeln LHS (left-hand side): operiert auf dem Quellmodell RHS (right-hand side): erweitert das Zielmodell LHS/RHS: Darstellung als Mix aus. Variablen, Mustern und Logik 11

3. Merkmale Transformationsregeln LHS (left-hand side): operiert auf dem Quellmodell - enthalten Elemente aus dem Quell- oder Zielmodell RHS (right-hand side): erweitert das Zielmodell LHS/RHS: Darstellung als Mix aus. Variablen, Mustern und Logik 12

3. Merkmale Transformationsregeln - enthalten Elemente aus dem Quell- oder Zielmodell - Modellfragmente der Quelle oder des Ziels mit 0 n Variablen - Zeichenketten (in Templates) - Term- oder Graph-Muster (in Model-to-Model) - Darstellung in abstrakter oder konkreter Syntax in der Quell- oder Zielmodellsprache 13

3. Merkmale Transformationsregeln - Modellfragmente der Quelle oder des Ziels mit 0 n Variablen - Zeichenketten (in Templates) - Term- oder Graph-Muster (in Model-to-Model) - Darstellung in abstrakter oder konkreter Syntax in der Quell- oder Zielmodellsprache - untypisiert - syntaktisch typisiert - semantisch typisiert 14

3. Merkmale Transformationsregeln - non-executable = spezifiziert Beziehungen zwischen Modellen - deklarativ: Vor- und Nachbedingungen - imperativ: Operationen z.b. direkte Modell-Manipulation durch API-Aufrufe in einem Programmcode JMI: Java API -> MOF Repository - untypisiert - syntaktisch typisiert - semantisch typisiert 15

3. Merkmale Transformationsregeln - non-executable = spezifiziert Beziehungen zwischen Modellen - deklarativ: Vor- und Nachbedingungen - imperativ: Operationen z.b. direkte Modell-Manipulation durch API-Aufrufe in einem Programmcode JMI: Java API -> MOF Repository LHS/RHS können syntaktisch getrennt auftreten oder aber ohne Trennung (z.b. in einer Transformationsregel implementiert als Java-Programm) 16

4. Kategorien Model-to-Code Model-to-Model visitor based direct-manipulation template based relational graph-transformation Spezialfall von Model-to-Model!? Theoretisch ja: Angabe eines Meta-Modells für die Zielsprache Aber: existierende Compiler arbeiten auf Textdateien, nicht auf Modellen Deshalb besser: Model-to-Text structure-driven hybrid others 17

4. Kategorien Besucher-basiert sehr einfache Methode der Codegenerierung die interne Struktur des Modells wird durchlaufen dabei wird Code erzeugt und als Textstrom ausgegeben Model-to-Code visitor based template based Beispiel: Jamda objektorientiertes Framework in Java API für Modellmanipulation sog. CodeWriters zur Codegenerierung 18

4. Kategorien Template-basiert von den meisten aktuellen MDA-Tools verwendet Template in Text-Form wird als Basis für das Ziel-Modell benutzt darin enthaltene Meta-Tags werden durch Elemente aus dem Quell-Modell ersetzt Model-to-Code visitor based template based Beispiel: AndroMDA durchsucht das Quell-Modell nach markierten Elementen entsprechende Templates werden ausgeführt und Code wird erzeugt 19

4. Kategorien Template-basiert #if ($stringutils.isnotblank($class.packagename)) package $class.packagename; #end public class $class.name #if ($class.generalization) extends ${class.generalization.fullyqualifiedname} #end... #foreach ($attribute in $class.attributes) private $attribute.gettersettertypename $attribute.name #if ($attribute.defaultvaluepresent) = $attribute.defaultvalue #end;... #end Model-to-Code visitor based template based LHS: enthält ausführbare Logik, um das Quell-Modell abzufragen RHS: kombiniert Textfragmente des Templates mit ausführbarer Logik (Auswahl und Wiederholung der abgefragten Elemente) keine syntaktische Trennung zwischen LHS und RHS verschiedene Formen der LHS: imperativ (Java-Code mit API-Zugriff) deklarativ (OCL-Abfragen) 20

4. Kategorien Model-to-Model direct-manipulation relational graph-transformation structure-driven hybrid others 21

4. Kategorien Direkte Manipulation Werkzeuge bieten interne Darstellung des Modells API für Manipulation Model-to-Model direct relational graph-based häufig als objektorientiertes Framework implementiert Transformationsregeln und Anwendungsablauf müssen komplett vom Benutzer implementiert werden (z.b. in Java) 22

4. Kategorien Relationaler Ansatz Model-to-Model basiert auf dem deklarativen Ansatz (aber algebraische Relationen im Vordergrund) direct relational graph-based Regeln bestehen aus Bedingungen nicht ausführbar Aber: können durch ausführbare Semantik erweitert werden (z.b. Elementsuche, Elementmatching aus Logik-Programmierung) 23

4. Kategorien Relationaler Ansatz Demonstration: Transformationssprache ATLAS Abbildung eines Buch auf ein Veröffentlichung RHS enthält zusätzliche Logik zur Auswahl der richtigen Daten aus der LHS Model-to-Model direct relational graph-based Ausschnitt aus der Transformationsdefinition helper context Book!Book def : getauthors() : String = self.chapters->collect(e e.author)->asset()->iterate(authorname; acc : String = '' acc + if acc = ' then authorname else ' and ' + authorname endif ); rule Book2Publication { from b : Book!Book ( b.getnbpages() > 2 ) to out : Publication!Publication ( title <- b.title, authors <- b.getauthors(), nbpages <- b.getnbpages() ) } 24

4. Kategorien Relationaler Ansatz Noch ein relationaler Ansatz: QVT Model-to-Model direct relational Unterscheidung: bi-direktional und nicht ausführbar (Relationen) uni-direktional und ausführbar (Mappings) graph-based mehr dazu im nachfolgenden Vortrag 25

4. Kategorien Graph-basierter Ansatz Transformation von Graphen (auch Graph Rewriting) Model-to-Model direct relational Ansätze operieren auf typisierten Graphen versehen mit Attributen und Bezeichnern speziell geeignet zur Darstellung UML-ähnlicher Modelle graph-based Beschreibung mit Regeln LHS: Pattern L als Vorbedingung RHS: Pattern R als Nachbedingung Transformation besitzt eine deklarative Logik Unterscheidung vom relationalen Ansatz durch Vergleich ganzer Patterns statt nur Variablen 26

4. Kategorien Graph-basierter Ansatz 2 Regeln je eine Pre- und Postcondition (erwarten Parameter) neg-pattern darf nicht eintreten Funktionsweise: in Graph G wird ein Knoten, der Pattern L entspricht gesucht und dann entfernt neuer Knoten mit Pattern R wird in G eingefügt Verbindungen werden durch Einführung neuer Kanten sichergestellt Wiederholung bis keine Regel mehr zutrifft 27

Ende Fazit: viele Werkzeuge noch in Entwicklung welche Transformationstechnik sich durchsetzt wird sich zeigen Quellen: Classification of Model Transformation Approaches (Krzysztof Czarnecki and Simon Helsen) Model Transformation (Peter Birchmeier) Model Driven Software Development - ATLAS Model Management Architecture (Robert Schwarzer) 28