Softwaretechnik Model Driven Architecture Metamodellierung

Ähnliche Dokumente
MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

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

UML (Unified Modelling Language) von Christian Bartl

COPE COuPled Evolution of metamodels and models

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java

Grundlagen von MOF. Alexander Gepting 1

Auf dem Weg zur Semantikdefinition? Das UML-Metamodell (für Klassendiagramme)

openarchitectureware

Software- und Systementwicklung

Vgl. Oestereich Kap 2.4 Seiten

Einführung in das Eclipse Modeling Framework. 5. November 2014

Die abstrakte Syntax der Unified Modeling Language

Übungen Softwaretechnik I

Unified Modeling Language 2

Java Metadata Interface. Thorsten Pivl

Modellgetriebene Softwareentwicklung bei der IBYKUS AG

Definition von visuellen Alphabeten basierend auf Meta Object Facilities (MOF) 23. Oktober 2012

Analyse und Modellierung von Informationssystemen

Grundlagen der UML-Modellierung. Modellierung. Elena Paslaru Seminar Praktische Modellierung SS

Model Driven Development im Überblick

Super. Sub1. Sub2 State2. Sub3. Sub4. Super. State2. Sub4

Alphabet, formale Sprache

Vorlesung "Software-Engineering"

WhiteStarUML Tutorial

Michael Piechotta - CASE Tools. openarchitecture Ware

Von UML 1.x nach UML 2.0

Automatisierung industrieller. Workflows. Teil B: Die Spache UML

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

80/1RWDWLRQXQG6HPDQWLN. Dr. Eckhardt Holz Humboldt-Universität zu Berlin Institut für Informatik

Einführung in die Programmierung

Thema 2 Acceleo-MTL- Sprachmittel

Model Driven Software Development

Vorlesung Programmieren

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

Ausarbeitung Referat zur MDA

Software Factories SS Prof. Dr. Dirk Müller. 3 Modellgetriebene Softwareentwicklung

Software Engineering Klassendiagramme Einführung

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Modellierung & Domänen Spezifische Sprachen (DSL)

Code Generieren mit UML2

Struktur der UML-Spezifikationen

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

Einführung in die OOP mit Java

Rückblick: Entity-Relationship-Modell

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

M2M-Transformation mitder QVTOperational Mappings

Einführung in UML. Überblick. 1. Was ist UML??? 2. Diagrammtypen. 3. UML Software. Was ist ein Modell??? UML Geschichte,...

Einführung in das Eclipse Modeling Framework. Dr. Thorsten Arendt Marburg, 22. Oktober 2015

Übungsaufgaben UML Zertifizierung Fundamental-Level

Modellgetriebene Entwicklung eines erweiterten UML-Editors zur Modellierung von ObjectTeams/Java-Programmen

Unified Modeling Language (UML )

Einstieg in die Informatik mit Java

Probeklausur: Programmierung WS04/05

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

M2M-Transformation mitder QVTRelations Language

Herausforderung: Entwicklungsmethodik und technisches Umfeld

Theorie zu Übung 8 Implementierung in Java

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Klassifikation von Modelltransformationen

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

Babylon im 21. Jh.: Profiles das Ende einer standardisierten UML? Jürgen Hahn, SOPHIST GROUP. Trainingsname Trainingsbaustein Seite 1

Universität Karlsruhe (TH)

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

OOAD in UML. Seminar Software-Entwurf B. Sc. Sascha Tönnies

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

WIRTSCHAFTSINFORMATIK

Software Engineering II

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Oracle JDeveloper 10 g

Visual Studio 2010 Neues für Architekten

Unified Modeling Language (UML)

Repetitorium Informatik (Java)

Einführung in die Informatik

Model Driven Architecture

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

Übersicht. Vorstellung des OO-Paradigmas

Arbeitsblätter zu Teil I des Praktikums

Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.

Seminar Informatik. 07 Fakultät für Information-, Medien und Elektrotechnik Studiengang: Master Technische Informatik. Domain Specific Language

UML 2.0 Quelltextgenerierung

Entwicklung von domänenspezifischen Sprachen. 23. Januar 2013

Java Einführung Objektorientierte Grundkonzepte

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

UML Eine kurze Einführung

Andreas Lux Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse

SEA. Modellgetriebene Softwareentwicklung in der BA

Dialogentwicklung mit Hilfe des Model Driven Architecture Ansatzes

Thema 7 Einstieg in die Semesterarbeit

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

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Vorlesung Software Engineering I

27. Oktober 2005 Florian Marwede

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

