Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM;...

48
R O O T S Modellbasierte Softwareentwicklung Sandro Koll [email protected]

Transcript of Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM;...

Page 1: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

R O O T S

Modellbasierte Softwareentwicklung

Sandro [email protected]

Page 2: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 2 R O O T S

Übersicht

EinführungModelle

MetamodelleMetalevel

MDA – Model Driven ArchitectureCIM, PIM, PSMDomänen, DSL

TransformationModell-zu-Modell Transformation

QVT Relations LanguageModell-zu-Text-Transformation

Apache Velocity

ToolsEMF – Eclipse Modeling FrameworkmediniQVT

Page 3: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 3 R O O T S

Einführung

This is not a pipe by Magritte

Page 4: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 4 R O O T S

beschreibt

Einführung

Ein ModellDas System

beschreibt

beschreibt

Modell

beschreibt

System

Page 5: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 5 R O O T S

Ein System kann viele verschiedene Modelle haben

Jedes Modell repräsentiert einen bestimmten Aspektdes Systems

Ma

S

wird repräsentiert durchM0

M1Mb Mc

Einführung

Page 6: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 6 R O O T S

repräsentiert

Einführung – Geographische Karten

Prozentualer Termitenbefallin Frankreich

Das SystemModelle

Frankreich 1453Französische Käsekarte

Schienennetz in Westfrankreich

ModellSystem

Page 7: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 7 R O O T S

Einführung – Beispiel Metamodell

Die Legende ist das Metamodell einer Karte

„Fahrradstrecke“

Page 8: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 8 R O O T S

Einführung – Definitionen

Systemaus Teilen zusammengesetztes und strukturiertes Ganzesverfügt über eine Architekturerfüllt einen Zweck

ArchitekturOrganisation der Teile eines SystemsVerhalten der einzelnen KomponentenBeziehungen untereinander

Bedingungen zur Erreichung des SystemzwecksModell

Beschreibt ein System zu einem bestimmten ZweckErfassung aller relevanten Aspekte, z.B.

– Struktur– Verhalten– Funktion

Metamodell (MM)Menge von Elementen, mit denen Modelle erstellt werden können

Regeln zur Modellerstellung (Syntax)Bedeutung der einzelnen Elemente und Elementkonstellationen (Semantik)

„Modell von Modellierungssprachen von Modellen“

Page 9: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 9 R O O T S

Einführung – Definitionen

MOF – Meta Object Facilitymodellbasierte Sprache zur Definition von MetamodellenUrmodell (Metametamodell MMM)

Domainabgrenzbares, kohärentes (Wissens-)GebietKonzepte werden in einem MM beschrieben und in Bezug gesetzt

DSL – Domain Specific Languagestellt eine genau abgegrenzte Gruppe von Aspekten dar

besseres Verständnisbessere Ausdrucksmöglichkeit

BeispieleDarstellung eines Datenbankschemas als ER-Diagramm (grafische DSL)Darstellung eines Datenbankschemas als DDL-Skript (textuelle DSL)

Page 10: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 10 R O O T S

Einführung – MDE

Model-Driven Engineering (MDE)

MDA™ Model-DrivenArchitecture

EMFmediniQVT

MIC Model

IntegratedComputing

GME

SoftwareFactories

MicrosoftVisual StudioTeam system

DSL Tools

OtherStandards

OtherTools

Principles

Standards

Tools

Page 11: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 11 R O O T S

Einführung – MDA

MDA – Model Driven ArchitectureSpezifikation der Object Management Group (OMG)Ziele

Konservierung der Fachlichkeit– Domänen-Orientierung

PortierbarkeitSystemintegrationEffiziente Softwareentwicklung

StandardsMOF – Meta Object FacilityUML – Unified Modeling LanguageXMI – XML Metadata InterchangeOCL – Object Constraint LanguageQVT – Query View TransformationHUTN – Human-Usable Textual Notation

Page 12: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 12 R O O T S

Einführung – Metalevel

Client

MOF

Class Associationsource

