Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014



Ähnliche Dokumente
Aufgaben eines Codegenerators

Datenaustauschformate. Datenaustauschformate - FLV

Current Workflow. formatted. Rules. Extensions. Rules. DOM processing with Meta API-calls. Code Generation (Smarty) XMLfile. Source code.

Extraktion von Metainformationen

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

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

XML Schema vs. Relax NG

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

Konzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle

WhiteStarUML Tutorial

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

DTD: Syntax-Zusammenfassung

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

XMI & Java. von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Vorlesung "Software-Engineering"

Objektorientierung: Klassen und Objekte

4. AuD Tafelübung T-C3

Programmieren Tutorium

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder

Übungsaufgaben zu XML:

HTML5. Wie funktioniert HTML5? Tags: Attribute:

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Kapitel DB:III. III. Konzeptueller Datenbankentwurf

Architektur des agimatec-validation Frameworks

Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen

Java Einführung Collections

Erhöhung der Datenqualität in XML-Dokumenten von Desktop Applikationen. Alexander Hilliger von Thile - REI/ID

Assoziation und Aggregation

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

VBA-Programmierung: Zusammenfassung

Universität Augsburg, Institut für Informatik Wintersemester 2011/2012 Prof. Dr. W. Kießling 03. Feb Semesterklausur

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Programmierkurs Java

Einführung in die Programmierung für NF

Extending tl_member. Andreas Fieger

Object Relational Mapping Layer

Programmiersprachen und Übersetzer

Oracle: Abstrakte Datentypen:

Thema 2 Acceleo-MTL- Sprachmittel

Objektorientierte Programmierung

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Allgemeines zu Datenbanken

EndTermTest PROGALGO WS1516 A

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Codes und Informationsgehalt

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

3. Das Relationale Datenmodell

Grammatiken. Einführung

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Einführung in die Java- Programmierung

Übungen Programmieren 1 Felix Rohrer. Übungen

DSL Entwicklung und Modellierung

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

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

Klausur Interoperabilität

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Java Einführung Abstrakte Klassen und Interfaces

Grundlagen von Python

Übung 4. Musterlösungen

Client-Server-Beziehungen

Java: Vererbung. Teil 3: super()

Unified Modeling Language (UML)

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Objektorientierte Programmierung OOP

Software Engineering II

Objektorientierte Programmierung. Kapitel 12: Interfaces

Datenbankmodelle 1. Das Entity-Relationship-Modell

Einführung in die Programmierung für Wirtschaftsinformatik

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

3. Konzepte der objektorientierten Programmierung

Innere Klassen in Java

Übungen zur Softwaretechnik

Use Cases. Die Sicht des Nutzers. Fortgeschrittenenpraktikum SS 2004

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Grundbegriffe der Informatik

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Technische Dokumentation

3.5 OWL: WEB Ontology Language (1)

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Java Einführung Operatoren Kapitel 2 und 3

Kapitel 6. Vererbung

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Software Engineering Klassendiagramme Einführung

Arrays. PHP JavaScript Kapitel 9

Transkript:

Modell/Metamodell Model Generator Generated Source Code Andreas Schmidt Modellierung 1/18

Modell Modell beschreibt die zu generierende Anwendung Modell ist... abstrakt kompakt formal Modell kann in unterschiedlichen Notationen vorliegen: textuell graphisch XML API-Aufrufe... Andreas Schmidt Modellierung 2/18

Metamodell Begriff Meta kommt aus dem grischichen und bedeutet über Metamodelle sind Modelle, die etwas über Modellierungen aussagen. Ein Metamodell legt die Konstrukte der Modellierungssprache (Objekte, Beziehungen, Constraints,...) fest. Jede formale Sprache (Java, SQL, UML, Postscript,...) besitzt ein Metamodell. Metamodell und Modell stehen in Klasse - Instanz Beziehung zueinander, d.h. jedes Modell ist Instanz ihres Metamodells Metamodell beschreibt die Struktur des Modells Andreas Schmidt Modellierung 3/18

