29
Definition von visuellen Alphabetenbasierend auf
Meta Object Facilities (MOF)
23. Oktober 2012
Taentzer Visuelle Sprachen 30
Textuelle – Visuelle Alphabete
Textuelle Sprachen: eindimensional (Sätze) Basiselemente: Buchstaben, Ziffern, Sonderzeichen Relation zwischen den Elementen: folgt
Visuelle Sprachen: mehrdimensional (Graphiken) Basiselemente: Graphiken, frei wählbar Relationen: räumliche Relationen, wie über, unter, enthält,
nahe_bei
Definition von visuellen Sprachen
Alphabetdefinition: Wie sieht das visuelle Alphabet aus? Welche Sprachelemente? Welche Attribute haben diese? Welche Relationen zwischen diesen?
Sprachdefinition: Welche Wörter/Graphiken sind erlaubt? nur Wörter/Graphiken über dem Alphabet Welche zusätzlichen Bedingungen müssen erfüllt sein? Hat die visuelle Sprache eine Grammatik?
Taentzer Visuelle Sprachen 31
Konkrete vs. abstrakte Syntax
Konkrete Syntax:Benutzerorientierte Sicht
Welche Graphiken? Welche Texte? Welche visuellen
Constraints? Welches
Gesamtlayout?
Abstrakte Syntax:Interne Struktur
Welche Informationen sind für die Weiterverarbeitung wichtig?
Welche internen Elemente?
Welche Attribute und Relationen?
Taentzer Visuelle Sprachen 32
Taentzer Visuelle Sprachen 33
Beispiel: Petrinetze Petrinetze: zur Modellierung von nebenläufigen
Systemen Stellen-Transitionsnetze:
Stellen beschreiben Zustände, Objekte in Zuständen Transitionen beschreiben Aktionen
Stellen-Transitions-netz für Puffer-verwaltung
ready to deliver buffer
filled
ready to consume
consume
ready to remove
buffer empty
ready to produce
deliverproduce remove
Beispiel: Android GUI-Builder Ein graphischer Editor für graphische Benutzeroberflächen von
Android Apps Verschiedene Komponenten: Panel, Text Field, Radio Button,… Verschiedene Layouts: Table, Absolute, Linear, …
Taentzer Visuelle Sprachen 34
developer.android.com
Taentzer Visuelle Sprachen 35
MOF: Zielsetzung
MOF war ursprünglich ein Konzept, um Metainformationen in verteilten, speziell CORBA-basierten Systemen zu beschreiben.
MOF wird mittlerweile genutzt, um die abstrakteSyntax von visuellen Sprachen wie UML zu definieren.
Ausserdem kann man mit MOF Metadaten fürDatenbanken und Informationsysteme beschreibenund Abbildungen von verschiedenenDatenbeschreibungen definerieren.
MOF ist ein Standard der Object Management Group (OMG). (Spezifikation: http://www.omg.org/mof)
Taentzer Visuelle Sprachen 36
MOF Architektur
Taentzer Visuelle Sprachen 37
MOF im Vergleich zu Grammatiken
Meta-Metamodell
Metamodell
Modell
Instanz von
Instanz von
Beschreibungsansatz
Abs. Syntax der Sprache
Graphik
Definiert durch
Instanz von
BNF-Grammatik
textuelle Sprache
Wort
Erzeugt von
Instanz von
Taentzer Visuelle Sprachen 38
Die wichtigsten MOF-Konzepte zur Alphabetdefinition
Metamodellierungskonzepte: Klassen modellieren
Metaobjekte. Assoziationen modellieren
binäre Beziehungen zwischen Metaobjekten.
Datentypen modellieren andere Daten.
Pakete modularisieren Modelle.
Sprachdefinitionskonzepte:
Klassen beschreiben visuelle Symboltypen.
Assoziationen beschreiben Relationstypen.
Datentypen beschreiben Attributtypen.
Pakete modularisieren Sprachdefinitionen.
Taentzer Visuelle Sprachen 39
EMF und MOF Essential MOF (EMOF) realisiert die essentiellen Konzepte von MOF. Mit EMOF soll der Einsatz von MOF zur Definition von Sprachen
erleichtert werden. EMOF enthält z.B. keine Vererbung von Assoziationen. Das Eclipse Modeling Framework (EMF) realisiert EMOF
(www.eclipse.org/emf/)
Ecore EssentialMOF
Complete MOF
EMF MOF
≈
Taentzer Visuelle Sprachen 40
Das EMF Meta-Metamodell
Taentzer Visuelle Sprachen 41
EMF-Klassenmodell für Petrinetze
Taentzer Visuelle Sprachen 42
Meta-Klassen
Meta-Klassen haben Attribute, Operationen und Referenzen.
EClassifier ist Oberklasse von EClass und EDataType.
EClass hat als Attribute: name – Klassenname abstract – abstrakte
Klasse interface –
Schnittstellenklasse EClass hat als Referenzen:
eAttributes – Attribute eReferences - Referenzen eSuperTypes –
Oberklassen instanceClassName –
Korrespondenz zu einer normalen Java-Klasse
Taentzer Visuelle Sprachen 43
Strukturelle Eigenschaften
EStructuralFeature ist ein getyptes Element mit Namen.
EAttribute und EReferencehaben EStructuralFeatureals Oberklasse.
EAttribute hat als Attribute: iD – Attribut wird zur
Identifizierung des Objekts benutzt.
EAttribute hat als Referenz: eAttributeType – Typ des
Attributs
EStructuralFeature hat als Attribute: changeable – von aussen
setzbar transient – wird nicht gespeichert unique – eindeutiger Wert unsettable – für unsetzbare
Werte, z.B. null volatile – für abgeleitete Werte lowerBound, upperBound:
Kardinalität defaultValueLiteral: defaultValue
als String defaultValue
Taentzer Visuelle Sprachen 44
Beispiele: EAttribute und EReference
Taentzer Visuelle Sprachen 45
Beispiel: Containment Referenzen
Taentzer Visuelle Sprachen 46
Referenzen und Operationen
EReference hat als Attribute: containment – gesetzt,
falls die Referenz eine Komposition ist.
resolveProxies –referenzierte Objekte aus anderen Resourcen werden als Proxies gehalten
EOperation ist ein getyptes Element mit Namen.
EOperation hat als Referenzen: eParameters –
Parameterliste EParameter ist ein getyptes
Element mit Namen.
Taentzer Visuelle Sprachen 47
Datentypen und Pakete
Datentypen primitive Datentypen wie
Boolean, Integer, String, etc. komplexe Datentypen wie
Containertypen, Enumerations, etc.
EDataType hat als Attribute: serializable – ist serialisier-
bar (speicherbar) ECore hat vordefinierte
Datentypen, wie EBoolean, EChar, EInt, EString,etc.
Zusammengehörige Meta-elemente werden in Paketen zusammengefasst.
EPackage hat als Attribute: name nsURI – URI, die das Paket
identifiziert nsPrefix - Namensraum
EPackage hat als Referenzen: eSuperPackage – Oberpaket eSubpackage – Unterpakete eFactoryInstance – zugehö-
rige Factory
Taentzer Visuelle Sprachen 48
Annotationen
EAnnotation hat als Attribute: source – type der Annotation
(als URI) details – Abbildungen
unterteilt in key – Schlüssel value – Wert
EAnnotation hat als Referenzen: content – enthaltenes Objekt references – referenzierte
Objekte
Annotationen werden zur Definition von Constraints benutzt.
Taentzer Visuelle Sprachen 49
EMF Generierungsprozess Anlegen eines neuen EMF-Projekts:
FileNewOtherEclipse Modeling Framework Empty EMF Project
Ecore-Datei erzeugen: FileNewOtherExample EMF Model Creation WizardsEcore
Model (Top: EPackage) Editieren
im baumbasierten Editor: <Name>.ecore Im graphischen Editor: Initialize Ecore Diagram File
Genmodel-Datei erzeugen: FileNewOtherEclipse Modeling FrameworkEMF Generator
Model: Ecore Datei auswählen Code erzeugen
Genmodel-Datei öffnen und oberstes Package auswählen Generate Model Code erzeugt Packages: <Name>, <Name>.impl,
<Name>.util Generate Edit Code, Editor Code -> für baumbasierten Editor
Taentzer Visuelle Sprachen 50
Benutzung des generierten Instanzeditors
Minimale Eclipse Umgebung zum Ausführen von Eclipse-Plugins starten „Run AsEclipse Application“
Erstellen eines einfachen Projekts: „File -> New ->Project->General->Project“
Erstellen eines Petrinetzes in abstrakter Syntax: „File New Other Example EMF Model Creation Wizard
<dateiname>.petrinet“ Im Wizard die oberste Klasse „Petrinet“ festlegen.
Dateityp wird durch Endung „.petrinet“ festgelegt. Model wird im XMI Format gespeichert (XML Metadata
Interchange)
Taentzer Visuelle Sprachen 51
Beispiel: Ein konkretes Petrinetz
konkrete Syntax
ready to deliver buffer
filled
ready to consume
consume
ready to remove
buffer empty
ready to produce
deliverproduce remove
abstrakte Syntax
Taentzer Visuelle Sprachen 52
Ausblick: EMF-Modell für UML2
Das UML-Metamodell besteht aus Diagramm Interchange Specification:
Diagrammaustauschformat Superstructure Specification:
Definition der konkreten Syntax der Symbole Beispiele für konkrete Syntax Definition der abstrakten Syntax, mit MOF beschrieben
MOF-Spezifikation: http://www.uml.org Eclipse UML2-Projekt:
komplettes EMF-Modell für die abstrakte Syntax von UML2: http://www.eclipse.org/uml2/
Taentzer Visuelle Sprachen 53
Zusammenfassung: MOF zurBeschreibung von visuellen Alphabeten Klassenstrukturen beschreiben das visuelle Alphabet
der abstrakten Syntax einer visuellen Sprache. EMOF ist eine Vereinfachung von MOF und bildet die
Basis für das Eclipse Modeling Framework (EMF).
Klassen definieren Alphabetelemente. Assoziationen definieren deren Relationen. EMF erwartet Containerelemente:
Alle Elemente sind transitiv im obersten Container enthalten.