destination

beschreibt

entspricht

entspricht

Metamodell

Modell

"reale Welt"

UrmodellMOF

UML Metamodell

UML Modelle

M0

M1

M2

M3

UML Metamodell

Class Attribute*1

UML Modell

Client

Name : StringM1

M2

M3

Page 13: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 13 R O O T S

nutzt

definiert MM

nutztnutzt

definiertMM

Einführung – UML 2.x Stack

UML Infrastructuregrundlegende Sprachkronstrukte in abstrakter

Syntax

UML SuperstructureModellierungssprache UML

Meta Object Facility (MOF)Metadata Management & Services

XML Metadata Interchange (XMI)XML-basierter Austausch von Modellen

Object Constraint Language (OCL)

Präzisierung von Modellen

Page 14: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 14 R O O T S

Einführung – Lebenszyklus von MDA-Modellen

CIM AMM

PIM TDM PDM

PSM

PSM'

Code

Plattform

App App App

Schnittstellen

S1 S2 S3

Ausführungsschicht

Page 15: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 15 R O O T S

Einführung – Domäne

Versicherungen

Bestands-führung

Kunden-selbst-

bedienung

Banken

Buchungs-system

Online-BankingPortal

Benutzeroberfläche

Persistenz

Sicherheit

...

Masken

Dialogfluss

Page 16: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 16 R O O T S

Einführung – DSL der Domäne „Sicherheit“

<<profile>>

SimpleSecurity

Association Operation CommunicationPath

<<stereotype>>

AccessPermission

p : AccessKind (unique)

<<stereotype>>

ExecutionPermission

actor[*] : Actor

<<stereotype>>

Trusted

<<enumeration>>

AccessKind

createreadupdatedelete

Page 17: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 17 R O O T S

<<import>>

<<import>>

<<import>>

Einführung – Kombination von Profilen

<<profile>>

SimpleSecurity<<profile>>

SimpleWebFlow<<profile>>

SimpleWebLayout

<<profile>>

SimplePersistence

<<profile>>

SimpleeCommerceApplication

<<import>>

Page 18: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 18 R O O T S

MDA-AnsatzTrennung von Fachlichkeit und TechnikDSL – Domain Specific LanguagePIM – Platform Independent ModelPSM – Platform Specific ModelTransformation von ModellenTransformationszwecke

VerfeinerungAbstraktionMigrationRefaktorisierungOptimierungDarstellungsumformung

Verwendung von Generatoren

PIM PSM Code

Einführung – MDA Ansatz

Page 19: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 19 R O O T S

Einführung

Probleme bei der Software-ErstellungDominierung von Fachlichkeit durch TechnikDivergenz der ÄnderungszyklenMethodischer Bruch zwischen Analyse, Design und ImplementierungFehlende Nachverfolgbarkeit (Traceability)Äußere und innere Gleichförmigkeit von Software-SystemenDescriptor HellMiddleware BabelLegacy Crisis

Page 20: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 21 R O O T S

Übersicht

EinführungModelle

MetamodelleMetalevel

MDA – Model Driven ArchitectureCIM, PIM, PSMDomänen, DSL

TransformationModell-zu-Modell Transformation

QVT Relations LanguageModell-zu-Text-Transformation

Apache Velocity

ToolsEMF – Eclipse Modeling FrameworkmediniQVT

Page 21: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 22 R O O T S

Transformation – M2M

M2M – Modell-zu-Modell TransformationMOF-Sprache

Beschreibt Modell als Instanz eines MetamodellsMetamodell

Beschrieben durch ModellierungsspracheHält Syntax einer MOF-Sprache vor

TransformationsregelnFestgehalten durch z.B. XMI

Übliche Arbeitsschritte(1) Deserialisierung des Modells (persistenter Zustand → IMR)(2) Transformation auf der IMR(3) Serialisierung (IMR → persistenter Zustand)

Page 22: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 23 R O O T S

Transformation – M2M

Implementierungs-StrategienEinsatz universeller Programmiersprachen