Abschnitt 15: Unified Modeling Language (UML)

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

Transkript:

Softwaretechnik Model Driven Architecture Metamodellierung Prof. Dr. Peter Thiemann Universität Freiburg 17.07.2008

Metamodellierung Einführung Was? meta = über Definiert eine Ontologie von Konzepten für eine Domäne. Definiert das Vokabular und die grammatischen Regeln einer Modellierungssprache. Definiert eine domänenspezifische Sprache (DSL). Warum? Spezifikation der Menge der Modelle für eine Domäne. Präzise Definition der Modellierungssprache. Wie? Grammatiken und Attributierungen für textbasierte Sprachen. Metamodellierung generalisiert dies auf beliebige Sprachen (z.b., grafische)

Metamodellierung Verwendungen Konstruktion von DSLs Validierung von Modellen (testen gegen ein Metamodell) Model-to-model Transformation (definiert auf Grundlage eines Metamodells) Model-to-code Transformation Werkzeugintegration

Exkursion: Classifiers und Instanzen Classifier-Diagramme dürfen auch Instanzen enthalten Beschreibung einer Instanz kann enthalten Namen (optional) Klassifikation durch beliebig viele Klassifikatoren Art der Instanz Instanz einer Klasse: Objekt Instance einer Assoziation: Link usw Optional Spezifikation von Werten

Exkursion: Notation für Instanzen Instanzen verwenden die gleiche Notation wie Klassifikatoren Rechteck für die Instanz Namesabteil enthält name:classifier,classifier... name:classifier :classifier anonyme Instanz : unklassifizierte, anonyme Instanz Attribut im Klassifikator veranlasst einen gleichnamigen Slot mit optionalem Wert Assoziation mit dem Klassifikator veranlasst einen Link zum anderen Ende der Assoziation Richtung muss mit Navigierbarkeit verträglich sein

Exkursion: Notation für Instanzen (grafisch) Ship name : String gross weight : Integer country : String Sailor name : String rank : String <<instance of>> <<instance of>> <<instance of>> QE2 : Ship name = "QE2" gross weight = 70327 country = "GB" captainbates : Sailor name = "N. Bates" rank = "Captain"

Terminologie/Syntax Regeln für Wohlgeformtheit Abstrakte Syntax nur Struktur, wie werden Sprachkonzepte zusammengesetzt Konkrete Syntax definiert spezifische Notation Typische Verwendung: ein Parser bildet konkrete Syntax in abstrakte Syntax ab

Terminologie/Abstrakte Syntax Beispiel: Arithmetische Ausdrücke Abstrakte Syntax Expr = Const String Var String Binop Op Expr Expr Op = Add Sub Mul Div Binop Mul (Const "2") (Binop Add (Var "x") (Const "3")) Konkrete Syntax 2 * (x + 3) E ::= c x E B E (E) B ::= + /

Terminologie/Abstrakte Syntax Beispiel: UML class diagram Konkrete Syntax Abstrakte Syntax Person name salary raise() :Class name = "Person" :Attribute name = "name" :Operation name = "raise" :Attribute name = "salary"

Terminologie/Statische Semantik Statische Semantik definiert Wohlgeformtheitsregeln, die über die Syntax hinausgehen Beispiele Variablen müssen vor ihrer Verwendung definiert werden Typesystem einer Programmiersprache "hello" * 4 ist syntaktisch korrektes Java, wird aber zurückgewiesen UML: statische Semantik via OCL Ausdrücke Verwendung: Erkennung von Fehlern in der Modellierung bzw Transformation

Terminologie/Domänenspezifische Sprache (DSL) Zweck: formale Beschreibung von Schlüsselaspekten einer Domäne Metamodell einer DSL definiert abstrakte Syntax und statische Semantik Zusätzlich: konkrete Syntax (nah an der Domäne) dynamische Semantik fürs Verständnis für automatische Werkzeuge Verschiedene Komplexitätsgrade möglich Konfigurationsoptionen mit Gültigkeitsprüfung grafische DSL mit domänenspezifischem Editor

Modell und Metamodell

Modell und Metamodell Domain of discourse Model Metamodel "real world" elements describes model elements describes metamodel elements Einsicht: Jedes Modell ist Instanz eines Metamodells. Essentiell: instance-of Beziehung Zu jedem Element muss es ein klassifizierendes Metaelement geben, das die Metadaten enthält und das vom Element erreichbar ist Relation Model:Metamodel ist wie Object:Class Definition des Metamodell durch ein Meta-metamodell unendlicher Turm von Metamodellen meta Relation ist immer relativ zu einer Modellebene