Beispiele zu Model/Metamodell Beispiele: Ein XML-Schema oder eine DTD bildet das Metamodell zu einem, entsprechend diesem Schema/DTD gültigen, XML-Dokument Die BNF (Backus Naur Form) ist eine Metasprache für die Beschreibung der Syntax von Programmiersprachen, d.h. die BNF Beschreibung der Sprache Java ist eine Instanz der BNF. Eine in BNF vorliegende Beschreibung der Sprache Java ist ein Metamodell der Sprache Java. Ein Objektnetz das während eines Programmablaufs erzeugt wurde ist eine Instanz der für dieses Programm definierten Klassen. Das UML Diagramm/ER-Diagram repräsentiert ein Modell einer Anwendung Andreas Schmidt Modellierung 4/18

Metamodellierung/Metamodelle und wie lege ich die Struktur der Metamodelle fest? => (Meta-) Metamodell Modellierungsebenen (nach OMG, MOF): M0: Instanzen M1: Modell M2: Meta- M3: Metamodell Metamodell Typ: Stadt ID: 64647 Name: Karlsruhe Einwohner: 276543 beschreibt ist Instanz von Typ: Klasse ID: 8725811 Name: Stadt Attribute: Name, Einwohner Operationen:... Beziehungen:... Typ: Classifier ID: 64647 Name: Klasse Features: Attributes, Operationen, Beziehungen Andreas Schmidt Modellierung 5/18

Modell (ER-Notation) id jahr spielt_mit name id <0,n> <0,n> Film Person <1,1> regisseur <0,n> titel vorname Andreas Schmidt Modellierung 6/18

andere Notation des selben Modells <?xml version="1.0"?> <!DOCTYPE my-model SYSTEM "my-meta.dtd"> <my-model> <class name="person"> <attribute name="id" primary-key="true" type="integer" length="10"/> <attribute name="name" type="varchar" length="30"/> <attribute name="vorname" type="varchar" length="30"/> </class> <class name="film"> <attribute name="id" primary-key="true" type="integer"/> <attribute name="titel" type="varchar" length="120"/> <attribute name="jahr" type="date"/> </class> <association name="regisseur"> <association-end class="person" role="regisseur" min="1" max="1"/> <association-end class="film" role="directed_film"/> </association> <association name="spielt_mit"> <association-end class="person" role="schauspieler"/> <association-end class="film" role="film"/> </association> </my-model> Andreas Schmidt Modellierung 7/18

DTD repräsentiert Metamodell <!ELEMENT my-model (class+, association*)> <!ELEMENT class (attribute+)> <!ATTLIST class name ID #REQUIRED> <!ELEMENT association (association-end, association-end)> <!ATTLIST association name CDATA #REQUIRED> <!ELEMENT association-end EMPTY> <!ATTLIST association-end class IDREF #REQUIRED role CDATA #REQUIRED min CDATA "0" max CDATA "*"> <!ELEMENT attribute EMPTY> <!ATTLIST attribute name CDATA #REQUIRED primary-key (true false) #IMPLIED type (date integer varchar double number) #REQUIRED length CDATA #IMPLIED> Andreas Schmidt Modellierung 8/18

Frage: wie lautet das Metamodell des ER-Modells? Andreas Schmidt Modellierung 9/18

was soll unser Modell ausdrücken können? Entitäten Attribute Typen Beziehungen zwischen Klassen Kardinalitäten Beziehungsenden Rollenbezeichner Andreas Schmidt Modellierung 10/18

Metamodell (ER-Notation) name name <1,n> <1,1> <1,1> <0,n> Entität Attribut Typ <0,n> name <1,1> Beziehungsende <1,1> <2,2> Beziehung rolle min max name Andreas Schmidt Modellierung 11/18