3GL-Sprachen (Java, C++, C#)Einsatz von Skriptsprachen

GroovyEinsatz einer Transformationssprache

ATL – Atlas Transformation LanguageQVT – Query View Transformation

Transformationen sind schachtelbar

Page 23: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 24 R O O T S

Transformation – M2M Beispiel

UML 2.0 PIM zu Java PSMQuellmodell: UML 2.0 Metamodell (Ausschnitt aus Classes [UML2SS])

Klassen– Kunde

KundennummerVornameNachname

– AdresseStraßeHausnummerPostleitzahlOrt

– KontoKontonummer

Assoziationen– Einem Kunden sind beliebig viele Adressen zugeordnet (unidirektional)– Einem Kunden sind beliebig viele Konten zugeordnet (bidirektional)

Customer

-customerNumber : int-surename : String-forename : String

Account

-accountNumber : int

Address

-street : String-houseNumber : String-zip : String-city : String

1

10..*

0..*

Page 24: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 25 R O O T S

Transformation – M2M Beispiel

UML 2.0 PIM zu Java PSMZielmodell: Programm in Java

Klassen– Kunde

KundennummerVornameNachname

– AdresseStraßeHausnummerPostleitzahlOrt

– KontoKontonummer

Assoziationen– Einem Kunden sind beliebig viele Adressen zugeordnet (unidirektional)– Einem Kunden sind beliebig viele Konten zugeordnet (bidirektional)

public class Customer{

private int customerNumber;private String surname;private String forename;private List addresses;private List accounts;

}

public class Address{

private String street;private String houseNumber;private String zip;private String city

}public class Account{

private int accountNumber;private Customer customer;

}

Page 25: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 26 R O O T S

Transformation – M2M Beispiel

TransformationsregelnKlasse im Quellmetamodell (QMM) → Klasse im Zielmetamodell (ZMM)

NameSichtbarkeit

Attribut einer Klasse im QMM → Feld im ZMMNameTypSichtbarkeit

Operation einer Klasse im QMM → Methode im ZMMNameRückgabetypSichtbarkeit

Parameter einer Operation im QMM → Parameter im ZMMNameTyp

Page 26: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 27 R O O T S

Transformation – QVT

QVT – Query View TransformationQuery

Auswahl einzelner Elemente aus dem QMMView

Abgrenzung innerhalb des ZMMTransformation

Überführung der ausgewählten Elemente in die View

Beschreibung von Transformationen (nach der OMG)DeskriptivImperativ

Eigenschaften von TransformationenUnidirektional

Änderungen im Zielmodell haben keine Auswirkung auf das QuellmodellBidirektional

Änderungen in einem Modell werden im jeweils anderen Modell nachvollzogen

Page 27: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 28 R O O T S

Transformation – QVT

ArchitekturCore Language

deskriptivbidirektional

Relations Language (RL)deskriptivbidirektionalauf Core Language abbildbar

Operational Mappingsimperativunidirektionalauf Core Language abbildbar

Zusätzliche SprachkomponenteBlackBox– Frei definierbare Sprache– muss auf Core Language abbildbar sein

Page 28: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 29 R O O T S

-attributes0..*

-specific0..*

-general0..*

-typeOpposite0..*

-type1

-owner1

1-destination

1 -source

0..*-forward

0..*-reverse

0..*-elements

1-namespace

Transformation – SimpleUML MM

<<abstract>>

UMLModelElement

-kind : String-name : String [1]

Package

Class

Association

Attribute

PrimitiveDataType

<<abstract>>

PackageElement

<<abstract>>

Classifier

Page 29: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 30 R O O T S

Transformation – SimpleUML MM in RL

metamodel SimpleUML{

abstract class UMLModelElement{

kind : String;name : String;

}class Package extends UMLModelElement{

composes elements : PackageElement [*] ordered opposites namespace [1];}abstract class PackageElement extends UMLModelElement {}class Classifier extends PackageElement {}class Attribute extends UMLModelElement{

references type : Classifier [1] opposites typeOpposite [*];}class Class extends Classifier{

composes attributes : Attribute [*] ordered opposites owner [1];references general : Class [*] opposites specific [*];

}class Association extends PackageElement{

source : Class [1] opposites reverse [*];destination : Class [1] opposites forward [*];

}class PrimitiveDataType extends Classifier {}

}

Page 30: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 31 R O O T S

Transformation – QVT-RL Beispiel

→SimpleUML

PackageClass

AttributeAssociation

SimpleRDBMSchemaTable

ColumnForeign Key

-- Deklarationmetamodel SimpleUML { /* body */ }metamodel SimpleRDBM { /* body */ }

-- Benutzungmodeltype UML uses SimpleUML;modeltype RDBM uses SimpleRDBM;

Page 31: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32 R O O T S

Transformationen (transformation)Führen je ein Quellmodell in ein Zielmodell überKeys

Vermeidung von Duplikaten bei GenerierungRelationen

top-level-Relationen (top relation)non-top-level-Relationen (relation)

QueriesHilfsfunktionen (OCL)

Transformation – QVT-RL Beispiel

transformation UmlToRdbm ( uml : UML, rdbm : RDBM ){

-- keystop relation PackageToSchema { /* body */ }top relation ClassToTable { /* body */ }top relation AssociationToForeignKey { /* body */ }relation AttributeToColum { /* body */ }-- queries

}

Page 32: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 33 R O O T S

Transformation – QVT-RL Beispiel

Relationen ([top] relation)Stellen Beziehungen zwischen Elementen von Modellen herEin Variablen-DeklarationsblockDomänen (domain)

Bedingungen an das Quellmodell (checkonly)Generierungsaktionen innerhalb des Zielmodells (enforce)

When-Prädikat (when)Vorbedingungen

Where-Prädikat (where)Invarianten

top relation PackageToSchema{

packageName : String; // variablecheckonly domain uml pckg : Package{

name = packageName};enforce domain rdbm schm : Schema{

name = packageName};when { /* pre-clause */ }where { /* general-clause */ }

}