Metamodellierung à la OMG OMG definiert einen Standard (MOF) für die Metamodellierung MOF (Meta-Object Facility) verwendet zur Definition von UML Achtung! MOF und UML verwenden die gleiche Syntax (classifier und Instanzdiagramme) MOF verwendet die gleichen Namen für Modellierungselementen wie UML (e.g., Klasse) Ansatz Einschränken der unendlich vielen Metaebenen auf vier Die letzte Ebene ist selbst-beschreibend

Metamodellierung und OCL <<metaclass>> UML::Attribute name: String [...] type: Type context Attribute: <<metaclass>> inv: Type.Name == "String" CM::ConfigParam OCL Constraints sind unabhängig von der Modellierungssprache und der Metaebene OCL auf Ebene Mn + 1 restringiert Instanzen auf Ebene Mn

Die vier OMG-Metaebenen describes M3: Meta Metamodel instanceof Typ: Classifier ID: 5346456 Name: Classifier describes M2: Metamodel describes M1: Model describes M0: Instances instanceof instanceof instanceof Typ: Classifier ID: 764535 Name: Klasse Features: Attributes, Operations, Ass Typ: Klasse ID: 21436456 Name: Person Attribute: Name, Firstn. Operations:... Association:... Typ: Person ID: 05034503 Name: Doe Given name: John

Ebene M0: Instanzen Ebene des ablaufenden Systems Enthält echte Objekte, z.b., Kunden, Seminare, Bankkonten, mit gefüllten Slots für Attribute usw Beispiel: Objektdiagramm

Ebene M1: Modell Ebene der Systemmodelle Beispiel: UML Modell eines Softwaresystems Klassendiagramm enthät Modellierungselemente: Klassen, Attribute, Operationen, Assoziationen, Generalisierungen,... Elemente von M1 kategorisieren Elemente auf Ebene M0 Jedes M0-Element ist Instanz eines M1-Elements Keine weiteren Instanzen sind auf Ebene M0 zulässig

Verhältnis zwischen M0 und M1 M1: Model of a System Customer title : String name : String Order number : String name : String <<instance of>> :Customer title = "Dr" name = "Joe Nobody" <<instance of>> :Customer title = "Mr" name = "Mark Everyman" <<instance of>> M0: System :Order number = "200604" name = "somename"

Ebene M2: Metamodell Modell fürs Modell Ebene, auf der Modellierungselemente definiert werden Konzepte von M2 kategorisieren Instanzen auf Ebene M1 M2-Elemente kategorisieren M1-Elemente: Klassen, Attribute, Operationen, Assoziationen, Generalisierungen,... Beispiele Jede Klasse in M1 ist Instanz eines Klassen-beschreibenden Elements auf Ebene M2 (d.h., eine Metaklasse) Jede Assoziation in M1 ist Instanz eines Assoziations-beschreibenden Elements auf Ebene M2 (eine Metaassoziation) und so weiter

Verhältnis zwischen M1 und M2 M2: Model of a Model name: String UML Class name: String UML Attribute <<instance of>> <<instance of>> <<instance of>> M1: Model :UML Class name = "Customer" name = "Order" :UML Class :UML Attribute name = "number"

Ebene M3: Meta-Metamodell Ebene zur Definition der Definition der Modellierungselemente M3-Elemente kategorisieren M2-Elemente: Metaklassen, Metaassoziationen, Metaattribute, etc Typisches Element eines M3 Modells: MOF-Klasse Beispiele Die Metaklassen Class, Association, Attribute, usw sind alle Instanzen von MOF::Class Die Ebene M3 ist selbst-beschreibend

Verhältnis zwischen M2 und M3 MOF Class M3: Model of a Model of a Model name: String <<instance of>> <<instance of>> M2: Model of a Model :MOF Class name = "UML Class" :MOF Class name = "UML Attribute"

Übersicht über die Ebenen MOF Class name: String M3: Model of a Model of a Model <<instance of>> UML Class name: String <<instance of>> M2: Model of a Model UML Attribute name: String <<instance of>> <<instance of>> <<instance of>> <<instance of>> M1: Model of a System Customer title: String name: String Order number: String name: String <<instance of>> <<instance of>> <<instance of>> M0: System Customer Customer Order title = "Dr" name = "Joe Nobody" title = "Mr" number = "200604" name= "M. Everyman" name = "somename"

Auszug aus MOF/UML Model Element Import Namespace Constraint Tag Feature generalizes Generalizable Element Behavioral Feature Package Classifier Operation Exception can throw Association Class