Repräsentation des Modells Externe Repräsentation des Modells Text XML Graphische Notation Aufrufe von Methoden einer API Interne Repräsentation des Modells Text ( on-the-fly Extraktion, z.b. durch reguläre Ausdrücke) XML (nur für XSLT Transformation) XML DOM Tree/SAX Komplexe Datenstruktur (geschachtelte Arrays/Dictionaries) Komplexes Objektnetz Andreas Schmidt Modellierung 12/18

Metamodel API class MetaModel Methods MetaModel static function createmodel($name) MetaClass function addclass($name) MetaRelation function addrelation($name) function setdate($value) function setsource($value) Properties classes: array of MetaClass relations:array of MetaRelation name : string source : string date : string class MetaClass Methods MetaAttribute function addattribute($name, $type, $len="", $is_primary_key=false) MetaRelation function addrelationend($role, $type, $min=0, $max="1", $name=null) Properties name : string attributes : array of MetaAttribute relations : array of MetaRelationEnd primary_key: MetaAttribute model : MetaModel Andreas Schmidt Modellierung 13/18

class MetaAttribute Properties name : string type : MetaType length : integer class : MetaClass is_primary_key : boolean class MetaRelationEnd Properties role : string type : MetaClass min : integer max : integer class : MetaClass relation_name : string class MetaRelation Methods addrelationend($rel_end) Properties name:string model:metamodel relation_ends:array of MetaRelationEnd class MetaType Methods boolean static function is_primitive_type($type_name) Properties name : string Andreas Schmidt Modellierung 14/18

Beispiel für den Aufbau eines Modells <?php include_once 'meta-model.php'; $model = MetaModel::createModel('Film DB'); $film = $model->addclass('film'); $person = $model->addclass('person'); primary key cardinality $person->addattribute('id','integer',10, true); $person->addattribute('surname','string',30); $person->addattribute('first_name','string',30); $person->addattribute('birthday','date'); $person->addrelationend('directed_films', 'Film',0, *, "directs"); $film->addattribute('id', 'Integer',10, true); $film->addattribute('title', 'String',50); $film->addattribute('year', 'date'); $film->addrelationend('director', 'Person',0,1, "directs");); indicates that both ends belong to the same relation?> Andreas Schmidt Modellierung 15/18

Beispiel in UML-Notation Andreas Schmidt Modellierung 16/18

Fakultät IWI Accessing a Modell via Properties File api-access-example.php <?php include_once 'api-model-example.php'; print "Model $model->name\n"; foreach ($model->classes as $class) { echo "$class->name with primary key "; echo "(".$class->primary_key->name.")\n"; foreach ($class->attributes as $att) { echo " - [A] $att->name ".$att->type->name." $att->length "; echo ($att->is_primary_key?"[pk]":"")."\n"; } foreach ($class->relations as $rel) { echo " - [R] $rel->role --($rel->min/$rel->max)-->"; echo $rel->type->name."\n"; } print "\n"; }?> Output $ php api-read-access-example.php Model Film DB Person with primary key (id) - [A] id Integer 10 [PK] - [A] surname String 30 - [A] first_name String 30 - [A] birthday date - [R] film --(0/-1)-->Film Film with primary key (id) - [A] id Integer 10 [PK] - [A] title String 50 - [A] year date - [R] director --(0/1)-->Person Andreas Schmidt Modellierung 17/18

API-basiertes Metamodell: Eigenschaften Modell wird durch Objektnetz repräsentiert Methodenaufrufe erstellen internes Modell Vorteile: Die API ist einfach zu benutzen Zusätzliche Methoden (oder Unterklassen) erlauben die Implementierung... von Verifikations-Methoden zur Sicherung der Modellkonsistenz von Transformations-Methoden zum Anreichern oder Transformieren des Modells von zusätzlichen Hilfsmethoden zur Unterstützung der Transformation/Codegenerierung für bestimmte Plattformen Die Modellinformationen können durch Navigation entlang den Properties/Methoden des Objektmodells extrahiert werden. Andreas Schmidt Modellierung 18/18