Page 33: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 34 R O O T S

Transformation – QVT-RL Beispiel

Ablauf(1) checkonly domain uml cls(2) when-Klausel

Relation Call(3) enforce domain rdbm tbl(4) where-Klausel

Relation CallAufruf jedes Mal, wenn inenforce domain Variableoder Objekt verändertwird

top relation ClassToTable{

className : String;pckg : Package;schm : Schema;checkonly domain uml cls : Class{

kind = 'persistent',name = className,namespace = pckg

};enforce domain rdbm tbl : Table{

name = className,schema = schm

};when{

PackageToSchema ( pckg, schm );}where{

PrimitiveAttributeToColumn ( cls, tbl );}

}

transformation UmlToRdbm (uml : UML, rdbm : RDBM )

{-- keystop relation PackageToSchema {}top relation ClassToTable {}-- Rest weggelassen

}

Page 34: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 35 R O O T S

Transformation – QVT-RL Beispiel

relation PrimitiveAttributeToColumn{

attributeTypeName, attributeName, sqlType : String;checkonly domain uml cls : Class{

// Beschreibung von Bedingungen für die Attribute der Classattribute = attr : Attribute{

name = attributeName,type = pdt : PrimitiveDataType { name = attributeTypeName }

}};enforce domain rdbm tbl : Table{

// Beschreibung der Domänen der Tabellecolumn = col : Column{

name = attributeName,/* immer wenn sqlType benötigt wird, wird mit der where-Klausel

ein konkreter Wert hergestellt */type = sqlType

}};where{

sqlType = PrimitiveTypeToSqlType ( attributeTypeName ); // Function-Call}

}

Page 35: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 36 R O O T S

Transformation – QVT-RL Beispiel

Oder in externer BlackBox Java-Implementierung

