-
Was ist Modell und Metamodell in Kontext von Transofrmationen?
- Original: Student Valerii Zhyla, person aus Fleisch
- Modell: Objekt Valerii Zhyla mit paar Attribute
- Metamodell: Class Student
- Metametamodell: Java OOP
-
Ich habe zwei Metamodelle. Was muss gelten, damit ich die inenander transformieren kann?
- Diese Metamodelle muessen gleiche Meta-Metamodell instanziieren
-
Was ist die Transformation?
- Automatische Generierung von Target-Model aus Source-Model
- zB in IDEA kann man aus Java-Code (Source) Kotlin-Code (Target) generieren
- Eine Transformation kann sowohl mehrere Source als auch mehrere Target Modelle haben (zB Modell Merging)
-
Was benoeting man fuer die Transformation?
- Transformations Sprache - Basis fuer Regelen
- Transformation Regeln
- Transformation Engine
-
Wer fuehrt die Transformationen aus?
- Transformations-Engine wendet die Transformation Regeln an
-
Beispiel fuer Transformation:
-
Was ist Transformationdefinition?
- Transformationsdefinition ist die Menge allen Transformationsregeln
-
Wozu verwendet man die Transfomationen?
- Automatisierung von Migrationen
- Trennung von Domaene und Technologie
- Wiederverwendung von Transformation Rules
-
Was will man Transformieren?
- Innerhalb eines technischen Raums, der wird durch Meta-Metamodell definiert, zB MOF
- Transformation zwischen verschieden technischen Raueme geht auch (zB MOF basiert und XML basiert)
-
Welche Klassifizierung der Transformationen gibt es?
- engogen/exogen
- Man kann zwischen instanzen desselben Metamodells transformieren (Umfortmulierung, Refactoring) → endogen
- Aber auch zwischen instanzen verschiedenen Metamodelle (Uebersetzung). Java nach Kotlin. → exogen
- gleiche Metamodell oder verschiedene Metamodelle
- horizontal/vertikal:
- Source-Modell und Target-Modell sind auf selbem Abstraktionsniveau→horizontal
- Source-Modell und Target-Modell sind auf veschiedenem Abstraktionsniveau→vertikal
- zB UML ist abstrakter als Code
- syntaktisch/semantisch:
- Nur die Syntax (zB AST) ist fuer Transformation benutzt. zB Formatierung → syntaktisch
- Semantik beruecksichtigen. zB Refactoring → semantisch
-
Welche Sprachen gibt es fuer Modelltransformationen?
- Scala zwischen Imperativ (zB C) und Deklarativ (zB HTML, Prolog)
-
Unterschied zwischen deklarativen und imperativen Transformationsspreachen
- Deklarativ: Fokus auf “Was?” - Relation, keine einzelne Schritte
- Imperativ: Fokus auf “Wie?” - einzelte Schritte der Transformation
-
Was ist einer Relation?
-
Mit QVT kann man die Relationen erstellen
-
Man beschreibt, was man haben will, deklarativ
-
Keine Konstruktoren, Factories, nur “was gelten muss”
-
Deklarative Sprachen: Vorteile und Eigenschaften
- Vorteile:
- Navigation
- Bidirektionalitaet - Transformationen in beide Richtungen
- Tracing von Aenderungen
- Functional programming languages
- Logical programming languages
- Impzlizite Transformationsreihenfolge
-
Imperative Sprachen: Vorteile und Eigenschaften
- Ist notwendig, wenn deklarative Ansaetze nicht anvendbar ist
- Explizite Transformationsreihenfolge
- Extrene Aufrufe
-
Wie kann man Modelltransformationen formalisieren?
- Ein Modell ist ein Graph → Graphtransformationen
-
Was ist QVT?
- Queries, Views, Transformations
- Basier aus EMOD und OCL
- Deklarative Pruefung der beziehungen zwischen Modellen
- Uni un bidirektionale Transformationen
- Inkrementelle Modell-Aktualisierungen
- → Deklarative Sprache fuer Transformationen
-
Transformations-Schaubild aufzeitchnen und erklaeren
- auswendig lernen
- Modelle haben eigene Metamodelle, die eine Meta-Metamodell haben
- Modell A wird in Modell B mittels Transformation Engine transformiert
- Transformations Engine verwendet Transformation Rules
- Transformation Rules sind Instanzen von Transformationssprache
- Transformation Rules sind Mappings zwischen Metamodellen