Erweitern von UML Entwurf einer DSL

Entwurf einer DSL Definition einer neuen M2-Sprach von Null ist zu aufwändig Typischer Ansatz: Erweiterung von UML Erweiterungsmechanismen Erweiterung des UML 2 Metamodells anwendbar für alle MOF-definierten Metamodelle Erweiterung mit Stereotypen (à la UML 1.x) Erweiterung mit Profilen (à la UML 2)

Erweitern des UML-Metamodells Extended UML Metamodel MOF UML::Class CM::Component <<instanceof>> <<instanceof>> MOF::Classifier <<instanceof>> generalizes MOF erlaubt die Ableitung neuer Metaklassen CM::Component von UML::Class CM::Component ist Instanz von MOF::Classifier Generalisierung ist Instanz von MOFs generalizes Assoziation

Erweitern des UML-Metamodells/Konkrete Syntax (1) (2) (4) <<CM::Component>> <CM::Component>> CustomAdmin::Person CustomAdmin::Person {metaclass=cm::component} <<instanceof>> CustomAdmin::Person (3) <<component>> CustomAdmin::Person (5) CustomAdmin::Person 1 Explizite Instanz einer Metaklasse 2 Name der Metaklasse als Stereotyp 3 Konvention 4 Tagged value mit Metaklasse 5 Eigene grafische Repräsentation (falls unterstützt)

Erweitern einer Klasse UML::Class <<CM::Component>> CustomAdmin::Person {transactional = true} CM::Component transactional: boolean das reine Erben von UML::Class liefert eine identische Kopie Hinzufügen eines Attributs zur CM::Component Metaklasse führt zu einem Slot für einen Attributwert in jeder Instanz Notation: tagged value (getypt in UML 2)

Erweitern mit Stereotypen (UML 1.x) <<metaclass>> UML::Class <<stereotype>> <<stereotye>> CM::Component {<<taggedvalue>> transactional} Einfacher Specialisierungsmechanismus von UML Kein Rückgriff auf MOF erforderlich Tagged Values, aber ungetypt Keine neuen Metaassoziationen möglich

Erweitern mit Profile (UML 2) definition use <<metaclass>> UML::Class <<stereotype>> CM::Component transactional: boolean <<CM::Component>> CustomAdmin::Person {transactional = true} Erweiterung des Stereotype-Mechanismus Erfordert den Erweiterungspfeil als neues UML Sprachkonstrukt (Generalisierungspfeil mit gefülltem Kopf) Nicht: Generalisierung, Implementierung, Abhängigkeit mit Stereotyp, Assoziation,... Attribute getypte tagged values Mehrere Stereotypen möglich

Mehr über Profile Profile machen aus UML eine Sprachfamilie Jedes Mitglied ist definiert durch Anwendung von einem oder mehreren Profilen auf das Basis-UML-Metamodell Werkzeuge sollte Profile und zugehörige Transformationen laden und verarbeiten können Profile haben drei Bestandteile Stereotypen Tagged values Constraints Profile können nur existierenden Modellierungselementen weiter Restriktionen auferlegen Profile sind formal definiert durch ein Metamodell

Metamodell für Profile PackageImport Package appliedprofile {subsets 1 importedpackage} n ProfileApplication n Profile imported Profile {subsets importedpackage} 1 Association 1 {subsets ownedmember} Class 1 /metaclass /extension n Extension 1 Property 1 owned Stereotype n Stereotype type 1 n ExtensionEnd

Beispiel: Profil für EJB <<profile>> EJB Component <<stereotype>> Bean context Bean: inv: realization > select( hasstereotype( "Remote" )) >size()=1 && realization > select( hasstereotype( "Home" )) >size()=1 <<stereotype>> EntityBean <<stereotype>> SessionBean kind: StateKind Artifact <<stereotype>> JAR <<enumeration>> stateful stateless StateKind Interface <<stereotype>> Remote <<stereotype>> Home

Weitere Aspekte von Profilen Stereotypen können von anderen Stereotypen erben Stereotypen können abstrakt sein Constraints eines Stereotyps gelten für den stereotypisierten Klassifikator Profile sind relative zu einem Referenz-Metamodell zu verstehen z.b., zum UML-Metamodell oder zu einem existierenden Profil Bislang unterstützen wenige Werkzeuge Profil-basierte Modellierung, warum sollte man sie verwenden? Constraints als Dokumentation Spezialisierte UML-Werkzeuge Validierung durch Transformation bzw Programmgenerator