public class PrimitiveTypeToSqlType{

String PrimitiveTypeToSqlType (String primitiveType){

if (primitiveType == "INTEGER")return "NUMBER";

else if (primitiveType == "BOOLEAN")return "BOOLEAN";

else return "VARCHAR";}

}

query PrimitiveTypeToSqlType ( primitiveType : String ) : String{

if primitiveType = 'INTEGER' then 'NUMBER'else if primitiveType = 'BOOLEAN' then 'BOOLEAN'

else 'VARCHAR'endif

endif}

query PrimitiveTypeToSqlType ( primitiveType : String ) : String;

Page 36: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 37 R O O T S

Transformation – QVT-RL Beispieltop relation ClassToTable{

className : String;checkonly domain uml cls : Class{

namespace = pckg : Package{},kind = 'persistent',name = className

};enforce domain rdbm tbl : Table{

schema = schm,name = className,// Inline Pattern zur Erzeugung des Table-Identifierscolumn = col : Column{

name = className + '_TID',type = 'NUMBER'

}// Inline Pattern zur Erzeugung des PrimaryKeys mit Hilfe von colprimaryKey = pKey : PrimaryKey{

name = className + '_PK',column = col : Column{}

}};// Objektzuweisung durch Transformationwhen { PackageToSchema ( pckg, schm ); }where { PrimitiveAttributeToColumn ( cls, tbl ); }

}

Page 37: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 38 R O O T S

Transformation – QVT-RL Beispiel

transformation UmlToRdbm ( uml : UML, rdbm : RDBM ){

/* key der Klasse Table in SimpleRDBM;es ist nur eine Tabelle mit dem vorgegebenen Namen in dem Schema erlaubt */

key Table ( name, schema );/* key der Klasse Column in SimpleRDBM;

eine Spalte mit dem vorgegebenen Namen darf einer besitzenden Tabelle nureinmal zugeordnet sein */

key Column ( name, owner );/* key der Klasse Key in SimpleRDBM;

ein (Primary) Key darf einer besitzenden Tabelle nur einmal zugeordnet sein */key Key ( name, owner );

top relation PackageToSchema { /* body */ }top relation ClassToTable { /* body */ }top relation AssociationToForeignKey { /* body */ }

relation AttributeToColum { /* body */ }relation PrimitiveAttributeToColumn { /* body */ }

query PrimitiveTypeToSqlType ( primitiveType : String ) : String { /* body */ }}

Page 38: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 39 R O O T S

Transformation – QVT-RL Syntax

<transformation> ::= transformation <identifier> ( <modelDecl>[, <modelDecl>]* )[extends <identifier>]{

[<keyDecl>]*[<relation>]*[<query>]*

}

Reservierte Wörter

Einige Ableitungsregeln

checkonly, default_value, domain, enforce, extends, implementedby, import, key, overrides, primitive, query, relation, top, transformation, when, where

<modelDecl> ::= <modelId>: [<metaModelId> |{ <metaModelId>[, <metaModelId>]* }]

<modelId> ::= <identifier>

<metaModelId> ::= <identifier>

Page 39: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 40 R O O T S

Transformation – QVT-RL Syntax

<keyDecl> ::= key <classId> { <propertyId>[, <propertyId>]* }

<propertyId> ::= <identifier>

<relation> ::= [top] relation <identifier> ( <modelDecl>[, <modelDecl>]* )[overrides <identifier>]{

[<varDecl>]*[[<domain>]+ | [<primitiveTypeDomain>]*][<whenPredicate>][<wherePredicate>]

}

<domain> ::= [checkonly | enforce] domain <modelId> <rootVariableDecl>{

<patternDefinition>}

<query> ::= query <identifier> ( [<paramDecl>[, <paramDecl>]*] ) : <returnType> [{

[(] <OclExpression> [)]} | ; ]

<keyDecl> ::= key <classId> { <propertyId>[, <propertyId>]* }

<propertyId> ::= <identifier>

Page 40: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 41 R O O T S

Transformation – M2T

M2T – Modell-zu-Text TransformationModell → Code

Line-printerTemplates– Apache Velocity

