Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM;...
Transcript of Objekt-Orientierte Software-Entwicklung mit UML€¦ · modeltype RDBM uses SimpleRDBM;...
„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
„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 3 R O O T S
Einführung
This is not a pipe by Magritte
„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 4 R O O T S
beschreibt
Einführung
Ein ModellDas System
beschreibt
beschreibt
Modell
beschreibt
System
„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
„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
„Modellbasierte Softwareanalyse“, 2010/2011 Modellbasierte Softwareentwicklung 7 R O O T S
Einführung – Beispiel Metamodell
Die Legende ist das Metamodell einer Karte
„Fahrradstrecke“
„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“
„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)
„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
„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
„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
„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
„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
„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
„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
„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>>
„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
„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
„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
„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)
„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
„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..*
„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;
}
„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
„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
„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
„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
„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 {}
}
„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;
„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
}
„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 */ }
}
„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
}
„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}
}
„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;
„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 ); }
}
„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 */ }}
„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>
„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>
„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
„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
„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;
}
„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"
)
„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
„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
„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
„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
„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“