Synchronisation von Modellen und CodeForward Engineering OnlyPartial Round-Trip EngineeringFull Round-Trip Engineering

Page 41: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 42 R O O T S

Transformation – M2T Velocity

Apache VelocityJava-Implementierung einer Template EngineVTL – Velocity Template Language

Makro-FunktionalitätenAuswertung übergebener Java-ObjekteKontrollfluss-Befehlssatz

SprachelementeDirektiven (#)– Velocimacros

#macro– Verzweigungen

#if, #elseif, #else, #end– Schleifen

#foreachReferenzen ($)

$customer.getAddress() bzw. $customer.address$customer.setName ("Max Mustermann")

Statischer Text

Page 42: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 43 R O O T S

Transformation – M2T Velocity Beispiel

SQL:2003 Create Table Statement (vereinfacht)CREATE TABLE <Tabellenname>(

<Spaltenname> <Datentyp> [DEFAULT <Wert>] [<Spaltenbedingungen>])

Java Klassenpublic class Table{

public String getName(){

return name;}

public Column[] getColumns(){

return columns;}

// ...

private String name;private Column columns;

}

public class Column{

public String getName() { */ body */ }public String getDataType() { /* body */ }public String getDefaultValue() { /* body */ }

public boolean hasDefaultValue(){

return defaultValue != null;}

// ...

private String name;private String dataType;private String defaultValue;

}

Page 43: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 44 R O O T S

Transformation – M2T Velocity Beispiel

CREATE TABLE "$table.getName()"(#foreach($column in $table.getColumns())

"$column.name" $column.DataType#if($column.hasDefaultValue())

DEFAULT "$column.getDefaultValue()"#end

#end)

Velocity Template

Beispielhafte AusgabeCREATE TABLE "Person"(

"Name" VARCHAR2,"Birthday" DATE,"Gender" VARCHAR2 DEFAULT "male"

)

Page 44: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 45 R O O T S

Transformation – M2T

PIM → Code (MDA-light)Alternative zu PIM → PSM → Code

Fehlende InfrastrukturHohe InvestitionskostenFunktionalität (noch) nicht bewiesen

FunktioniertAber:

WartbarkeitModularisierung / RollentrennungWiederverwendbarkeit von FachlichkeitVisuelle Unterstützung der Entwickler

Page 45: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 46 R O O T S

Übersicht

EinführungModelle

MetamodelleMetalevel

MDA – Model Driven Architecture

TransformationModell-zu-Modell Transformation

QVT Relations LanguageModell-zu-Text-Transformation

Apache Velocity

ToolsEMF – Eclipse Modeling FrameworkmediniQVT

Page 46: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 47 R O O T S

Tools

EMF – Eclipse Modeling FrameworkEMF (Core)

Modellierungs- und Code-Generierungstool (XMI)Compare

Vergleich von beliebigen (Meta-)ModellenModel Query

Ermöglicht Anfragen an EMF-ModellelementeModel Query 2

Erweiterung von Model QuerySDO – Service Data Objects

vereinfacht SOA-ApplikationenTeneo

Hibernate + EclipseLinkEMF-Relational Mapping

Validation Framework

Page 47: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 48 R O O T S

Tools

mediniQVTEclipse IntegrationAusführung von Transformationen in Relations LanguageEditor mit Code AssistentDebugger für RelationsTrace Management

inkrementelle Updates bei erneuten Transformationen„key concept“

inkrementelle Updatesleichter Übergang von manueller zu automatisierter Modellierung

Bidirektionale Transaktionen

Page 48: Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM; „Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 32. R O

„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 49 R O O T S

Literatur

V. Gruhn, D. Pieper, C. Röttgers: „MDA“ (Springer 2006)S. Nolte: „QVT – Relations Language“ (Springer 2009)Jean Bézivin: „Introduction to Model Engineering“Apache Velocity: „http://velocity.apache.org“EMF: „http://www.eclipse.org/modeling/emf“mediniQVT: „http://projects.ikv.de/qvt“