Home

QVT - Operational Mappings: Modellierung mit der Query Views

image

Contents

1. Ausnahmebehandlung ia Mit Hilfe eines raise Ausdrucks kann eine Ausnahme erzeugt werden So fern dieser innerhalb eines berwachten Ausfihrungsteiles auftritt wird durch diese Ausnahme eine kontrollierte Ausnahmebehandlung ausgel st 3 4 5 Beispiele von imperativen OVT Codeabschnitten 1 Einfache String Konkatenation compute s String S ABC DEF log s str ta 2 Bedingungsausdr cke if i 0 log i 0 elif i lt 0 log i lt 0 elif i gt 0 log i gt 0 else log undefined endif switch i case i lt 0 log i lt 0 case i 0 log i 0 case i gt 0 log i gt 0 else log undefined by 3 Berechnung der Summe einer numerischen Liste mit Hilfe eines iterate compute i Integer 0 i Set 1 2 3 gt iterate idx Integer sum Integer 0 sum idx log Summe i kr 3 4 OCL und QVT Grundlagen 79 A Das Gleiche mit Hilfe eines forEach compute sum Integer 0 Set 1 2 3 gt forEach idx sum sum idx log Summe sum E 5 Objektzusicherung var liste Sequence String Sequence A B C assert liste gt includes X with log Die Liste enth lt kein X liste try assert liste gt includes X except AssertionFailed log FEHLER AssertionFailed E 3 4 6 Operationen auf Sammlungstypen OCL wie auch
2. SimpleUML 1 0 0 SimpleUML edit 1 0 0 Deselect All Working Set SimpleUML editor 1 0 0 Simple UML tests 1 0 0 C SimpleUML_TC 1 0 0 gt 4 out of 30 selected Destination Options JAR Signing Directory D projekte MDAISMDA topcasediplugins wv Archive file v Browse Abb 2 8 Deployment der Metamodelle Mit einem Neustart der Entwicklungsumgebung kann nun mit dem Metamo dell SimpleUML gearbeitet werden File gt New gt Other gt Example EMF Model Creation Wizards gt SimpleUML Model 50 2 Modelle und Metamodelle Datei Bearbeiten Ansicht Favoriten Extras Qm O IT JO suchen eoe T y J Name Gr e Typ org topcased ui_1 0 0 v2007 43KB Exe B org topcased validation core 15KB Exe org topcased validation emft 4KB Exe D smbA i EuropeMDT O GanymedemMDT O MYT P org topcased validation ocl_1 10KB Exe MTL i org topcased validation ui_1 13KB Exe DO ToM al org w3c css sac_1 3 0 v2007 23 KB Exe O SQT org w3c dom smil_1 0 0 v200 11 K6 Exe org w3c dom svg_1 1 0 200 71KB Exe SimpleUML edit_ 1 0 0 jar 24KB Exe SimpleUML editor_1 0 0 jar SSKB Exe SimpleUML tests_ 1 0 0 jar 11 KB Exe O topcased O configuration O features O plugins O fr obeo acceleo chain edit_2 1 0 npe Er se OD fr obeo acceleo chain editor_2 1 a SimpleUMLTC edit_1 0 0 jar
3. else Anweisungsteil endif endif Das then Schl sselwort wie auch das endif Schl sselwort ist optional Falls es in den Anweisungsteilen mehr als eine durch Semikolon getrennte Anwei sung gibt handelt es sich um einen Block der mit geklammert werden muss Andernfalls k nnen die weggelassen werden Das do Schl sselwort kann ebenfalls entfallen Es ist zul ssig bedingte Ausdr cke beliebig tief zu schachteln Man kann umfangreiche if Anweisungen durch einen switch Ausdruck vereinfachen Ein switch Ausdruck besteht aus der Einf hrung einer Variablen die als Bedingungsvariable in case Abfragen dient Sofern eine dieser Abfragen die jeweils erste f r die Bedingungsvariable erf llt ist wird der entsprechende Anweisungsblock ausgef hrt Optional kann noch ein else Block angegeben sein f r den Fall dass alle Abfragen scheitern switch Bedingungsvariable case Bedingung Anweisungsteil case Bedingung Anweisungsteil l else Anweisungsteil bi 76 3 Operational Mappings die Sprache compute Ausdruck In einem compute Ausdruck wird in einem vorbereitenden Teil eine Variable definiert und gegebenenfalls initialisiert die dann im Durchf hrungsblock fiir eine weitere Bearbeitung zur Verfiigung steht compute Initialisierung Anweisungen be Schleifen while Schleifen sind Kontrollausdriicke die ei
4. 55 3 2 2 Exemplarischer Aufbau von QVT Projekten 34 3 2 3 Entwicklung und Durchf hrung von Transformationen 59 3 3 Allgemeiner Aufbau von Operational Mappings Scripten 63 3 3 1 Zusammenfassung nee 67 3 4 OCL und QVT Grundlagen 2222222000000sennnnnnnnnnnenennnnen 68 3 4 1 OCL und QVT Datentypen ussssssnnnessenseseeeeeeeeeeennnn 69 Primitive OCL D tentypan u un nee 69 Komplexe OCL Datentypen uuueeeeeeeeeeeeeeeennnnnnnnnnneennnnn 69 Komplexe OVT D teiypen uu enue nee 69 Definition eigener Datentypen uussssssnnnnnsenseeeeenenen 70 3 4 2 Deklaration von Variablen ccccecceeeeceeeeeeeeeneeeeeeees 71 Se PPO Nee 12 3 4 4 Imperative QVT Ausdr cke uusssssssssnsssssseeeeeeeeennnennnn 74 Lose ne secen EEO 74 BIO ee ne E E E E 74 B dingte Ausdrucke een 75 COMMUTES Ausdruck viren nen 76 SCHI 11 Bee A 76 for TC ION nen 71 assert AUSdr CK Eee Ti Exception Ausdruck uni ieneneaenn 71 3 4 5 Beispiele von imperativen QVT Codeabschnitten 18 3 4 6 Operationen auf Sammlungstypen eeesseneneesseeeeeeeeennnneennnn 19 Ein Einblick in die OCL Standardbibliothek 79 Eine Auswahl von QVT Standardfunktionen 81 Selektion mit QVT Standardfunktionen 82 DEL Selekti nstechniken u nn 83 3 5 Operationale Transformat
5. srcModel objectsOfType Package gt map PackageToSchema Oder in Form eines Shorthands der wir erinnern uns f r diese spezielle Funktion aus Gr nden der Schreibvereinfachung eingef hrt worden ist 4 1 UML2RDBM 123 mapping main in uml UML rdbm RDBM srcModel objects Package gt map PackageToSchema Weiter geht es mit den Klassen und Assoziationen als Komponenten von Pa keten es handelt sich dabei um Subelemente von Paketen zu deren Ermittlung die QVT Standardfunktion allSubobjectsOfType Class zur Verf gung steht Nat rlich k nnte man auch direkt auf die Elemente self elements von Paketen zugreifen allerdings wollen w r Klassen und Assoziationen ja in je einer eigenen Mapping Operation unterschiedlich behandeln mapping Package PackageToSchema Schema init var classes OrderedSet Class var assocs OrderedSet Association classes self allSubobjectsOfType Class asOrderedSet assocs self allSubobjectsOfType Association asOrderedSet name self name tables classes gt map ClassToTable tables assocs gt map AssociationToTable Oder wer es etwas einfacher mit weniger Schreibaufwand mag mapping Package PackageToSchema Schema name self name tables self allSubobjectsOfType Class asOrderedSet gt map ClassToTable tables self allSubobjectsOfType Association asOrderedSet gt map AssociationT
6. oder transformation tname source Metamodel target Metamodel Abbildung 2 1 zeigt das Prinzip der Transformation von Modellen auf der Basis von formalen Metamodellen exemplarisch am Beispiel der Transformation von Fachklassenmodellen im MDA Transformationspattern In der fachlichen Analyse welche in der plattformunabh ngigen PIM Ebene stattfindet wird zum Beispiel unter Anwendung der UML eine Modellierung von Fachklassen vorge nommen Die Fachklassenmodelle fkm UML flie en in eine Modelltransforma tion ein wo sie unter Verwendung des UML Metamodells f r das Quellmodell und eines Entity Relationship Metamodells f r das Zielmodell in ein konzeptio nelles Datenbankschema kdb ERM umgewandelt werden Das Ergebnismodell wird im Rahmen einer plattformspezifischen Modellierung mit Hilfe des Entity Relationship Model ERM weiter konzeptionell bearbeitet zum Beispiel mit der Definition von Schl sseln Indizes Wertebereichen der Attribute etc S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3 2 Springer Verlag Berlin Heidelberg 2010 28 2 Modelle und Metamodelle Modellierung Modellierung gt lt lt Script gt Klassen Diagramm QvVT Konzeptionelle _ aa lt lt ERM gt gt Konzeptionelles lt lt Metamodell gt gt DB Schema ERM Abb 2 1 Transformation UML Klassendiagramme nach ERM Schemata F r diese exemplarische Sicht ergibt sich also folgende Signatur einer Tra
7. 66 3 Operational Mappings die Sprache Beispiel transformation HelloWorld in source UML out target RDBM main log Main Hello World source objects Package gt map createSchema Eine vollst ndige bersicht der auf Modelle definierten Standardmethoden befindet sich im Anhang Aus diesen Einf hrungen ergibt sich bereits folgender grober Aufbau von Ope rational Mappings Scripten der in Abbildung 3 7 in Form eines UML Klassen diagramms noch einmal vor Augen gef hrt wird metamodel lt metamodelName gt class lt className gt lt attributDefinition gt o modeltype lt modeltypeName gt uses lt metamodelName gt lt metamodelReferenz gt transformation lt transformationName gt in out lt modelName gt lt modelTypeName gt main lt OLC Statement gt i lt MapoingCa lls 1 mapping lt modelElementType gt lt mappingOperationeName gt lt argumentDeklaration gt lt resultType gt lt resultDeclaration gt when lt OCL Statement gt where lt OCL Statement gt init lt OCL Statement gt population lt OLC Statement gt lt mappingCall gt 1 end EA rs OO N 3 3 Allgemeiner Aufbau von Operational Mappings Scripten 67 1 2 whenlwhere Abb 3 7 Aufbau von Operational Mappings Transformationen 3 3 1 Zusammenfassung Transformationen operieren a
8. Anweisungen log Irgendeine Meldung log Irgendeine Meldung lt objectname gt log Irgendeine Meldung when lt constraint gt Anweisungen Da die meisten derzeitig erh ltlichen QVT Interpreter nicht ber Debug Funk tionalitat verf gen ist das Logging sehr hilfreich bei einer Fehlersuche Bl cke Bl cke sind eine Folge von Anweisungen die mit geschweiften Klammern zu sammengefasst sind Die Anweisungen sind durch Semikola getrennt Anweisungsteil Bl cke kommen blicherweise in umfassenderen Ausdr cken vor wie zum Beispiel Operationen Schleifen Anweisungsteilen von bedingten Ausdr cken Die allgemeinste Form eines Blockes ist die do Anweisung do Anweisungsteil Bl cke k nnen ordentlich mit der return Anweisung verlassen werden wo bei mit dem return auch ein Ergebniswert zur ckgegeben werden kann 3 4 OCL und QVT Grundlagen 75 Dies ist dann erforderlich wenn die umschlie ende Operation einen entspre chenden Ergebnistyp besitzt do Anweisungsteil return Bedingte Ausdr cke Ein if Ausdruck ist ein bedingter Ausdruck in dem die Anweisungsteile in Ab h ngigkeit von einer Bedingung ausgef hrt werden Sofern die Bedingung true ergibt wird der Anweisungsteil im then Zweig ausgef hrt andernfalls im else Zweig if Bedingung then Anweisungsteil elif Bedingung then Anweisungsteil
9. Sequence LeafAttribute var k if pkind then self kind else pkind endif var leafAttrs Sequence LeafAttribute leafAttrs if self type isKindOf PrimitiveDataType then es handelt sich um ein primitives Attribut Sequence object LeafAttribute attr self name prefix self name kind k else es handelt sich um ein komplexes Attribut self type asType Class attributes gt getLeafAttributes self name _ k gt flatten endif return leafAttrs Attribute 208 C Operational Mappings Beispiele mapping LeafAttribute leafAttrToColumn in prefix String Column name prefix self name kind self kind type self attr getAttributeType mapping Attribute attributeToColumn Column name self name type self getAttributeType ea nn Associations To Tables 7 Te Bene mapping Association AssociationToTable Table when self isPersistent init Inline Erzeugung der identifizierenden Spalten var coll object Column name self source name _ID type int bi var col2 object Column name self destination name _ID type int bi name self name columns Sequence coll col2 Inline Erzeugung der Fremdschl ssel foreignKkeys object ForeignKey name gt FK_ self source name columns CoOL refersTo self source resolveone Table
10. liefert die Teilmenge einer vorgegebenen Menge deren Elemente angewandt auf expr true ergeben expr ist in diesem Fall ein Bool scher Ausdruck im Gegensatz zu collect werden die Zielelemente nicht ver ndert sortedBy expr Collection Type liefert ein OrderedSet von Elementen auf der Basis einer vorgegebenen Menge Glossar Es folgt eine Zusammenfassung und Definition der wesentlichen Fachbegriffe der Spezifikation Reservierte W rter der Operational Mappings sind wie gehabt in fetter Schrift hervorgehoben Wenn m Folgenden von Kontext die Rede ist dann hei t das im Kontext dieses Fachbuches Ableitung Abstraktion Akkumulation Arbeitsbereich Eine Ableitung in der Informatik ist eine Entwicklung ei nes Systems auf der Grundlage von speziellen Vorschrif ten Ableitungen sind definiert auf der Grundlage von formalen Produktionssystemen Mit Hilfe einer Vor schrift genauer Produktion eines Produktionssystems kann man von einem korrekten Zustand zu einem kor rekten Folgezustand kommen In diesem Kontext wird Ableitung manchmal synonym zu Transformation oder Mapping benutzt um aus einem g ltigen Quellmodell ein g ltiges Zielmodell zu erzeugen Abstraktion allgemein bedeutet eine Verallgemeinerung eines konkreten Sachverhaltes oder einer konkreten Sicht auf die Dinge durch Weglassen oder Ver ndern wesentli cher Merkmale Abstraktion im Sinne eines Software Entwicklungsprozesses beschreibt den Vo
11. Home und Klassenname Remote 4 3 Transformation von UML Modellen 157 3 Als Attribute der SessionBean werden die der Fachklasse bernommen wobei alle Bean Attribute private sein sollen 4 Je Attribut der Bean Klasse wird eine getter und eine setter Methode gene riert die den Zugriff auf die privaten Attribute erm glichen 5 Diese getter und setter Methoden wie auch die blichen Methoden des EJB SessionBean Konzeptes werden in den Home und Remote Interfaces ver ffentlicht und angeboten 6 Die Operationen der Fachklassen repr sentieren die Businessmethoden der Bean Klasse die ebenfalls im Interface ver ffentlicht werden Alle anderen Elemente eines Fachklassenmodells Packages Interfaces die wir in diesem Beispiel nicht haben Datatypes Relationships unter schiedlicher Art etc werden so bernommen wie sie sind Die Klassen sind also die einzigen Elemente der fachlichen Ebene um die wir uns intensiver k mmern wollen Abbildung 4 10 zeigt den Ablauf dieser Transformation im MDA Pattern id lt lt Metamodell gt gt Modellierung UML a lt lt QYyT gt gt a UML2EJB Abb 4 10 Die Transformation UML2EJB im MDA Pattern 158 4 Operational Mappings Anwendungen Im Rahmen der fachlichen Modellierung wird ein UML Fachklassenmodell umlfk erarbeitet zum Beispiel das Darlehensmodell in Abbildung 4 9 Dies wird mit einer Transformation unter Verwendung des Transformationsscriptes UM
12. Refresh F5 SATAS i fos trace or gining of parse job Ka EB Helowo Run As gt gt Parsing done in 140 miliseconds Debug As b Opening model file 0 Team gt DEBUG qvtoperationalfile D projekte MDA projects o Outline 2 Compare With gt Compiling main java file E 8 Helloworld Replace With p LCreating plugin xml file target Sar p creating Java Plugin file vee maini te LE p Creating manifest file creates 2 Parse only Properties Alt Enter Parse compile and build Run gt Parse compile build and run Parse and compile fy Q HelloWorld2 qvt OM_HelloWorld qs Abb 3 3 QVT Optionen im Kontextmen 60 3 Operational Mappings die Sprache Die QVT Option des Kontextmen s Abbildung 3 3 bietet Funktionen zum Analysieren Kompilieren und Ausf hren des Transformationsscriptes an 1 Parse Only pr ft das Script vollst ndig nach den syntaktischen Regeln 2 Parse and Compile pr ft das Script syntaktisch und erzeugt bereits die Java Quellen f r die Gene rierung des Plugins 3 Parse Compile and Build erzeugt zus tzlich die Bin rdateien und stellt anschlie end das Eclipse Plugin mit den erforderlichen Konfigurationsdateien META INF MANIFEST MF und plugin xml zusammen 4 Run erzeugt eine ausf hrbare Transformationskonfiguration f r das Eclipse Lauf zeitsystem welche mit der Option OVT gt Run gestartet werden kann Abbildung 3 4 SmartQYT Bi xi Create manage
13. lt gt lt gt lt mult_exp gt lt additive_exp gt lt add_op gt lt mult_exp gt lt unary_exp gt lt mult_exp gt lt mult_op gt lt unary_exp gt lt postfix_exp gt lt unary_op gt lt unary_exp gt not lt primary_exp gt post fix exp gt lt arq_ liste lt postiix_exp gt lt declarator_vsep gt lt expression gt lt postfix_exp gt lt access_op gt lt scoped_identifier gt iterator_exp gt lt block_exp gt lt control_exp gt lt rule_call_exp gt lt resolve_exp gt lt resolve_in_exp gt lt simple_declarator gt lt simple_declarator_list gt lt resolve_key gt lt resolve_condition gt lt declarator gt lt expression gt late lt resolve_kind gt resolve resolveone invresolve invresolveone lt resolve_in_key gt lt scoped_identifier gt lt resolve_condition gt late lt resolve_in_kind gt resolveln resolveoneln invresolveln invresolveoneln Lo e tae lt literal gt lt scoped_identifier gt lt if_exp gt lt block_exp gt lt control_exp gt lt rule_call_exp gt lt quit_exp gt lt try_exp gt lt raise_exp gt lt assert_exp gt lt log_exp gt lt expression gt lt literal_simple gt lt literal_complex gt lt INTEGER gt lt FLOAT gt true false null lt STRING gt unlimited
14. 4 Mit den Transformationsparametern wird eine Aktualisierung der formalen Parameter des Transformationsscriptes vorgenommen Es handelt sich hierbei wie wir wissen um die Angabe der Modelle die zur Transformation anstehen NWN me Ern j xl Create manage and run configurations Destination platform resource O_HelloWorld result Bank_Kunden myrdbm already exists Sexl earr type filter text 4 Eclipse Application Java Applet Transformation module 3 Java Application O_HelloWorld qvt HeloWorld qvto Browse ze V Generate trace file J JUnit Plug in Test 2 Operational QVT Interpreter O_HelloWorld trace HeloWorld qvtotrace Browse Ecore to UML Transformation parameters UML2Csharp transformati BEINE OSGi Framework Model URI platform resource O_HelloWorld model Bank_Kunden simpleum Browse BR SANT OUT outmodel RDB http MyRDBM ecore Model URI platform resource O_HelloWorld result Bank_Kunden myrdbm Browse Feature Select IV Clear contents ra ie Filter matched 49 of 49 items Abb 4 14 Konfiguration einer Operational QVT Transformation 164 4 Operational Mappings Anwendungen 4 3 4 Die Transformation UML2EJB Die kurze Einf hrung in das Werkzeug QVTO wird gen gen so dass wir nun Schritt f r Schritt die Transformation UML2EJB entwickeln k nnen Schritt 1 Definieren und Einrichten der Transformation Die Transfor
15. gt map transformOperations mapping in DataType transformDatatypes DataType name self name 4 3 Transformation von UML Modellen 167 die Attribute und Operationen des Datentyps ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations mapping in Interface transformInterfaces Interface name self name die Attribute und Operationen des Interfaces ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations Damit haben wir nun schon ein Zielmodell welches alle Elemente des Quell modells mit einigen sinnvollen Merkmalen und auch in der richtigen Ordnung enth lt Schritt 3 Mapping von Fachklassen zu SessionBeans F r Klassen haben wir gefordert dass je Fachklasse des Quellmodells ein Paket m Zielmodell vorgesehen wird in dem die Bean Klasse und deren Schnittstellen als EJB Komponenten angelegt werden transformClasses liefert also ein Package und nicht mehr wie bisher eine Klasse Die neue Komponente im Zielmodell ist nicht packagedElement sondern nestedPackage in dem besitzenden Paket F r den Aufruf in transformPackages hat das demnach folgende Auswirkung mapping in Package transformPackages Package name self name Ziel Packages nestedPackage self ownedMember Package gt map
16. integer Konto_lD integer Person_ID integer flur varchar nennbetrag double flurstueck varchar zinssatz double grundbuch varchar tilgungssatz postleitzahl integer zahlungsmodaltaet integer ort varchar beginn integer hausnummer integer ende integer hausnummer integer strasse varchar rA postleitzahl integer verkehrswert double ort varchar beleihungswert double ae Darlehenssicherheit Darlehenssicherheit_PK Immobilie _ID integer Immobilie_FK Darlehen_ID integer Hausbesitzer Darlehensgeschaeft Hausbesitzer_PK Darlehensgeschaeft_PK Immobilie _ID integer Darlehen_ID integer Immobilie_FK Darlehen_FK Person_ID integer Person_ID integer Person_FK Person_FK Darlehen_FK Abb 2 5 Das Wohnungsbaukreditgesch ft als SimpleRDBM Modell e Das Package Darlehen im SimpleUML ergibt das Schema Darlehen im SimpleRDBM e Zu jeder persistenten Klasse Immobilie Konto Person gibt es eine Ta belle gleichen Namens im SimpleRDBM Schema e Die Attribute der Klassen werden zu den columns der Tabelle umgewandelt wobei die Attribute des komplexen Typs Ort eine Sonderbehandlung erfahren Ort ist nicht persistent wird also auch nicht als Tabelle erzeugt Die Attribute von Ort werden den Tabellen zugeordnet die Ort referenzieren e Die Assoziationen werden durch eigene Tabellen im Schema repr sentiert Sie erhalten den Namen der jeweiligen Association im S
17. lowerBound 1 eType Clasa eOpposite Class forward gt lt eStructuralFeatures xsi type ecore EReference name source lowerBound 1 eType Class eOpposite Class reverse gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name PrimitiveDataType eSuperTypes Classifier gt lt ecore EPackage gt SimpleRDBM lt xml version 1 0 encoding ISO 8859 1 gt lt ecore EPackage xmi version 2 0 xmlns xmi http www omg org XMI xmlns xsi http www w3 org 2001 XMLSchema instance xmlns ecore http www eclipse org emf 2002 Ecore name SimpleRDBM nsURI urn SimpleRDBM ecore nsPrefix SimpleRDBM gt lt eClassifiers xsi type ecore EClass name ModelElement gt 198 B Metamodelle in serialisierter Darstellung lt eStructuralFeatures xsi type ecore EAttribute name name lowerBound 1 eType ecore EDataType http www eclipse org emf 2002 Ecore EString gt lt eStructuralFeatures xsi type ecore EAttribute name kind lowerBound 1 eType ecore EDataType http www eclipse org emf 2002 Ecore EString gt lt eStructuralFeatures xsi type ecore EAttribute name id eType ecore EDataType http www eclipse org emf 2002 Ecore EString iD true gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Schema eSuperTypes ModelElement gt lt eStructuralFeat
18. lt ownedType gt le 3 gt lt ownedType xsi type emof Class name Column superClass ownedType 0 isAbstract false gt lt ownedAttribute name type upper 1 isComposite false gt lt ownedAttribute name keys upper 1 type ownedType 4 isComposite false gt lt ownedAttribute name foreignKeys upper 1 type ownedType 5 isComposite false gt lt ownedType gt Sie 4 gt lt ownedType xsi type emof Class name Key superClass ownedType 0 isAbstract false gt lt ownedAttribute name columns upper 1 type ownedType 3 isComposite false gt lt ownedType gt lt la J gt lt ownedType xsi type emof Class name ForeignKey superClass ownedType 0 isAbstract false gt lt ownedAttribute name columns upper 1 type ownedType 3 isComposite false gt lt ownedAttribute name refersTo upper type ownedType 4 isComposite false gt 44 2 Modelle und Metamodelle lt ownedType gt lt emof Package gt 2 2 3 Die Verwendung der Metamodelle Metamodelle liegen also alternativ in Form einer QVT Datenstruktur oder als externe EMOF Datei vor Letzteres ist wahrscheinlicher da wie gesagt die Meta modelle nicht explizit nur f r die Transformation erstellt werden sondern zum Beispiel auch als formale Spezifikation der Syntax der Modellierungssprache Die Einbindung von M
19. return Sequence ry object Operation name visibility by object Operation name visibility by object Operation name visibility by object Operation name visibility by object Operation name visibility by object Operation name H visibility Sequence Operation setSessionContext Visibilitykind public ejbCreate Visibilityhinds public ejbPostCreate Visibilitykind public ejbActivate VisibilityRind public ejbPassivate Visio lityhind s public ejbRemove VisibilityRind public Ver ffentlichung der Standard Methoden im Home Interface query getHomeMethods return Sequence object Operation name visibility Sequence Operation create VisibilityKkindiipublic 216 C Operational Mappings Beispiele by object Operation name remove Visibility VisibilityRind public by object Operation name getEJBMetaData v s b l ty v s1b1 Lit yK nd public by object Operation name getHomeHandle v s brlity Vusibiliryhinass publica bi PB EE ERBE SEI SEE ANGE ey a ane NEE ee ee eT if Transformation sonstiger Komponenten PR ae ee ee ee 3 DataTypes Interfaces Associations werden mehr oder weniger so bernommen wie sie sind a mapping in DataType transformDatatypes DataType name self na
20. undefined endif Column Integer then int Double then double String then varchar Date then date Eine weitere Vereinfachung erreicht man dadurch dass die Ermittlung des Datentyps in Form eines queries implementiert wird Das ist ja bei komplexen Code St cken ohnehin sinnvoll da dadurch eine bessere Strukturierung und Les barkeit erreicht werden kann mapping Attribute AttributeToColumn name type query Attribute if else if else if else if self self self self self self Column name getAttributeType getAttributeType Scring type name Integer then int type name Double then double type name String then varchar type name Date then date else undefined endif endif endif endif Ubernahme von komplexen Datentypen Die primitiven Datentypen haben wir damit erledigt Nun sind die komplexen Datentypen an der Reihe was auch schon eine etwas schwierigere Aufgabe ist Komplexe Attribute sind solche deren Datentyp eine Class ist Bisher sind diese noch als undefined behandelt worden Die Attribute der Klasse die den Da tentyp repr sentiert werden ermittelt und der Tabelle anstelle des eigenen kom plexen Attributes hinzugef gt Zum Beispiel sind das Attribut Lage in Immo bilie oder auch das Attribut wohnort in Person in dem Sinne komplexe At tribute die jeweils durch die Attribute ort und postleitzahl der Klasse
21. xcollect selectOne collectOne collectselect collectselectOne forAll iterate lt declarator_list gt lt declarator gt lt expression gt lt iter declarator gt lt declarator gt lt declarator_list gt lt object_exp gt lt do_exp gt lt switch_exp gt object lt iter_declarator gt lt object_declarator gt lt expression_block gt lt typespec gt lt identifier gt lt typespec gt do lt expression_block gt switch lt iter_declarator gt lt switch_body gt lt switch_alt gt lt switch_else gt case lt expression gt lt expression_statement gt else lt expression_statement gt 190 A Die Syntax der Operational Mappings lt control_exp gt lt while_exp gt lt compute_exp gt lt for_exp gt lt rule_call_exp gt lt let_exp gt lt var_init_exp gt lt quit_exp gt lt return exp gt lt try_exp gt lt except gt lt raise_exp gt lt arg_list gt lt assert_exp gt lt log_exp gt lt while_exp gt lt compute_exp gt lt for_exp gt while lt declarator gt lt expression gt lt expression_block gt compute lt declarator gt lt expression_block gt I forEach forOne lt iter_declarator_list gt lt declarator gt lt expression gt lt expression_block gt map xmap new lt declarator gt lt scoped_identifier gt let lt declarator_list gt in lt expre
22. 1 type ownedType 6 isComposite false gt lt ownedAttribute name destination upper 1 type ownedType 6 isComposite false gt lt ownedType gt ql 2 gt lt ownedType xsi type emof Class name Attribute superClass ownedType 0 isAbstract false gt lt ownedAttribute name type upper type ownedType 5 isComposite false gt lt ownedType gt g gt lt ownedType xsi type emof Class name Classifier superClass ownedType 2 isAbstract false gt eh gt lt ownedType xsi type emof Class Name Class superClass ownedType 5 gt lt ownedAttribute name attributes type ownedType 4 upper 1 isOrdered true isComposite true opposite ownedType 3 ownedAttribute lt ownedAttribute name general type ownedType 6 upper isOrdered true opposite ownedType 6 ownedAttribute lt ownedAttribute name specific type ownedType 6 upper 1 isOrdered true opposite ownedType 6 ownedAttribute lt ownedAttribute name reverse type ownedType 4 upper isOrdered true opposite ownedType 4 ownedAttribute lt ownedAttribute name forward type ownedType 4 upper 1 isOrdered true opposite ownedType 4 ownedAttribute lt ownedType gt 2 2 Serialisierung der Metamodelle 41 1 gt 2 gt L s O
23. 1 3 bersicht ber die Diagramme der UML e Strukturdiagramme Strukturdiagramme sind die Diagrammtypen die zur Darstellung des Aufbaus von Systemen dienen Es handelt sich hierbei im Wesentlichen um Klassendia gramme und Objektdiagramme Au erdem z hlen dazu weitere Diagramme die unter dem Oberbegriff Architekturdiagramme zusammengefasst werden k nnen zum Beispiel Paketdiagramme Komponentendiagramme Verteilungs diagramme e Klassendiagramm Mit dem Klassendiagramm wird die Struktur eines zu entwerfenden Sys tems modelliert indem die Gegenstandstypen des Systems allgemeiner der betrachteten realen Welt in ihrem Aufbau und ihren Beziehungen un tereinander als Klassen abgebildet werden Gegenst nde haben in der Regel beschreibende Merkmale die als Attribute der Klassen modelliert werden Au erdem besitzen sie funktionale Eigenschaften die als Methoden oder Operationen der Klassen abgebildet werden 1 2 Die ber hmten Akronyme der OMG 7 e Objektdiagramm Ein Objektdiagramm bietet die M glichkeit ein modelliertes System durch die Instantiierung seiner Klassen zu einem bestimmten Zeitpunkt zu be trachten Es ist die Modellierung eines Schnappschusses von einem mo dellierten System e Paketdiagramm Pakete erlauben eine Gruppierung von strukturellen Elementen eines Mo dells Ein Paketdiagramm gibt die M glichkeit die modellierte Struktur ei nes Systems zu gliedern und bestimmte Elemente in sinnvollen Gru
24. 158 Interface Home 157 Interface Remote 157 Intermediate Class 113 Intermediate Data 112 129 Intermediate Property 113 Interoperabilit t 13 Invariante 65 103 IT Architekturen 12 Iteration 77 Iterationsoperation 84 Iteratorvariable 77 83 IT Infrastruktur 7 264 Index J Java Programmierung 57 Java Projekt 57 Java Source 57 K Kandidat 19 Kaskade 11 Klasse 6 87 123 Klasse abstrakte 30 88 Klasse assoziierte 138 Klasse fachliche 156 Klasse generelle 30 Klasse Konkrete 30 Klasse spezifische 30 Klasse tempor re 113 Klassendiagramm 6 Knoten 7 Kommentar 59 Kommentierung 12 Kommunikationsdiagramm 8 Kommunikationspartner 8 Kompilieren 60 Komponent 145 Komponente 8 12 123 Komponentendiagramm 7 Komponentenmodell 156 158 Komposition 7 Kompositionsbeziehung 35 Kompositionsstruktur 7 Kompositionsstrukturdiagramm 7 Kompositonsbeziehung 90 Konfigurieren 9 Konformit t 152 Konformit tstyp 92 Konkatenationsoperator 73 Konnektor 12 Konsole 57 Konstrukt syntaktisches 59 Konstruktion 2 Konstruktor 95 108 Konstruktoraufruf 109 Konstruktordefinition 109 Konstruktoroperation 108 Kontextmen 60 Kontrollfluss 8 Konzeption 2 L Laufzeitsystem 20 21 Laufzeitumgebung 11 61 Lebenslinie 8 Lebenszeit 8 Lifecycle 8 log Anweisung 64 log Meldung 64 M M2M 23 M2T 23 MagicDraw 25 main Funktion 65 main Funktion 121 Mapping 54 93 Mapping Operation 21 Mapping gebundes 97 Mapping Call 96 122 Mapping Ope
25. 96 Artefakt 7 Association 158 Assoziation 123 Assoziationsende 90 Assoziationstabelle 138 Attribut 6 124 Attribut abgeleitetes 89 Attribut identifizierendes 135 Attribut komplexes 127 Attribut lesbares 89 Attribut navigierbares 90 Attribut primitives 30 128 Attribute 88 Aufbauorganisation 5 Aufl sung 141 Aufz hlungstyp 87 Ausdruck assert 77 Ausdruck bedingter 75 Ausdruck compute 76 Ausdruck Exception 77 Ausdruck for 77 Ausdruck if 75 Ausdruck log 74 Ausdruck object 106 Ausdruck raise 78 262 Index Ausdruck sequentiell 72 Ausdruck switch 75 Ausdruck while 76 Ausf hrungskonfiguration 60 Ausf hrungskonfiguration QVTO 163 Ausf hrungsteil 68 Ausf hrungsumgebung 11 Ausgangsmenge 83 Ausgangsmodell 68 Auslagerung 145 Ausnahme 77 Ausnahmebehandlung 77 Ausnahmefall 87 Austauschformat 8 34 92 Austauschformat allgemeines 67 B Backus Naur 24 Bean Attribut 157 Bean Klasse 156 167 Bedingung 65 67 Bedingungsvariable 75 BehavioralFeature 161 Bestandteil 12 Betriebssystem 11 Beziehung bin rer 30 Beziehung extends 88 Beziehungstyp 89 Beziehungstyp bin re 138 Bibliothek 145 bidirektional 21 Bin rdatei 60 BlackBox 20 22 BlackBox Implementierung 152 Blackbox Konzept 147 Blattattribut 130 Blickwinkel 12 Block 64 74 BPMN 19 Business Process Modeling Notation 5 Businessmethode 157 ByteCode 57 C Class 158 Classifier 158 160 Classifier general 16l Classifier specific 16l Codeart
26. EMOF Repr sentation 37 Empfanger 8 end Bereich 101 Entity Java Beans 156 Entity Relationship Model 4 Entwicklung objektorientierte 104 Entwicklungsebene 10 13 Entwicklungsplattform 55 Entwicklungsprozess 1 Ereignis 8 Ereignis Prozessketten 9 Ergebniselement 83 Ergebnismenge 128 Ergebnisobjekt 96 Ergebnisparameter 99 Export 46 Extension 175 F Fachklasse 27 156 167 Fachklassendiagramm 117 Fachklassenmodell 27 157 Fachsprache 2 Fachwelt 2 9 Feature 16l Fehlerereignis 77 Fehlermeldung 77 Formalisierung 2 Framework 19 Fremdschliissel 33 138 140 Funktion 11 Funktionalit t ererbte 150 G Gegenstandsstruktur 30 Gegenstandstyp 6 Generalisierung 132 Index 263 Generalisierungsbeziehung 30 161 Generieren 9 Generierung modellgetriebene 11 Ger t 7 Gesch ftsklasse 16 Gesch ftsprozess 8 Gesch ftsprozessmodell 9 getter Methode 169 Grafical Modeling Framework 25 Guard 70 103 G ltigkeit 13 H helper 110 Hilfsfunktion 110 153 I Identifizierung 32 136 Imperativer Ansatz 20 Implementation Modeling 13 Implementierung 9 13 153 Implementierungsschicht 13 Import 46 147 Indizierung 32 Information Hiding 4 Informationsaustausch 8 init Bereich 101 Initialisierungsbereich 68 Inline 44 Inline Object Expression 106 Inline Deklaration 44 Inline Mapping 106 Inline Objekterzeugung 168 Installieren 9 Instantiierung 7 Instanz 67 104 Interaktion 8 12 Interaktions bersichtsdiagramm 8 Interface 156
27. Modelle im Rahmen einer operationalen Transformation sind von einem be stimmten Modelltyp modeltype der dadurch spezifiziert wird dass er einen Namen hat und ein oder mehrere Metamodelle benutzt uses Die Metamodelle repr sentieren gewisserma en den Datentyp f r die Modelle 92 3 Operational Mappings die Sprache Syntax modeltype lt modeltype_name gt strict effective uses lt metamodel_specification gt lt metamodel_specification gt where lt OCL_expression gt Mit den Merkmalen strict oder effective wird fiir den Modelltyp ein Konformit tstyp angegeben e effective Es werden alle Modelle akzeptiert die Instanzen von genau den referenzierten Metamodellen oder auch von hnlichen Metamodellen sind Die Klassifizie rung effective UML14 bedeutet zum Beispiel dass alternativ auch UML13 Modelle mit der Transformation behandelt werden k nnen Der Kon formit tstyp effective erlaubt eine flexiblere Erarbeitung von operationalen Transformationen effective ist die Voreinstellung die gilt wenn kein Konformit tstyp angegeben ist strict Im Fall strict m ssen alle Objekte des Modells notwendigerweise Instanzen der angegebenen Metamodelle sein Modelle von hnlichen Metamodellen werden nicht akzeptiert Der f r die jeweilige Transformation zutreffende Modelltyp kann auf der Bas s zus tzlicher in einem where Pr dikat angef hrter Bedingungen eingegrenzt wer den Beispiel modelt
28. String Boolean ergibt true sofern der vorgegebene String gleich match ist sonst false Gro Kleinschreibung wird dabei ignoriert find match String Integer liefert die Position des mit match angegebenen Substrings 1 falls match nicht gefunden werden kann rFind match String Integer liefert die Position des mit match angegebenen Substrings die Suche erfolgt von rechts nach links 1 falls match nicht gefunden werden kann isQuoted quote String Boolean ergibt true sofern der vorgegebene String mit quote geklammert ist sonst false quotify quote String String klammert den vorgegebenen String mit quote unquotify quote String String entfernt die quotes aus dem vorgegebenen String matchBoolean s String Boolean ergibt true sofern der vorgegebene String gleich true false 0 1 ist sonst false matchlInteger i Integer Boolean ergibt true sofern der vorgegebene String einen ganzzahligen numerischen Wert repr sentiert sonst false matchFloat f Float Boolean ergibt true sofern der vorgegebene String einen reellen numerischen Wert repr sentiert sonst false 228 D Standardbibliotheken matchIdentifier s String Boolean ergibt true sofern der vorgegebene String einen alphanumerischen Wert repr sentiert sonst false asBoolean Boolean ergibt true sofern der vorgegebene String als Bool scher Wert interpretiert we
29. and run configurations Q SmartQYT application Er bu S Li Xx SE Name helloworldS HelloWorld type filter text Q Qvt arguments Main 69 Arguments 25s Plug ins Configuration Tracing PS Environment Q SmartQyT Transformation TI be Q helloworld5 Hellowo http twww example com Helloworld x Models source in platform fresource OM_Helloworld model Bank_Kunden myuml Workspace File system target out platform resource OM_HelloWorldjresult Bank_Kunden myrdbm Workspace File system Parameters SD Trace trace model optional platform fresource OM_Helloworldftracejtracel Workspace File system a El Filter matched 2 of 2 items Abb 3 4 SmartQVT Ausf hrungskonfiguration 5 Die SmartQVT Applikation wird in der Ausf hrungskonfiguration automatisch angezeigt hier hellowor1ld5 HelloWorld 6 Der Name der ausf hrbaren Eclipse Applikation www example com HelloWor1d5 ist in der Transformationszeile sichtbar 3 2 Die Operational Mappings Plattform SmartQVT 61 7 source in erwartet die Angabe des Quellmodells target out die An gabe des Zielmodells 8 tracel ist der Name einer optionalen Protokolldatei Damit l sst sich mit HelloWorld bereits eine Transformation wagen die bei einem g ltigen Quellmodell ein Schema im Zielmodell erzeugen w rde das den selben Namen wie das Package im Quellmodell besitzt Alle anderen Re
30. betriebliche 8 Q Quellmodell 19 21 27 54 93 122 Quellmodellelement 79 queries 110 Query 19 QVT 19 QVT Prinzip 19 QVT Datenstruktur 34 44 67 QVT Datentyp 34 69 104 QVT Editor 56 59 162 QVT Interpreter 161 162 QVT Komformit t 20 QVTO 161 QVTO Ausf hrungskonfiguration 163 QVT Option 60 QVTO Quelle 162 QVT Script 16 QVT Sprache 20 53 QVT Standardbibliothek 122 QVT Standardfunktion 123 QVT Werkzeug 53 R Realit t 12 Redefinition 146 Referenzierung 139 Regel 21 Register 62 Rekursion 128 Relation 21 Relationenschema 117 Relationentheorie 4 Relations Language 20 21 Resolution 141 Resolution allgemeine 141 Resolution spezielle 143 result 99 Richtungsangabe 111 Richtungsmerkmal 98 Riicktransformation 15 Rumpf 93 S Sachverhalt 1 Sachverhalt funktionale 5 Sachverhalt strukturelle 5 Sammlung geordnet 90 Sammlungsobjekt 123 Sammlungstyp 73 Schema 122 Schichtenmodell 13 Schnappschuss 7 Schnittstelle 11 Selektion 83 122 Selektionsabfrage 84 Selektionsfunktion 82 Selektionskriterium 84 semi formal 12 Sender 8 Sequenzdiagramm 8 Serialisierung 25 34 SessionBean 156 168 setter Methode 169 Shorthand 70 101 122 125 137 Sicht 19 Sichtbarkeit 158 168 169 Signatur 68 93 Signatur Mapping 98 SimpleUML Model Editor 57 SmartQVT 55 SmartQVT Oberfl che 55 SmartQVT Projekt 56 Software Engineering 1 Software Entwicklung 1 Software Entwicklung modellgetrieben 9 Software Krise 1 Software
31. klasse Classifier ownihgAssociation attribute 0 1 associationEnd Abb 4 12 Das Metamodell UML2 im Kontext Classifier 12 Bei einem Classifier handelt es sich um eine Class Interface Da taType oder Association 4 3 Transformation von UML Modellen 161 13 Classifier k nnen Features besitzen dies sind entweder struktur beschreibende Features StructuralFeature Property oder verhal tensbeschreibende Features BehavioralFeature Operation 14 Die Operationen aller Classifier Arten sind ownedOperations die Properties sind ownedAttributes 15 Eine Association ist ein Classifier der sowohl Attribute und Operationen besitzen kann zudem aber auch mindestens zwei memberEnds Eine Association stellt also in der Weise Beziehungen zwischen Clas sifiern her dass sie Attribute beziehungsweise Properties dieser Classifier als memberEnds besitzt 16 Classes in Generalisierungsbeziehungen k nnen superclasses von anderen Classes sein 17 Classifier k nnen untereinander in Generalisierungsbeziehungen stehen Darin gibt es immer einen speziellen specific und einen generellen ge neral Classifier Ein specific Classifier kann in mehreren Generalisierungsbeziehungen vorkommen Dieser etwas oberfl chliche Einstieg in das UML2 Metamodell soll erst einmal gen gen um die gestellte Transformationsaufgabe zu l sen Tiefere Einblicke und Einsichten ergeben sich aus dem Studium der UML2 Superstructure UML 4 3 3 Das W
32. lt tagid gt lt tagvalue gt Typedefinitions lt typeder gt lt typedef_condition gt A 2 Ableitungsregeln 191 lt Classitier h gt I lt classifier_feature_list gt lt classifier_info gt lt scoped_identifier gt lt classifier_extension gt datatype primitive exception intermediate lt qualifiers class extends lt scoped_identifier_list gt lt classifier_feature gt lt classifier feature gt ee lt classifier_property gt lt classifier_operation gt lt feature_qualifier gt lt declarator gt lt multiplicicy gt lt opposite_property gt lt stereotype_qualifier gt lt tag gt lt feature_key gt composes references readonly derived lt lt lt identifier_list gt gt gt lt multiplicity_range gt lt INTEGER gt static lt INTEGER gt lt LNTEGER gt lt INTEGER gt lt feature_qualifier gt lt declarator gt lt complete_signature gt lt enumeration_h gt lt enumeration_h gt lt identifier_list gt enum lt identifier gt opposites lt identifier gt lt multiplicity gt tag lt tagid gt lt scoped_identifier gt lt tagvalue gt lt STRING gt lt expression gt typedef lt identifier gt lt typespec gt lt typedef_condition gt lt expression gt B Metamodelle in serialisierter Darstellung Dieser Anhang enth lt die simplen Metamodelle S
33. ndnis von Meta modellen ist wesentlich f r die weitere Arbeit mit der Transformationssprache da QVT als MOF Konzept grunds tzlich metamodellbasiert ist Demjenigen der sich zun chst nur mit den Zusammenh ngen und den Einordnungen besch ftigen m chte empfehle ich ein intensiveres Studium der einleitenden Kapitel die Be schreibung und das Arbeiten mit der Sprache kann dann ein wenig oberfl chlicher gelesen werden Das Kapitel 3 geht nun in die Tiefe und beschreibt die Transformationssprache Operational Mappings auf eine recht formale an der Syntax ausgerichtete Weise Das ist wahrscheinlich auch wenn ich mich um spannende Formulierungen be m ht habe etwas m hsam zu lesen Allerdings habe ich damit bezweckt einer seits auf die OCL Grundlagen der QVT einzugehen und andererseits die Sprach konzepte vollst ndig zu pr sentieren und zu erl utern An Beispielen soll es nicht fehlen diese behandeln im Wesentlichen das ber hmte HelloWorld Kapitel 4 schlie lich besch ftigt sich mit zwei komplexen und zusammenh n genden Beispielen einmal dem Standardbeispiel der OMG Spezifikation Uml ToRdbm auf der Basis eigener simpler Metamodelle und zum anderen einem Beispiel UML2EJB mit pragmatischeren Modellen auf der Grundlage des UML2 Metamodells Beide Beispiele werden Schritt f r Schritt entwickelt so dass man das Kapitel sequentiell abarbeiten sollte Vill Vorwort Meiner Meinung nach ist dieses Vorgehen recht g
34. nzung und Pr fung von formalen G ltigkeitsbedingungen zum Beispiel mit der Object Constraint Language Die drei Grundziele der modellgetriebenen Architekturentwicklung MDA0O3 sind 1 Portabilit t die gr tm gliche Unabh ngigkeit eines Systems von m glichen Betriebsplatt formen 2 Interoperabilit t die F higkeit eines Systems m glichst nahtlos mit anderen Systemen zusam menzuwirken 3 Wiederverwendbarkeit das Qualit tsmerkmal eines Systems m glichst umfassend in m glichst vielen unterschiedlichen Kontexten verwendet werden zu K nnen Der MDA Ansatz versucht diese grundlegenden Ziele zu erreichen indem ei ne konsequente Trennung der Spezifikation eines Systems von dessen Imple mentierung auf einer speziellen Plattform vorgenommen wird So beginnt man mit einer Modellierung die g nzlich losgel st von entwicklungsspezifischen Sachver halten ist Computational Independent Modeling CIM Dem folgt eine bereits konzeptionellere Modellierung die immer noch bestimmte Entwicklungs und Be triebsplattform unber cksichtigt l sst Platform Independent Modeling PIM Im Weiteren erfolgt eine berf hrung der Spezifikation auf eine oder mehrere belie bige zugrundeliegende Plattform en wo eine weitere Modellierung unter platt formspezifischen Gesichtspunkten stattfindet Platform Specific Modeling PSM Zuletzt wird eine berf hrung des plattformspezifischen Modells in die Imple mentierungsschicht vorgenomm
35. object Interface name self name Remote visibility v Visor laity hine spublic Als Ergebnis erhalten wir bereits ein Zielmodell Abbildung 4 15 welches f r die Fachklassen des Quellmodells Packages enth lt die die entsprechenden Bean Komponenten repr sentieren Das Paket Datentypen ist so wie es ist aus dem Quellmodell bernommen worden 4 3 Transformation von UML Modellen 169 SB_Person O PersonRemote O PersonHome ZI Person Datentypen Ort SB_Immobilie O ImmobilieHome O ImmobilieRemote ZI Immobilie SB_Konto O KontoRemote O KontoHome ZI Konto Abb 4 15 Die Komponenten des Ziel Darlehensmodells Schritt 4 Erzeugung der getter und setter Methoden Die Bean Klassen und deren Interfaces existieren nunmehr Alle Attribute der Bean Klassen sind private Die Attribute der Datatypes und Inter faces sollen die Sichtbarkeit aus dem Quellmodell behalten mapping in Property transformAttributes Property name self name type self type visibility if self class oclIsUndefined then Es handelt sich um die Eigenschaft eines Interfaces oder Datatypes Die Sichtbarkeit bleibt wie sie ist self visibility else Es handelt sich um die Eigenschaft einer Klasse und die Sichtbarkeit soll private sein VisibilityKind private endif Um den Zugriff auf die Attribute der Bean Klasse zu erm glichen muss
36. oder Ausgangsparameter out handelt Dadurch ist es m glich dass die per Argument bergebenen Variablen oder Objekte ver nderbar sind Dies ist insbe sondere bei helper Operationen zu beachten denn diese k nnen Nebeneffekte auf den Objekten bewirken die ihnen ber die Argumentenliste bergeben worden sind indem sie die Objekte in ihren Eigenschaften ver ndern queries tun dies nicht Insofern handelt es sich bei queries um reine Abfrageoperationen Beispiel query qSetName inout str String String str NeuerName return str hat keine nachhaltige Wirkung helper hSetName inout str String String str NeuerName return str str behalt den neuen Namen mapping Class createTable Table var namel String AlterName var name2 String AlterName namel qSetName name2 Annahme namel hat den Wert NeuerName name2 hat den Wert AlterName log Nach query call gt namel name2 namel hSetName name2 Annahme namel hat den Wert NeuerName name2 hat den Wert NeuerName log Nach helper call gt namel name2 name namel 112 3 Operational Mappings die Sprache Nach diesen etwas komplizierteren Dingen soll nun in diesem Zusammenhang abschlieBend noch eine Vereinfachung behandelt werden Wenn der Rumpf der Hilfsfunktion aus einer Anweisung besteht so kann man eine vereinfachte Form der Implementierung
37. sofern das SimpleUML Metamodell in dem Kontext installiert worden ist 5 Metamodelle hier SimpleUML und SimpleRDBM m ssen dazu in Form von Eclipse Plugins publiziert und in den jeweiligen Kontext eingebunden sein siehe Kapitel 2 Abschnitt 2 2 4 6 Die Navigation in umfangreichen Transformations Scripten kann mit der Out line View erleichtert werden siehe Abbildung 3 1 unten links 7 Mitte rechts ist in einem weiteren Texteditor die Properties Datei dieses Projektes ge ffnet Die Properties Date enth lt Angaben zur Betriebs und Laufzeitumgebung von SmartQVT zum Beispiel wo genau die Metamodelle zu finden sind 8 Die Informationen des Kompilations Prozesses OVT gt Parse Compile and Build wie auch der Ausf hrung einer Transformation OVT gt Run werden auf der Konsole angezeigt siehe Abbildung 3 1 unten rechts 3 2 2 Exemplarischer Aufbau von OVT Projekten Obwohl Java Programmierung im Allgemeinen nicht erforderlich ist sollte man sich bewusst sein dass QVT Projekte im Eclipse Kontext Java Projekte sind ge nau genommen Eclipse Plugin Projekte Grunds tzlich existieren also die Ver zeichnisse src f r die Java Sourcen die im Rahmen der Arbeit mit SmartQVT generiert werden und bin f r die Java ByreCode Repr sentationen die ebenfalls generiert werden Mit dem Build und Deployment von SmartQVT werden dann die ausf hrbaren Transformationen als Eclipse Plugins generiert Diese Zusam menh nge sind wichtig
38. tiert bestehend aus graphischen Diagrammen mit erl uternden nat rlich sprachlichen Kommentierungen Ein Modell beschreibt immer die Sachver halte einer Realit t in einer abstrakten graphischen oder textuellen Form Mo delle k nnen auch als ma stabgerechte Nachbildungen einer Realit t repr sentiert sein Das ist indem MDA Kontext allerdings nicht relevant e Modellierung Die Beschreibung eines Systems in Form eines Modells wird als Modellierung bezeichnet Modellierung ist ein zentraler Gedanke des MDA Ansatzes Mo dellierung ist die konkrete Beschreibung der realen Welt beziehungsweise des Ausschnittes der realen Welt der Dom ne die Gegenstand der aktuellen Be trachtung ist In diesem Kontext wird die Darstellung in Modellen ausschlie lich mit formalen Modellierungssprachen vorgenommen zum Beispiel der UML e Architektur Der n chste wesentliche Aspekt ist der der Architektur und nat rlich des architekturgetriebenen Vorgehens Nach der IEEE1471 ist Architektur die fundamentale Organisation eines aus untereinander in Beziehung stehen den Komponenten zusammengesetzten Systems und dessen Umgebung Das System hat eine Ordnung und ist in einer evolution ren Entwicklung entwor fen und realisiert Das hei t die Architektur eines Systems besteht aus dem System in seinem Aufbau an sich und aus den diversen abstrakten Repr sentationsformen des evolution ren Entwicklungsprozesses Nach dem Verst ndni
39. w re h tte aus der Modelldatei SimpleUML uml erst noch eine Ecore Fassung hergestellt werden m ssen Nol08 Nol08a 2 2 Serialisierung der Metamodelle 47 Topcased Modeling SimpleUML Modeling Ecore SimpleUML ecorediag Topcased Datei Bearbeiten Refactor Diagramm Navigieren Search Projekt Scripts SmartQYT Run ADELE Fenster Hilfe fetami AKA SAE AAA ji oorn Tahoma zji B LA A rare HN H 100 E fag Cvs Repository Exploring Topcased Modeling Resource Plug in Development Tope i pleUML ecorediag 25 W SimpleUML edit H E SimpleUML editor H E SimpleUML tests H E SimpleUML Modeling i H E settings B E Ecore i ff SimpleUML ecore BE SimpleUML ecorediac B Simple UML genmode i fa Om ina sare fesi 4 gt B Gliederung gjeng 2 SimpleuML H UMLModelElement Package gt UMLModelElem H PackageElement gt UMLMa Attribute gt UMLModelElerr H H Classifier gt PackageEleme W H Association gt PackageEler E class gt Classifier E E PrimitiveDataType gt Class Diagram SimpleUML ec Z Additional Resources X name EString kind EString a ee EPackage H Package gB Eclass a aera EDataType H PackageElemen E Attribute ERBE BE wm Fe elements a EAnnotat namespace ee m S A typeOpposite 0 Di 3 EOperation EAttribute SSeS a ea i ae Details Entry a U Connec c ERefer
40. zusammengefasst 5 Bei einem Namespace also einem Element welches andere benannte Ele mente enthalten kann handelt es sich um ein Package oder um einen Classifier 6 Ein Classifier ist entweder eine Class ein DataType ein Inter face oder eine Association Das bedeutet Klassen zum Beispiel sind benannt und sie k nnen selbst wieder umfassendere Namensr ume sein 7 Ein Package kann als Namespace andere Elemente ownedMember ent halten Die Elemente die innerhalb eines Packages liegen k nnen sind PackageableElements 8 Die in einem Paket enthaltenen ownedMember sind entweder packaged Elements oder nestedPackages 4 3 Transformation von UML Modellen 159 9 Bei den packedElements handelt es sich um Elemente vom Typ Package oder Classifier genauer um Types und Classifier sind eine Spezialisierung von Type 10 nestedPackages sind Packages die packagedElement eines ande ren Package sind Mittels Package packagedElement kann man zum Beispiel alle Elemente erfragen die sich in einem Package befinden mit Package nestedPackage erh lt man dann die Elemente davon die selbst Pakete sind 11 ber Package ownedType erh lt man alle Types dies sind wieder die Classifier Classifier ist der einzige konkrete Type in diesem Zusammenhang ownedElement Abb 4 11 Das Metamodell UML2 im Kontext Element 160 4 Operational Mappings Anwendungen Abbildung 4 12 zeigt detaillierter die Zusammenh nge im Umfeld der Meta
41. Attributen mit Hilfe von dynamischen Merac IE TIERE i ae 129 4 1 5 Behandlung von Vererbungsbeziehungen 132 4 1 6 Identifizierung von Tabellen Prim rschl ssel 135 4 1 7 Aufl sen von Beziehungen Fremdschl ssel 138 4 2 Fortgeschrittene Konzepte der Operational Mappings 141 4 2 1 Objektveriolsuns esssiseiissn een 141 Allgemeine Resolution 141 Spezielle Resolution nee 143 4 2 2 Strukturierung von Transformationen uueeeesssssnnnnnnnnnnnnnn 145 4 2 3 Wiederverwendbarkeit von Mapping Operationen 150 4 2 4 BlackBox Funktionen usssssssssssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 152 4 3 Transformation von UML Modellen usssssssssssnnnnnnnnnnnnnnnn 155 45 OI ernennen een 155 4 3 2 Das UML2 Metamodell 0 seess essees 158 4 3 3 Das Werkzeug QVT Operational 20 0 161 4 3 4 Die Transformation UML2EJB eseneeeeeeeeeno 164 Schritt 1 Definieren und Einrichten der Transformation 164 Schritt 2 Aufbereiten der Mapping Operationen 165 Schritt 3 Mapping von Fachklassen zu SessionBeans 167 Schritt 4 Erzeugung der getter und setter Methoden 169 Schritt 5 Standardmethoden f r die Organisation d r Bean Klasse cxncacacceasacsacensannateecantcteneasacceseneeceesdanases pontets 171 Schritt 6 Ver ffentlichung der Methoden in
42. Data Distribution Services Deutsches Institut fiir Normung Domain Specific Language Datenverarbeitung EMF Core das interne Format zur Darstellung von Modellen im EMF Entity Java Beans Eclipse Modeling Framework Essential MOF das Format zur Darstellung von Metamodellen im MOF Eclipse Public License Entity Relationship Model Eingabe Verarbeitung Ausgabe Foreign Key 252 Abkiirzungsverzeichnis ID IEEE IM ISO IT JMI M2M M2T MDA MDSD MDT MOF MQVT NATO OCL OM OMG OOA OOD OOP PIM PK PSM QVT QVT O QVT R RCP RDBM RL SQL Identifier Institute of Electrical and Electronics Engineers Implementation Model International Standardization Organization Informationstechnologie Java Metadata Interchange Model to Model Transformation Modelltransformation Model to Text Transformation Codegenerierung Model Driven Architecture Model Driven Software Development Model Development Toolkit Meta Object Facility Medini OVT North Atlantic Treaty Organization Object Constrained Language Operational Mappings Object Management Group Objektorientierte Analyse Objektorientiertes Design Objektorientierte Programmierung Platform Independent Model Primary Key Platform Specific Model Query Views Transformation QVT Operational Mappings QVT Relations Language Rich Client Platform Relational Database Model Relations Language Structured Query Language SQVT SMDA SW SWE UML URI XMI
43. Datentyps wird dem type Merkmal der Tabellenspalten bergeben Die berf hrung erfolgt nach folgendem Muster SimpleUML Datentypname Datentyp der Spalte im SimpleRDBM Modell Integer ine Double double Ser ng varchar Date date andere Namen undefined mapping Attribute AttributeToColumn Column init var umlType String self type name var rdbmType String rdbmType if umlType Integer then int else if umlType Double then double else if umlType String then varchar else if umlType Date then date else undefined endif endif endif endif name self name type rdbmType Sofern der Name des Datentyps im SimpleUML Modell einen gem obiger Tabelle erlaubten Wert besitzt wird dieser auf den Datentyp des Columns im SimpleRDBM projiziert Andernfalls der SimpleUML Datentyp ist nicht be kannt wie das zum Beispiel bei strukturierten Attributen wie dem Attribut lage Ort in Immobilie der Fall ist wird bis auf Weiteres undefi ned eingetragen 4 1 UML2RDBM 127 Diese L sung l sst sich auch etwas einfacher realisieren indem man auf den init Block verzichtet was allerdings auch manchmal zu Lasten der bersicht lichkeit gehen kann mapping Attribute AttributeToColumn name type else else else else endif endif endif self name if self type name if self type name if self type name if self type name
44. Ecore Metamodelle 2 22222000200000000000 200 C Operational Mappings Beispiele sssseecccsssssceccccssssececsossssceecosssssseesoo 201 CI Mr I AD eoe 201 Fackage Lo CDEN A ee ee 201 Class TO 1 Br 0 icr EE 202 Association To laDle nennen 204 Das Transformationsscript UmIToRdbn 205 2 WINE DENE ones not nnasmesrnantecetanduandeadeioumemearanensactasdheababemasnes 210 CAMS LOTMA ackas CS 2 210 U 210123 10 101 08 1211 gt nna INNERN a ee ee ee ee 211 Das Transformationsscript UML2EJB cceeneenneneeeeennnn 21 Inhaltsverzeichnis Xili D Standardbibliotheken sescesesssslesdecencascesssscasceonssccocabiesceceesessaveteosaseancossestnee 219 D 1 QVT Standardbibliothek 200 00 cece ccecccceeseccceecceeeseceeeeeesseaeees 219 Vordefnierte QVT D tentyp amp n u unn anna 219 Methoden auf Transformation unndnnnunen 220 Methoden auf Model 220 Methoden auf Status een een 221 Methoden auf Object canes nennen 222 Methoden auf Element ns 222 Methoden auf Dictionary an 223 Methoden auf LiStissisccssisisrenirisnsinin pia iais Aii 224 Methoden auf Inteser nuenen nen 225 Methoden auf Senne 22 D 2 Die wichtigsten OCL Standardfunktionen eceeeeeeeeeeeeeees 229 OCL Standardfunktionen auf Sammlungen en 229 OC E erat Or F Um KUM GM sie siccsesdccnnecavedcavodsoniacadiadassnbounincdcondsmeinendess 231 OONOSS ON WANN EE
45. Gleiche noch einmal mit einer geschachtelten Objekterzeugung mapping Package PackageToSchema Schema name self name Erzeugung der Tabellen tables self subobjectsOfType Class gt object iter Table name iter name Erzeugung der Spalten columns iter attributes gt object a col Column name a name ry 108 3 Operational Mappings die Sprache Erzeugung einer weiteren Spalte columns object Column name self name _ID iu Wie man s eht kann man zur Erzeugung von Objekten gleicherma en die ex plizite wie auch die nline Variante anwenden Wann welche Methode angezeigt ist ist nicht eindeutig zu beantworten es ist ein wenig Geschmacksache Eine tiefe Schachtelung wird leicht un bersichtlich Die nline Variante bietet sich an wenn Objekte dem Zielmodell neu hinzugef gt werden sollen wie das hier bei der ID Spalte der Fall ist Allerdings kann das auch mit Hilfe eines ungebundenen Mappings erfolgen Beispiel mapping Class ClassToTable Table name self name columns self attributes gt object a col Column name a name columns createldColumn self name _ID mapping createldColumn idName String Column name idName Objekterzeugung mittels Konstruktoroperationen Neben der Objekterzeugung mit Hilfe von Inline Object Expressions gibt es eine weitere Methode die Generi
46. Independent Model PSM Platform Specific Model IM Implementation Model Argument ist die konkrete Auspr gung eines formalen Parameters beim Aufruf einer Transformation oder einer Funktion In h heren Programmiersprachen wird Argu ment auch als aktueller Parameter eines Funktions oder Methodenaufrufes bezeichnet siehe Zusicherung siehe Zuweisung Ein Attribut ist ein abstraktes Mittel um struktur beschreibende Eigenschaften von Gegenst nden einer re alen Welt darstellen zu k nnen Ein imperativer Ausdruck ist ein Standardausdruck des imperativen QVT Sprachkonzeptes mit dem anwei sungsorientierte imperative Programmelemente zur Ver f gung gestellt werden Beispiele f r Ausdr cke Expres sions sind Zuweisungen strukturierte Anweisungen Funktionsaufrufe Spezielle Expressions der QVT sind zum Beispiel Mapping Calls Objekt Resolution Inline Objekterzeugung Eine Ausnahme Exception ist ein geplantes oder un vorhergesehenes Ereignis im Rahmen der Ausf hrung einer Operation oder Transformation Geplante Ausnah men werden durch spezielle definierte Ereignisse vorge geben und bei deren Feststellung kontrolliert und ange messen behandelt Bean SessionB EntityB MessageDrivenB Blackbox Block CallExpression imperative CE Compilieren Computational Independent Model Glossar 235 Bean oder auch Entity Java Bean EJB ist ein Konzept der Java Komponentenspezifikation Eine Bea
47. Mapping Operationen B und C ererbt dann werden B und C im plizit ausgef hrt w hrend A explizit aufgerufen werden muss Beispiel mapping A inherits merges disjuncts B inherits merges disjuncts C ETE map A l st die implizite Ausf hrung von B und C aus e Per inherits ererbte Funktionalit t wird unmittelbar hinter der init Sek tion also unmittelbar vor der population Sektion ausgef hrt Die init Sektion kann weggelassen werden e Per merges ererbte Funktionalit t wird im Anschluss an die end Sektion ausgef hrt Auch diese Sektion ist nach wie vor optional und kann entfallen 4 2 Fortgeschrittene Konzepte der Operational Mappings 151 Beispiel inherits merges transformation HelloInherit in source UML out dest gt RDBM main log Main Hello World source objects Package gt map createSchema mapping Package createSchema Schema inherits A C merges B init log createSchema init erwarte lt A gt lt C gt log createSchema population name self name end log createSchema end erwarte lt B gt mapping Package A Schema log lt A gt mapping Package B Schema log lt B gt mapping Package C Schema log lt C gt e Mit disjuncts wird eine Folge von Mapping Operationen angegeben von denen nur maximal eine ausgef hrt wird und zwar die die als erste in ihrer Vorbedi
48. Notation 34 O Oberfl che graphische 9 Oberklasse 30 132 Object Constraint Language 8 Objekt 71 104 Objektdiagramm 7 Objektresolution 141 OCL Anweisung 68 OCL Datentyp 69 104 OCL Datentyp komplexer 69 OCL Datentyp primitiver 69 OCL Funktion 89 OCL Grundlagen 68 Operation 6 54 88 93 161 Operational Mappings 14 20 21 53 Funktion 54 Transformation 54 Index 265 operationaler Ansatz 20 Operator late 145 Operator map 73 Ordnung 12 Organisation 12 Organisationseinheit 7 Outline View 57 ownedAttributes 16l ownedElement 158 ownedMember 158 ownedOperations 16l P Package 158 Package Explorer 56 PackageableElements 158 packagedElements 158 Paket 7 87 122 Paketdiagramm 7 Parameter 96 Parameter aktuelle 96 Parameter formale 163 Part 12 Partition 10 Pattern 21 Pattern Matching 21 Petrinetz 4 Phase 9 141 Phase fr he 2 9 Phasen bergang 13 Platform Independent Modeling 13 Platform Specific Modeling 13 Plattform 11 13 Plugin 45 46 Plugin Projekt 48 population 68 Population 64 population Bereich 101 Portabilit t 13 Pr dikat when 103 Pr dikat where 103 Pr fix 131 135 Prim rschl ssel 135 Prim rschl sselattribut 32 Programm 9 Programmablaufplan 4 Programmiersprache 3 11 Programmierung objektorientierte 4 Programmierung strukturierte 4 Project Explorer 56 Projektion 93 Projektverzeichnis 57 266 Index Properties Datei 57 Property 88 161 Prozess 7 Prozess
49. Ort ersetzt werden sollen 128 4 Operational Mappings Anwendungen Zur Ermittlung der Attribute eines komplexen Attributes wird eine query getAllPrimitiveAttributes implementiert die als Ergebnis eine Liste von Attributen mit primitiven Datentypen liefert Die query wird auf die Liste der Attribute einer Klasse angewendet self attributes gt getAllPri mitiveAttributes Jedes Attribut wird gepr ft ob es primitiv ist self type isKindOf PrimitiveDataType oder komplex self type asType Class Primitive Attribute werden der Ergebnisliste unmittelbar zugeordnet Attribute mit einem komplexen Typ bewirken einen er neuten rekursiven Aufruf von getAllPrimitiveAttributes query Attribute getAllPrimitiveAttributes Sequence Attribute if self type isKindOf PrimitiveDataType then Sequence object Attribute name self name type self type else self type asType Class attributes gt getAllPrimitiveAttributes gt flatten endif Das Ergebnis ist eine Menge die unter Umst nden aus mehreren Teilmengen besteht Die Ergebnismenge muss nun mittels der OCL Standardfunktion flat ten zu einer Menge von elementaren Werten umgearbeitet werden Damit erhal ten wir eine Menge von Attributen die alle einen primitiven Datentyp besitzen Diese Attributmenge die gewisserma en aus dem Zusammenschieben einer Klasse und ihrer Unterklassen resultiert ist nun die Grundlage f r
50. Prim rschl ssels dienen zum Beispiel die die mit einem Merkmal primary gekennzeichnet sind mapping Class ClassToTable Table when self kind persistent name self name Ma nahmen zur Erzeugung der Spalten keys object Key name gt self name _PK columns result columns kind primary Die Konstruktion columns kind primary haben wir in hn licher Weise schon einmal gesehen und zwar objects lt type gt als Shorthand f r die QVT Standardfunktion objectsOfType type gt Bei diesem Konstrukt handelt es sich abermals um einen sogenannten Shorthand f r folgende OCL Anweisung columns result columns gt select c Column c kind primary asOrderedSet Und damit sind wir wieder einen Schritt weiter Das Ergebnisschema dar lehen mit den identifizierenden Merkmalen in den Tabellen Immobilie Konto und Person zeigt die Abbildung 4 7 138 4 Operational Mappings Anwendungen lt lt table gt gt Immobilie nennbetrag double precision grundbuch varchar leistung double precision flurstueck varchar zahlungsmodalitaet integer postleitzahl integer beginn integer strasse varchar ort varchar ende integer hausnummer integer hausnummer integer strasse varchar lt lt table gt gt lt lt table gt gt lt lt table gt gt Darlehenssicherheit Hausbesitzer Darlehensgeschaeft Abb 4 7
51. QVT sind Sprachen die im Wesentlichen auf Mengen von Modell elementen operieren Mit den Mapping Operationen lassen sich Mengen von Ele menten eines Modells in Mengen von Elementen eines anderen Modells berf h ren Die geforderten Mengen der Quellmodellelemente m ssen dazu zun chst se lektiert werden bevor eine Mapping Operation angesetzt werden kann Zum Zugriff auf Ausschnitte von Modellen sind auf der einen Seite diverse OCL Stan dardfunktionen und auf der anderen Seite QVT Standardfunktionen vorgesehen Ein Einblick in die OCL Standardbibliothek Einige Funktionen der OCL Standardbibliothek insbesondere die die in diesem Zusammenhang im Allgemeinen h ufig ben tigt werden sollen hier kurz vor gestellt werden Ein umfassenderer berblick ber die OCL Standardbibliothek befindet sich im Anhang e allInstances Set Type liefert alle Instanzen einer Klasse allInstances ist nur auf Klassen an wendbar in allen anderen F llen liefert sie oclVoid 80 3 Operational Mappings die Sprache e oclIsTypeOf Type Boolean pr ft ob ein Element einen bestimmten vorgegebenen Typ besitzt e oclAsType Type Type passt den Typ des Elements auf den angegebenen Typ an Typkonvertierung Casting Analog k nnen Mengentypen mit asBag asSequence as OrderedSet asSet angepasst werden e isEmpty Boolean pr ft eine Liste ob sie Elemente enth lt Analog pr ft notEmpty eine Liste ob sie nicht leer ist
52. Select All LogsOnProfile OM HelloWorld 1 0 0 MyHelloVVorld inet 1 OM_ Profiles 1 0 0 Deselect All MyProfiles Bf l Tar get Platform Add Working Set MyUmi2rdbm com ibm icu 3 6 1 v20070906 u u 03 gt com ibm icu source 3 6 1 v20070906 Add Required Plug ins mizrabm DO com jeraft jsch 0 1 31 UMLZRDBM_PK DO fr tm elibel smartqvt branding 0 2 2 Restore Defaults E Java Applet ame m a fF Java Application gt 53 out of 327 selected Ju JUnit Include optional dependencies when computing required plug ins Je JUnit Plug in Test V Add new workspace plug ins to this launch configuration automatically OSGi Framework P atiomsicely piotiolamelng _ Waisierriisine Q SmartQVT I Validate plug ins automatically prior to launching Validate Plug ins Apply Revert Filter matched 17 of 17 items Abb 3 6 Eclipse Plugin Konfiguration 5 Nur die gew nschte Applikation hier OM_HelloWorld wird selektiert 6 Dann werden mit Add Required Plug ins die erforderlichen Plugins hinzugef gt Fu 3 3 Allgemeiner Aufbau von Operational Mappings Scripten 63 Validate Plug ins sollte keine Fehler oder Auff lligkeiten zeigen Nun kann die Transformation mit Run gestartet werden und bei einer korrekten Transformation mit einem g ltigen Quellmodell HelloWorld myuml ergibt sich ein Zielmodell Hello World myrdbm MyUML und MyRDBM sind Varianten der vorgestellten s m
53. String liefert den Teilstring hinter der Zeichenkette match toLower String konvertiert alle Zeichen des Strings zu lowercase Zeichen toUpper String konvertiert alle Zeichen des Strings zu uppercase Zeichen firstToUpper String konvertiert das erste Zeichen des Strings zu uppercase Zeichen lastToUpper String konvertiert das letzte Zeichen des Strings zu uppercase Zeichen indexOf match String Integer liefert den numerischen Index des ersten Vorkommens von match sofern kein match gefunden werden kann wird 1 geliefert endsWith match String Boolean sofern der String mit match endet wird true seliefert sonst false startsWith match String Boolean sofern der String mit match beginnt wird true seliefert sonst false trim String liefert eine Kopie des Strings in dem alle f hrenden und endenden Leerzei chen eliminiert sind normalizeSpace String liefert eine Kopie des Strings in dem alle f hrenden und endenden Leerzei chen eliminiert sind und alle Sequenzen von mehreren Leerzeichen innerhalb des Strings auf ein Leerzeichen reduziert werden D 1 QVT Standardbibliothek 227 replace ml String m2 String String liefert eine Kopie der Zeichenkette in der alle m1 Teilstrings durch m2 ersetzt worden sind equals match String Boolean ergibt true sofern der vorgegebene String gleich mat ch ist sonst false equalsIgnoreCase match
54. Und wenn notgedrungen doch dann werde ich explizit darauf hinweisen 122 4 Operational Mappings Anwendungen 4 1 2 Entwicklung der Mapping Operationen Die notwendigen Mapping Operationen sind bereits festgelegt die Aufrufreihen folge von au en nach innen ebenfalls Nun ist es an der Zeit die imperativen Aktionen zu implementieren Zuerst werden alle Elemente des Quellmodells mit ihren Namen in entsprechende Elemente des Zielmodells berf hrt also Packa ges in Schemas Classes in Tables Attribute in Columns Associ ations in Tables mapping Package PackageToSchema Schema name self name Mapping Call von ClassToTable Mapping Call von AssocToTable mapping Class ClassToTable Table name self name Mapping Call von AttributeToColumn mapping Attribute AttributeToColumn Column name self name mapping Association AssociationToTable Table name self name Jede Mapping Operation besch ftigt sich mit einem Elementtyp Um die Map ping Calls umzusetzen miissen die entsprechenden Bezugselemente jedoch erst selektiert werden Wenn in der main Funktion zum Beispiel Pakete als Kompo nenten zu Schemata umzuwandeln sind m ssen wir diese zuerst ermitteln Hierzu stehen entsprechende Funktionen der QVT Standardbibliothek zur Verf gung zum Beispiel die Funktion ssrcModel objectsOfType Package zur Selektion der Pakete eines Modells main
55. and any assert blackbox break case class collect collectNested collectOne collectselect collectselectOne composes compute configuration constructor continue datatype default derived disjuncts do elif else end endif enum except exists extends exception false forAll forEach forOne from helper if implies import in inherits init inout intermediate invresolve invresolveln invresolveone invresolveoneln isUnique iterate late let library literal log main map mapping merges metamodel modeltype new not null object one or ordered out package population primitive property query raise readonly references refines reject resolve resolveln resolveone resolveoneln return select selectOne sortedBy static Switch tag then transformation true try typedef unlimited uses var when where while with xcollect xmap xor xselect S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_5 Springer Verlag Berlin Heidelberg 2010 182 A Die Syntax der Operational Mappings A 2 Ableitungsregeln Metaregeln Die reservierten W rter wie auch die Symbole der Sprache Operatoren Klammern sind in fetter Schrift hervorgehoben bedeutet ein oder kein Exemplar des geklammerten Ausdrucks bedeutet mindestens ein Exemplar des geklammerten Ausdrucks bedeutet ein oder mehrere Exemplare des geklammerten Ausdrucks Operatoren und
56. den DENN ee een 172 xii Inhaltsverzeichnis 4 4 QVT und UML Profile ccc0seeesesenessasenensanenanenenennanenenennenen 175 4 4 1 Definition und Untersuchung eines UML Profils 175 4 4 2 Transformation von persistenten Klassen 178 A Die Syntax der Operational Mappings ssscsccccssssssssssccccccesesscees 181 Al Reservierie WO ea 181 A 2 Ableitunssreeschn een 182 Merire ge lii nennen ee ESS 182 Operatoren und Symbole sun nee 182 Top Te SE TRC een re nee ae 183 Model Types Compliance and Metamodel Declarations 183 Ban Or AL ION aseena a EREE 184 EDEA seere E 184 Import of Modules Transformations and Libraries 184 Sy0l TOF Pre nee 185 Properties in Transformation 185 General Purpose Grammar Rules cccssceeeeeeeeeeeeeeeeeeeeeeeeeees 185 Syntax for Helper Opera 018 186 Syntax for Constructors une 186 Syntax for Mapping OperaiOms sosisasascasacennccsasawhonsansdinncseseagonvacevbuulinss 187 Express ONS rose ae E EEEo ee 187 Syntax for Defining Explicitly Metamodel Contents 190 Typ de 11 ONS sssri EEEE NEIE 191 B Metamodelle in serialisierter Darstellung 0000000000000000000000000000 193 B 1 Deklaration der Metamodelle als QVT Datentypen 193 B2 Ecore Repr sentation sense aan 195 STB UNI nenne 195 SITBIERDIBM une 197 B 3 Benutzung der
57. e Plattform Eine Plattform ist eine Ausf hrungsumgebung f r ein Anwendungssystem S e stellt dazu spezielle Schnittstellen bereit wie zum Beispiel ein Betriebs system ein Datenbanksystem oder die Laufzeitumgebung einer Programmier sprache Nach dem Verst ndnis der OMG ist eine Plattform eine koh rente Menge von Subsystemen und Technologien die von auf die ser Plattform lauff higen Anwendungen benutzt werden k nnen Die Be nutzung erfolgt durch die Verwendung genau spezifizierter Schnittstellen und Gebrauchsmuster ohne Kenntnis dar ber wie die ber die Schnittstellen an gebotenen Dienste implementiert sind Die Plattform als Ausf hrungsumgebung von Anwendungssystemen kann kaskadierend sein Das hei t ein auf einer bestimmten Plattform laufendes Anwendungssystem kann selbst wieder Plattform f r ein anderes System sein So ist zum Beispiel das auf der Hardware eines Rechnersystems laufende Be triebssystem eine m gliche Plattform f r ein Datenbanksystem und dies wie derum eine Plattform f r eine datenbankgest tzte Applikation 12 1 Einf hrung e Modell Ein Modell ist die Beschreibung oder Abbildung eines Systems und seiner Umgebung unter einem gewissen Blickwinkel der Betrachtung Der Begriff purpose der OMG Definition wird hier mehr in Richtung aspect oder view point ausgedehnt vgl Gru06 Ein Modell wird oft zumindest in fr hen Phasen der Anwendungsentwicklung in einer semi formalen Weise repr sen
58. e size Integer liefert die Anzahl der Elemente einer Liste e union set Set Type Set ergibt die Vereinigung zweier Mengen Beispiel Set A B C gt union Set E F G ergibt Set A B C E F G e flatten Set Type Alle Elemente aller Untermengen einer Menge werden insgesamt zu einer ein fachen Menge zu einem Set bestehend aus nur einfachen Elementen flach geklopft Wenn eine Collection aus Elementen besteht die wiederum Collec tions sind dann werden deren Elemente der Zielmenge hinzugef gt und nicht die Menge insgesamt Diese Methode ist auch auf Bag und Sequence defi niert Beispiel Set A A B D E F G gt latten ergibt Set A A B C D E F G 3 4 OCL und QVT Grundlagen 81 Eine Auswahl von QVT Standardfunktionen Auch Operational Mappings stellt f r die Arbeit auf und mit Modellausschnitten diverse Standardmethoden auf Modellen oder Modellelementen zur Verf gung von denen hier einige der gebr uchlichsten vorgestellt werden sollen Eine voll st ndige Zusammenstellung der QVT Standardfunktionen befindet sich im An hang objectsofType lt OCLType gt Set lt Element gt ist eine Methode auf Modellen die eine ungeordnete Liste von Objekten eines vorgegebenen OCL Datentyps liefert var packages irgendeinModell objectsOfType Package liefert eine Liste aller Elemente vom Typ Package des Modells irgend einModell F r diese Funktion haben wir ob
59. ein Pr fix vorangestellt wird Erst wenn zur Abspeicherung von komplexen Attributen rekursiv abgestiegen wird wird der Name des Datentyps als Argument prefix bergeben Erzeugung der Liste der Attribute mit primitiven Datentypen mapping Attribute AttrToLeafAttrs in prefix String Sequence LeafAttribute init result if self type isKindOf PrimitiveDataType then Attribut zu leafAttributes hinzuf gen Sequence object LeafAttribute name prefix self name kind self kind attr self else Datentyp ist komplex gt rekursiv absteigen self type asType Class attributes gt map AttrToLeafAttrs self name _ gt flatten endif 132 4 Operational Mappings Anwendungen Unter Verwendung der Liste der Blattattribute k nnen wir nun abschlie end wieder die Spalten der Tabelle erzeugen mapping LeafAttribute LeafAttrToOrdinaryColumn in prefix String Column name prefix self name kind self kind type getAttributeType self attr type name Und als Ergebnis erhalten wir das gleiche Schema wie schon in der vorher gehenden L sung siehe Abbildung 4 4 diesmal mit Hilfe von Intermediate Data 4 1 5 Behandlung von Vererbungsbeziehungen SimpleUML erlaubt auch Generalisierungsbeziehungen zwischen Klassen Eine Generalisierung ist ein hierarchischer Beziehungstyp in dem die Oberklasse die generelle Klasse und die Unterk
60. eine An weisungsfolge Ein Block definiert auch den G ltigkeits bereich von innerhalb des Blocks deklarierten Variablen Eine CallExpression ist eine spezielle Anweisung mit der eine Funktion aufgerufen wird Eine imperative Call Expression ist eine CallExpression die den Aufruf einer imperativen Operation impliziert Compilieren ist der Prozess mit dem syntaktisch korrekte Programme in einen ausf hrbaren Zustand berf hrt werden CIM Modellierung eines Ausschnittes der realen Welt g nzlich ohne irgendwelche Umsetzungsaspekte zu be trachten Der Fokus ist allein auf die fachlichen Gege benheiten ausgerichtet 236 Glossar Constraint Datenbank Datenbankdesign Datenmodellierung Datenstruktur Datentyp primitiver D komplexer D Constraints sind allgemein Bedingungen genauer Ein schr nkungen Operational Mappings basiert auf der OCL alle Anweisungen beschreiben Constraints die die Korrektheit von Modellen oder Modellausschnitten zum Inhalt haben Constraints lassen sich unterscheiden in Vorbedingungen Nachbedingungen und Invarianten Eine Datenbank DB ist eine Menge von Daten eines Anwendungssystems die persistent also auch ber die Lebenszeit der laufenden Anwendung hinaus gespeichert werden Zur Organisation und Verwaltung von Daten banken werden in der Regel Datenbanksysteme DBS eingesetzt Je nach eingesetztem DBS und dessen Organisations techniken sollte ein logisches und physikal
61. einen modellgetriebenen Ansatz im Allgemei nen und f r Transformationen im Besonderen 1 3 Zusammenfassung und Ausblick 23 Ich werde mich in diesem Buch auf die imperative Sprache Operational Map pings konzentrieren Die QVT Relations Language ist ausf hrlich in Nol09 vor gestellt worden Wie auch bei der Relations Language werde ich die Operational Mappings zuerst von der formalen Seite aus vermitteln und sie daran anschlie end in umfassenden und praktischen Beispielen detailliert ausf hren BE a BE lt lt Metamodell gt gt lt lt Metamodell gt gt UML JMI Modell lt lt Script gt gt Transformation QVT lt lt UML gt gt wd Modelle Zz lt lt Script gt gt M2T Code Transformation lt lt Jayva gt gt Code Abb 1 10 Model To Model Model To Text Abgrenzung Die deskriptiven Konzepte Core Language und Relations Language werden also nicht weiter betrachtet obwohl sie f r ein tiefer gehendes Verst ndnis des Transformationsprozesses durchaus interessant sind In diesem Punkt m chte ich auf die entsprechenden Ausf hrungen der Spezifikation Kapitel 7 Relations Language Kapitel 9 The Core Language und Kapitel 10 Relations to Core Transformation verweisen QVT und nat rlich auch auf das ebenfalls in dieser Reihe erschienene Buch OVT Relations Language Nol09 Die QVT definiert mit ihren Sprachen ein Konzept f r die Model To Model M2M Transformation Die Model To Tex
62. gebunden ist Das hei t als Datentypen stehen uns nun die Klassen und die primitiven sowie komplexen Datentypen des Meta modells zur Verf gung Beispiel var srcModel SimpleUML var destModel SimpleRDBM null var classes OrderedSet Class var tables OrderedSet Table Objekte sind an Modelle gebunden Sie beziehen sich stets auf Elemente eines Modells denen damit bestimmte Werte zugewiesen werden k nnen Der Begriff Variable ist genereller hierbei handelt es sich um ver nderbare Elemente die nicht an ein Modell gebunden sind Variablen in diesem Sinne sind frei Auch wenn der Begriff Variable im Grunde genommen der Oberbegriff f r Objekt oder freie Variable ist so m chte ich im Folgenden wie ich es implizit auch bisher getan habe die freien Variablen als Variablen bezeichnen und die an Modelle oder Modellelemente gebundenen Variablen als Objekte Eine Erzeugung von Objekten bedeutet dass im Zielmodell spezielle Elemente angelegt und mit g ltigen Werten versehen werden Das kann auf unterschiedliche Weise geschehen zum einen durch Mapping Operationen auf der Basis von Ele menten des Quellmodells zum anderen durch nline Mapping zum Dritten durch Konstruktoren Die Variante dass Objekte explizit mit Hilfe einer Mapping Ope ration erzeugt werden kennen wir schon Beispiel mapping Package PackageToSchema Schema name self name tables self subobjectsOfType Class gt map ClassToTable
63. gt iL 7s 42 2 Modelle und Metamodelle lt l 7 gt lt ownedType xsi type name superClass isAbstract lt emof Package gt emof Class PrimitiveDataType RownedType 5 false gt lt xml version 1 0 encoding ASCII gt lt emof Package xmi version 2 0 xmlns xmi xmlns xsi http www omg org XMI http www w3 org 2001 XMLSchema instance xmlns emof http emof ecore name SimpleRDBM uri http SimpleRDBMS ecore gt lt la 0 gt lt ownedType xsi type emof Class name RModelElement isAbstract false gt lt ownedAttribute name name upper 1 isComposite false gt lt ownedAttribute name kind upper 1 isComposite false gt lt ownedType gt lt ie 1 gt lt ownedType xsi type emof Class name Schema superClass ownedType 0 isAbstract false gt lt ownedAttribute name tables upper 1 type ownedType 2 isComposite false gt lt ownedType gt jean lt ownedType xsi type emof Class name Table superClass ownedType 0 isAbstract false gt lt ownedAttribute name columns upper a type QownedType 3 isComposite true gt 2 2 Serialisierung der Metamodelle 43 lt ownedAttribute name keys upper 1 type ownedType 4 isComposite true gt lt ownedAttribute name foreignKeys upper 1 type ownedType 5 isComposite true gt
64. gt Attribute postleitzahl Association Hausbesitzer Association Darlehenssiche Refresh Association Show Properties view Association Lage Association Wohnort Remove UUID Annotations Copy Paste Load Resource gt Primitive Data Type String gt Primitive Data Type Integer gt Primitive Data Type Double Selection Parent List Tree Table Tree with Con Abb 2 10 Das Darlehen Modell im SimpleUML 3 Operational Mappings die Sprache Im Mittelpunkt dieses Buches stehen Modelltransformationen mit der QVT Spra che Operational Mappings Die Sprache wird in diesem Kapitel zun chst auf der Basis der formalen Syntax in ihrem Sprachumfang vollst ndig erl utert Dabei m chte ich versuchen alle Sprachkonzepte an einfachen Beispielen zu veran schaulichen Hierzu wird ein QVT Werkzeug eingesetzt SmartQVT welches von Mitarbeitern der France Telecom entwickelt und frei zur Verf gung gestellt worden ist SmartQVT ist von daher interessant weil mit diesem Werkzeug der Sprachumfang von Operational Mappings weitestgehend wenn auch nicht voll st ndig abgedeckt ist Im folgenden Kapitel werden dann einige umfassende Bei spiele zur Anwendung und Vertiefung der Sprache er rtert die im Wesentlichen mit SmartQVT entwickelt worden sind Aber erst einmal zu dem ber hmtesten Programm der Welt 3 1 HelloWorld als QVT Applikation Die Grundlagen einer modellgetriebenen Entwicklung haben wir kennengelernt u
65. im Mittelpunkt steht so m chte ich doch verantwortlichen Projektleitern f r IT Projekte wie auch IT F hrungs kr ften einen Einblick in den Dialog zwischen Modellierung und Transformation geben Zum Thema MDA gibt es weiterf hrende Literatur die ich hiermit erg n zen und erweitern m chte und das Thema UML ist sicher recht ersch pfend be handelt Ebenso w rde ich mir w nschen dass auch Entwickler die sonst eher einen Zugang zu Programmiersprachen und sprachlich repr sentierten Darstel lungsweisen haben durch die Lekt re dieses Buches einige Anregungen finden f r neue Wege und neue Horizonte Dieses Buch diskutiert das Thema Modelltransformation mit Operational Map pings wie ich hoffe ergiebig und ausf hrlich an vielen Beispielen die s mtlich mit den zurzeit verf gbaren QVT Werkzeugen erarbeitet worden sind so dass ich denke ein umfassendes Lehrwerk geschaffen zu haben das nicht nur zum theore tischen Erlernen sondern auch zum begleitenden Experimentieren und ben ge eignet ist Grundkenntnisse der Modellierung mit UML insbesondere im Zusam menhang mit Modellen und Metamodellen setze ich dabei voraus Erfahrungen mit h heren Programmiersprachen sind sicher hilfreich Wie sollte man es lesen Das erste Kapitel die Einleitung soll einen berblick geben und eine Einordnung erm glichen Das n chste Kapitel besch ftigt sich umfassend mit der Entwicklung und Repr sentation von Metamodellen Ein umfassendes Verst
66. insbesondere f r die Durchf hrung von Transformatio nen wie sp ter noch zu sehen sein wird Zur Erstellung von Operational Map pings Transformationen werden wir vorwiegend in folgenden Projektverzeich nissen arbeiten e qvt Die Transformations Scripte zum Beispiel HelloWorld qvt werden in dem Projektunterverzeichnis gvt abgelegt Zudem muss hier eine Hello World properties vorhanden sein in der die Spezifikation der erforder lichen Metamodelle und der Betriebsumgebung der Transformation vorge nommen wird Jeder Compilations Vorgang eines qvt Scriptes erzeugt die Da teien lt name gt message lt name gt qvtast und lt name gt qvtopera tional in denen die bersetzung protokolliert und Zwischenzust nde abgelegt werden 58 3 Operational Mappings die Sprache e model Unterverzeichnis f r die Quellmodelle hier zum Beispiel Bank_Kunden simpleuml ein Modell in der Modellierungssprache SimpleUML e result Die Zielmodelle also zum Beispiel Bank_Kunden simplerdbm oder Hello simplerdbm befinden sich nach einer erfolgreichen Transformation in dem Verzeichnis result e trace Mit jedem Transformationslauf werden gegebenenfalls Protokolle und Log Files angelegt die in dem Verzeichnis traces landen sollen In Abbildung 3 2 ist diese pragmatische Projektorganisation exemplarisch f r das Projekt OM_HelloWorld zu sehen Resource xxxxx HelloWorld2 qvt Eclipse SDK File Edit Navigate Search Project Smart
67. iteriert wird iteratorlist ist eine durch Kommata getrennte Liste von Iteratorvariablen Diese k nnen in der constraint noch mit einer Bedingung verkn pft werden In dem Anwei sungsteil befinden sich dann die Operationen die auf die einzelnen Elemente der SourceCollection angewendet werden forEach iteriert stets ber alle Elemente der SourceCollection und f hrt den Anweisungsteil f r jedes Element aus welches die Bedingung erf llt forOne f hrt den Anweisungsteil nur f r den ersten Treffer aus und bricht die Iteration dann ab assert Ausdruck Der assert Ausdruck ist eine Anweisung um zu pr fen ob bezogen auf ein Objekt eine bestimmte Bedingung gilt Es kann optional eine Fehlermeldung angegeben werden die sofern die Bedingung verletzt ist auf die Konsole geschrieben wird Zudem gibt es ein Fehlerereignis AssertionFailed assert warning error fatal X Z Bedingung 7 9 with log Meldungstext Der Zusicherungstyp error ist als Standard voreingestellt und gilt dann wenn nichts weiter angeben wird Exception Ausdruck Ein Exception Ausdruck berwacht einen Anweisungsteil auf irgendwelche Ausnahmen Falls eine Ausnahme auftritt wird gepr ft ob sich diese in einer Liste von definierten Ausnahmen befindet und wenn das der Fall ist wird eine Ausnahmebehandlung angesto en try berwachter Ausf hrungsteil 78 3 Operational Mappings die Sprache except Liste von Ausnahmen
68. je Attribut eine getter und setter Methode erzeugt werden Auch wenn dies prinzi piell mit Inline Objekterzeugungen machbar ist soll es aus Gr nden der ber sichtlichkeit mit jeweils einer eigenen Mapping Operation geschehen Die Sicht barkeit der getter wie auch der setter Methoden ist nat rlich public denn ber sie soll ja gerade der Zugriff auf die Attribute erlaubt werden Die getter Metho den liefern den Wert des Attributes sie besitzen also denselben Datentyp wie das Attribut das sie repr sentieren 170 4 Operational Mappings Anwendungen getter Methode f r ein Klassenattribut mapping in Property getter Operation name get self name type self type Visibility lt VisibilitykKind publice Die setter Methoden weisen dem Attribut einen Wert zu der als Argument bergeben wird Setter Methoden erhalten also einen Parameter ownedPara meter welcher denselben Datentyp hat wie das Attribut setter Methode mit Parameter f r ein Klassenattribut mapping in Property setter Operation name set self name v s bnL ry Vi s b lat yhoo public ownedParameter object Parameter direction ParameterDirectionKind _in name p_ self name type self type Die Generierung der Bean Klasse wird nun um den Aufruf der Mapping Ope rationen f r die getter und setter erweitert mapping in Class transformClasses Package name SB_ self n
69. jedoch durch Anwendung von geeigneten OCL Mitteln berwindbar ist Denn die Selek tion von Elementmengen auf der Basis des Modells kann man nat rlich auch in hnlicher Weise mit Hilfe von OCL Techniken implementieren Im Folgenden werden nun die OCL Methoden vorgestellt die in diesem Zusammenhang am h ufigsten angewendet werden k nnen collect select unditerate collect collect iteriert ber die Elemente einer Sammlung wendet einen gegebenen Ausdruck auf die Elemente der Sammlung an und liefert eine Menge mit den Er gebniselementen Dies ist eine Untermenge der Ausgangsmenge Syntax lt collection gt gt collect lt iterator gt lt iterator_type gt lt expression gt lt iterator_expression gt Als Argument kann optional eine Iteratorvariable angegeben werden Dann muss ein Ausdruck folgen der die Iteratorvariable verwendet Als Ergebnis kann nat rlich auch einfach der Wert eines Elements zur ckgegeben werden zum Bei spiel die Namen von Attributen die Namen von Klassen etc Mit der folgenden Anweisung werden alle Elemente eines Packages eingesammelt die vom Typ Class sind Beispiel var pckg Package var cls OrderedSet Class cls pckg gt collect elements oclAsType Class asOrderedSet oder cls pckg gt collect p p gt elements oclAsType Class asOrderedSet Die Typanpassungsanweisung oclAsType Class ist erforderlich da die Ergebniselemente der Sammlung ei
70. kennen dass die UML insbesondere in der Welt der Anwendungsentwickler uni versell in mehreren der Entwicklungsaktivit ten eingesetzt werden kann Auch au erhalb der Informatik zum Beispiel in den wirtschaftswissenschaft lichen F chern hat es Einsichten und Entwicklungen gegeben Sachverhalte in der realen Welt mit Hilfe von Modellen und abstrakten Darstellungstechniken zu be schreiben etwa im Bereich der Aufbau und Ablauforganisation von betrieblichen Systemen oder bei der Analyse und Optimierung von betrieblichen Prozessen Oes95 Diesen Weg m chte ich nun nicht wie oben aufzeigen Erw hnenswert ist jedoch dass auch dies in Modellierungssprachen gem ndet ist die formal sind zum Beispiel die aus der Business Process Modeling Initiative BPMI her vorgegangene Business Process Modeling Notation BPMN die sich mittlerweile ebenfalls im Standardisierungsverfahren der Object Management Group OMG befindet 1 2 Die ber hmten Akronyme der OMG Nach dem Abriss der Historie der Modellierungssprachen sollen nun erst einmal ein paar S tze zur OMG und deren Produkten folgen Die OMG ist ein unab h ngiges Gremium welches 1989 unter Beteiligung eines Herstellerkonsortiums mit der Zielsetzung gegr ndet worden ist objektorientierte Technologien zu stan dardisieren OMG Die OMG hat nicht den Auftrag L sungen und Anwendungssysteme zu ent wickeln und auf den Markt zu bringen sondern nur Konzepte und Spezifikatio nen Die Erg
71. komplexer Datentyp f r den Wohnort der Person sowie f r die Lage der Immobilie Mit der Transformation soll nun folgende Aufgabe gel st werden 1 Das Paket darlehen ergibt das Schema dar lehen im SimpleRDBM 2 Zu jeder Klasse die mit dem Merkmal persistent versehen ist wird eine Tabelle gleichen Namens im Schema darlehen angelegt Alle Attribute einer Klasse werden als Columns der Tabelle bernommen 4 Jede Tabelle soll zur Identifizierung zudem ein zus tzliches numerisches Attri but mit dem Namen lt Tabellenname gt ID erhalten 5 Dieses identifizierende Attribut wird zur Bildung des Prim rschl ssels heran gezogen 6 Die Beziehungen werden jeweils als zus tzliche Tabelle angelegt Der Name der Tabelle ergibt sich aus dem Namen der Beziehung 7 Als Attribute werden die identifizierenden Attribute der assoziierten Tabellen bernommen Daraus wird ein Sekund rschl ssel f r die Assoziationstabellen gebildet W Diese Aufgabe wollen wir nun Schritt f r Schritt bearbeiten also los 4 1 1 Vorbereitung der Transformation SimpleUML und SimpleRDBM sind das ist keine berraschung die Modell typen dieser Transformation Die berf hrung des Quellmodells in ein Zielmodell wird mit Mapping Operationen beschrieben Das sind die imperativen Anweisun gen wie im Rahmen der Transformation vorgegangen werden soll Je sichtbares Element in einem Modell wird eine Mapping Operation vorgesehen Sichtbare
72. mapping Class ClassToTable Table name self name columns self subobjectsOfType Attributes gt map AttributeToColumn mapping Attribute AttributeToColumn Column name self name 106 3 Operational Mappings die Sprache Fiir die Generierung von Tabellen in einem Schema wird explizit eine eigene Mapping Operation implementiert Innerhalb des population Abschnittes der Operation PackageToSchema werden die Tabellen erzeugt durch Aufruf des Mappings ClassToTable Analog erfolgt das Anlegen der Spalten in den Ta bellen auf der Basis der Attribute der Klasse mit Hilfe des Mappings Attri buteToColumn Soweit zum klassischen Ansatz des expliziten Erzeugens von Objekten und damit zu den beiden anderen Varianten Objekterzeugung mittels Inline Mapping Operational Mappings stellt zum Erzeugen von Objekten eine spezielle Methode bereit den object Ausdruck mit dessen Hilfe Elemente im Zielmodell angelegt werden k nnen auch ohne dass es hierf r eine explizite Mapping Operation gibt Diese Technik wird als implizites Generieren oder Inline Object Expressions kurz auch Inline Mapping bezeichnet Syntax lt object_name gt object lt iterator gt lt identifier gt lt typespec gt lt expression_list gt tle Der object Ausdruck ist ein population Abschnitt in sich Er besteht in der Signatur aus einem optionalen Iterator einem optionalen Namen und einer Ty
73. name Ist Table tbls first name Class cls name Ist Class clss first name 4 2 Fortgeschrittene Konzepte der Operational Mappings 145 Die Anzeige in der Konsole sollte f r eine Klasse namens Address folgen des Ergebnis zeigen INFO resolveln Class lt Address gt Table lt T_Address gt lst Table lt T_Address gt Class lt Address gt lst Class lt Address gt Mit Hilfe des Late Operators kann die Resolutionsoperation verz gert wer den Alle Resolutionsoperationen w rden unmittelbar ausgef hrt und liefern das bis dahin feststellbare Ergebnis Ein late verz gert die Ausf hrung bis zum Ende der Transformation und liefert dann alle geforderten Objekte 4 2 2 Strukturierung von Transformationen Eine operationale Transformation besteht im Wesentlichen aus Mapping Opera tionen und Hilfsfunktionen Dies kann bei umfassenden Transformationsaufgaben recht komplex werden was schon unser simples Beispiel UML2RDBM gezeigt hat Operational Mappings erlaubt die Auslagerung von Operationen und Komponenten einer Transformation in speziellen Modulen den Bibliotheken libraries wodurch eine Modularisierung und bessere Strukturierung von Transformationsscripten erreicht werden kann Eine library ist ein Modul in dem Operationen Hilfsfunktionen und Typdefinitionen zusammengefasst sind und zum Zweck der Wiederverwendung zur Verf gung gestellt werden Syntax library lt identifier gt lt
74. primaryKeys gt first C 2 UML2EJB 209 foreignkeys object ForeignKey name FK_ self destination name columns 0012 refersTo self destination resolveone Table primaryKeys gt first bj Inline Erzeugung des Prim rschl ssels primaryKeys object PrimaryKey name PK_ self name columns result columns bi fe eee ae eo ee x ia helpers and queries Hi a ee eae x query Attribute getAttributeType String if self type Integer then int else if self type Double then double else if self type String then varchar else if self type Date then date else undefined endif endif endif endif query Association isPersistent Boolean self source kind persistent and self destination kind persistent Va 210 C Operational Mappings Beispiele C2 UML2EJB UML2EJB realisiert die Transformation eines plattformunabh ngigen UML Modells in ein plattformspezifisches UML Modell welchem eine Enterprise Ja vaBean Technologie zugrunde liegt Analog zu den obigen Diagrammen ist mit Hilfe von Stereotypen angezeigt ob die Aktion als Mapping Operation oder ber eine Inline Objekterzeugung implementiert worden ist Beides ist gleicherma en machbar und die Wahl ist ein wenig willk rlich Aus Gr nden der bersichtlich keit ist der Fluss der Objekte in diesen Diagrammen nicht modelliert Ein Modell besteht aus einem oder mehreren Packages de
75. sonstige Behandlung von Assoziationen wird nicht weiter behandelt Die Fachklassen erfahren eine aufw n digere Behandlung dahingehend dass aus einer Fachklasse eine EJB Komponente generiert wird bestehend aus der Bean Klasse und den Schnittstellen Home und Remote Interface transformClasses Fiir jedes Attribut der Fachklasse wird in der Bean Klasse eine getter und setter Methode erzeugt zun chst einmal nur mit der Signatur Aus dem Grund kann die Ver ffentlichung der getter und setter Methoden auch in gleicher Weise im Re mote Interface erfolgen 212 C Operational Mappings Beispiele F r die Klasse werden Inline die SessonBean Methoden generiert und im Ho me Interface erfolgt die Publizierung der Standard SessionBean Methoden NameBeanPackage aS rr oo ee _ ee lt lt inline gt gt nm nn u En CreateBeanClass lt lt inline gt gt CreateRemotelnterface nameRemotelnterface E lt lt mapping gt gt 2 transform ttributes lt lt mapping gt gt transformOperations lt lt mapping gt gt setter lt lt inline gt gt getSBOperations lt lt mapping gt gt getter lt lt mapping gt gt setter En ee ne En mn mn m Te Einline gt gt CreateHomelnterface nameHomelnterface lt lt inline gt gt getHomeMethods Abb C 6 Das Mapping von Fachklassen C 2 UML2EJB 213 Das Transformationsscript UML2EJB Das Metamodell f r das
76. speziellen Unterklassen besitzen mapping Class ClassToTable Table when self kind persistent and self specific null init var superattrs Sequence Attribute Einsammeln der von der generellen Oberklasse ererbten Attribute if self general lt gt null then superattrs self general gt attributes gt getSuperAttributes gt flatten endif Einsammeln der primitiven Attribute self leafAttributes self attributes gt getLeafAttributes gt flatten makeTable name self name Attribute der Klassen auch von komplexen Datentypen columns self leafAttributes gt map leafAttrToColumn gt asOrderedset Attribute aus Vererbungsbeziehungen columns superattrs gt map attributeToColumn gt asOrderedset makePrimaryKey Inline columns object Column name self name _ID type int kind primary primaryKeys object PrimaryKey name PK_ self name columns result columns kind primary ta C 1 UmlToRdbm 207 SuperAttributes sind die Attribute der generellen Oberklasse query Attribute getSuperAttributes Sequence Sequence object Attribute name self name type self type In LeafAttributes werden die Attribute mit primitiven Datentypen eingesammelt query Attribute getLeafAttributes in prefix String an pkind string
77. transformPackage nestedPackage self ownedMember Class gt map transformClasses Ziel Classifier packagedElement self ownedMember DataType gt map transformDatatypes packagedElement self ownedMember Interface gt map transformInterfaces 4 168 4 Operational Mappings Anwendungen packagedElement self ownedMember Association gt map transformAssociations Die Fachklasse im Quellmodell ergibt ein Package im Zielmodell dem Na men des Packages wird der Pr fix SB_ vorangestellt Das Package das eine SessionBean repr sentiert erh lt als packagedElements mit Hilfe von nline Objekterzeugungen die Bean Klasse und deren Interfaces die jeweils durch die Namenserg nzung Home und Remote kenntlich gemacht werden Die Bean Klasse wie auch die Interfaces bekommen die Sichtbarkeit public mapping in Class transformClasses Package name SB_ self name packagedElement object Class name self name visibility 4s Weer bala yh ine public fachlichen Attribute und Businessmethoden ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations i7 Hinzuf gen der Interfaces zum Zielmodell Home Interface packagedElement object Interface name self name Home visibility i VisibDilitykind public Remote Interface packagedElement
78. vornehmen indem diese wie ein einfacher Zuweisungs ausdruck implementiert wird Der Ausdruck kann aus der simplen Zuweisung eines Wertes oder aus einem OCL Ausdruck bestehen Beispiele helper simpleSetNamel str String String str helper simpleSetName2 str String String return str helper simpleSetName3 str String String if str then NULL else str endif query Class isPersistent Boolean self kind persistent query Association isPersistent Boolean self source kind persistent and self destination kind persistent 3 5 6 Intermediate Data Dynamische Metaobjekte Dynamische Metaobjekte sind Klassen oder Eigenschaften die dem Metamodell zur Ausf hrungszeit einer operationalen Transformation hinzugef gt werden Das Konzept der dynamischen Metaobjekte wird in QVT mit Intermediate Data be zeichnet Intermediate Data sind Metaattribute oder Metaklassen die im Rahmen einer Transformation definiert werden und w hrend der Ausf hrung dieser Trans formation allen operationalen Konstrukten mappings queries helper zur Verf gung stehen Syntax intermediate abstract class lt class_name gt lt class_definition gt intermediate property lt metaobject_type gt lt property_name gt lt property_type gt 3 5 Operationale Transformationen 113 Als Intermediate Data ist die Definition von Intermediate Classes und Proper ties zugelassen mit Intermed
79. werden nun die Mapping Operationen mindestens so weit aus formuliert dass alle Elemente im Zielmodell mit ihren Namen erzeugt werden Zudem k nnen wir gleich die erforderliche Aufrufreihenfolge implementieren dazu m ssen wir uns noch einmal das UML2 Metamodell vor Augen halten l Packages k nnen als ownedMembers unterschiedliche Elemente enthal ten 2 Dabei handelt es sich um PackageableElements vom Typ Package oder Type 3 Und Types wiederum sind Classifier vom Typ Class DataType Interface Association 4 Wenn es sich bei den Elementen die als PackageableElements in Pake ten enthalten sind selbst um Packages handelt dann erfolgt die Referenzie rung ber nestedPackage 5 Wenn es sich um Elemente vom Typ Classifier handelt dann erfolgt die Referenzierung ber packagedElement Bei all diesen Merkmalen handelt es sich nat rlich generell um ownedEle ments oder auch ownedMembers Dies sind allerdings Attribute von abstrakten Metaklassen die nicht ver ndert werden d rfen die also bei einer Zuweisung von Werten zur Erzeugung des Zielmodells nicht zur Verf gung stehen mapping in Package transformPackages Package name self name die ownedklements sind Packages nestedPackage self ownedMember Package gt map transformPackage die ownedElements sind Classifier packagedElement self ownedMember Class gt map transformClasses packagedElement self ownedMember DataType g
80. wiederum Collections sind dann werden diese Elemente der Zielmenge hinzuge f gt diese Methode ist auch auf Bag und Sequence definiert includes obj type Boolean true falls obj ein Element der Collection ist sonst false includesAll coll Collection Type Boolean true falls die untersuchte Collection self alle Elemente der gegebe nen Collection coll enth lt sonst false including obj Type Set Type die neue Menge enth lt alle Elemente von self zuz glich obj diese Metho de ist auch auf Bag und Sequence definiert intersection set Set Type Set das Ergebnis ist die Schnittmenge der Mengen self und set intersec tion ist ebenfalls definiert auf Bag isEmpty Boolean true falls die untersuchte Collection self leer ist sonst false notEmpty Boolean true falls die untersuchte Collection self nicht leer ist sonst fal se oclAsType Type Type liefert das Objekt self als einen neuen Typ oclAsType ist eine Methode zum Anpassen von OCL Typen type casting von Objekten D 2 Die wichtigsten OCL Standardfunktionen 231 oclIsKindOf Type Boolean true falls das Objekt self konform zu dem angegebenen Type ist d h der Type ist entweder gleich dem angegebenen Type oder gleich dem Supertype oclisTypeOf Type Boolean true falls das Objekt self von dem angegebenen Type ist size Integer die Anzahl der Elemente in einer Collection sum Type di
81. www w3 org 2001 XMLSchema instance xmlns ecore http www eclipse org emf 2002 Ecore name SimpleUML nsURI urn SimpleUML ecore nsPrefix SimpleUML gt lt eClassifiers xsi type ecore EClass name ModelElement gt lt eStructuralFeatures xsi type ecore EAttribute name name lowerBound 1 eType ecore EDataType http www eclipse org emf 2002 Ecore EString gt lt eStructuralFeatures xsi type ecore EAttribute name kind lowerBound 1 eType ecore EDataType http www eclipse org emf 2002 Ecore EString gt 196 B Metamodelle in serialisierter Darstellung lt eStructuralFeatures xsi type ecore EAttribute name id eType ecore EDataType http www eclipse org emf 2002 Ecore EString aD true gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name PackageElement eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name namespace eType Package eOpposite Package ownedElement gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Package eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name elements upperBound 1 eType PackageElement containment true eOpposite PackageElement namespace gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Classifier eSuperTypes Package
82. zu unter st tzen Allgemein ist ein Element eine Einheit eines Systems Hier wird mit Element sowohl eine Einheit eines Modells wie auch eine Klasse eines Metamodells adressiert So ist zum Beispiel Konto ein Element des Darlehensmodells und die Metaklasse Class ein Element des Metamo dells Elemente des Metamodells stehen in Transforma tionen als Datentypen zur Verf gung Der Entrypoint ist der definierte Startpunkt einer Trans formation In operationalen Transformationen wird der Entrypoint durch die main Funktion festgelegt 238 Glossar Exception Extension Expression Fachklasse ForeignKey Fremdschliissel Funktion Guard Library Implementation Model Die main Funktion ist eine Operation die ein Mapping von den Modellen impliziert die Gegenstand Argu mente der Transformation sind siehe Ausnahme Extension ist ein spezieller Beziehungstyp der im Rah men des UML Profilkonzepts zur Spezialisierung von Metaklassen definiert ist Mittels einer Extension wird eine Metaklasse mit einem Stereotyp assoziiert siehe Ausdruck Eine Fachklasse oder auch Gesch ftsklasse ist eine Klasse in dem fachlichen Modell einer Anwendung Fachklassen werden im Allgemeinen modelliert im Rah men der CIM und der PIM siehe Fremdschliissel Ein Fremdschliissel ForeignKey dient zur Referenzie rung von Datens tzen in relationalen Datenbanken Mit einem Fremdschl ssel in einer Tabelle wird eine B
83. zuzuordnen Die Bedingung wird dem Datentyp als Guard innerhalb von zugewiesen In diesem Zusammenhang sei darauf hingewiesen dass es sich bei den um explizite Symbole der Sprache handelt und nicht wie bisher verwendet die Symbole der Backus Naur Form Weil es sich um reservierte Symbole der Sprache handelt werden die hier fett hervorgehoben typedef lt typename gt lt defined_typename gt lt guard gt Beispiele 1 Definition eines Package namens TopLevelPackage das keine ber geordneten Elemente haben darf typedef TopLevelPackage Package _parentInstance null 2 AttributeOrOperation ist jedes Element Any das entweder vom Typ Attribut oder Operation ist typedef AttributeOrOperation Any Attribute or Operation ist eine abgek rzte Schreibweise Shorthand f r die Methode isTypeOf 3 4 OCL und QVT Grundlagen 71 Also ausf hrlich ohne Shorthand typedef AttributeOrOperation Any self isTypeOf Attribute or self isTypeOf Operation J 3 Activity sind Actions die mit dem Stereotyp Activity verse hen sind typedef Activity ActionState stereotypedBy Activity 3 4 2 Deklaration von Variablen Die Deklaration von Variablen und Objekten erfolgt mit dem Schl sselwort var Mit der Deklaration kann unmittelbar auch eine Wertzuweisung vorgenommen werden var lt name gt lt datatypename gt lt value_assig
84. 2 und Eclipse Springer Verlag 2006 Hesse W More Matters on Meta Modeling Software And Systems Modeling 4 2 2006 IEEE Recommended Practice for Architectural Description of Soft ware Intensive Systems Architecture Working Group of the Soft ware Engineering Standards Committee of the IEEE Computer Soci ety New York 2000 Ihns O Harbeck D Heldt S Koschek H EJB3 professionell dpunkt Verlag 2007 Jacobson I Object Oriented Software Engineering Pearson Educa tion 1992 Kecher C UML 2 0 Das umfassende Handbuch Galileo Comput ing 2006 Kleppe A Warmer J Bast W MDA Explained The Model Driven Architecture Practise and Promise Addison Wesley 2003 Kleppe A Warmer J The Object Constrained Language Getting your Models ready for MDA Addison Wesley Professional 2003 Korff A Modellierung von eingebetteten Systemen mit UML und SysML Spektrum Akademischer Verlag 2008 K hne T Matters on Meta Modeling Software and Systems Mo deling 4 2 2006 Lecture Notes in Computer Science Model Driven Engineering Languages And Systems Springer Verlag 2007 Ludewig J Models in Software Engineering an Introduction Software And Systems Modeling 2 1 2003 Marca D McGowan CL Structured Analysis And Design Tech nique McGraw Hill 1988 Martin J Odell JJ Object Oriented Analysis And Design Prentice Hall Englewood Cliffs 1992 McAffer et al Eclipse Rich Client Platform Addison Wesley 2005 McMenamin
85. 2293 3_4 Springer Verlag Berlin Heidelberg 2010 118 4 Operational Mappings Anwendungen a Modellierung Transformation See SimpleUML Fachliche s lt SimpleUML Modellierung Darlehen simpleuml lt lt Script gt gt du TOM lt Metanocdell SimpleRDBM lt SimpleRDBM gt Darlehen simplerdbm ere ionelle u al m Abb 4 1 Transformationspattern der Transformation UmlToRdbm Erinnern wir uns noch einmal an das Modell Darlehen simpleunl das in Kapitel 2 als Beispiel eines SimpleUML Modells vorgestellt worden ist Abbil dung 4 2 Hausbesitzer lt persistents Darlehenssicherheit Abb 4 2 Das Package darlehen ein simples UML Diagramm 4 1 UML2RDBM 119 Das Modell besteht aus den Klassen Immobilie Person Konto Ort die untereinander in Beziehung stehen Person repr sentiert die Klasse der Personen die Immobilien mit Hilfe einer Wohnungsbaufinanzierung erwerben wollen In der Beziehung zu den finanzierten Immobilien sind sie die Haus besitzer Immobilie stellt die Klasse der Finanzierungsgegenst nde dar Zur Finanzierung wird zwischen den Personen und einem Kreditinstitut hier vertreten durch die Klasse Konto ein Darlehensgeschaeft vereinbart Das Konto dient zur Dokumentierung und buchhalterischen Abrechnung des Darlehens geschaefts Die Immobilie ist auf der einen Seite das finanzierte Objekt auf der anderen Seite die Darlehenssicherheit in der Finanzierung Die Klasse Ort ist ein
86. 90 Colomb et al The Object Management Group Ontology Definition Metamodel Ontologies for Software Engineering and Software Technology Springer 2006 Czarnecki K Eisenecker U Generative Programming Methods Tools and Applications Addison Wesley 2000 Date CJ Darwen H Foundation for Object Relational Databases The Third Manifesto Pearson Professional Education 1998 Date CJ An Introduction to Database Systems Addison Wesley 1999 Daum B Java Entwicklung mit Eclipse 3 3 dpunkt Verlag 2008 DeMarco T Structured Analysis And System Specification Pearson Education 1979 DIN 66001 Informationsverarbeitung Sinnbilder und ihre Anwen dung Beuth Verlag 1983 DIN 66261 Informationsverarbeitung Sinnbilder fiir Struktogram me nach Nassi Shneiderman Beuth Verlag 1985 Duddy K Gerber A Lawley M Raymond K Language Features for Re Use and Maintainability of MDA Transformations OOPSLA amp GPCE Workshop 2004 Friedrich J Hammerschall U Kuhrmann M Das V Modell XT Springer Verlag 2008 Gronback RC Eclipse Modeling Project A Domain Specific Lan guage Toolkit Addison Wesley Professional 2008 Gru06 Hes06 IEEE 1471 Thn07 Jac92 Kec06 Kle03a Kle03b Kor08 Kue06 ILNCSO7 Lud03 Mar88 Mar92 Mca05 Mcn88 Mel02 Mel04 Mey88 Mey90 Mon01 INSD73 Nol07 Literatur 257 Gruhn V Pieper D R ttgers C MDA Effektives Softwareenginee ring mit UML
87. AN Be fr chao accalec chains ZLO A E SimpleUMLTC editor_1 0 0 jar 59KB Exe B fr obao accalso chain 2 1 0 2007 SimpleUMLTC tests_1 0 0 jar 11 KB Exe F SimpleUMLTC_1 0 0 jar 27KB Ex O fr obeo acceleo ecore ui_2 1 0 2 w Yv 4 l gt 14 Objekt e ausgew hlt 118 KB 7 Arbeitsplatz a Abb 2 9 Als Eclipse Plugins ver ffentlichte Metamodelle Es wird ein einfaches SimpleUML Modell erzeugt zum Beispiel das Modell Darlehen simpleuml das mit den Mitteln des EMF im SimpleUML Model Editor modifiziert werden kann Abbildung 2 10 Und dies ist nun das Modell beziehungsweise eines der Modelle die im folgenden Kapitel im Zentrum der Betrachtung stehen werden 2 2 Serialisierung der Metamodelle 51 Ke platform resource Modellierung model Darlehen simpleuml E Package Darlehen gt Attribute grundbuch New Child 4 gt Attribute Flur New Sibling gt Attribute flurstueck lt 2 Undo Set Bue gt Attribute verkehrswert gt Attribute beleihungswe Hedy Sun gt Attribute lage of Cut lt gt Class Konto bed gt Attribute leistung gt Attribute zahlungsmod gt Attribute beginn Delete gt Attribute ende Attribute nennbetrag Validate El gt Class Person Control bed Attribute name z gt Attribute vorname Ausf hren als Attribute alter Debug ausf hren als gt Attribute einkommen Team lt gt Attribute wohnort Compare With Class Ort Replace with gt Attribute ort Topcased
88. B B Anweisungen call A Eine Relation ist auf der einen Seite ein Konzept der re lationalen Datenbanktheorie eine Relation definiert dann eine Menge von Beziehungen zwischen Attributen die in Form einer Datenbanktabelle organisiert werden auf der anderen Seite wird mit Relation eine g ltige Beziehung zwischen Elementen eines formalen Modells bezeichnet Die deskriptive Transformationssprache Rela tional Language basiert auf dem Konzept der Relationen zwischen Modellen und Modellelementen Resolution bedeutet die Verfolgung und Aufl sung von Objekten innerhalb einer Transformation Die Modell elemente die im Rahmen einer Transformation angefasst oder erzeugt worden sind werden in einem Trace ver waltet so dass zu einem sp teren Zeitpunkt auf sie Bezug genommen werden kann Wenn zum Beispiel aus einer Klasse eine Tabelle erzeugt worden ist dann wird dies festgehalten und bei einem sp teren Bearbeiten von Be ziehungen zwischen den Klassen kann man die aus der jeweiligen Klasse entstandene Tabelle mittels Resolution feststellen Rumpf Sammlung Schema Schleife Schnittstelle Scope Selektion Glossar 245 Der Rumpf oder Body ist eine geschlossene Einheit eines komplexeren Gebildes der QVT Operational Map pings Nahezu jedes imperative Konstrukt der Sprache besteht aus einer Signatur und einem Rumpf Der Rumpf enth lt in der Regel die Folge der imperativen Anweisun gen zur L sung
89. Begriff Software Engineering Bau68 Bau93 aus der Taufe gehoben Analog zu den traditionellen Ingenieursdisziplinen hat man es zu einem der wesentlichen Prinzipien des Software Engineerings gemacht sich bei der Ent wicklung von Software nicht unmittelbar mit der Fertigung der Programmierung zu besch ftigen sondern die Sachverhalte und Strukturen der realen Welt in meh reren aufeinander folgenden Abschnitten zu erschlie en und mit abstrahierenden Darstellungstechniken wie Skizzen Diagrammen oder Modellen zu beschreiben Einen typischen wenn auch etwas vereinfacht dargestellten Entwicklungsprozess in dem die Erstellung von Software ber mehrere Phasen erfolgt zeigt das Dia gramm in Abbildung 1 1 in dem die Phasen nach den Rollen der mitwirkenden Personen gegliedert sind blicherweise beginnt die Entwicklung mit einer Beschreibung der betrieb lichen Sachverhalte und Gegebenheiten Dies liegt in der Verantwortung der fach S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_1 Springer Verlag Berlin Heidelberg 2010 2 1 Einf hrung lichen Experten wobei ein Analytiker bereits zuarbeiten und unterst tzen kann In der folgenden Phase vertieft ein Analytiker die betrieblichen Beschreibungen und neben der Kl rung weiterer fachlicher Fragen erfolgt eine Formalisierung f r den folgenden Entwicklungsschritt Im Rahmen der Konzeption fertigt ein Designer den Entwurf des zu implementierenden Systems an we
90. E ES ONE ER ER ENSUREESTRSE ESEEE ERSTE EEIOERORTR 233 AbKurziinssverzeichn susanne nennen 251 QuellenverzeichniS seeccsececsececsececsecccoccecsececsececsececsececsececsececseeccseccssecessecesseees 255 PTGS LE rna a nee ne EERS 253 R ferenzen IM Internet cscrcsnininneniesnip nanoen ia Eas 258 Abbildungsverzeichnis Abb 1 1 Abb 1 2 Abb 1 3 Abb 1 4 Abb 1 5 Abb 1 6 Abb 1 7 Abb 1 8 Abb 1 9 Abb 1 10 Abb 1 11 Abb 2 1 Abb 2 2 Abb 2 3 Abb 2 4 Abb 2 5 Abb 2 6 Abb 2 7 Abb 2 8 Abb 2 9 Abb 2 10 Abb 3 1 Abb 3 2 Abb 3 3 Abb 3 4 Abb 3 5 Abb 3 6 Abb 3 7 Abb 4 1 Der klassische Anwendungsentwicklungsprozess SWE Analyse Spezifikation und Implementierung bersicht ber die Diagramme der UML Ein modellgetriebener Anwendungsentwicklungsprozess Der MDA Entwicklungsprozess Das MDA Transformationspattern Ein exemplarisches MDA Transformationspattern Ein einfaches Metamodell f r die Modellierungssprache Shapes Architektur der QVT Sprachen Model To Model Model To Text Abgrenzung Die Architektur der QVT Entwicklungsumgebung Transformation UML Klassendiagramme nach ERM Schemata Das Metamodell SimpleUML als UML Klassendiagramm Das Wohnungsbaukreditgeschaft als Simp 1eUML Modell Das Metamodell SimpleRDBM Das Wohnungsbaukreditgesch ft als SimpleRDBM Modell SimpleUML im Topcased Ecore UML Editor Generierung der Metamodelle Deployment der Metamodelle Als Eclipse Plugins ver ffentl
91. Element gt lt eClassifiers xsi type ecore EClass name Class eSuperTypes Classifier gt lt eStructuralFeatures xsi type ecore EReference name forward upperBound 1 eType Association eOpposite Association destination gt lt eStructuralFeatures xsi type ecore EReference name reverse upperBound 1 eType Association eOpposite Association source gt lt eStructuralFeatures xsi type ecore EReference name attributes upperBound 1 eType Attribute containment true eOpposite Attribute owner gt lt eStructuralFeatures xsi type ecore EReference name general upperBound 1 eType Class eOpposite Class specific gt B 2 Ecore Repr sentation 197 lt eStructuralFeatures xsi type ecore EReference name an upperBound 1 eType class eOpposite Class general gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Attribute eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name owner eType 4 Class eOpposite Class attribute gt lt eStructuralFeatures xsi type ecore EReference name type eType Classifier gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Association eSuperTypes PackageElement gt lt eStructuralFeatures xsi type ecore EReference name destination
92. Elemente sind die Metaklassen die als nicht abstrakte Klassen zur Modellierung verwendet werden k nnen In SimpleUML Modellen sind dies Packages Classes Associations und Attributes Auch PrimitiveData types geh ren nat rlich dazu die jedoch ignoriert werden sollen da diese als nicht persistent nicht in das Zielmodell bernommen werden sollen Wir erhalten somit folgende Mapping Operationen 120 4 Operational Mappings Anwendungen modeltype UML uses SimpleUML modeltype RDBM uses SimpleRDBM transformation UmlToRdbm in uml UML out rdbm RDBM main Main Body mapping Package PackageToSchema Schema Mapping Body mapping Class ClassToTable Table Mapping Body mapping Association AssociationToTable Table Mapping Body mapping Attribute AttributeToColumn Column Mapping Body j Die Abarbeitung erfolgt von oben nach unten beziehungsweise von au en nach innen das u erste Element eines Modells ist das Modell an sich also ein Package das das Modell repr sentiert Modelle sind grunds tzlich Gegenstand der main Funktion In einem Modell befinden sich ein oder mehrere weitere Pa kete Demzufolge wird das Mapping von Paketen aus der main Funktion ausge l st Pakete enthalten als sichtbare Elemente Classes und Associations Classes enthalten Attributes Damit ergibt sich f r die Mapping Operatio nen folgende Aufrufs
93. Entity true Das DB Schema wird erzeugt und als Tabellen werden die Klassen ber cksichtigt bei denen isEntity true Ge mapping Package createSchema Schema name self name tables self elements asType Class gt map ClassToTable mapping Class ClassToTable Table when self isEntity name self name 3 5 Operationale Transformationen 115 Beispiel 2 Die Klasse Entity und die Package Eigenschaft entities transformation Intermediate in source UML out target RDBM eine Intermediate Metaklasse f r persistente Klassen intermediate class Entity name lt SLING kind lt lieing bi die Metaklasse Package erh lt ein zus tzliches Attribut entities als Liste von persistenten Klassen intermediate property Package entities Sequence Entity main source objects Package gt map getEntityClasses source objects Package gt map createSchema alle Elemente vom Typ Class werden gepr ft und wenn sie als persistent gekennzeichnet sind werden sie der Liste der entities hinzugef gt mapping inout Package getEntityClasses name self name entities self subobjectsOfType Class gt map getEntities mapping Class getEntities Sequence Entity when self kind persistent result Sequence object Entity name self name kind self kind bi mapping Packa
94. Immobilie Konto und Person mit Prim rschl sseln 4 1 7 Aufl sen von Beziehungen Fremdschl ssel Die Tabellen f r die Beziehungen Darlehenssicherheit Hausbesitzer und Darlehensgeschaeft zwischen den persistenten Klassen sind bereits angelegt worden Diese Tabellen repr sentieren zwar die Beziehungen sie reali sieren sie aber noch nicht vollst ndig Dazu ist es erforderlich dass die aus den assoziierten Klassen stammenden Tabellen in den Assoziationstabellen refe renziert werden Genauer gesagt die Prim rschl ssel der referenzierten Tabellen werden in der Assoziationstabelle als Fremdschl ssel hinzugef gt Halten wir uns dazu noch einmal die Metamodelle SimpleUML und SimpleRDBM vor Augen Abbildung 2 2 und 2 4 In den einfachen Metamo dellen sind ausschlie lich bin re Beziehungstypen zwischen Klassen erlaubt In einer Association sind die untereinander in Beziehung stehenden Klassen ber die Eigenschaften source und destination zu erreichen Die Bezie hungen werden im Relationenschema durch ForeignKeys in den entsprechen den Assoziationstabellen realisiert Die ForeignKeys referenzieren die Pri maryKeys der beteiligten Tabellen Fangen wir erst einmal mit dem an was wir haben der Assoziationstabelle mit einem Namen 4 1 UML2RDBM 139 mapping Association AssociationToTable Table when self source kind persistent and self destination kind persistent name self name Als n chstes sollen
95. L2EJB in ein EJB Komponentenmodell umlejb berf hrt welches in der Designphase unter plattformspezifischen Gesichtspunkten weiter bearbeitet werden kann Hier entscheidet sich zum Beispiel welcher Applikationsserver und welches Datenbanksystem f r die Realisierung eingesetzt werden und die Modellierung kann unter diesen Aspekten an dem generierten Modell fortgef hrt werden 4 3 2 Das UML2 Metamodell Wie bereits beim vorigen Beispiel mit den simplen Metamodellen SimpleUML und SimpleRDBM so ben tigen wir auch hier tiefgehende Kenntnisse des UML2 Metamodells denn das Metamodell ist ja der zentrale Datentyp f r die Transformation Einen Eindruck von der Komplexit t des UML2 Metamodells er h lt man aus den Abbildungen 4 11 und 4 12 welche die Zusammenh nge im Kontext der Strukturdiagramme Kernel Structure Classes zeigen Es handelt sich dabei um einen Ausschnitt der abstrakten Syntax der strukturbeschreibenden Elemente aus der UML2 Superstructure UML2 1 UML Sprachmittel sind generell von der Metaklasse Element UML Elemente in strukturbeschreibenden Diagrammen sind im Allgemeinen benannt NamedElement und sie haben eine Sichtbarkeit visibility 3 Elemente k nnen weitere Elemente besitzen ownedElement owned Elements repr sentiert also alle Elemente die zu einem strukturierten Ele ment Namespace oder Package geh ren 4 NamedElements werden als member beziehungsweise ownedMember in Namensr umen Namespace
96. ML Profil ist zum Beispiel die Spezi fikation der SysML SysML Weil08 eine UML2 basierte Modellierungssprache die insbesondere f r Systems Engineering entwickelt worden ist Bei den Erweite rungsmerkmalen handelt es sich um Stereotypen UML2 MOF Ein Stereotyp ist eine Klasse des UML Metamodells Die Zuordnung eines Stereotyps zu einer Metaklasse erfolgt durch eine sogenannte Erweiterungsbeziehung Extension 4 4 1 Definition und Untersuchung eines UML Profils Im Rahmen von MDA Techniken werden Stereotypen oft zur Steuerung von Transformationen herangezogen Als Beispiel wollen wir uns noch einmal mit persistenten UML Klassen besch ftigen Doch zuvor erst wieder einige einfache Einblicke um ein wenig Gef hl f r die Arbeit mit Stereotypen zu bekommen indem folgende Aufgabe zu bearbeiten ist Alle Stereotypen eines Quellmodells sind erstens zu Stereotypen und zweitens zu Klassen gleichen Namens in einem Zielmodell zu transformieren Zuerst wird ein einfaches UML Profil definiert in dem die Metaklasse Class mit dem Stereotyp lt lt persistent gt gt versehen wird Zur Modellierung des Pro fils soll wieder einmal das UML Werkzeug Topcased bem ht werden Abbildung 4 17 zeigt das UML Profil ProfileDef mit dem Stereotyp lt lt per sistent gt gt der mit der Metaklasse Class assoziiert ist genauer es handelt sich um eine Extension Beziehung die im Metamodell auf Stereotypen definiert ist 176 4 Operational Mappings Anwendung
97. Metaelemente fett hervorgehoben 2 2 Serialisierung der Metamodelle 39 Bei EMOF Dateien handelt es sich um formale Modelle im XMI Format Das EMOF Package repr sentiert das jeweilige Metamodell hier die Metamodelle SimpleUML und SimpleRDBM Die Struktur der Datei entspricht dem Metamodell f r UML Klassendia gramme Packages k nnen in diesen ownedTypes besitzen als solche zum Beispiel Klassen Datentypen Eine Klasse kann ownedAttributes oder ownedOperations besitzen Mit der Eigenschaft isAbstract kann spezifiziert werden ob es sich um eine abstrakte Metaklasse handelt ob die Metaklasse also als Instanz in Mo dellen verwendet werden kann oder nicht isAbstract false rue Die Eigenschaft superclass einer Metaklasse referenziert wenn sie eine Auspr gung besitzt deren Oberklasse in einer Generalisierungsbeziehung Die Eigenschaft type eines Attributes referenziert dessen Datentyp opposite referenziert die assoziierte Metaklasse sofern das Attribut aus einer Beziehung zwischen Metaklassen resultiert Und isComposite dr ckt aus ob es sich dabei um eine Kompositionsbezie hung handelt Die Elemente einer EMOF Datei werden von 0 beginnend implizit nummeriert hier angedeutet durch die Kommentarzeilen Die Referenzierung der Elemente untereinander erfolgt ber eine Bezugnahme auf diese Ordnungszahlen Zum Beispiel adressiert superClass ownedType 0 die Metaklasse UMLModelElement als Superklasse von Package L
98. Name der Konfigurationsdatei FHAONL 1 g UL d LOIMSe_LIl Cc http SimpleUML ecore Simp leRDBM nsURI http SimpleRDBM ecore StringLib nsURT http StringLib govt StringLib uri platform resource OM_Library qvt StringLib qvtoperational SimpleUML nsURI 150 4 Operational Mappings Anwendungen 4 2 3 Wiederverwendbarkeit von Mapping Operationen Eine M glichkeit der Strukturierung und Wiederverwendung haben wir damit kennengelernt den Import von Transformationen und Modulen Nun m chte ich eine weitere Option der Wiederverwendung in Operational Mappings vorstellen die Sprache Operational Mappings bietet mehrere M glichkeiten der Wiederver wendung von Mapping Operationen an inherits merges und disjuncts Syntax mapping in out inout lt modeltype gt lt elementtype gt lt methodname gt in out inout lt argname gt lt argtype gt _ lt resulttype gt lt resulttype gt when lt pre conditions gt where lt post conditions gt inherits lt methodname gt lt methodname gt merges lt methodname gt lt methodname gt disjuncts lt methodname gt lt methodname gt 1 771771 1 ee lt mapping_body gt Eine Mapping Methode kann eine oder mehrere Mapping Operationen erben Diese ererbten Methoden werden implizit ausgef hrt ohne dass sie per map An weisung explizit aufgerufen werden m ssen Genauer gesagt wenn eine Mapping Operation A die
99. Objektresolution bei der Generierung der Assoziationstabelle mapping Association AssociationToTable Table foreignKkeys object Foreignkey name self source name _FK refersTo self source resolveone Table keys T7 foreignKeys object ForeignKey name self destination name _FK refersTo self destination resolveone Table keys ta Der Fremdschliissel einer Tabelle referenziert eine andere Tabelle die zuvor generiert worden ist Zum Zeitpunkt der Transformation einer Assoziation self sind die Tabellen zu den assoziierten Klassen self source und self destination bereits erzeugt worden und mit self source resolveone Table beziehungsweise self destination re solveone Table kann man genau die letzte Tabelle adressieren und deren keys ermitteln resolve w rde jeweils alle generierten Tabellen lie fern was in diesem Fall allerdings nicht brauchbar ist da nur von der letzten die keys ben tigt werden Spezielle Resolution Eine spezielle Resolution ist auf eine spezielle Mapping Operation bezogen Syntax late resolveln resolveoneln invresolveln invresolveoneln lt mapping_identifier gt lt resolve_condition gt Der Zugriff auf Objekte die in einer Mapping Operation erzeugt worden sind erfolgt mit resolveIn Ausdr cken e resolveln wird angewendet auf ein Objekt des Quellmodells Geliefert wird eine Liste aller Zielobjekte die inner ha
100. PIM Modell wie auch f r das PSM Modell ist UML2 modeltype UML uses http www eclipse org uml2 2 1 0 UML transformation UML2EJB in umlfk UML out umlejb UML Ein UML Modell besteht aus einem oder mehreren Packages main umlfk objectsOfType Package map transformPackage Ein Package besteht aus Packages Classes Datatypes Interfaces und Associations mapping Package transformPackage Package name self name nestedPackage self ownedElement Package gt map transformPackage nestedPackage self ownedElement Class gt map transformClasses packagedElement self ownedElement DataType gt map transformDatatypes packagedElement self ownedklement Interface gt map transformInterfaces packagedElement self ownedklement Association gt map transformAssociations PE en u en en en en x Transformation von Fachklassen x aN IE er Te RTT aa ee x Je Fachklasse wird eine SessionBean Komponente in Form eines Packages erzeugt mapping in Class transformClasses Package name SB_ self name Die Fachklasse ist Bestandteil dieser Komponente packagedElement object Class name self name Visibility VisibilityRind private mit ihren Attributen und Operationen ownedAttribute self ownedAttribute gt map transformAttributes 214 C Operational Mappings Beispiele ownedOperation self ownedO
101. QVT QvtSource Run Window Help a ST Q O Q E I Resource sad e ee Java Ve OM_HelloWorld fa B src Za IRE System Library JDK1 6 H Plug in Dependencies H E bin H E META INF H E model 2 Bank_Kunden myuml A Helloworld myurl B gyt HelloWorld1 message p D Helloworldi properties we Q Helloworldi qvt A Helloworldi gvtast N HelloWorld1 gytoperational A E result HelloWorld this transformation generate RDBMS Schema with name HelloWorld 5 transformation HelloWorld li inout target 6 gt main target objects Schema gt map createSche O mapping Schema createSchema Schema name HelloWorld QYT HelloWorld1 qvt Ee AB B Fo 12 HelloWorld launch E HelloWorld3c launch Parsing MyHelloworld launch Begining of parse job baren alii plugin xml BZ gt gt Parsing done in 31 miliseconds Opening model file DEBUG gwtoperationalfile D projekte MDA projec E 8 HelloWorld target RDBM main Compiling main java file m raat ina Jasa Dlinmin Fila Fa create Schema Schema Schema E7 eae gt Creating plugin xml file Ir Writable Is A Insert Abb 3 2 Ein exemplarisches QVT Projekt 3 2 Die Operational Mappings Plattform SmartQVT 59 3 2 3 Entwicklung und Durchf hrung von Transformationen Zum ffnen und Bearbeiten von Dateien mit dem Dateityp qvt dien
102. S Palmer J Strukturierte Systemanalyse Hanser 1988 Mellor SJ Balcer MJ Executable UML A Foundation for Model Driven Architecture Addison Wesley 2002 Mellor SJ Kendall S Uhl A MDA Destilled Addison Wesley Pro fessional 2004 Meyer B Object Oriented Software Construction Prentice Hall 1988 Meyer B Objektorientierte Softwareentwicklung Hanser 1990 Monson Haefel R Enterprise JavaBeans O Reilly 2001 Nassi I Shneiderman B Flowchart Techniques for Structured Pro gramming SIGPLAN Notices 8 1973 http www geocities com SiliconValley Way 4748 nsd html letzter Abruf 04 2009 Nolte S Modelle und Metamodelle im Eclipse Kontext Objekt Spektrum Heft 6 11 12 2007 258 Quellenverzeichnis Nol08a Nol08b Nol09 Oes95 Par72 Pet06 Pet62 Pet63 Rei91 Rum91 Rum93 Rum04 Se103 Sha04 Sta73 Sta07 Ste07 Wei08 Wir93 Nolte S Eclipse steht Modell Anwendung eines MDA Konzeptes auf der Eclipse Plattform EclipseMagazin Band 15 3 2008 Nolte S Modelle und Transformationen eine pragmatische Be trachtung der MDA QVT ObjektSpektrum Heft 5 08 2008 Nolte S QVT Relations Language Springer 2009 sterle H Business Engineering Prozess und Systementwicklung Springer 1995 Parnas D On the Criteria to Be Used in Decomposing Systems Into Modules Communication of the ACM No 12 Vol 15 1972 Petrasch R Meimberg O Model Driven Architecture dpu
103. Seren Nolte 7 7 w 2 Q v a x lt Xpert press Die Reihe Xpert press vermittelt Professionals in den Bereichen Softwareentwicklung Internettechnologie und IT Management aktuell und kompetent relevantes Fachwissen ber Technologien und Produkte zur Entwicklung und Anwendung moderner Informationstechnologien Siegfried Nolte QVT Operational Mappings Modellierung mit der Query Views Transformation va Springer Siegfried Nolte Beethovenstr 57 22941 Bargteheide siegfried nolte alice dsl net ISBN 978 3 540 92292 6 e ISBN 978 3 540 92293 3 DOI 10 1007 978 3 540 92293 3 Springer Heidelberg Dordrecht London New York Xpert press ISSN 1439 5428 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie detaillierte bibliografische Daten sind im Internet tiber http dnb d nb de abrufbar Springer Verlag Berlin Heidelberg 2010 Dieses Werk ist urheberrechtlich geschiitzt Die dadurch begriindeten Rechte insbesondere die der Uber setzung des Nachdrucks des Vortrags der Entnahme von Abbildungen und Tabellen der Funksendung der Mikroverfilmung oder der Vervielfaltigung auf anderen Wegen und der Speicherung in Datenver arbeitungsanlagen bleiben auch bei nur auszugsweiser Verwertung vorbehalten Eine Vervielfaltigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetze
104. Symbole einfache Variablendeklaration volle Variablendeklaration mit Modelltyp und Typ Initialisierung einer Variablen Wertzuweisung mit ifwithResult Property false Jnitialisierung mit ifwithResult Property true Hinzuf gen von Elementen zu einer Liste Entfernen von Elementen aus einer Liste arithmetische Multiplikation arithmetische Division arithmetische Addition Stringkonkatenation arithmetische Subtraktion Adressierung eines Attributes oder Methode von einem Objekt gt Adressierung von Elementen einer Liste und dessen Merkmal Trennung von Ausdriicken Trennung von Elementen einer Liste Beginn einer komplexen Folge von Ausdr cken Ende einer komplexen Folge von Ausdr cken Beginn einer Parameter oder Argumentenliste Ende einer Parameter oder Argumentenliste Vergleich auf Gleichheit Vergleich auf Gleichheit lt gt Vergleich auf Ungleichheit Vergleich auf Ungleichheit lt kleiner als gt gr er als lt kleiner oder gleich A 2 Ableitungsregeln 183 gt gr er oder gleich and logisches und or logisches oder xor logisches exklusives oder not logisches nicht true logisches wahr false logisches falsch map Aufruf einer Mapping Operation Referenzierung des Zielmodells in Mapping Operationen Trennsymbol zum Beispiel in Iterationsausdr cken Shorthand f r die OCL Funktion isKindOf Shorthand f r die OCL Funktion isKindOf Kommentar bis zum Ende d
105. Technologie 5 Spalte synthetische 139 Spezialisierung 88 Spezifikation 13 Sprachkonzept 53 Sprachschema 22 Sprachtyp 20 Standardausgabe 54 Standardbibliothek OCL 79 Standardfunktion OCL 79 Standardfunktion QVT 81 Standardfunktion QVT 79 Standardmethode 66 171 Stereotyp 175 Steuerungsvorgang 4 StructuralFeature 161 Struktogramm 4 Struktur 1 6 Strukturdiagramm 6 Strukturierung 127 145 Subelement 123 Subklasse 88 Subobjekt 124 Subsystem 11 Suffix 135 superclass 161 Superklasse 88 Syntax 18 27 53 Syntax abstrakte 158 Syntaxerkennung 162 SysML 175 System 11 System betriebliche 5 T Tabelle 32 Technik generative 9 Technologie 1 3 11 Teile Ganzes Beziehung 7 Teilmenge 84 128 Terminierungsbereich 68 Texteditor 57 Texterg nzung 59 162 Timingdiagramm 8 Topcased 25 Tracing 141 Tragf higkeit 13 Transformation 10 14 19 67 86 93 Transformation bidirektional 22 Transformation unidirektional 22 Transformationsablauf 68 Transformationsanweisung 64 Transformationsbereich 10 Transformationskonfiguration 60 Transformationspattern 16 27 117 Transformationsphase 117 141 Transformationsplattform 45 Transformationsprojekt 56 Transformationsrumpf 94 Transformationsschritt 9 13 Transformationsumgebung 46 Transformator 28 Types 159 U Umgebung 12 UML 19 UML2 Modeling Toolkit 25 UML2 Metamodell 158 UML Elemente 158 UML Klassendiagramm 117 UMLModelElement 30 UML Profil 175 UML Sprachmit
106. View ist die Beschreibung einer Sicht wie das Ergebnis im Zielmodell aussehen soll Zum Beispiel k nnen wir es in einem UML Quellmodell mit Packages Classes Attributes oder Associations zu tun haben und im RDBM Zielmodell mit Schemas Tables Columns e T Transformation ist der Prozess das konkrete Quellmodell mit der defi nierten Query zu ermitteln und in das Zielmodell zu berf hren Das QVT Prinzip liegt also darin dass zum einen mit Hilfe einer Query in e1 nem Quellmodell ein spezielles Teilmodell selektiert wird Auf der anderen Seite wird in einem Zielmodell eine bestimmte View beschrieben als Zielschema f r den transformierten Modellausschnitt Und zum Dritten wird mit Hilfe einer Trans formation eine berf hrung des Quellmodells in die View in das Zielmodell vor genommen Mit Transformationen ist es ebenso m glich die Konsistenz von Mo dellen zu untersuchen oder gar zu erzwingen In der Spezifikation der QVT gibt es grunds tzlich zwei Vorgehensweisen Transformationen zu beschreiben 20 1 Einf hrung 1 Deskriptiver Ansatz Es wird ein zu bearbeitender Ausschnitt des Quellmodells beschrieben die Query und die Form des Zieles im Zielmodell Die Durchf hrung der Trans formation wird einem QVT Interpreter berlassen 2 Imperativer oder operationaler Ansatz Die berf hrung eines Quellmodells in ein Zielmodell erfolgt durch Program mierung des Transformationsprozesses in Form von operativen Trans format
107. XML Abk rzungsverzeichnis 253 SmartQVT Simple MDA Project Software Software Entwicklung Unified Modeling Language Unified Resource Identifier XML Metadata Interchange Extensible Markup Language Quellenverzeichnis Literatur Ake0l Bal00 Bau68 Bau93 B z05 Boe76 Boe8 1 Boe86 Boo91 Boo94a Boo94b Boo05a Akehurst D Behzad B On Querying UML Data Models with OCL In Proceedings of the 4 International Conference on The Unified Modeling Language Modeling Languages Concepts and Tools Springer Verlag 2001 Balzert H Lehrbuch der Software Technik Software Entwicklung Spektrum Akademischer Verlag Berlin Heidelberg 2000 Bauer FL et al Software Engineering Proceedings of the NATO Conference on Software Engineering Garmisch Partenkirchen 1968 Bauer FL Software Engineering wie es begann Informatik Spektrum16 Springer Verlag 1993 B zevin J On the Unification Power of Models Software and Sys tems Modeling 4 2 2005 Boehm BW Software Engineering IEEE Transactions on Com puters Vol 25 No 12 1976 Boehm BW Software Engineering Economics Prentice Hall 1981 Boehm BW A Spiral Model of Software Development and En hancement Software Engineering Notes Vol 25 No 4 1986 Booch G Object oriented Design with Applications Benja min Cummings 1991 Booch G Object oriented Analysis and Design with Applications Benjamin Cummings 1994 Booch G Objekt orientier
108. aket ist ein Gruppierungselement in UML Dia grammen Metamodelle werden grafisch in Form von Klassendiagrammen modelliert die Elemente von kom plexen Metamodellen kann man ebenfalls mit Paketen gruppieren und strukturieren Das Metamodell selbst ist ein Paket namens metamodel Parameter sind Merkmale von Funktionen die in der Sig natur der Funktion formal deklariert und bei deren Aufruf durch Argumente aktualisiert werden Parameterdefini tionen sind Bestandteil der Signatur von Programmkom ponenten Wenn Funktionen einen gleichen Namen besit zen aber unterschiedliche Parameterdeklarationen dann handelt es sich um unterschiedliche Funktionen Das Parsen st das Pr fen eines Programms auf syntak tische Korrektheit Das Parsen erfolgt durch Ableiten des Programmcodes unter Verwendung der Regeln eines ge gebenen Produktionssystems Sofern eine g ltige Ablei tung m glich ist ist der Programmcode ein korrekter Ausdruck der gegebenen Sprache Persistenz bedeutet die dauerhafte Speicherung von Da ten oder Objekten Mit dem Merkmal persistent kann man im Modell Elemente kennzeichnen die Kandidaten f r eine Datenhaltung sind Platform Independent Model Plattform Plugin Population Pr dikat Prim rschl ssel PrimaryKey Glossar 243 PIM Einbringung konzeptioneller berlegungen und auch nicht fachlicher Anforderungen losgel st von einer speziellen Entwicklungs und Betriebsplattform f r das zu ent
109. al Mappings Anwendungen Und da es sich bei QVTO um die Auskopplung aus einem kommerziellen und verbreiteten MDA Werkzeug handelt ist es allemal interessant so dass wir uns im folgenden Beispiel UML2EJB damit besch ftigen wollen Wie SmartQVT ist QVTO ein Eclipse Plugin welches aus folgenden Komponenten besteht e einem QVT Editor dem Operational OVT Editor welcher kontinuierlich eine Syntaxpr fung vornimmt e einem QVT Interpreter dem Operational OVT Interpreter welcher die Operational Mappings Scripte interpretiert und ausf hrt _ olx Fie Edit Source Refactor Navigate Search Project SmartQVT Run Window Help J C3 gt 3 e ia Jav vOrav H o r evr lar E amp Java larvae _ v modeltype UML uses http SimpleUML ecore modeltype RDB uses http MyRDBM ecore 4 Bank_Kunden simpleuml Bank simpleuml transformation HelloWorld in inmodel UML Darlehen simpleuml out outmodel RDB qvt fr main 2 HeloWorldi qvto New 2 HellooWorldBB qvt F3 S 7 ur f en Bopersiona ovt Eror ass 9 Bank_Kunden my Show In ooo trace RS re 32 HelloWorld qvtotr Copy Ctrl C System Editor chema E O_QVTOCL Copy Qualified Name _ In Place Editor EDO Cimnlaum annn _ _ Paste Ctrl V Default Editor v2 s a Outine amp Delete Delete imports metamodels gt amp http SimpleuML ec__ Refa
110. altensdiagramme sind die Diagrammtypen die zur Darstellung des funkti onalen Verhaltens von Systemen dienen Es handelt sich hierbei zum Beispiel um Anwendungsfalldiagramme Aktivit tendiagramme und Zustandsdiagram me Au erdem z hlen dazu die Diagramme die unter dem Oberbegriff Interak tionsdiagramme zusammengefasst sind also Sequenzdiagramm Kommunika tionsdiagramme und weitere e Anwendungsfalldiagramm Anwendungsf lle sind die systemgest tzten Vorg nge oder Prozesse eines betrieblichen Umfelds einer betrieblichen Organisationseinheit Anwen dungsf lle beschreiben das System so wie es sich aus der Sicht von be stimmten Akteuren darstellt oder darstellen soll In einem etwas weiter ge 8 1 Einf hrung fassten aber durchaus blichen Verst ndnis kann man Anwendungsf lle mit Gesch ftsprozessen gleichsetzen e Aktivit tendiagramm Mit Aktivit tendiagrammen werden die betrieblichen Prozesse und Aktivi t ten der betrachteten realen Welt in ihren zeitlichen und logischen Abl u fen modelliert Aktivit tendiagramme z hlen zu den zentralen Diagramm typen die zur Modellierung von Prozessen und betrieblichen Abl ufen dienen Die zeitlichen Abl ufe ergeben sich aus dem Kontrollfluss die lo gischen Abl ufe aus dem Datenfluss e Zustandsdiagramm Ein Zustandsdiagramm ist ein weiteres Modell um Verhalten zu modellie ren in Form von Zust nden und Zustands berg ngen Dabei geht es im Allgemeinen um das Verhalten von Kl
111. ame packagedElement object Class name self name Visibility Visitor latyhing ss pub l15 Attribute und fachliche Operationen ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations getter und setter ownedOperation self ownedAttribute gt map getter ownedOperation self ownedAttribute gt map setter bi Interfaces 4 3 Transformation von UML Modellen 171 Schritt 5 Standardmethoden f r die Organisation der Bean Klasse Die Bean Klasse ist damit weitgehend fertiggestellt Es fehlen allerdings noch die Standardmethoden zur Erzeugung und Kontrolle von SessionBeans im Applika tionsserver Es handelt sich hierbei um die Deklaration der Methoden die in der Spezifikation der Enterprise JavaBeans Technology EJB Version 2 0 als Stan dard f r die Implementierung von EJB Klassen definiert worden sind Es gibt auch hier wieder mehrere M glichkeiten die Generierung vorzunehmen In die sem Fall soll dies in Form von nline Objekterzeugungen geschehen die in einer helper Operation gekapselt sind helper getSBOperations Sequence Operation return Sequence object Operation name gt setSessionContext visibility t Visib1lityK ind public by object Operation name ejbCreate Visi bidity Visio ryhine ss publ 1c by object Operation name ejbPostCreate visibility Visibility nd p
112. ame columns result columns weitere Ma nahmen zur Erzeugung der Spalten Auch hier werden zur Identifizierung explizit eine neue synthetische Spalte mit numerischem Wertebereich und ein Prim rschl ssel hinzugef gt Mit der Anwei sung result columns wird auf die zuvor erzeugte Tabellenspalte columns zugegriffen die damit f r die Bildung des Prim rschl ssels benutzt wird Die weiteren Ma nahmen in der auf der Basis der Klassenattribute die Spalten der Tabelle gebildet werden m ssen der Erzeugung des Prim rschl ssels folgen an dernfalls w rden die bis dahin generierten Tabellenspalten zu dem Prim rschl s sel hinzugezogen was wir nicht wollen Besser ist es f r das identifizierende At tribut einen eigenen Namen zu verwenden um Konflikte mit den Spalten der Ta belle zu vermeiden mapping Class ClassToTable Table when self kind persistent name self name Erzeugung des Prim rschl ssels mittels einer Inline Objekterzeugung idColumn object Column name self name _ID type int 4 1 UML2RDBM 137 columns idColumn Inline Erzeugung einer Prim rschl ssels keys object Key name PK_ self name columns idColumn weitere Ma nahmen zur Erzeugung der Spalten Alternativ zu der expliziten Erzeugung einer synthetischen identifizierenden Spalte k nnen auch speziell markierte Attribute der Quellklasse zur Aufbereitung des
113. anksystem wir als Plattform einsetzen wollen wir gehen aber davon aus dass es sich um ein relationales Datenbanksystem han deln wird foreignKeys Abb 2 4 Das Metamodell SimpleRDBM e Alle Elemente des SimpleRDBM Modells sind RModelElements e Konzeptionelle Datenbankmodelle bestehen aus relationalen Datenbanksche mata Schemas im Sprachgebrauch des SimpleRDBM e Schemas sind die ordnenden Elemente von konzeptionellen Datenbankent w rfen Sie k nnen tables vom Typ Table enthalten e Die tables besitzen columns e Eine Tabelle kann mehrere Prim rschl sselattribute keys besitzen die zur Indizierung und eindeutigen Identifizierung der Tabelleneintr ge dienen e Einkey wird aus einer Liste von columns der Tabelle gebildet 2 1 Die Metamodelle SimpleUML und SimpleRDBM 33 e Zudem kann es einen oder mehrere Fremdschl ssel foreignKeys geben Diese referenzieren andere Tabellen indem deren Prim rschl ssel als fo reignKeys bernommen werden e Alle Elemente eines SimpleRDBM haben ein Merkmal name und kind Das Metaattribut name muss stets einen definierten Stringwert besitzen kind nicht Abbildung 2 5 zeigt ein stark vereinfachtes Wohnungsbaukreditgesch ft als Beispiel eines relationalen Datenbankschemas im SimpleRDBM Modell Dieses Schema kann aus dem SimpleUML Modell wie in Abbildung 2 3 vorgestellt durch Modelltransformation generiert werden Immobilie_PK Konto_PK Person_PK Immobilie _ID
114. apping gt gt ClassToTable rh lt lt mapping gt gt AssociationToTable rh Abb C 1 Das Operational Mappings Script Um1ToRdbm im berblick ClassToTable und AssociationToTable hier im Modell dargestellt als CallBehaviorActions UML sind komplexer sie werden detailliert in den Diagrammen C 2 und C 3 beschrieben ClassToTable In einem Initialisierungsblock Abbildung C 2 werden die Attribute der Klasse ermittelt und zwar in Form von flachen Listen Das hei t in der Funktion get LeafAttributes wird eine Liste aufbereitet in der alle Attribute primitive Datentypen besitzen Sofern ein Attribut eine Klasse als komplexen Datentyp be sitzt wird getLeafAttributes rekursiv mit dieser Klasse als Argument auf gerufen F r das Zwischenspeichern der primitiven Attribute dienen in diesem C 1 UmlToRdbm 203 Beispiel die Objekte LeafAttributes der dynamisch erzeugten Klasse Lea fAttribute EEE lt lt mapping gt gt ClassToTable 4 oe Sp Fu lt lt query gt gt lt lt query gt gt getSuper ttributes getLeafAttributes superattributes leafAttributes i eT 0 A EEE Population makeTable lt lt mapping gt gt attributeToColumn makePrimarykey 0 EEE EEE EEE EEE Abb C 2 Die Mapping Operation ClassToTable im berblick getSuperAttributes sammelt die ererbten Attribute einer Superklas
115. ass extends Classifier composes attributes Attribute ordered opposites owner 1 references general Classifier ordered opposites specific class Association extends PackageElement source Class 1 opposites reverse destination Class 1 opposites forward class PrimitiveDataType extends Classifier metamodel SimpleRDBM abstract class RModelElement kind 2 Bering name String class Schema extends RModelElement composes tables Table ordered opposites schema 1 class Table extends RModelElement composes columns Column ordered opposites owner 1 composes keys Key ordered opposites owner 1 composes foreignKeys ForeignKey ordered opposites owner 1 2 2 Serialisierung der Metamodelle 37 class Column extends RModelElement type String class Key extends RModelElement references columns Column ordered opposites keys class ForeignKey extends RModelElement references refersTo Key 1 references columns Column ordered opposites foreignKey 2 2 2 OVT Datenstrukturen im EMOF XMI Format Das EMOF Konzept der OMG beschreibt einen Ansatz unter Verwendung for maler Modellierungssprachen Metamodelle f r andere formale Modellierungs sprachen zu entwickeln MOF Wie bereits mehrfach und immer wieder gern ge sagt ein gangbarer Weg hierf r ich m chte nicht sagen der ein
116. assen Das Verhalten einer Klasse wird mit Zust nden modelliert die sie im Laufe ihrer Lebenszeit Life cycle annehmen kann Zwischen den einzelnen Zust nden kann es Zu stands berg nge geben die durch Ereignisse ausgel st werden e Sequenzdiagramm Mit Sequenzdiagrammen wird der Informationsaustausch zwischen belie bigen Kommunikationspartnern innerhalb eines Systems oder zwischen Systemen generell modelliert Die Grundelemente einer Interaktion sind Kommunikationspartner die durch Lebenslinien repr sentiert sind und Nachrichten die von einem Partner dem Sender zu einem anderen Part ner dem Empf nger geschickt werden e Kommunikationsdiagramm Mit Kommunikationsdiagrammen wird der Nachrichtenaustausch zwischen Komponenten von komplexeren Systemen modelliert Die Kommunika tionspartner sind die Einheiten einer komplexen Struktur dies sind zum Beispiel Komponenten oder Rollen beziehungsweise Akteure e Interaktions bersichtsdiagramm Interaktions bersichtsdiagramme kommen in modellierten Systemen zum Tragen die aus einem Gro teil an Interaktionsdiagrammen bestehen Mit Interaktions bersichtsdiagrammen ist eine Gruppierung und bersicht lichere Anordnung dieser Diagramme m glich e Timingdiagramm Ein Timingdiagramm zeigt das zeitliche Verhalten von Klassen in einem modellierten System Timingdiagramme sind also wie auch andere Ver haltensdiagrammtypen Klassen zugeordnet die ein in diesem Fall zei
117. ateSchema Schema init name self name end Operational Mappings Scripte bestehen wie wir sehen aus einer einleitenden Angabe der Metamodelle Dies kann entweder wie oben durch Definition entspre chender QVT Datentypen im Script erfolgen oder alternativ durch die Referenzie rung von verfiigbaren Metamodellen in einem generellen Austauschformat zum Beispiel XMI Das Wesentliche eines Operational Mappings Scriptes ist nat rlich die Trans formationsanweisung In der Transformation ist in Form von Mapping Operatio nen die Behandlung von bestimmten Modellelementen beschrieben hier zum Bei spiel das Mapping von Packages nach Schemas Mapping Operationen beste hen aus speziellen zum Teil optionalen Bl cken in denen die Operation vor bereitet init beschrieben population und nachbehandelt end wird Beispiel mapping Package createSchema Schema init log Initialisierung population leg Durehf hrung name self name end log Terminierung Vorbereitung und Nachbehandlung sind optional eine population ist immer erforderlich wobei die Angabe des Schl sselwortes population weggelassen werden kann 3 3 Allgemeiner Aufbau von Operational Mappings Scripten 65 Manche Werkzeuge sehen die Klammerung des population Blocks und das entsprechende Schl sselwort auch gar nicht erst vor wie zum Beispiel das QVT Operational der Eclipse Modeling Tools Initiative mit dem wir uns s
118. ation gt 186 A Die Syntax der Operational Mappings lt type_reference gt lt extent_location gt lt complex_type gt lt complex_type_key gt lt collection_key gt lt scoped_identifier gt lt scoped_identifier_list gt lt expression_list gt lt expression_semi_list gt lt expression_comma_list gt lt expression_block gt lt expression_statement gt Syntax for Helper Operations lt helper gt lt helper_ header gt lt helper_info gt lt helper_kind gt lt helper_decl gt lt helper_simple_def gt lt helper_compound_def gt Syntax for Constructors lt constructor gt lt constructor_header gt lt constructor_decl gt lt constructor_def gt lt scoped_identifier gt lt complex_type gt lt identifier gt lt complex_type_key gt lt collection_key gt lt typespec gt Tuple lt declarator_list gt Dict lt typespec gt lt typespec gt lt collection_key gt Dict Tuple Collection Set OrderedSet Sequence Bag List lt identifier gt lt identifier gt lt scoped_identifier gt lt scoped_identifier gt lt expression_semi_list gt lt expression gt lt expression gt 1 lt expression gt lt expression gt lt expression_list gt lt expression gt lt expression_block gt lt helper_decl gt lt helper_simple_def gt lt helper_compound_def gt lt helper_info gt lt scoped_iden
119. bankschemata Programme Konfiguratio nen graphische Oberfl chen etc erfolgen kann Das an sich ist schon in gewisser Weise ein Vorantreiben der Entwicklung durch Modellierung also modellgetrie bene Software Entwicklung MDSD Der modellgetriebene Vorgehensprozess besteht nicht allein aus Modellie rungsaktivit ten Ein wesentlicher Teil der Entwicklung der letzten Jahre liegt zum Beispiel darin Softwarekomponenten auf der Basis von Modellen generativ zu erstellen Diesen Gedanken dass die Software Entwicklung der Zukunft aus den Schritten Modellieren Generieren Installieren Konfigurieren besteht hat man schon mit der strukturierten Software Entwicklung verfolgt und mit den Computer Aided Software Engineering CASE Werkzeugen bis zu einer gewis sen Reife gebracht Allerdings haben sich auch Grenzen gezeigt Noch ist die Ak tivit t der Programmierung nicht wegzudenken Doch nach wie vor wird an der Idee die Routinet tigkeiten der Codierung durch generative Techniken zu unter st tzen intensiv und durchaus mit Erfolg gearbeitet Cza00 Sta07 AMDA OAW MDA mittlerweile ein eingetragenes Warenzeichen der OMG und MDSD verfolgen prinzipiell die gleichen Ziele MDA geht jedoch einen Schritt weiter und schl gt vor dass ein modellgetriebenes Vorgehen in einem st ndigen Wechsel von Modellierungs und Transformationsschritten erfolgt Das hei t sofern eine Mo dellierungsaktivit t bis zu einem gewissen Ergebnis bearbeitet worden i
120. ches gleicherma en Quellmodell wie auch Ziel modell ist inout Jede Transformation besitzt im Allgemeinen eine main Funktion die gewis serma en als Einstieg in den Transformationsablauf dient Die main Funktion umfasst in der Regel die Anweisung zur Transformation der Modelle Sie besteht aus einer beliebigen Anzahl von allgemeinen OCL Anweisungen und aus dem Aufruf von speziellen Mapping Operationen in denen die Umwandlung von ei nem Modellelement in ein anderes konkreter spezifiziert ist Der Ausf hrungsteil einer Mapping Operation besteht aus einem optionalen Initialisierungsbereich init aus einem optionalen Terminierungsbereich end und einem obligatorischen Hauptteil population wobei die Angabe des Schl sselwortes population und die Klammerung wiederum optional sind Eine Mapping Operation kann durch jeweils einen optionalen when Block und where Block erg nzt werden in dem die Vorbedingung beziehungsweise der jeweils geltende Zustand der Operation beschrieben sind Soweit der kurze Abriss der vielleicht schon ausreicht um einfache Transformations Scripte zu erstellen Doch nun soll erst einmal die Operational Mappings Sprache in ihrer gesamten Breite vorgestellt werden 3 4 OCL und QVT Grundlagen Im vorhergehenden Kapitel ist etwas oberfl chlich der Aufbau von Operational Mappings Scripten behandelt worden aber immerhin schon so weit dass man da mit bereits einfache Modelltransformationen beschreiben kann wobei aller
121. chf hrung von Transformationen he rangezogen werden sollen Die Syntax von Modellierungssprachen deren Aufbau und Struktur wird mit Hilfe von UML Klassendiagrammen spezifiziert Dies kann nat rlich nicht so stehen bleiben ohne an einem Beispiel veranschaulicht zu werden package Shapes E E lt Model gt 9 lt Package gt Shapes H lt Class gt Block A lt Class gt ModelElement E E lt Class gt Arrow lt Class gt Shape lt Class gt SimpleShape g lt Class gt Square B B lt Class gt Triangle lt Class gt Circle lt Generalization gt SimpleShape g lt Class gt RootBlock lt Association gt amp _ lt modelElement gt _ lt block gt lt Association gt A lt arrow gt _ lt shape gt lt Association gt A_ lt arow gt _ lt shape gt lt Association gt 4 lt shape gt _ lt arrow gt lt ssociation gt 4 lt shape gt _ lt arrow gt lt amp ssociation gt A_ lt block gt _ lt modelElement gt lt Association gt A_ lt block gt _ lt modelElement gt lt Association gt A_ lt arrow gt _ lt shape gt lt ssociation gt A_ lt arrow gt _ lt shape gt LA Class Diagram Shapes Additional Resources OB HH HH HH HB Abb 1 8 Ein einfaches Metamodell f r die Modellierungssprache Shapes 1 2 Die ber hmten Akronyme der OMG 19 Abbildung 1 8 zeigt ein einfaches Metamodell und das dazugeh rige UML Modell im Eclipse UML2 Framework f r eine Model
122. chl sselwort refe rences oder composes vorangestellt 90 3 Operational Mappings die Sprache references impliziert dass das Attribut aus einer einfachen Beziehung re sultiert wohingegen composes eine Kompositionsbeziehung zwischen Klassen zugrunde legt Mittels opposite kann die in Beziehung stehende Klasse mit ihrem Namen angegeben werden Mit reference composed und opposite werden jeweils die Assoziationsenden von in Beziehung stehenden Klassen be schrieben Mit dem optionalen Hinzuf gen einer wird dann noch notiert dass das referenzierende Attribut nicht navigierbar ist Die Eigenschaften von Klassen k nnen mit Multiplizit tsangaben versehen werden womit ausgedr ckt wird ob es sich um einfache Elemente oder um Sammlungen handelt Die Multiplizit t wird in der in UML blichen Weise ange geben zum Beispiel 1 O 1 0 Sammlungen k nnen geordnet sein was mit dem Zusatz ordered ausgedr ckt wird Beispiel metamodel SimpleUML eigene primitive Datentypen und Aufz hlungstypen primitive STRING enum ClassType primitive complex Metaklassen abstract class ModelElement Jedes Modellelement besitzt einen Namen name STRING 1 Das Attribut kind muss nicht notwedigerweise eine Auspr gung haben kind STRING 0 1 abstract class PackageElement extends ModelElement abstract class Classifier extends ModelElement type ist der Typ des Class
123. cht notwendigerweise als Operational Map pings Scripte vorliegen Es ist auch m glich insbesondere dann wenn die Bib liotheken keine Mapping Operationen enthalten dass diese in einer anderen Pro grammiersprache implementiert sind Hier deutet sich ein Verfahren des Black box Konzepts an mit dem wir uns noch besch ftigen werden Die Einbindung von Transformationen mit access erlaubt es auch diese als Ganzes zu sehen und zu benutzen Dies entspricht dem Konzept des Imports von Paketen in h heren objektorientierten Programmiersprachen Um die Komponen ten des importierten Moduls anwenden zu k nnen muss dieses zuvor mittels new als Instanz erzeugt worden sein Wenn Transformationen auf diese Weise benutzt werden dann stehen auch die QVT Standardfunktionen die auf sie definiert sind zur Verf gung 148 4 Operational Mappings Anwendungen Syntax var retcode new lt transformation gt lt modelname gt gt transform Beispiel Die Transformation Um1ToRdbm aus dem vorigen Kapitel sei zugrunde gelegt transformation UmlToRdbm in uml UML out rdbm RDBM Nehmen wir einmal an das Quellmodell soll ein sauberes Modell sein indem zuvor alle redundanten Elemente eliminiert werden Dies soll mit Hilfe der Transformation UmlCleaning erfolgen transformation UmlCleaning inout uml UML Die berf hrung eines UML Modells in ein RDBM Modell unter dem As pekt dass das Quellmodell z
124. cl letzter Ab ruf 12 2008 Eclipse Modeling Tools http www eclipse org modeling mdt letzter Abruf 12 2008 Meta Object Facility http www omg org mof letzter Abruf 12 2008 medini QVT http projects ikv de qvt letzter Abruf 12 2008 Eclipse Model to Model Project http www eclipse org modeling m2m letzter Abruf 12 2008 Eclipse Model to Text Project http www eclipse org modeling m2t letzter Abruf 12 2008 openArchitectureWare http www openarchitectureware org letz ter Abruf 12 2008 Object Constraint Language http www omg org technology documents formal ocl htm letzter Abruf 12 2008 Object Management Group http www omg org letzter Abruf 04 2009 260 Quellenverzeichnis QVT QVTO SMDA SQVT SysML TOP TOPDOC UML UML2 XMI ZOO1 Z002 MOF Query Views Transformation http www omg org spec QVT 1 0 letzter Abruf 12 2008 QVT Operational http wiki eclipse org M2M Operational_QVT_Language_ 28QV TO 29 letzter Abruf 12 2008 Simple MDA Project http www siegfried nolte de forum mda smda html letzter Abruf 12 2008 SmartQVT http smartgvt elibel tm fr doc index html letzter Abruf 12 2008 Systems Modeling Language http www omgsysml org letzter Abruf 12 2008 Topcased http topcased mm gforge enseeiht fr website modeling uml download html letzter Abruf 12 2008 Topcased Documentation http topcased mm gforge enseeiht fr website m
125. core B HelloworldS properties 3 HelloWorldS gyt i IA HelloWorldS qvtast Helloworld5 gvtoperational B Outline E HelloWorld source UML Q target RDBM maint createHellof Schema Package args 0 platform resource OM_HelloWorld model HelloWorld args 1 platform resource OM_HelloWorld result HelloWorlc 22 04 2009 18 10 58 fr tm elibel smartowt stdlibs QwtLib ENF INFO Saving platform resource OM_HelloWorld result Hellol HelloworldS gyt OM_HelloWorld qvt Abb 3 1 Die Operational Mappings Plattform SmartQVT 2 Transformationsprojekte werden in einer Navigatorsicht Project Explorer oder Package Explorer angezeigt und verwaltet siehe Abbildung 3 1 oben links 3 Daneben gibt es einen Editor Bereich mit Editoren f r die Bearbeitung von QVT Scripten wie zum Beispiel hier Hel LoWorld5 qvt siehe Abbildung 3 1 oben rechts Der QVT Editor ist ein Texteditor der diverse Optionen bie tet beispielsweise Hervorheben der Operational Mappings Syntax Texterg n zung und in gewissen Grenzen automatisches Parsen und Erkennen von syn taktischen Fehlern 3 2 Die Operational Mappings Plattform SmartQVT 57 4 Die Bearbeitung von Modellen und Metamodellen wird in SmartQVT mit den Bordmitteln von Eclipse genauer dem Eclipse Modeling Framework EMF vorgenommen Das EMF stellt dazu entsprechende XML basierte Editoren bereit zum Beispiel den SimpleUML Model Editor
126. createSchema XXX_ mapping Package createSchema prefix String Schema name prefix self name 3 5 Operationale Transformationen 99 Mit den zul ssigen aber optionalen Richtungsmerkmalen ergibt sich fol gender Ausdruck mapping in Package createSchema in str String out Schema name str self name Die Richtungsangabe inout in Mapping Signaturen ist dann angebracht wenn das Quellmodell und das Zielmodell identisch sind Beispiel transformation uml2uml inout srcUml UML main srcUml objects Class gt map mapClasses mapping inout Class mapClasses name self name anstelle von mapping in Class mapClasses out Class name self name So oder so die Wahl das Quellmodell auch als Zielmodell zu deklarieren ist etwas gewagt und gegebenenfalls mit unerw nschten Nebeneffekten behaftet Im Folgenden werde ich grunds tzlich Transformationen mit Mapping Operationen vorstellen die stets explizit ein Ergebnis eines definierten Typs liefern Eine Mapping Operation kann ein oder mehrere Ergebnisparameter besitzen Analog zu den Deklarationen in der Parameterliste werden Ergebnisparameter im Allgemeinen mit Namen und Typ spezifiziert Sofern nur ein Parameter angef hrt ist ist die Angabe eines Namens verzichtbar Implizit wird dieses Ergebnisargu ment mit dem vordefinierten Namen result versehen Falls mehrere Ergebnis paramet
127. ctor AST http MyRDBM ecc s Import renamings r Export properties HelloWorld gp Refresh 8 HeloWorld main i al Package createHelo Run As Debug As Team Compare With eo ee ae Abb 4 13 Der Operational QVT Editor Dateien mit dem Suffix qvto werden als QVTO Quellen erkannt und sie k nnen mit dem Operational OVT Editor ge ffnet und bearbeitet werden Abbil dung 4 13 Der Editor verf gt ber eine automatische Syntaxerkennung reser vierte W rter Zeichenketten und Kommentare werden farblich hervorgehoben Auf Anforderung Ctrl Leertaste erh lt man eine automatische Text erg nzung sowie eine Auflistung der in einem speziellen Kontext zur Verf gung stehenden Funktionen 4 3 Transformation von UML Modellen 163 Metamodelle m ssen wie wir es auch von SmartQVT bereits kennen ent weder als Eclipse Plugins im Kontext bekannt oder ber eine URI erreichbar sein Eine Konfiguration des QVTO Kontextes in einer Properties Datei ist nicht erforderlich Die Durchf hrung von Transformationen wird mit dem Operational OVT In terpreter konfiguriert und ausgel st Abbildung 4 14 Run gt Open Run Dialog gt Operational OVT Interpreter Mit Name wird der Name der QVTO Ausf hrungskonfiguration angegeben Das Transformations Modul referenziert das QV TO Script 3 Optional kann ein Verfolgen der Transformation durch Angabe einer Trace Datei gefordert werden
128. der Version 2008 ist zu sagen dass sich der herstellerspezifische QVT OM Dialekt etwas mehr der standardisier ten Fassung angen hert hat so dass die hier entwickelten Beispiele auch mit To gether anwendbar sein sollten Aber nicht nur aus dem Hause Borland gibt es QVT Werkzeuge Einige weitere werde ich vorstellen F r wen ist das Buch gedacht Modellierung von Sachverhalten der realen Welt ist ein wesentlicher Bestandteil des ingenieursm igen Software Entwicklungsprozesses Schwerpunkt dieses Bu ches ist jedoch nicht die Modellierung mit einer Modellierungssprache und auch die Generierung von Code auf der Basis von Modellen steht nicht im Fokus der Betrachtung Modelle die mit formalen Modellierungssprachen erarbeitet worden sind sind Mittel zum Zweck um daraus neue und konsistente Modelle abzuleiten mittels Transformation Und vor dem Hintergrund dass die Entwicklung von komplexen Anwendungen in der Regel ber mehrere aufeinanderfolgende Phasen erfolgt wird die systematische und modellgetriebene Entwicklung auch und ge rade bei einem Phasen bergang mit Einsatz von Modelltransformationen von zu nehmender Bedeutung sein Erreichen m chte ich also auf jeden Fall IT Archi tekten Analytiker und Designer zu deren wesentlichen Aufgaben es geh rt reale Sachverhalte zu beschreiben zu strukturieren und in abstrahierter Form einer wei teren Entwicklungsarbeit zuzuf hren Vorwort Vil Wenn auch das Thema MDA nicht unbedingt
129. der Zielmodelle Mit einer Modellierungssprache ist eine meist grafische Darstellung von Gegebenheiten und Sachverhalten einer realen Welt m glich Modellierungssprachen sind entwe der informal das hei t man ist frei in der Wahl der Sprachmittel und in der Form der Beschreibung oder formal in dem Fall sind die Sprachmittel und der Um gang mit der Sprache in Form einer formalen Sprache de finiert Modellierungssprachen die auf der Basis eines formalen Metamodells definiert worden sind sind for male Modellierungssprachen oder auch MOF Sprachen Ein Modelltyp ist ein benanntes und durch Parameter und Regeln Guards eingegrenztes Metamodell Modelltypen sind die Datentypen der Modelle die Transformationen von Parametern mitgegeben werden k nnen ber Mo delltypen werden die Typen der Modellelemente defi niert die in den Transformationen verwendet werden diir fen Ein Modul ist eine Sammlung von Operationen Daten typen und Funktionen die in einer Einheit zum Zweck der Mehrfachverwendung zusammengestellt worden sind Module der QVT sind Transformationen oder Libraries Der Import von Modulen kann mittels access oder extends erfolgen access erlaubt dabei lediglich eine Benutzung der importierten Methoden die Komponenten der mit extends eingebundenen Module sind ererbt und sie k nnen von dem erbenden Modul redefiniert werden Die Pr fung der Nachbedingung erfolgt nach Ausf hrung einer Anweisungsfolge Ist die Bedingung n
130. die Aufbe reitung der Spalten einer Tabelle mit der uns bekannten Mapping Operation AttributeToColumn mapping Class ClassToTable Table when self kind persistent init Ermittlung der Menge aller Attribute mit gt primitiven Datentypen var attr Sequence Attribute 4 1 UML2RDBM 129 attr self attributes gt getAllPrimitiveAttributes name self name columns attr gt map AttributeToColumn Abbildung 4 4 zeigt das neue Schema darlehen in dem die Attribute lage Ort in Immobilie und wohnort Ort in Person aufgel st und durch die entsprechenden Attribut von Ort ersetzt worden sind lt lt table gt gt lt lt table gt gt lt lt table gt gt Immobilie Konto Person nennbetrag double precision name varchar leistung double precision vyorname varchar zahlungsmodalitaet integer alter integer beginn integer strasse varchar ende integer hausnummer integer hausnummer integer strasse varchar lt lt table gt gt lt lt table gt gt lt lt table gt gt Darlehenssicherheit Hausbesitzer Darlehensgeschaeft Abb 4 4 Immobilie und Person mit aufgel sten komplexen Spalten 4 1 4 Behandlung von Attributen mit Hilfe von dynamischen Metaelementen Die OMG schl gt ein anderes Verfahren vor die Aufgabe der Aufbereitung von Attributen mit primitiven und komplexen Datentypen zu l sen und zwar mit Hilfe von dynamischen Metaelementen Intermed
131. dings eine Grundkenntnis von OCL vorausgesetzt wird Das wird auch im Weiteren so bleiben denn wie die QVT Sprachen schlechthin so basiert auch Operational Mappings konsequent auf OCL Bevor wir also auf die formalen Aspekte der Operational Mappings eingehen m ssen wir uns erst einmal mit ein paar QVT und OCL Grundlagen auseinandersetzen Allerdings auch dies eher wieder etwas oberfl chlich F r tiefer gehendes Interesse bleibt das Lehrbuch von Kleppe War mer Kle03b oder die schwieriger zu lesende OCL Spezifikation OCL 3 4 OCL und QVT Grundlagen 69 3 4 1 OCL und OVT Datentypen Operationale Transformationen operieren in der Regel auf Elementen von Model len oder auf Modellen insgesamt Diese stehen ber die Metamodelle zur Verf gung die gewisserma en als Datentypen gesehen werden k nnen Zudem ist es oft erforderlich Variablen zur Hilfe zu nehmen Erlaubt sind dazu Variablen von s mtlichen OCL Datentypen Zudem sind einige spezielle QVT Datentypen vordefiniert var lt name gt lt datatypename gt Primitive OCL Datentypen Integer numerische ganzzahlige Werte Real numerische reelle Werte String Zeichenketten Boolean Bool sche Werte true oder false Komplexe OCL Datentypen Collection eine beliebige Menge von Elementen Collection ist der Oberbegriff f r die folgenden Mengentypen Set eine ungeordnete Menge von Elementen ohne Duplikate OrderedSet eine geordnete Menge von Elementen ohne Duplikate Ba
132. e name gt self name Home visibility Ves ib li LykK nd public Standard Methoden im Home Interface ownedOperation getHomeMethods Remote Interface packagedElement object Interface name self name Remote visibility yVLsiDilicykind public getter und setter im Remote Interface ownedOperation self ownedAttribute gt map getter ownedOperation self ownedAttribute gt map setter bi Mit dem bis hierher erarbeiteten EJB Modell ist schon ein gutes St ck platt formspezifische Modellierung auf der Bas s eines fachlichen PIM Modells ge leistet worden SB_Konto nennbetrag double 1 tilgungssatz double 1 zinssatz 1 zahlungsmodalitaet Integer 1 beginn Integer 1 ende Integer 1 getNennbetrag double getTilgungssatz double getZinssatz double g tZahlungsmodalttaet Integer getBeginn Integer getEndef Integer setNennbetrag pNennbetrag double setTilgungssatz pTilgungssatz double setZinssatz pZinssatz double set Zahlungsmodaltaet pZahlungsmodalitaet Integer setBeginn pBeginn Integer setEnde pEnde Integer setSessionContext getNennbetrag double getTilgungssatz double getZinssatz double get Zahlungsmodalittaet Integer getBeginn Integer getEndef Integer setNennbetrag pNennbetrag double setTilgungssatz pTil
133. e 2 2 4 Werkzeugunterstiitzung Wie wir zu Beginn dieses Kapitels gelernt haben besteht die Entwicklung von Metamodellen aus einer Modellierung des formalen Aufbaus mit UML2 Klassen diagrammen Nat rlich kann und sollte man dazu ein graphisches Modellierungs werkzeug einsetzen mit dem die Erstellung und Verf gbarmachung der Metamo delle erleichtert wird Die Entwicklung und Bereitstellung von Metamodellen besteht aus folgenden Schritten 1 Modellierung des Metamodells 46 2 Modelle und Metamodelle 2 Export des Modells in einem generellen Austauschformat oder alternativ f r eine spezielle Entwicklungsplattform Bauen eines ad quaten Plugins F r eine generelle Weiterverwendung der Metamodelle in Transformationen reicht es aus diese in XMI Form zu exportieren zum Beispiel unser Metamodell nach SimpleUML xmi Gegebenenfalls ist eine Umwandlung in das EMOF For mat erforderlich SimpleUML emof siehe Listing 1 Einige Transforma tionswerkzeuge insbesondere im Umfeld der Plattform Eclipse wie zum Bei spiel die sp ter vorgestellten und eingesetzten Werkzeuge SmartQVT und QVT Operational erfordern Metamodelle im Format des Eclipse Modeling Frame work EMF Ecore welche als Eclipse Plugins vorliegen m ssen 3 Import des Metamodells in den Kontext der Transformationsumgebung Schritt 1 Modellierung Grunds tzlich ist jedes moderne kommerzielle wie auch frei verf gbare UML Werkzeug zur Modellierung von Metamodelle
134. e endif getAppliedStereotype ist eine Standardmethode des Eclipse UML2 Frameworks Zun chst wird mit getAppliedStereotype ein Stereotyp mit dem angegebenen Namen gesucht um dann mit isStereotypeApplied zu pr fen ob die Klasse mit diesem Stereotyp markiert ist isStereotype Applied ist ebenfalls eine Standardmethode des Eclipse UML2 Frameworks Allerdings muss gem QVT Spezifikation der Name des Stereotyps voll qualifi ziert angegeben werden Das hei t der Name des Stereotyps allein reicht nicht aus man muss zudem den Namen des umschlie enden Namespaces also des Pa kets in dem der Stereotyp definiert ist kennen Da das nicht unbedingt immer der Fall ist sei im Folgenden ein L sungsansatz vorgeschlagen bei der der Stereotyp allein aufgrund seines Namens festgestellt wird Allerdings gehe ich dabei von der Annahme aus dass ein Stereotyp mit einem Namen nur einmal mit der Klasse assoziiert ist Das hei t eine Klasse sollte nicht mit mehreren Stereotypen gleichen Namens markiert sein Mit der Funktion getAppliedStereotypes des UML2 Frameworks werden alle Stereotypen ermittelt die mit der Klasse assoziiert sind Danach wird in der Liste der Stereotypen stlist nach einem Stereotyp mit dem gefragten Namen gesucht 180 4 Operational Mappings Anwendungen query in Class isStereotypedBy str String Boolean var ost OrderedSet Stereotype null ost self getAppliedStereotypes var stlist Set Stere
135. e Addition aller Elemente in der Collection auf die Elemente der Col lection muss der Operator definiert sein union set Set Type Set das Ergebnis ist die Vereinigung der Mengen self und set union ist e benfalls definiert auf Bag OCL Iterator Funktionen Die terator Funktionen oder auch Loop Funktionen sind Funktionen die auf Mengen Collections operieren indem sie ber alle Elemente der Menge ite r eren und auf jedes Element einen definierten Ausdruck anwenden Der Ausdruck ist eine beliebige OCL Expression also ggf auch eine Funktion die als Argument bergeben wird Das Ergebnis ist eine neue Menge von demselben Typ mit den durch die Iteration modifizierten Elementen self gt iterate iterator expr Collection Type self repr sentiert die Sammlung auf der die terator Funktion angewendet wird iterate ist der Name der Funktion Als Argument wird ein optionaler iterator angegeben gefolgt von dem Ausdruck expr der auf die Elemen te der Menge angewendet werden soll Wenn ein iterator angegeben ist dann kann dieser in dem Ausdruck verwendet werden Der Typ des itera tor ist stets gleich dem Typ der Elemente von self Die Ergebnismenge ist ebenfalls vom gleichen Typ wie die durch self repr sentierte Menge any expr Type liefert ein beliebiges Element f r das expr true ergibt expr ist in diesem Fall ein Bool scher Ausdruck any liefert h chstens ein Element 232 D Standardbibliotheke
136. e und Operational Mappings selbst der Fall ist Transformationen k nnen unidirektional oder bidirektional sein e Unidirektionale Transformationen sind solche die nur in eine Richtung erfol gen die also lediglich aus Quellmodellen ein Zielmodell erzeugen Zielmodelle k nnen weiter bearbeitet und modifiziert werden die nderungen haben aber keine unmittelbare Auswirkung auf das oder die Quellmodelle zur Folge e Bidirektionale Transformationen sind in beiden Richtungen m glich Es erfolgt eine Kopplung der Modelle so dass nderungen vom Zielmodell unmittelbar im Quellmodell nachvollzogen werden Deskriptive Sprachen der QVT sind bidirektional imperative Sprachen unidi rektional 1 3 Zusammenfassung und Ausblick Bisher haben wir uns etwas oberfl chlich mit den Ans tzen der MDA im weites ten Sinn besch ftigt Darunter fallen Konzepte wie e die Spezifikation von formalen Modelltypen MOF e die Modellierung mit formalen Modellierungssprachen UML SysML BPML etc e die Transformation von formalen Modellen mit QVT Bei den einf hrenden Betrachtungen standen sehr konkret die Ver ffent lichungen der OMG im Vordergrund Es gibt andere Sichtweisen zum Beispiel Model Driven Software Development MDSD denen mehr die Ideen aus der mo dellgetriebenen generativen Software Entwicklung zugrunde liegen Zentraler Ge genstand dieses Fachbuches ist allerdings eine konsequente Auseinandersetzung mit den Vorschl gen der OMG f r
137. ebnisse und Ver ffentlichungen sind frei und k nnen von jedem Her steller und Anbieter von Systemen genutzt werden um entsprechende Werkzeuge zu produzieren Eines der ersten OMG Projekte bestand darin einen Ansatz zur Homogenisierung und Vereinheitlichung von verteilten Objekten zu entwickeln Daraus sind die Common Request Broker Architecture COR und die Data Distri bution Services DDS f r Echtzeitsysteme entstanden Ein weiteres Produkt wel ches hier von zentraler Bedeutung ist und dem wir uns nun etwas ausf hrlicher widmen wollen ist die UML 6 1 Einf hrung 1 2 1 UML Unified Modeling Language Etwa mit dem Stand UML 1 1 wurde die UML 1997 der Object Management Group OMG mit dem Auftrag tibergeben die Sprache als Standard zu spezifizie ren und weiter zu pflegen Die UML besteht aus einer Menge von Sprachmitteln zur Beschreibung von strukturellen und funktionalen Sachverhalten von Gegen st nden einer realen Welt Zur Darstellung werden dreizehn Diagrammtypen ange boten sechs Diagramme f r Struktur sieben f r Verhalten Abbildung 1 3 UML Diagramme Struktur Verhaltens diagramm diagramm gt Anwendundsfall Aktivitaten Klassen Objektdiagramm a an zl u Sequenz Zustands Paketdiagramm Komponenten iag Sn zal Verteilu K iti Interaktions Kommunikations Forevunds BOMDOSRIONS bersichts diagramm diagramm struktur enremm diagramm gagramm Timingdiagramm Abb
138. ed JREs Ju JUnit Plug in Test OSGi Framework PAn Rainaa SE i cman a Filter matched 17 of 17 iterns Abb 3 5 Eclipse Konfiguration einer SmartQVT Applikation 62 3 Operational Mappings die Sprache 2 Der Name der Eclipse Run Konfiguration ergibt sich aus dem Namen des Pro jektes hier HelloWorld Die Workspace Location ist das Verzeichnis des Eclipse Arbeitsbereiches in dem sich die Projekte befinden diese kann in der Regel so bernommen werden wie sie ist Eine SmartQVT Applikation sollte als Program to Run gt Run an application ausgew hlt werden 3 Die Modelle der Transformation miissen voll spezifiziert als Argumente in dem Arguments Register angegeben werden zum Beispiel platform resource OM_HelloWorld model Helloworld myuml platform resource OM_HelloWorld result HelloWorld myrdbm 4 In dem Plug ins Register Abbildung 3 6 sollte man ausschlieBlich mit der Applikation arbeiten und nur mit den Plugins die dafiir erforderlich sind also Deselect All Run x Create manage and run configurations Create a configuration to launch an Eclipse application Q Es 2 BIER INS Name HelloWorld ltype filter text a E Main 69 Arguments Plug ins gt 8 Configuration amp Tracing PS Environment 1 Eclipse Application Hellolnherit Launch with plug ins selected below only HelloWorld 9 Workspace HelloWorld2 O t com borland m2m gut samples ecore2uml 1 0 0
139. ed_identifier_list gt inherits merges disjuncts when lt expression_block gt where lt expression_block gt refines lt scoped_identifier gt lt init_section gt lt population_section gt lt end_section gt init lt expression_block gt lt expression_list gt population lt expresion_block gt end lt expression_block gt lt assign_exp gt lt let_exp gt lt var_init_exp gt lt implies_exp gt lt unary_exp gt lt assign_op gt lt expression gt lt default_val gt lt unary_exp gt lt assign_op gt lt expression_block gt I lt default_val gt Dun a ee default lt assign_exp gt lt or_exp gt lt implies_exp gt implies lt or_exp gt lt and_exp gt lt or_exp gt lt or_op gt lt and exp gt or xor lt cmp_exp gt lt and_exp gt and lt cmp_exp gt 188 A Die Syntax der Operational Mappings lt cmp_exp gt lt cmp_op gt lt additive_exp gt lt add_op gt lt mult_exp gt lt mult_op gt lt unary_exp gt lt unary_op gt lt postfix_exp gt lt declarator_vsep gt lt multi_declarator_vsep gt lt xres lve_exp gt lt resolve_condition gt lt resolve_key gt lt resolve_kind gt lt resolve_in_exp gt lt resolve_in_key gt lt resolve_in_kind gt lt access_op gt lt primary_exp gt lt liter al gt lt literal_simple gt lt additive_exp gt lt cmp_exp gt lt cmp_op gt lt additive_exp gt lt gt
140. eeeeeeeees 19 Deskriptive Sprachen unse sense 21 Imperative Sprachen anne ee 2 1 3 Zusammenfassung und Ausblick u unuueneienannnnnn 22 1 3 1 Hinweise zur Not tion uunenen a 24 3 Te OS E A ernennen 23 2 Modelle und Metamodelle ssiccsssssssscesceissasscsssscssasisasssaassacusasasaasesesssesnsstsasnns 27 2 1 Die Metamodelle SimpleUML und SimpleRDBM eeeee 28 2 1 1 Das Metamodell SmpeUML uussseeseienn 29 2 1 2 Das Metamodell SimpleRDBM eeeeeeeeno 32 2 2 Serialisierung der Metamodelle use ae 34 2 2 1 Deklaration der Metamodelle als QVT Datenstruktur 34 2 2 2 QVT Datenstrukturen im EMOF XMI Format 37 2 2 3 Die Verwendung der Metamodelle 2 e00 04 400004004 e 00040000 44 Variante 1 Inline Deklaration von QVT Datenstrukturen 44 Variante 2 Benutzung von extern definierten Me mode len nern u Variante 3 Metamodelle im Eclipse Kontext 45 X Inhaltsverzeichnis 2 2 4 Werkzeugunterst tzung sus 45 Schritt 1 Modellietuns c0rusn nennen 46 Schritt 2 Export des Modells uses 47 Schritt 3 Deployment der Plugins nenne 48 Operational Mappings die Sprache 0 s0sss0000000000000000uuu0000000000000e 53 3 1 HelloWorld als QVT Applikation uusssssssnnnnnnnenseeeeeeenen 53 3 2 Die Operational Mappings Plattform SmartQVT 55 3 2 1 Aufbau der SmartQVT Transformationsumgebung
141. efakt 15 Codegenerierung 15 Compilations Prozess 57 Compilations Vorgang 57 Computational Independent Modeling 13 constructor call 109 Core Language 20 21 D Darstellungstechnik 4 DataType 158 Datenbankdesign 4 Datenbankdesign konzeptionell 4 Datenbankdesign logisch 16 Datenbankentwurf 32 Datenbankmodell 32 Datenbankplattform 30 Datenbankschema 9 16 32 124 Datenbanksystem 11 32 Datenbanksystem netzwerkartiges 4 Datenbanksystem relationales 32 Datenfluss 8 Datenkapselung 4 Datenmodellierung 4 Datenstruktur 54 Datentyp 125 Datentyp eigener 70 Datentyp komplexer 127 Datentyp primitiver 87 126 Deklaration 71 Deployment 48 Design konzeptionelles 117 Design objektorientiertes 4 Designer 2 Deskriptiver Ansatz 20 Device 7 Diagramm 12 Diagramminformation 46 Diagrammtyp 6 Dienst 11 Dom ne 12 dom nenspezifische Sprache 2 E Eclipse 25 Eclipse Modeling Framework 25 57 Eclipse Applikation 60 Eclipse Arbeitsbereich 62 Eclipse Plugin 45 Eclipse Plugin Projekt 57 Ecore Diagrammeditor 46 Ecore Format 45 Ecore Modell 46 Ecore Repr sentation 46 Editor 56 Editor XML basierter 57 Eigenschaft 88 Eigenschaft funktionale 6 88 Eigenschaft strukturelle 88 Eingangsmodell 68 Einstiegspunkt 121 EJB Komponente 167 EJB Standardmethode 175 Element 158 Element sichtbares 119 Element strukturelles 7 Element strukturiertes 158 Elementmenge 83 Elementtyp 30 122 EMF Generator 47 EMOF Datenstruktur 44
142. einer Modellierung als Elemente nicht zur Verf gung sondern nur indirekt in der Weise dass andere nat rlich auch nicht abstrakte Metaklassen von ihnen erben k nnen Syntax abstract class lt class_name gt extends lt id_name gt lt id_name gt i lt class _body_definition gt Beispiel metamodel SimpleUML Deklaration der Metaklassen abstract class ModelElement abstract class Classifier extends ModelElement class Package extends ModelElement class Class extends Classifier class Attibut extends ModelElement class PrimitiveDataType extends Classifier ModelElement wie auch Classifier sind abstrakt also nicht instantiier bar CLassifier erbt von ModelElement Eigenschaften die wir noch nicht kennen Class und PrimitiveDataType sind Spezialisierungen von Clas sifier und erben von dieser damit ebenfalls die bisher noch unbekannten Attribute Class und PrimitiveDataType sind die konkreten Klassen die wir bisher als Sprachmittel der Modellierungssprachen benutzen k nnen Klassen besitzen Eigenschaften Properties Dabei handelt es sich einerseits um strukturelle Eigenschaften Attributes und andererseits um funktionale Eigenschaften Operations Im Rahmen dieses Fachbuches werde ich mich auf die statischen Attribute konzentrieren wobei eine akademische Er rterung von dynamischen Aspekten in Metamodellen durchaus interessant ist 3 5 Operationale Transformationen 89 Syntax ab
143. einer bestimmten Aufgabe siehe auch Block Ein Modell besteht in der Regel aus einer Menge von gleichartigen Elementen die Gegenstand einer operatio nalen Transformation sind Eine Sammlung collec tion ist ein Konstrukt h herer Programmiersprachen um eine Menge von Objekten gleichen Typs zusammen zustellen zum Beispiel eine Liste von Modellelementen einer bestimmten Metaklasse In der QVT sind als Sammlungstypen die speziellen Sammlungen der OCL Set OrderedSet Bag Sequence zugelassen Dar ber hinaus sind noch spezielle QVT Sammlungs typen definiert List Dict Tuple Als Sprachmittel zur Bearbeitung von Sammlungen stehen in der QVT die OCL Konstrukte collect select iterate zur Verf gung Ein Schema ist ein logisches Konzept zur Organisation von Tabellen einer relationalen Datenbank Eine Schleife Loop ist ein Konstrukt von h heren Pro grammiersprachen zur Implementierung von wiederhol ten Anweisungsfolgen Als Sprachmittel zur Program mierung von Schleifen werden while forEach forOne und iterate angeboten Eine Schnittstelle siehe auch Interface ist die Au enan sicht auf eine Komponente mit der sie Funktionalit ten anbietet die eine Kommunikation mit ihr erm glichen Die Schnittstelle zeigt das was eine Komponente einem System zur Kommunikation anbietet publiziert public Im EJB Konzept sind die Schnittstellen einer Komponente deren Homelnterface zur Ver ffentlichung der Verwaltungs
144. ellt wird MDAO3 in Form eines UML Aktivit tendiagramms Der Prozess Transformation A D repr sentiert die Aktivit t die mit dem Vorbereiten dem Beschreiben und Durchf hren der Trans formation befasst ist Je nachdem welche Variante von Transformation ange wandt wird vgl Gru06 Pet06 sind gewisse Vorgaben erforderlich die hier un ter Architektur Plattformmodelle subsumiert sein sollen An dieser Stelle kommt also ein neuer Architekturaspekt ins Spiel n mlich die Bereitstellung von Model len und Scripten im Transformationssektor Architekturentwicklung ist also auf der einen Seite wie wir sie oben einge f hrt haben die Entwicklung von tragf h gen Anwendungsarchitekturen auf der anderen Seite geht es um die Erarbeitung und Bereitstellung von Architekturmo dellen als Basis f r eine modellgetriebene Anwendungsentwicklung Der zweite Aspekt ist die wesentliche Aufgabe im Rahmen von Modelltransformationen und damit das zentrale Thema dieser Ausarbeitung Wir werden uns im Weiteren vorwiegend mit dem metamodellorientierten An satz besch ftigen Aus dem Grund ben tigen wir als Architektur Plattformmodelle mindestens die Metamodelle der zu transformierenden Komponenten Exempla risch zeigt dies f r das Beispiel welches sich als roter Faden durch dieses Fach buch ziehen wird die Abbildung 1 7 1 Im Rahmen der fachlichen Analyse von Gesch ftsklassen wird unter Verwen dung der Modellierungssprache UML ein Klassendiagramm e
145. en Topcased Modeling O_UMLProfil model ProfileDef umldi Topcased Datei Bearbeiten Refactor Navigieren Search Projekt Scripts SmartQyYT Run ADELE Fenster Hilfe lm Q Q an Jo ee gt a ee hh oft P PE i ___ 7 AZo ree ai amp model g B ProfileDef uml F inna ProfileDef umldi ProfileTest uml iaa ProfileTest umldi E wi Ben umldi x uML2 N Ausw Profile Diagram ProfileDef ProfileDef Marquee L3 Note Class gt Objects E Stereo lt lt stereotype gt gt persistent Siac lt Profile gt ProfileDef H gt EAnnotation http www eclipse i ea lt Element Import gt Class Applied Profiles E B lt lt persistent gt gt lt Stereotype gt a lt Property gt base_Class Cle l j E ProfileDef 7 lt Extension gt Class_persistent tereotypes ee Extension End gt extension Ew lt Profile Application gt ProfileDef 0 EAnnotation http www eci __ O Profile Diagram ProfileDef EZ Additional Resources Abb 4 17 UML Profil mit Stereotyp lt lt persistent gt gt Mit der folgenden sehr einfachen Transformation CheckProfileDef wird nun die Definition eines UML Profils zum Beispiel ProfileDef uml ein wenig untersucht Es ist eigentlich nicht einer Erw hnung wert aber das Meta modell f r die Transformation ist wieder UML2 UML Profile sind UML Klas sendiagramme
146. en Implementation Modeling IM Man kann bereits erkennen dass MDA im Sinne der Architekturentwicklung auch ein spezielles Vorgehen beschreibt so dass es naheliegt das MDA Schich tenmodell in einem Vorgehensmodell zu integrieren Abbildung 1 5 Weitere U berlegungen dazu finden sich in Pet06 14 1 Einf hrung Betriebliche Beschreibung Betriebliche Zu Modelle Transformation F A CIM Fachliche Modelle ee ption Konzeptionelle D Modelle _ Konstruktion TE Technische E w Applikation DE O Abb 1 5 Der MDA Entwicklungsprozess Transformation Der Begriff der Transformation wird in diesem Buch natiirlich im Mittelpunkt ste hen da wir uns zum Ziel gesetzt haben die Transformationssprache Operational Mappings kennenlernen zu wollen und Modelltransformationen damit zu ent wickeln und auszuf hren Transformation ist ein Prozess um ein oder mehrere Modelle eines Systems in ein oder mehrere andere Modelle desselben Systems zu berf hren 1 2 Die ber hmten Akronyme der OMG 15 Transformation kann auch synonym und etwas pr ziser als Modelltransforma tion bezeichnet werden Dagegen ist ebenfalls die Erzeugung von Codeartefakten aus formalen Modellen m glich Dies wird als Modell nach Text Transforma tion oder besser Codegenerierung bezeichnet Bei einer strengen Auslegung der MDA ist die Generierung von Code in einer formalen Programmiersprache eben falls eine T
147. en Auspr gun gen Integer Double String oder Boolean Classifier k nnen attributes vom Typ Attribute besitzen Die Class ist dann owner der attributes attributes m ssen einen owner haben und es kann nur einen owner f r jeweils ein attribute geben Attributes besitzen stets genau einen type dies ist ein Classifier der entweder ein PrimitiveDataType oder eine komplexere Class ist attributes vom Typ Class sind komplexe Attribute attributes vom Typ PrimitiveDataType sind primitive Attribute Zwischen den Klassen sind bin re Beziehungen Associations herstell bar in denen es keine Ordnung zwischen den beteiligten Partnern gibt Ein Partner in der Beziehung ist die source der andere die destination Dar ber hinaus k nnen zwischen Klassen eine oder mehrere Generalisierungs beziehungen modelliert werden die Oberklasse ist die generelle general die untergeordnete Class ist die konkrete oder spezifische Klasse spe Circ UMLModelElement PackageElement Classifier sind abstrakte Klassen und treten als solche in SimpleUML Modellen nicht direkt auf Alle anderen Elemente k nnen in einem SimpleUML Modell vorkommen 2 1 Die Metamodelle SimpleUML und SimpleRDBM 31 Das Diagramm in Abbildung 2 3 veranschaulicht die strukturellen Gegeben heiten einer Wohnungsbaufinanzierung als Beispiel eines SimpleUML Modells In dem Diagramm ist der Sachverhalt der Immobilienfinanzierung nat rlich sehr vereinfacht dargestellt Hausbes
148. en schon den Shorthand ob jects kennengelernt var packages irgendeinModell objects Package subobjects List lt Element gt ist eine Methode die auf beliebige Elemente definiert ist Sie liefert eine Liste aller direkten Subelemente des Elements var elements packages gt subobjects elements repr sentiert alle Elemente die direkt in einem Package aus packages liegen Hier wird also in einer Ebene des Baumes selektiert allSubobjects List lt Element gt ist eine Methode die auf beliebige Elemente definiert ist Sie liefert eine Liste aller Subelemente des Elements also auch iterativ absteigend die Subelemente von Subelementen var elements packages gt allSubobjects elements repr sentiert nun alle Elemente die direkt in einem Package und in den Packages liegen die sich in jeweils einem Exemplar von pa ckages befinden Hiermit wird in die Tiefe des Baumes selektiert subobjectsofType lt OCLType gt List lt Element gt liefert eine Liste aller direkten Subelemente des Elements gefiltert nach einem vorgegebenen Typ 82 3 Operational Mappings die Sprache var classes packages gt subobjectsOfType Class classes repr sentiert nun alle Klassen die direkt in einem Package aus packages liegen Hier wird also in einer Ebene des Baumes selektiert allSubobjectsOfType lt OCLType gt List lt Element gt liefert eine Liste aller Subelemente des Elements gefiltert nach eine
149. ence Inheritance ee EAnnotat link gt 0 Abb 2 6 SimpleUML im Topcased Ecore UML Editor Schritt 2 Export des Modells Das Modell SimpleUML ecore k nnte nun im Allgemeinen recht einfach in eine XMI Repr sentation exportiert werden das geht nun gerade nicht so einfach mit Topcased da aber das Metamodell fiir die folgenden Verwendungszwecke ohnehin als Eclipse Plugin ben tigt wird wollen wir dies gleich einmal herstellen Das geschieht mit Hilfe der Werkzeuge des Eclipse Modeling Frameworks EMF File gt New gt Other gt Eclipse Modeling Framework gt EMF Model Das EMF Modell muss vom Typ genmodel sein also zum Beispiel SimpleUML genmodel Als Model Importer muss Ecore model ausgew hlt werden als Modell URI wird dann das SimpleUML ecore referenziert Dieses SimpleUML genmodel ist nun die Quelle fiir den EMF Generator 48 2 Modelle und Metamodelle Mit der Option Generator gt Generate All werden f r dieses Metamodell die entsprechenden Plugin Projekte generiert Abbildung 2 7 e SimpleUML e SimpleUML edit e SimpleUML editor e SimpleUML tests Topcased Modeling SimpleUML Modeling Ecore SimpleUML genmodel Topcased Datei Bearbeiten Refactor Navigieren Search Projekt Scripts SmartQyYT Run ADELE Generator Fenster Hilfe my lQ Q e lia le 2 Ge Generate Model Code Generate Edit Code FY ety CVS Repository Exploring ie Topcased Modeling Resource Plug in Devel
150. ent zu sein und Assoziationen werden nur dann behandelt wenn ihre bei den assoziierten Klassen persistent sind mapping Class ClassToTable Table when self kind persistent name self name columns self attributes gt map AttributeToColumn mapping Association AssociationToTable Table when self source kind persistent and self destination kind persistent name self name Aus der Transformation ergibt sich bereits ein in Ans tzen erkennbares einfa ches relationales Datenbankschema Abbildung 4 3 4 1 UML2RDBM 125 lt lt table gt gt Immobilie nennbetrag double precision leistung double precision flurstueck varchar zahlungsmodalitaet integer lage Ort beginn integer a ende integer lt lt table gt gt lt lt table gt gt lt lt table gt gt Darlehenssicherheit Hausbesitzer Darlehensgeschaeft Abb 4 3 Schema darlehen im SimpleRDBM erste L sung Wie wir hier und auch schon fr her gesehen haben bietet Operational Map pings diverse M glichkeiten zur Schreibvereinfachung an Meiner Meinung nach macht es das Lesen von Operational Mappings Scripten zuweilen schwierig wenn die M glichkeiten etwas wahllos eingesetzt werden mal die Standardfunk tion hier mal ein Shorthand dort Ich empfehle dass man sich f r eine Form ent scheidet und diese konsequent anwendet Auf jeden Fall ist es sch dlich wenn man in einem Script
151. er Modellierung und Modelltransformation ausgerichtet sind Letzteres ist der Vorschlag den die Object Management Group OMG mit dem Model Driven Architecture Konzept MDA propagiert und den ich in diesem Buch konsequent aufnehmen und verfolgen m chte Die OMG ist ein herstellerunabh ngiges Gremium welches den Auftrag hat objektorientierte Techniken und Technologien zu standardisieren So gibt es zum Beispiel die Unified Modeling Language UML und das Meta Object Facility Konzept MOF die sich als OMG Standards etabliert haben Das eine ist eine formale einheitliche universelle Modellierungssprache das andere beschreibt ei nen Ansatz auf der Basis von formalen Modellen formale Modellierungssprachen zu entwickeln Beides dient als Fundament f r das MDA Konzept welches eben falls von der OMG als Standard herausgegeben worden ist Bisher handelte es sich um Bausteine zur Modellierung sicher eine der S ulen eines modellgetriebenen Vorgehens Die MDA geht allerdings weiter und schl gt neben der Modellierung die Transformation von Modellen vor um aus einer Mo dellierungsebene in eine folgende zu gelangen bis hin zu einer modellgest tzten Code Generierung Sprachen zur Modellierung sind definiert und eingef hrt min destens die oben erw hnte UML Was in diesem MDA Konzept noch fehlte sind Sprachen zur Modelltransformation vi Vorwort Von anderer Seite zum Beispiel aus der Szene der modellgetriebenen Soft ware Entwicklung si
152. er Zeile Kommentar bis zum Ende der Zeile Beginn eines mehrzeiligen Kommentars Ende eines mehrzeiligen Kommentars Top Level Rules lt topLevel gt lt import gt _ lt unit_element gt lt import gt from lt unit gt import lt identifier_list gt import lt unit gt lt unit_element gt lt transformation gt lt library gt lt access_decl gt lt modeltype gt lt metamodel gt lt classifier gt lt property gt lt helper gt lt constructor gt Kentr y gt lt mapping gt lt tag gt lt typeder gt lt unit gt lt identifier gt lt identifier gt lt identifier_list gt lt identifier gt lt identifier gt Model Types Compliance and Metamodel Declarations lt modeltype gt modeltype lt identifier gt lt compliance_kind gt uses lt packageref_list gt lt modeltype_where gt lt modeltype_where gt where lt expression_block gt lt packageref_list gt lt packageref gt lt packageref gt 184 A Die Syntax der Operational Mappings lt packageref gt lt scoped_identifier gt lt uri gt lt uri gt lt compliance_kind gt strict effective lt uri gt lt STRING gt Transformation lt transformation gt lt transformation_decl gt lt transformation_def gt lt tranformation_decl gt lt transformation_head gt lt transformation_def gt se lt transformation_head gt lt modu
153. er aufgelistet sind darf nur einer ohne Namen sein dieser erh lt den vor gegebenen Namen result 100 3 Operational Mappings die Sprache Beispiel transformation uml2rdbm in srcModel SimpleUML out destModel SimpleRDBM main srcModel objects Package gt map createSchema mapping Package createSchema Schema schm Schema result name schm name self name 1 self name 2 In dieser Transformation werden mit einer Mapping Anweisung zwei Sche mata im Zielmodell angelegt Transformationen k nnen mehr als ein Quellmodell bearbeiten und mehr als ein Zielmodell liefern In Mapping Operationen kann man mit dem Operator das jeweilige Zielmodell referenzieren in dem die Zielelemente angelegt werden sollen Beispiel transformation uml2rdbm in sourcel UML in source2 UML out targetl RDBM out target2 RDBM main sourcel objects Package gt map createSchemal TI_ source2 objects Package gt map createSchema2 T2_ mapping Package createSchemal str String Schema targetl name str self name mapping Package createSchema2 str String Schema target2 name str self name 3 5 Operationale Transformationen 101 Mapping Anweisungsteil Die R mpfe der Mapping Anweisungen sind stillschweigend schon eingef hrt worden Wir konnten bereits sehen dass im Grunde genommen beliebige OCL Anweisungen wie auch QVT Standard
154. erden durch den komplexen Datentyp Ort mit den At tributen Stra e Hausnummer Stadt und Postleitzahl repr sentiert Die Person in einem Darlehensgesch ft ist auf der einen Seite der Darle hensnehmer und auf der anderen Seite der Hausbesitzer das Konto ist das Darlehenskonto die Immobilie ist die grundpfandrechtliche Darle henssicherheit Soweit soll uns die ein wenig einfache Sicht der Dinge ge n gen lt lt persistent gt gt Konto nennbetrag double 1 zinssatz double 1 tilgungssatz double zahlungsmodalitaet Integer 1 beginn Integer 1 Datentypen strasse String hausnummer Integer stadt String postleitzahl Integer Darlehensnehmer 1 3 lt lt persistent gt gt Person name String 1 vorname String 1 alter Integer 1 einkommen double wohnort Ort Hausbesitzer beleihungs wert double Abb 4 9 Das Fachklassenmodell des privaten Wohnungsbaukreditgesch fts Durch die Transformation UML2EJB soll nun eine berf hrung des plattform unabh ngigen Modells in ein plattformspezifisches Komponentenmodell nach dem Entity Java Beans Konzept EJB Boo03 MonOl erfolgen 1 Alle fachlichen Klassen werden umgewandelt in eine SessionBean Kompo nente eines EJB Modells Dazu wird je Fachklasse ein Paket erzeugt mit dem Namen SB_ Klassenname 2 In dem Paket wird eine Bean Klasse angelegt sowie die zwei Interfaces Klassename
155. erkzeug OVT Operational Im ersten Beispiel UML2RDBM ist als Werkzeug f r die Erarbeitung und Durchf hrung von Transformationen SmartQVT eingesetzt worden Zur Ent wicklung der Transformation von UML Modellen m chte ich eine Alternative vorstellen die in fr heren Kapiteln bereits erw hnt worden ist QVT Operational QVTO QVTO der QVT Interpreter aus dem MDA Werkzeug Together von Borland BOR hat mittlerweile in der Szene ebenfalls eine gewisse Anerkennung und Verbreitung gefunden Together ist seit der Version 2005 mittlerweile Ver sion 2008 vollst ndig in Eclipse integriert und deckt eine umfangreiche Palette von Modellierung mit diversen formalen Modellierungssprachen bis hin zur Transformation mit Operational Mappings ab QVTO ist aus Together herausgel st und als frei verf gbares Werkzeug in die Eclipse Modeling Toolkit Initiative MDT integriert worden Damit ist auch mit QVTO wie bereits mit SmartQVT eine elegante und g nstige Kombination von Modellierung und Modelltransformation auf Eclipse Plattformen m glich Der QVT Interpreter von Together in einer fr heren Auspr gung deckte den Sprach umfang von QVT Operational Mappings noch nicht vollst ndig ab was proble matisch war beim Erlernen der Sprache und Nachvollziehen der Beispiele aus der Spezifikation Mittlerweile hat sich auch hier einiges getan und QVTO erf llt den spezifizierten Umfang der Operational Mappings nahezu vollst ndig 162 4 Operation
156. erufen werden Die Generierung der getter und setter Methoden wird f r das Remote Interface noch einmal aufgerufen und die Methoden des Home Interfaces k nnen hnlich konstruiert werden wie die Standard Methoden der SessionBean helper getHomeMethods mapping return Sequence hr object Operation 4 3 Transformation von UML Modellen 173 Sequence Operation name create visibility by object Operation VLeib lrEyRind s publ1 name remove visibility by object Operation VisibilityKkindi public name getEJBMetaData visibility by object Operation Visibility hinds public name getHomeHandle Visibility lt VisibilityRind public in Class transformClasses Package name SB self name packagedElement object Class name self name Visibility i VisibilitykKind public Attribute und fachliche Operationen ownedAttribute ownedOperation self ownedAttribute gt map transformAttributes self ownedOperation gt map transformOperations getter und setter ownedOperation ownedOperation self ownedAttribute gt map getter self ownedAttribute gt map setter Standardmethoden Aufruf der helper Funktion ownedOperation getSBOperations 174 4 Operational Mappings Anwendungen Home Interface packagedElement object Interfac
157. erung von Objekten als Instanzen von Metaklassen mittels Konstruktoroperationen Ein Konstruktor ist eine spezielle Methode die Instanzen eines gegebenen Typs erzeugt Eine Konstruktoroperation ist hnlich aufgebaut wie eine object expression sie ist allerdings auf Typebene definiert Das hei t es wird auf Typebene spezifiziert was als Instanz erzeugt und geliefert werden soll Eine Konstruktormethode besteht wie gehabt aus einem Definitionsteil Sig natur und einem Anweisungsteil Rumpf Die Signatur eines Konstruktors enth lt also den Elementtyp beziehungsweise den Namen der Metaklasse und den Konstruktornamen gefolgt von einer Parameterliste 3 5 Operationale Transformationen 109 Syntax constructor lt model_type gt lt element_type gt lt constructor_name gt lt arg_name gt lt arg_type gt 1 lt expression_list gt l Die Angabe eines Modelltyps ist optional m glich und erforderlich sofern ein Modellelement mit gleichem Namen in mehreren Modelltypen vorkommt Der Rumpf des Konstruktors besteht aus beliebigen Ausdr cken Die Benutzung eines Konstruktors der constructor call erfolgt analog zu objektorientierten Pro grammiersprachen mit einer new Anweisung Sofern in der Konstruktordefinition formale Parameter definiert worden sind muss beim Konstruktoraufruf eine entsprechende Liste von aktuellen Parametern angegeben werden Syntax lt object_name gt new lt iterator gt
158. es Quellmodells Geliefert wird das letzte Zielobjekt das aus dem Quellobjekt erzeugt worden ist e invresolve wird angewendet auf ein Zielobjekt und liefert eine Liste aller Quellobjekte die zur Erzeugung des Ziel objektes benutzt worden sind e invresolveone wird angewendet auf ein Zielobjekt und liefert das letzte Quellobjekt das zur Erzeugung des Zielobjek tes benutzt worden ist Beispiele mapping Class ClassToTable Table var tbl Table var cls Class var tbls Sequence Table var clss Sequence Class Name der erzeugten Tabelle name T_ self name tbl ist die letzte aus self erzeugte Tabelle tbl self resolveone Table tbls sind alle aus self erzeugten Tabellen tbls self resolve Table cls ist Klasse aus der tbl erzeugt worden ist cls tbl invresolveone Class clss sind die Klassen aus denen tbls erzeugt worden sind clss tbl invresolve Class log resolve Class name Table tbl name Ist Table tbls first name Class cls name Tet Class clss first name Die Anzeige in der Konsole sollte f r eine Klasse namens Address folgen des Ergebnis zeigen INFO resolve Class lt Address gt Table lt T_Address gt lst Table lt T_Address gt Class lt Address gt lst Class lt Address gt 4 2 Fortgeschrittene Konzepte der Operational Mappings 143 Erl uterung der Verwendung von
159. esamt muss man noch bedenken dass die BlackBox Unterst tzung nach wie vor recht d nn ist BlockBox Methoden die im generierten Java Code aus formuliert worden sind werden bei SmartQVT mit der n chsten Generierung mit dem n chsten compile berschrieben Die selbst implementierten Code Ab schnitte gehen dabei verloren Aus dem Grund ist es ratsam die BlackBox Metho den auszulagern und in einem eigenen Paket unterzubringen Im generierten Code m ssen dann lediglich die Aufrufe wiederhergestellt werden Abhilfe k nnte man schaffen indem eine komplette Bibliothek in Form eines Java Programmes im plementiert w rde Diese m sste in SmartQVT dann als Plugin in dem jeweiligen Transformationskontext ver ffentlicht vorliegen 4 3 Transformation von UML Modellen Bisher ist die Operational Mappings in einem doch recht akademischen Kontext er rtert worden der Transformation von simplen UML Modellen nach simplen RDBM Modellen mittels UmlToRdbm Das war auch gut so denn bei dieser Transformation konnten wir uns auf der einen Seite mit Metamodellen besch f tigen mit sehr einfachen eben den simplen Metamodellen SimpleUML und SimpleRDBM Auf der anderen Seite war dieses Beispiel schon komplex genug um viele Facetten der Transformation mit der Operational Mappings kennen und verstehen zu lernen da die simplen Metamodelle eine Erstellung von Modellen erm glichen die im Grunde genommen bereits einige klassische Darstellungs mitte
160. esign Techniques Rum91 Grady Booch brachte 1994 Object Oriented Analysis And Design With Applications Boo91 heraus All diese Autoren hatten eine mehr oder weniger an den Gegenst nden der realen Welt eben den Objekten ausgerichtete Sicht auf die Dinge Einen etwas ande ren Ansatz verfolgte Ivar Jacobson der mit der Ver ffentlichung des Object Oriented Software Engineering Jac92 eine Betrachtung der Anwendunssf lle Use Cases einer realen Welt in den Mittelpunkt einer Analyse stellte 1 2 Die ber hmten Akronyme der OMG 5 Diese Auflistung ist sicher nicht vollst ndig So sind zum Beispiel Autoren wie Larry Constantine James Odell Sally Shlaer und Stephen Mellor Harel und andere etwas in den Hintergrund ger ckt Aber es reicht soweit um zur Unified Modeling Language UML als der zurzeit zentralen Modellierungssprache zu kommen Mitte der 90er Jahre hat die Firma Rational die Amigos Booch Rum beaugh und etwas sp ter Jacobson unter einem Dach zusammengebracht mit der Zielsetzung auf der Basis der bestehenden Konzepte und L sungen im Umfeld der Software Technologie ein vereinheitlichtes Modell zu erarbeiten Das Ergeb nis war die UML Boo05a Boo05b UML Die UML die mittlerweile in der Version 2 2 vorliegt UML2 ist eine Modellierungssprache die eine Vielzahl von Sprachmitteln und Diagrammen zur Verf gung stellt um strukturelle und funktionale Sachverhalte zu beschreiben In Abbildung 1 2 kann man bereits er
161. etamodellen in QVT Scripten kann entweder Inline direkt als QVT Datenstruktur im Script vorgenommen werden Variantel oder ber den Import einer externen EMOF Datenstruktur Variante 2 Variante 1 Inline Deklaration von QVT Datenstrukturen Deklaration metamodel SimpleUML wie oben Listing 2 1 metamodel SimpleRDBM wie oben Listing 2 1 Benutzung modeltype UML uses SimpleUML modeltype RDBM uses SimpleRDBM transformation Uml2Rdbm in srcModel UML out dstModel RDBM Die Metamodelle werden im QVT Script definiert und als Modelltypen dort benutzt Diese L sung hat den Vorteil dass die Metamodelle in einer relativ les baren und verst ndlichen Form im Script zu finden sind Au erhalb der Transfor mation sind sie allerdings nicht bekannt Das kann zu Problemen f hren wenn die Eingangsmodelle mit einer Modellierungssprache entwickelt worden sind die sich wenn auch nur geringf gig von dem internen Metamodell unterscheidet Derartige Konflikte sind mit den zurzeit zur Verf gung stehenden Werkzeugen schwierig zu lokalisieren und zu beheben Variante 2 Benutzung von extern definierten Metamodellen Benutzung modeltype UML uses SimpleUml http omg gvt examples SimpleUml gt modeltype RDBM uses SimpleRdbms http omg qvt examples SimpleRdbms 2 2 Serialisierung der Metamodelle 45 oder zum Beispiel auch modeltype UML uses http www eclipse org uml2 2 1 0 UML trans
162. ezie hung zu einer anderen Tabelle realisiert Funktionen in QVT sind Mapping Operationen map ping und Hilfsfunktionen Mapping Operationen sind imperative Operationen die immer eine Wirkung auf ein Zielmodell haben Hilfsfunktionen sind helper oder queries Bei einer query handelt es sich um eine sei teneffektfreie Hilfsfunktion die keine Wirkung auf ein Modell hat helper k nnen Nebeneffekte verursachen Eine Guard ist ein W chter von verschiedenen Aus dr cken So k nnen zum Beispiel Modelltypen oder Mapping Operationen in Form von where Pr dikaten mit Guards versehen sein aber auch eigene Typdefinitio nen und log Meldungen Eine Library ist eine Sammlung von implementierten im perativen Operationen oder Funktionen die zur Wieder verwendung zur Verfiigung stehen Beispiele fiir Libra ries sind die QVT und die OCL Standardbibliotheken Libraries k nnen mit Sprachmitteln der QVT oder auch als Blackbox Libraries in anderen Programmiersprachen erstellt werden IM Implementierung einer Applikation mit den Mitteln und nach den Gegebenheiten eines speziellen Basissys tems Initialisierung Inline Object Creation Interface Home l Remote I Intermediate Data Invariante Iteration Glossar 239 Die Initialisierung ist eine Phase in Mapping Operatio nen die Anweisungen zur Vorbereitung von Mappings enth lt Die Initialisierung wird in einer init Sektion vorgenommen Inline Objekterzeu
163. formation Uml2Rdbm in srcModel UML out dstModel RDBM Die Variante 2 zeigt nun die Einbindung von extern definierten Metamodellen Hierbei handelt es sich um Metamodelle zum Beispiel insbesondere das UML2 Metamodell welches so auch als Grundlage f r die Implementierung einer Mo dellierungssprache Verwendung findet Diese Auspr gung des UML2 Metamo dells stammt aus dem Eclipse UML Projekt EUML Variante 3 Metamodelle im Eclipse Kontext In unseren QVT Beispielen werden wir es mit Metamodellen zu tun haben die im Kontext der Transformationsplattform verf gbar sind Wie bereits angedeutet werden die Beispiele der operationalen Transformationen mit frei verf gbaren Werkzeugen erarbeitet die auf der Basis der Entwicklungsplattform Eclipse zur Verf gung stehen Metamodelle hierf r m ssen entweder in einer universellen Fassung vorliegen die wir oben mit der XMI Repr sentation schon kennen ge lernt haben oder in einem speziellen Format im De facto Eclipse Standard dem im Eclipse Modeling Framework definierten Ecore Format Die Beispiele der Metamodelle SimpleUML und SimpleRDBM im Ecore Format finden sich vollst ndig im Anhang Die Metamodelle werden als Eclipse Plugins aufbereitet und im Eclipse Kon text publiziert Das werden wir uns im folgenden Abschnitt ansehen Die Benut zung erfolgt in hnlicher Weise wie in der Variante 2 modeltype UML uses http SimpleUML ecore modeltype RDBM uses http SimpleRDBM ecor
164. g 3 1 gezeigt Es handelt sich um das Projekt OM_HelloWorld welches hier in verschiedenen Script Auspr gungen erarbeitet worden ist Helloworld1i bis 56 3 Operational Mappings die Sprache HellowWorld5 Ma geblich sind bis auf weiteres die Dateien mit dem Suffix qvt Bei diesen handelt es sich um die QVT Scripte 1 SmartQVT Projekte sind Eclipse Plugin Projekte in denen mittels Operational Mappings Scripten hier HelloWorld5 gvt Modelltransformationen beschrieben und durchgefiihrt werden File Edit Source Refactor Navigate Search Project SmartQYT Run QvytSource Window Help la cio lQ O SHeo lav i i 6o 2 modeltype UML uses SimpleUML 58 src 3 modeltype RDEM uses SimpleRDBM eR JRE System Library JDK1 6 H Plug in Dependencies 5 transformation HelloWorld i in source UML GS META INF 6 out target RDBM gt model main Eg qt 8 i bu info txt 9 Source objects Package gt map createHello HelloInherit properties 0 HelloInherit qvt mapping Package createHello Schema B HelloWorld properties 2 when self name size gt O Q Helloworld qwt 3 where name lt gt Helloworldi properties i Q Hello World1 qyvt 5 name self name 2 Helloworld2 properties Q Hello World2 qyvt S HelloWorld3 properties Q HelloWorld3 qvt MD HelloWorld4 qvt 1SimpleUML nsURI http MyUML ecore D HelloWorldS message 2SimpleRDBM nsURI http MyRDBM e
165. g eine ungeordnete Menge von Elementen in der Duplikate erlaubt sind Sequence eine geordnete Menge von Elementen in der Duplikate erlaubt sind Komplexe QVT Datentypen Transformation repr sentiert eine instantiierte Transformation Model repr sentiert alle instantiierten Modelle Object repr sentiert Instanzen aller Typen Modellelemente und Datentypen Element repr sentiert alle Instanzen die Modellelemente sind Status enth lt Informationen ber den Zustand einer Transformation in Ausf hrung Exception stellt den Basistyp f r die Behandlung aller Ausnahmen dar 70 3 Operational Mappings die Sprache NumericType List Dict Tuple generelle Metaklasse f r numerische Standardtypen generelle Metaklasse f r alle Sammlungstypen List ist eine geordnete Liste von Werten Im Gegensatz zu dem OCL Datentyp Collection sind auf Listen QVT Opera tionen definiert Dictionary ist ein parametrisierter Listentyp der eine Hash organisierte Datenstruktur darstellt Dict ist eine un geordnete Liste von Werten die ber einen Index adressiert werden kann Auf Dict Datentypen sind in der Standard bibliothek ebenfalls Operationen vordefiniert ist ein Datentyp der eine ungeordnete Liste von anonymen Elementen repr sentiert Definition eigener Datentypen Mit typedef ist es m glich zum einen komplexe Datentypen mit einem Alias namen zu versehen und zum anderen Datentypen in einem speziellen Kontext Be dingungen
166. ge ber Stereotyp ist gekennzeichnet in welcher Form die jeweilige Aktion implementiert ist Zun chst werden Pakete eines SimpleUML Modells behandelt und zu Schemas eines SimpleRDBM Modells transformiert dann die Klassen und Assoziationen die sich als PackageElements in dem jeweiligen Paket befinden packages classes und associations sind Instanzen von Metaklassen des Quellmo dells schemas und tables sind Instanzen der Metaklassen des Zielmodells PackageToSchema PackageToSchema Abbildung C 1 wird f r jedes Paket des Quellmodells durchlaufen und erzeugt jeweils ein Schema insgesamt eine Liste von Schemata analog gilt das f r Klassen in ClassToTable und Assoziationen in Associa tionToTable Die Aktivit t UmlToRdbm repr sentiert die Transformation selbst wie auch ihre main Funktion als Einstiegspunkt S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_7 Springer Verlag Berlin Heidelberg 2010 202 C Operational Mappings Beispiele In PackageToSchema werden alle Klassen und Assoziationen als geord nete Listen selektiert und Element f r Element der entsprechenden Mapping Operation ClassToTable beziehungsweise AssociationToTable ber geben Das Ergebnis des Mappings ist jeweils eine geordnete Liste von Tabellen lt lt SimpleUML lt lt SimpleRDBM srcModel destModel UmIToRdbm a _ eae eae eS o a lt lt mapping gt gt PackageToSchema lt lt m
167. ge createSchema Schema name self name printEntities ist eine Hilfsfunktion printEntities self gt entities tables self gt entities gt map EntityToTable 116 3 Operational Mappings die Sprache Im Fall EntityToTable muss nichts mehr gepr ft werden Entity repr sentiert die Klassen im Modell die persistent sind Mapping Entity EntityToTable Table name self name printEntities ist eine Hilfsfunktion die die Namen aller Elemente einer entities Liste in der Konsole ausgibt query printEntities entities Sequence Entity Integer if entities gt isEmpty then log Es sind keine persistenten Entities vorhanden else log Liste der persistenten Entities entities gt forEach i Entity log i name J bi endif return 0 Und damit denke ich haben wir genug beisammen um einige konkrete Mo delltransformationen mit Operational Mappings beschreiben und ausf hren zu k nnen 4 Operational Mappings Anwendungen Mit dem Riistzeug tiber Operational Mappings das wir uns im vorigen Kapitel angeeignet haben k nnen wir nun versuchen einige komplexere Transformatio nen durchzuf hren In diesem Kapitel wird die Entwicklung von Transformatio nen mit Hilfe der Operational Mappings an zwei umfassenden Anwendungen er rtert Einerseits werden wir uns mit der berf hrung eines SimpleUML Klas sendiagramms in ein Si
168. gister sind f r QVT Transformationen ber die SmartQVT Konfiguration der Laufzeit umgebung nicht relevant sondern nur dann wenn die Transformation mit Hilfe der Eclipse Laufzeitumgebung erfolgen soll Dies wollen wir uns jetzt ansehen denn mit der derzeitig eingesetzten Version von SmartQVT es handelt sich wie gesagt um ein Open Source Produkt das sich in der Entwicklung befindet ist es nicht immer ganz einfach ber die SmartQVT Run Option zu vern nftigen Ergebnissen zu kommen 1 Die Eclipse Laufzeitumgebung wird mit Run gt Open Run Dialog konfiguriert und gestartet Abbildung 3 5 Run xl Create manage and run configurations Create a configuration to launch an Eclipse application Q i s E ax a Name Hello world Itype filter text T Main 69 Arguments Plug ins Configuration Tracing E S Eclipse Applications Hellolnherit el oss i Helloworld Location D projekte MDA projectsitransform 7 HelloWorld2 1 Clear workspace Ic Workspace File System Variables S LogsOnProfile A MyHelloWorld VW Ask for confirmation before clearing MyProfiles Program to Run MyUmi2rdbm en duch asada SimpleProfile un a product org eclipse sdk ide Umil2rdbm Run an application Kelc ata Rye ter 0 gt UML2RDBM_PI 59 Java Applet Java Runtime Environment I Java Application Java Executable default java Ju JUnit Runtime JRE uoki 6 Install
169. gt lt package_definition gt primitive lt primitivetype_name gt enum lt enumeration_name gt lt enumeration_list gt exception lt exception_name gt extends lt exception_name gt Primitive Datentypen werden definiert durch Angabe des Schliisselwortes primitive gefolgt von einem beliebigen Namen Aufz hlungstypen werden definiert durch eine Liste von Bezeichnern denen das Schliisselwort enum voran gestellt ist Beispiele metamodel SimpleUML STRING ist ein selbst definierter primitiver Datentyp primitive STRING ClassType ist ein Aufz hlungstyp mit primitive oder complex kann ein Classifier gekennzeichnet werden enum ClassType primitive complex Deklaration der Metaklassen 88 3 Operational Mappings die Sprache Die Definition eines Metamodells besteht aus der Beschreibung der Metaklassen und deren Beschaffenheit Die Spezifikation von Klassen wird durch das Schl sselwort class eingeleitet gefolgt von einem frei w hlbaren Namen Mit dem optionalen Zusatz extends werden andere Klassen als Superklassen angegeben von denen eine Subklasse Eigenschaften und Operationen erben kann Die extends Beziehung ist auch f r exceptions definiert Es ist m glich Klassen mit dem Bezeichner abstract zu versehen um sie damit als abstrakte Klassen zu kennzeichnen Abstrakte Klassen k nnen nicht instantiiert werden Abstrakte Metaklassen stehen somit im Rahmen
170. gung ist die freie Generierung von Objekten innerhalb von Mapping Operationen Mapping Operationen berf hren im Allgemeinen ein Modellele ment eines Quellmodells in ein Modellelement eines Zielmodells Sofern Objekte erzeugt werden sollen ohne Bezugnahme auf ein Zielmodell sei das als eine freie Objekterzeugung bezeichnet Dies kann mit Hilfe von Jn line Objekterzeugungen vorgenommen werden Ein Interface ist die Schnittstelle einer Komponente In Interfaces werden die inneren Bestandteile der Kompo nente angeboten die diese nach au en zur Verf gung stellt zum Beispiel die getter und setter Methoden In der Entity Java Bean Spezifikation sind verschiedene Standard nterfaces definiert die eine korrekte Session Bean oder EntityBean realisieren muss Hierbei handelt es sich um das Homelnterface mit den Methoden zum Er zeugen und Verwalten der Bean und das Remotelnter face in dem die ffentlichen Businessmethoden der Bean angeboten sind Intermediate Data dienen zur dynamischen Erweiterung von Metamodellen Sie sind nicht dauerhaft mit dem Metamodell verbunden sondern sie werden in einer Transformation und f r eine Transformation definiert Als Intermediate Data k nnen Klassen interme diate class und Eigenschaften von Klassen in termediate property definiert werden Invarianten sind Aussagen die zu jedem Zeitpunkt der Ausf hrung einer Anweisungsfolge zutreffen m ssen In varianten werden also mit jeder Ver
171. gungssatz double setZinssatz pZinssatz double setBeginn pBeginn Integer setEnde pEnde Integer ejbRemove Abb 4 16 Detailansicht der SessionBean Komponente SB_Konto KontoRemote setZahlungsmodaltaet pZahlungsmodalitaet Integer 4 4 QVT und UML Profile 175 Das auf der Basis des Quellmodells Abbildung 4 9 generierte Zielmodell Abbildung 4 16 zeigt den Ausschnitt f r die Fachklasse Konto ist nat rlich noch kein vollst ndiges PSM Modell so haben wir mindestens die Assoziationen und auch die Parameter der EJB Standardmethoden vernachl ssigt Etwas platt formspezifische Modellierung soll und muss der folgenden Entwicklungsphase vorbehalten bleiben denke ich Aber das Beispiel hat zumindest die Durchf hr barkeit einer Modell nach Modell Transformation auf der Basis von UML2 Modellen mit Hilfe von QVT Operational Mappings aufzeigen k nnen 4 4 QVT und UML Profile Die UML2 bietet eine leichtgewichtige M glichkeit ein gegebenes Metamodell den eigenen dom nenspezifischen Belangen anzupassen UML Profile Auch dies wollen wir im Rahmen der Modelltransformation nutzen und zwar die Aus wertung von profilierten Modellen in operationalen Transformationen Ein UML Profil ist ein Paket des UML Metamodells in dem Metaklassen in spezieller Weise erweitert und mit bestimmten dom nenspezifischen Merkmalen versehen werden k nnen Ein klassisches U
172. hen sind die Aufgaben im Rahmen der Trans formationsaktivit t 1 Erstellen oder Beschaffen von Metamodellen 2 Beschreiben der Transformation 3 Durchf hren der Transformation Das Erstellen und Durchf hren von Transformationen ist im Sinne der MDA eine klassische Aufgabe eines IT Architekten 18 1 Einf hrung Diese ist verh ltnism ig schwierig bis nahezu unm glich zu l sen wenn die vorhergehende Modellierung in nicht formaler Form erfolgt ist wenn zum Bei spiel die Modelle umgangssprachlich in Prosatexten beschrieben worden sind Ei ne wesentliche Voraussetzung f r eine modellgetriebene Entwicklung ist wie ob en schon mehrfach angedeutet das Vorhandensein von formalen Modellen Was aber ist ein formales Modell Ein formales Modell ist ein Modell welches in einer Modellierungssprache beschrieben worden ist deren Syntax auf einem Metamodell basiert Zur Unter st tzung der Modellierung und Austauschbarkeit von Modellen hat die OMG im Rahmen der Meta Object Facility MOF ein Konzept entwickelt auf der Basis einer formalen Modellierungssprache Metamodelle f r andere Modellierungs sprachen zu beschreiben MOF Nach Gru06 ist die MOF das Werkzeug der UML zur Erstellung und Erweiterung von Metamodellen Oder mit anderen Wor ten die UML ist die Sprache mit der auch formale Metamodelle entwickelt wer den die im Rahmen des MDA Ansatzes sowohl f r die Aufgabe der Modellie rung als auch f r die Beschreibung und Dur
173. iate Class wird eine Metaklasse beschrieben mit Intermediate Property eine Eigenschaft die einer beliebigen Klasse des Metamo dells hinzugef gt werden kann Die Spezifikation von Intermediate Classes und Intermediate Properties wird hnlich wie die Definition von Metamodellelemen ten wie wir sie bereits am Anfang dieses Abschnittes kennengelernt haben vor genommen Ihnen wird das Schl sselwort intermediate vorangestellt Bei der Definition eines dynamischen Klassenmerkmals ist die Angabe eines Meta objekttyps erforderlich um damit den Objekttyp im Metamodell zu bezeichnen An dieser Stelle muss man hervorheben dass von den zur Verf gung stehenden Werkzeugen noch nicht zuviel zu verlangen ist Hier ist noch einiges in Entwick lung zu erwarten Gleichwie die hier vorgestellten Beispiele sollten funktionieren Beispiel intermediate class Entity name String kind String bi intermediate property Package entities Sequence Entity intermediate property Class isEntity Boolean Hiermit wird unserem bekannten Metamodell SimpleUML die Klasse En tity hinzugef gt eine neue Metaklasse die die als persistent markierten Klassen eines Modells repr sentieren soll Das hei t wir erwarten dass f r alle zuk nftigen Elemente dieser tempor ren Klasse die Eigenschaft isEntity true sein wird das werden wir allerdings erst noch implementieren m ssen En tity besitzt wie von Klassen bekannt einen Namen name u
174. iate Data Zur Erinnerung Dyna mische Metaelemente sind Klassen und Eigenschaften die dem Metamodell im Rahmen einer operationalen Transformation hinzugef gt werden Sie gelten damit auch nur f r die eine Transformation in der sie definiert worden sind Es wird eine neue Klasse eingef hrt namens LeafAttribute Diese Klasse besitzt die Attribute name kind und attr name und kind sind die uns be kannten Attribute der Metaklasse Attribute 130 4 Operational Mappings Anwendungen attr vom Typ Attribute dient dem Zweck ein Attribut aufzunehmen und zwar konkret ein Attribut das einen primitiven Datentyp besitzt welches also in diesem Sinne ein Blatt Attribut ist intermediate class LeafAttribute name String kind String attr Attribute bi Die Metaklasse Class wird um eine zus tzliche Eigenschaft leafAttri butes erweitert Hierbei handelt es sich um eine Liste von Attributen dieser Klasse die Blattattribute sind So wird zum Beispiel das komplexe Attribut wohnort vom Typ Ort dadurch aufgel st dass die Attribute der Klasse Ort der Liste der leafAttributes hinzugef gt werden intermediate property Class leafAttributes Sequence LeafAttribute Unter Verwendung dieser hinzugef gten Metamodellelemente sollen nun die Attribute einer Klasse vor der Generierung der Tabellenspalten dahingehend auf gearbeitet werden dass in der Liste leafAttributes zun chst alle Attribute mit primitiven Datentypen mit Hilfe de
175. ich ber die Standard funktionen der OCL verf gt gibt es in der Operational Mappings eine recht um fangreiche Funktionssammlung die ber die der OCL hinausgeht Die Funktionen der OCL Standardbibliothek stehen allerdings ebenfalls vollst ndig zur Verf gung Vordefinierte OVT Datentypen Transformation repr sentiert eine instantiierte Transformation selbst Model repr sentiert alle instantiierten Modelle Status enth lt Informationen ber den Zustand einer Transfor mation in Ausf hrung Exception stellt den Basistyp fiir die Behandlung aller Ausnahmen dar Object repr sentiert Instanzen aller Typen Modellelemente und Datentypen Element repr sentiert alle Instanzen die Modellelemente sind Dictionary ein parametrisierter Datentyp S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3 8 Springer Verlag Berlin Heidelberg 2010 220 D Standardbibliotheken List generelle Metaklasse fiir alle OCL Sammlungstypen NumericType generelle Metaklasse fiir numerische Standardtypen String repr sentiert den Standardtyp String Methoden auf Transformation Transformation ist eine Instanz des Metatyps OperationalTransfor mation sie repr sentiert eine Basisklasse f r alle instantiierten operationalen Transformationen Transformation lt methodname gt lt arguments gt lt resulttype gt transform Status Ausf hren einer Transformation und Liefern eines Statusobjektes dies
176. ich die Idee ein mal entwickelte Konzepte Muster oder Code mehrfach an anderer Stelle weiterzuverwenden Das bedeutet un mittelbar f r die Entwicklung dass die in Applikationen befindlichen Module und Komponenten ein starkes Ma an Wiederverwendbarkeit haben Wiederverwendung ist eine positive Konsequenz oder auch Zielsetzung zum Beispiel des Vererbungsprinzips siehe Arbeitsbereich Eine Zusicherung Assertion ist eine in Form von Regeln oder Bedingungen spezifizierte Aussage ber die G ltig keit von Software Einheiten softwaretechnische Zusi cherung Zusicherungen k nnen sowohl konzeptionell in den Modellen wie auch technisch im Code formuliert werden Auch die G ltigkeit von Modellkandidaten f r und w hrend einer Transformation kann ber Zusiche rungen formuliert werden zum Beispiel durch Pr dikate in when und where Klauseln Eine Zuweisung Assignement ist ein imperatives Element eines Programms Es handelt sich um eine spezielle Anweisung in der einer Variablen in irgendeiner Form ein Wert zugewiesen wird Der Wert kann aus einer anderen Variablen oder einer Konstanten bestehen Abk rzungsverzeichnis BPMI BPMN CASE CIM CORBA DB DBS DDS DIN DSL DV Ecore EJB EMF EMOF EPL ERM EVA FK Business Process Modeling Initiative Business Process Modeling Notation Computer Aided Software Engineering Computational Independent Model Common Request Broker Architecture Datenbank Datenbanksystem
177. icht erf llt muss die Anweisung bis zu dem vorherigen konsistenten Zustand zur ckrollen Ein Objekt ist allgemein die Instanz einer Klasse Eine Klasse definiert die abstrakte Struktur eines Gegenstan des der Realit t ein Objekt stellt den realen Gegenstand in einer implementierten Applikation dar In der QVT ist ein Objekt eine Variable die in einer Transformation oder Mapping Operation ein Modellelement repr sentiert 242 Glossar Object Creation Operation imperative O Operational Transformation Paket Parameter Parsen Persistenz Die Erzeugung von Objekten oder Objektelementen wird als Object Creation bezeichnet Es gibt drei Arten der Objekterzeugung e die explizite Erzeugung durch eine Mapping Opera tion mapping e die Inline Object Creation mittels der object Opera tion siehe Inline Object Creation e die Konstruktion eines Objektes constructor Eine Operation ist eine Folge von Anweisungen auf ei nem Modell oder einem Modellelement mit dem Ziel eine Ver nderung des Modells oder die Erzeugung eines neuen Modells herbeizuf hren Eine imperative Opera tion ist eine Operation die zu diesem Zweck Sprachmittel einer imperativen Sprache verwendet Eine Operational Transformation st eine Modelltransfor mation die ausschlie lich Konstrukte der Operational Mappings Sprache verwendet Transformationen k nnen ansonsten hybrid unterschiedliche Sprachkonzepte mit einander mischen Ein P
178. ichte Metamodelle Das Darlehen Modell im SimpleUML Die Operational Mappings Plattform SmartQVT Ein exemplarisches QVT Projekt QVT Optionen im Kontextmenii SmartQVT Ausf hrungskonfiguration Eclipse Konfiguration einer SmartQVT Applikation Eclipse Plugin Konfiguration Aufbau von Operational Mappings Transformationen Transformationspattern der Transformation Uml2Rdbm 10 14 15 17 18 20 23 26 28 29 31 12 33 47 48 49 50 51 56 58 39 60 61 62 67 118 xvi Abbildungsverzeichnis Abb 4 2 Abb 4 3 Abb 4 4 Abb 4 5 Abb 4 6 Abb 4 7 Abb 4 8 Abb 4 9 Abb 4 10 Abb 4 11 Abb 4 12 Abb 4 13 Abb 4 14 Abb 4 15 Abb 4 16 Abb 4 17 Abb 4 18 Abb C 1 Abb C 2 Abb C 3 Abb C 4 Abb C 5 Abb C 6 Das Package darlehen ein simples UML Diagramm Schema darlehen im SimpleRDBM erste L sung Immobilie und Person mit aufgel sten komplexen Spalten Das Package darlehen mit einer Spezialisierung von Person Das Datenbankschema nach Aufl sung der Spezialisierung Immobilie Konto und Person mit Prim rschl sseln Schema darlehen mit Assoziationstabellen Das Fachklassenmodell des privaten Wohnungsbaukreditgesch fts Die Transformation UML2EJB im MDA Pattern Das Metamodell UML2 im Kontext Element Das Metamodell UML2 im Kontext Classifier Der Operational OVT Editor Konfiguration einer Operational QVT Transformation Die Komponenten des Ziel Darlehensmodells Detailansicht der SessionBean Komponente SB_ Kont
179. identifizieren Ein Prim rschl ssel wird gebildet aus einem oder mehreren speziellen Attri buten einer Tabelle die insgesamt als eindeutiger Schl s sel dienen k nnen H ufig wird zur Identifizierung von S tzen in einer Datenbank ein k nstliches synthetisches numerisches Attribut hinzugef gt das zur Bildung des Prim rschl ssels verwendet wird siehe Prim rschl ssel 244 Glossar Profil UML Profil Plattform Specific Model Property Rekursion Relation Resolution Ein UML Profil ist ein Paket in dem Stereotypen und deren Zuordnungen Extension zu UML2 Metaklassen definiert sind Mit UML Profilen sind dom nenspezifi sche Spezialisierungen des UML2 Metamodells m glich PSM Design einer Architektur unter Ber cksichtigung einer speziellen Betriebsplattform Property ist in der Definition der UML generell die strukturelle Eigenschaft von Classifiern also ein Oberbegriff zum Beispiel von Attributen Properties in diesem Kontext sind h ufig auch Parameter und Einstel lungen f r den Betrieb der Werkzeuge und die Durchf h rung von Transformationen Eine Rekursion ist eine spezielle Technik zur Implemen tierung einer Wiederholung Eine Rekursion wird zum Beispiel in der Weise implementiert dass eine Funktion sich selbst aufruft und damit eine erneute Ausf hrung impliziert Dies kann direkt erfolgen A Anweisungen call A oder ber mehrere Stufen A Anweisungen call
180. ie der Mapping Operation in Form eines when Pr dikats hinzugef gt wird Diese sind uns bereits bei der Definition von Modelltypen begegnet Invarianten die ebenfalls aus einer logischen OCL Anweisung bestehen dienen zur st ndigen berwachung und berpr fung einer Mapping Operation Invarianten werden in Form von where Pr dikaten dem Mapping hinzugef gt Sowohl Guards als auch Invarianten sind optional Syntax mapping lt mapping_signature gt when lt constraint gt where lt constraint gt lt mapping_body gt Mit when und where Pr dikaten werden einerseits g ltige Auspr gungen von Quellmodellen berwacht so dass brauchbare Zielmodelle gebildet werden k nnen andererseits werden korrekte Beziehungen zwischen Quellmodellen und Zielmodellen definiert In dem folgenden Beispiel soll zu einem Package nur dann ein Schema erzeugt werden wenn sich in dem Package Klassen befinden Ein Package ohne darin befindliche Klassen bleibt unber cksichtigt 104 3 Operational Mappings die Sprache Beispiel mapping Package PackageToSchema Schema when self allSubobjectsOfType Class gt notEmpty name self name Eine Verletzung des when Pr dikates w rde den entsprechenden Transfor mationsschritt hier zum Beispiel die Mapping Operation f r das betroffene Mo dellelement gar nicht erst ausf hren Sofern im Verlauf einer Mapping Operation die Verletzung eines where Pr d
181. ie redefiniert und angepasst werden e access verh lt sich analog wobei die Funktionen der mittels access referenzierten Module nicht redefinierbar sind Wenn Transformationen mit den Funktionen der Standardbibliothek benutzt werden sollen zum Beispiel als Aufruf mittransform dann m ssen s e mittels access eingebunden sein Die Benutzung von Libraries ist folgenderma en Beispiel transformation UseStringLib in srcModel UML out destModel RDBM extends library StringLib main i srcModel objects Package gt map PackageToSchema 4 2 Fortgeschrittene Konzepte der Operational Mappings 147 mapping Package PackageToSchema Schema init var sName String Benutzung einer Library Funktion sName stringCat Schema_ self name name sName tables self allSubobjectsofType Class asOrderedSet gt map ClassToTable mapping Class ClassToTable Table init var tName String Benutzung einer Library Funktion tName stringCat Table_ self name name tName Die Schl sselw rter transformation oder library der durch access oder extends referenzierten Module sind berfl ssig wenn die entsprechenden Module durch ihre Namen und ihre Signaturen eindeutig zu erkennen und zu un terscheiden sind Beispiel transformation UseStringLib in srcModel UML out destModel RDBM extends StringLib Externe Bibliotheken m ssen ni
182. ieren Search Projekt Scripts SmartQYT Run ADELE Fenster Hilfe mia les lm HOG a cane ee ate e e ER ren DE s gt A3 vv es DE H E 13 O_UMLProfil model i eft ProfileDef uml ig t ProfileDef umldi ae a are umildi package ProfileTest Ea lt Model gt Available Stereotypes B B lt Package gt ProfileTest E lt lt persistent gt gt lt Class gt A H lt class gt B a lt Profile Application gt ProfileDef SFA Class Diagram ProfileTest Additional Resources Applied Stereotypes Stereotypes ProfileDef persistent Stereotype Attributes lt Remove Advanced Abb 4 18 Anwendung des Stereotyps lt lt persistent gt gt im UML Modell 178 4 Operational Mappings Anwendungen Unsere eingangs gestellte Aufgabe einerseits Stereotypen im Quellmodell zu Stereotypen und zu Klassen im Zielmodell umzuwandeln und andererseits aus Klassen im Quellmodell Stereotypen im Zielmodell zu generieren wird nun durch folgende Transformation gel st modeltype UML uses http www eclipse org uml2 2 1 0 UML transformation CheckProfileDef in src UML out dest UML main src objects Stereotype gt generateStereotype src objects Stereotype gt stereotype2class src objects Class gt class2stereotype mapping in Stereotype generateStereotype Stereotype name self name mapping in Stereotype stereoty
183. ifiers also complex d h es handelt sich um eine Klasse oder primitive type ClassType isComplex liefert true falls type complex isComplex Boolean 3 5 Operationale Transformationen 91 class Package extends ModelElement Packages k nnen eine geordnete Liste von mehreren PackageElements besitzen Das Package ist dann namespace der Elemente composes elements PackageElement ordered opposites namespace 1 class Class extends Classifier Klassen besitzen Attribute Eine Klasse ist dann owner dieser Attribute composes attributes Attribute ordered opposites owner 1 Klassen k nnen untereinander in einer Genera lisierungsbeziehung stehen references general Classifier ordered opposites specific 1 class PrimitiveDataType extends Classifier class Attribute extends ModelElement Attribute besitzen einen type Dies ist ein primitiver oder komplexer Classifier references type Classifier 1 Die Bestandteile von Metamodellen sind selbst Metaelemente also zum Bei spiel Klassen von Metamodellen sind Metaklassen Diese Differenzierung wird in diesem Buch nicht streng eingehalten Wenn also in diesem Zusammenhang zum Beispiel von einer Klasse die Rede ist dann handelt es sich um eine Metaklasse wenn von einem Attribut die Rede ist dann handelt es sich um ein Metaattribut Benutzung von Metamodellen in Transformationen
184. ikates festgestellt wird wird eine Ausnahme er zeugt und die weitere Transformation abgebrochen 3 5 4 Erzeugung von Objekten In einem fr heren Abschnitt dieses Kapitels haben wir uns im Rahmen der QVT Grundlagen mit Variablen von OCL und QVT Datentypen besch ftigt Um das Thema der Objekterzeugung besser verstehen zu k nnen m ssen wir zun chst den Begriff Objekt ein wenig griffiger machen Im Sinne einer objektorientierten Entwicklung ist ein Objekt eine Instanz einer Klasse Das ist auch hier grund s tzlich der Fall wobei es sich bei den Klassen nun um Metaklassen des Meta modells handelt Diese Differenzierung zwischen Klasse und Metaklasse ist bisher nicht so streng vorgenommen worden Im Allgemeinen haben wir es im Rahmen dieses Buches allerdings fast ausschlie lich mit Metaklassen zu tun Variablen und Objekte Eine Variable ist grunds tzlich jegliche Definition eines Programmelementes mit einer speziellen Typangabe Syntax var lt identifier gt lt datatype gt lt init_part gt Als Datentypen hatten wir es bisher zu tun mit primitiven oder komplexen OCL Datentypen Integer Real String Boolean Set OrderedSet Bag Sequence und mit speziellen QVT Datentypen Transformation Model Object Element Status Exception NumericType List Dict Tuple 3 5 Operationale Transformationen 105 Hier wollen wir nun ein Objekt definieren als eine spezielle Variable die an ein Element in einem Metamodell
185. impleUML Modell 34 2 Modelle und Metamodelle e Auf Grund bestimmter Transformationsregeln auf die wir sp ter noch einge hen werden verf gen die Tabellen ber spezielle Columns lt Tabellen name gt _PK Tabellenname gt _FK und lt Tabellenname gt _ID 2 2 Serialisierung der Metamodelle Die Entwicklung von Metamodellen kann wie oben gezeigt in graphischer Form erfolgen Metamodelle in graphischer Repr sentation sind verst ndlich und leicht nachvollziehbar Der Gedanke mit Metamodellen eine Grundlage f r Modellie rungssprachen und f r eine formale systematische Modellierung zu schaffen ist nat rlich von unsch tzbarem Wert Damit aber Metamodelle f r einen system gest tzten Transformationsprozess zur Verf gung stehen m ssen sie in einer rechnerinterpretierbaren also serialisierten Notation vorliegen Dabei sind ver schiedene Varianten m glich e Zum einen ist da es sich bei der formalen Spezifikation von Metamodellen um Klassendiagramme handelt ist eine serialisierte Darstellung in Form von Da tenstrukturen einer h heren Programmiersprache denkbar Diese Form der Ab bildung soll als QVT Datentyp bezeichnet werden e Zum anderen hat die OMG f r die serielle Repr sentation von Modellen und Metamodellen das generelle Austauschformat XML Metadata Interchange XMI definiert Zur Veranschaulichung der Serialisierung von Metamodellen werden die Mo delle herangezogen die sp ter auch zur Erl uter
186. impleUML und SimpleRDBM in rechnerinterpretierbarer Auspr gung zum einen als QVT Datenstruktur zum anderen in einer Ecore XMI Repr sentation B 1 Deklaration der Metamodelle als QVT Datentypen Die Inline Deklaration von Metamodellen ist optionaler Bestandteil der Operatio nal Mappings Spezifikation Meistens werden die Metamodelle jedoch in einer EMOF oder EMOF hnlichen Form z B Ecore im Rahmen von Operational Mappings Interpretern bereitgestellt Die Inline Metamodelle sind jedoch leichter zu lesen aus dem Grund sollen sie dem kompletten Transformationsscript Um12Rdbm vorangestellt werden 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 CJ class Classifier extends PackageElement S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_6 Springer Verlag Berlin Heidelberg 2010 194 B Metamodelle in serialisierter Darstellung class Attribute extends UMLModelElement references type Classifier 1 class Class extends Classifier composes attributes Attribute ordered opposites owner 1 references general Classifier ordered class Association extends PackageElement source Class 1 opposites reverse destination Class 1 opposi
187. iner Funktion bestimmt die Schnittstelle der Funktion Sie besteht aus einem Namen der Reihen folge dem Namen und Typ von formalen Parametern und einem oder mehreren R ckgabetypen Software Engineering SWE ist die Lehre von der inge nieursm igen Entwicklung und Produktion von Soft ware Systemen Der Begriff SWE ist als Antwort auf eine fr here Software Krise erstmalig auf der ber hmten NATO Conference on SWE Bau68 gepr gt worden Zu den Grunds tzen eines ingenieursm igen Entwick lungsprozesses geh ren eine systematische organisierte und methodische Vorgehensweise Ziel ist es nicht direkt aus der Idee in eine Programmierung berzugehen son dern zuerst die Idee und die damit zusammenh ngenden fachlichen Sachverhalte in mehreren aufeinander folgen den Abstraktionsschritten zu beleuchten und zu beschrei ben und ber ein Konzept die DV L sung zu entwickeln Im Rahmen der Lehre der SWE wurden dann auch ber die Programmiertechnik hinaus diverse strukturierte und objektorientierte Methoden und Beschreibungstechniken entwickelt zum Beispiel die Strukturierten Analyse und Designtechniken und die objektorientierte Analyse und Design Standardoperationen Stereotyp Syntax System Tabelle Terminierung Transformation Glossar 247 Bei den Standardoperationen oder synonym auch Stan dardfunktionen handelt es sich um die Funktionen der OCL und QVT Standardbibliotheken Ein Stereot
188. ion werden die Spalten coll und col2 aufbereitet die zum Herstellen der Referenz auf die beteiligten Tabellen source und des tination ben tigt werden Im Populationsteil wird auf der Basis der Assoziati onseigenschaften eine Tabelle erzeugt Unter Verwendung der Spalten coll und col2 wird jeweils ein Fremdschl ssel generiert und der Tabelle hinzugef gt Ab schlie end wird mit den beiden assoziierenden Spalten ein Prim rschl ssel gebil det Das Transformationsscript UmlToRdbm modeltype UML uses http SimpleUML ecore modeltype RDBM uses http SimpleRDBM ecore transformation uml2rdbm in srcModel UML out destModel RDBM main srcModel objects Package gt map PackageToSchema ee ee ee eee x Packages to Schemas Re x mapping Package PackageToSchema Schema name self name tables self allSubobjectsOfType Class asOrderedSet gt map ClassToTable tables self allSubobjectsOfType Association asOrderedSet gt map AssociationToTable Ue eee ae an x Classes to Tables U eae ee x Intermediate Data zur Zwischenablage der primitiven Attribute intermediate class LeafAttribute name String kind string attr Attribute bi 206 C Operational Mappings Beispiele intermediate property Class leafAttributes Sequence LeafAttribute Klassen werden nur dann transformiert wenn sie persistent sind und wenn sie keine
189. ionalen Nachbedingung dem optionalen Rumpf 98 3 Operational Mappings die Sprache Syntax mapping lt mapping_signature gt when lt expression_block gt where lt expression_block gt lt mapping_body gt Mapping Signaturen In der Signatur der Mapping Operation wird ein Elementtyp des Quellmodells an gegeben auf welches das Mapping angewendet werden soll Der Bezeichnung des Elementtyps des Quellmodells folgt der Name der Mapping Operation Es ist er laubt der Benennung der Methode ein Richtungsmerkmal in inout voran zustellen Wenn dies nicht getan wird gilt in als Voreinstellung und dies ist auch die sinnvolle Klassifizierung an dieser Stelle Im Rahmen der Definition der Me thode kann eine beliebige Liste von Parametern angegeben werden Hier ist eben falls eine Unterscheidung der Richtung in in out oder inout m glich Syntax mapping in inout lt element_type gt lt mapping_name gt in out inout lt paramName gt lt paramType gt out lt return_parameter gt when lt expression_block gt where lt expression_block gt lt mapping_body gt Das folgende Beispiel ist eine einfache Mapping Operation die auf der Basis des Package Namens ein Schema erzeugt Dem Schema Namen wird der Pra fix xxx_ vorangestellt Beispiel transformation uml2rdbm in srcModel SimpleUML out destModel SimpleRDBM main srcModel objects Package gt map
190. ionen 2222222220000sseeeeennnnnnnnnnnenennnnen 86 3 5 1 Definition von Metamodellen mit QVT Sprachmitteln 86 Definition von Metamodellen 020022 2222er een 87 Benutzung von Metamodellen in Transformationen 91 3 3 2 Transformationen so ccdcosdesvcsdcursnddvedenveddvnsenesescdevecicuncedsvecenucebes 93 Inhaltsverzeichnis Xi 3 5 3 Mappins Oper lionen eunsseenenn nun 96 Mapping Signaturen een 98 Mapping Anweisungstell cccccccecececccceseessseesseeeeeeeees 101 Vorbedingungen und Invarianten ccccccecseeseeeeeeees 103 3 5 4 Erzeugung von Objekten ccccccccccccssseesssssseeeeeeeeees 104 Variablen und Objekte eine 104 Objekterzeugung mittels Inline Mapping 106 Objekterzeugung mittels Konstruktoroperationen 108 3 5 5 Helper und Anfrage Operationen uceeeneeensneeeennnnn 110 3 5 6 Intermediate Data Dynamische Metaobjekte 112 Operational Mappings Anwendunge cccccccsssssssssccccsssssssscccoees 117 AT UME2R DENE een Rense 117 4 1 1 Vorbereitung der Transformation ccccccceeeeeeeeeeeeees 119 4 1 2 Entwicklung der Mapping Operationen 22222222 222 122 4 1 3 Behandlung primitiver und strukturierter Datentypen 125 bernahme von primitiven Datentypen 126 bernahme von komplexen Datentypen 127 4 1 4 Behandlung von
191. ionsanweisungen Einen berblick ber die Sprachen der QVT und eine Differenzierung nach dem deskriptiven oder imperativen Ansatz zeigt Abbildung 1 9 QVT Sprachen 4 imperative deskriptive Sprachen BlackBox H Sprachen Relations Language MOF a kompatible Sprachen Operational Mappings Core Language Abb 1 9 Architektur der QVT Sprachen In der Spezifikation MOF QVT wird ein Tripel von Sprachen definiert Rela tions Language Operational Mappings Core Language mit dem QVT Scripte in deskriptiver oder imperativer Weise entwickelt werden k nnen Bei der Relati ons Language und Core Language handelt es sich um deskriptive Sprachtypen Operational Mappings ist eine imperative Sprache Daneben gibt es die Sprach komponente BlackBox Hierbei handelt es sich um eine beliebige Transforma tionssprache aus einer externen Quelle Im Sinne der MOF QVT Konformit t ist lediglich gefordert dass die Black Box Sprachen auf eine definierte QVT Sprache abgebildet werden Die QVT ins besondere die QVT Core Language st damit das Laufzeitsystem f r eine Black Box Sprache QVT l sst auch hybride Sprachen zu genauer eine gemischte Anwendung der Sprachkonzepte die also sowohl imperative wie auch deskripti ve Sprachkonstrukte verwenden Das ist allerdings meiner Meinung nach ein aka demischer Aspekt den ich in diesem Buch nicht weiter verfolgen m chte 1 2 Die ber hmten Akronyme der OMG 21 Deskriptive S
192. ipse UML2 Modeling Toolkit MDT und Topcased UML2 TOP Die Entwicklung von Transformationsscripten und die Durchfiihrung von Transformationen wurde mit den frei verfiigbaren Werkzeugen SmartQVT SQVT und QVT Operational QVTO vorgenommen QVTO ist eine Kom ponente des Eclipse Modeling Toolkit Projektes MDT Fast alle Abbildungen dieses Buches sind mit dem kommerziellen UML Werk zeug MagicDraw MAG Personal Edition erstellt worden Mit Ausnahme von MagicDraw handelt es sich um Werkzeuge die unter Pub lic License als freie und offene Produkte zur Verf gung stehen 26 1 Einf hrung UML Project EMF Tools Abb 1 11 Die Architektur der QVT Entwicklungsumgebung 2 Modelle und Metamodelle Eine Operational Mappings Modelltransformation hat als Eingabe ein oder mehrere Quellmodelle und liefert als Ausgabe ein oder mehrere Zielmodelle Bei den Modellen handelt es sich um formale Modelle Das sind solche wie wir wissen deren Modellierungssprache auf der Grundlage eines Metamodells defi niert worden ist Nach der von der OMG vorgenommenen Spezifikation der Meta Object Facility MOF erfolgt die formale Beschreibung von Metamodellen ge nauer gesagt ihrer Syntax mit der UML mit UML Klassendiagrammen Diese sind bereits formal daher sind auch die damit entworfenen Metamodelle formal Metamodelle sind die Datentypen der Argumente einer Transformation transformation tname in source Metamodel out target Metamodel
193. ird In dem Fall kann auf die Eigenschaften des gebun denen Elementes mit self zugegriffen werden Der Datentyp kann ein Objekttyp oder ein primitiver OCL Datentyp sein Syntax helper query lt primitive_datatype gt lt object_type gt lt helper_name gt in out inout lt argname gt lt argtype gt _ lt result_type gt lt result_type gt ia lt expression gt return lt result gt lt result gt lt expression gt Der Rumpf umfasst einen oder mehrere OCL Ausdriicke die durch eine return Anweisung abgeschlossen werden Es ist auch eine vereinfachte Vari ante in Form eines Zuweisungsausdrucks erlaubt Beispiel diese Query ist an Klassen gebunden query Class setNameBound String var someName String self name if someName then someName NULL endif return someName diese Query ist ungebunden query setNameUnbound str String String var someName String str if someName then someName NULL endif return someName 3 5 Operationale Transformationen 111 mapping Class createTable Table Benutzung der gebundenen query name self setNameBound Benutzung der ungebundenen query kind setNameUnbound From_ self name Durch eine Richtungsangabe in out inout k nnen die Parameter in der Parameterliste gekennzeichnet werden ob es sich um Eingangsparameter in
194. isches Design der Datenbanken erfolgen Wenn zum Beispiel ein rela tionales DBS eingesetzt wird ist ein DB Design auf der Grundlage der Theorie des Relationenmodells vorzuneh men Die Datenmodellierung ist eine Aufgabe der DB Analyse und des DB Designs die durch Einsatz von formalen Modellierungstechniken und Werkzeugen unterst tzt werden kann F r eine logische Datenmodellierung steht zum Beispiel das Entity Relationship Modell ERM zur Verf gung Mit der Definition einer Datenstruktur wird festgelegt wie Daten einer Anwendung organisiert werden und wie auf sie zugegriffen wird Datenstrukturen sind einfach wenn die Daten einen primitiven Datentyp besitzen Da tenstrukturen sind komplex wenn die Daten einen kom plexen einen strukturierten Datentyp besitzen Streng genommen bedeutet Datentyp die Definition von Daten und den Operationen die auf sie ausf hrbar sind So legt zum Beispiel die Definition eines ganzzahligen Datentyps namens Integer nicht nur den physika lischen Speicher fest den ein Datenelement dieses Da tentyps ben tigt sondern auch die arithmetischen Ope rationen die auf ganze Zahlen erlaubt sind In dem Kontext dieses Fachbuches sind Datentypen konkret die Datentypen der OCL die Datentypen der QVT und die Datentypen die durch die Elemente der Metamodelle de finiert sind Deployment Diagramm Struktur Verhaltensdiagramm Dom ne Dom nen spezifische Sprache Element Entrypoint G
195. isting 2 2 SimpleUML und SimpleRDBM im EMOF Format lt xml version 1 0 encoding ASCII gt lt emof Package xmi version 2 0 xm Lins sm http www omg org XMI zminsexs http www w3 org 2001 XMLSchema instance xmlns emof http emof ecore name SimpleUML uri http SimpleUML ecore gt gl 0 gt lt ownedType xsi type emof Class name UMLModelElement isAbstract true gt lt ownedAttribute name name upper isComposite false xsi type emof PrimitiveType href WETS 40 2 Modelle und Metamodelle lt ownedAttribute name kind upper in isComposite false xsi type emof PrimitiveType href u gt lt ownedType gt lt i J lt ownedType xsi type emof Class name Package superClass ownedType 0 isAbstract false gt lt ownedAttribute name elements upper ma type QownedType 2 opposite ownedType 2 ownedAttribute 0 isComposite true gt lt ownedType gt lt la 2 gt lt ownedType xsi type emof Class name PackageElement superClass ownedType 0 isAbstract false gt lt ownedAttribute name namespace upper 1 type ownedType 1 opposite ownedType 1 ownedAttribute 0 isComposite false gt lt ownedType gt lt la 3 gt lt ownedType xsi type emof Class name Association superClass ownedType 2 isAbstract false gt lt ownedAttribute name source upper
196. itzer verkehrswert double beleihungswyert double ir g 1 Eh Integer 1 Strasse String hausnummer Integer Darlehenssicherheit Be modallaet Integer 1 beginn Integer 1 ende Integer 1 Abb 2 3 Das Wohnungsbaukreditgesch ft als SimpleUML Modell e Eine Person beabsichtigt eine Immobilie zu erwerben und nimmt dazu als Fremdmittel ein Wohnungsbaudarlehen auf e Das Darlehensgeschaeft wird auf einem Konto verwaltet e In der Klasse Konto sind daf r in Form von Attributen die Konditionen dokumentiert wie nennbetrag zinssatz tilgungssatz etc e Die Person hat einen namen ein alter ein einkommen und wohnt an einem wohnort e wohnort ist ein komplexes Attribut vom Typ Ort e Die Person des Darlehensnehmers soll der Hausbesitzer der finanzier ten Immobilie sein e Bei der Immobilie interessiert wo sie liegt Die lage ebenfalls ein komplexes Attribut vom Typ Ort soll m glichst auch der Wohnort des Dar lehensnehmers sein e Die Immobilie dient als Darlehenssicherheit zur Absicherung des Darlehensgesch ftes e Die Auspr gung des Metaattributes kind kann durch die Notierungen in spitzen Klammern lt lt gt gt angezeigt werden 32 2 Modelle und Metamodelle 2 1 2 Das Metamodell SinpleRDBM SimpleRDBM Abbildung 2 4 ist das Metamodell f r das Zielmodell der Trans formation Es handelt sich um ein Metamodell der PSM Ebene wir wissen zwar noch nicht konkret welches Datenb
197. kages mapping Package mapPackages Schema init var classes OrderedSet Class classes selectClasses self name self name tables classes gt map mapClasses mapping Class mapClasses Table name self name 86 3 Operational Mappings die Sprache query selectClasses in pckg Package OrderedSet Class var cls OrderedSet Class cls pckg elements gt select c PackageElement croclisTypeOt Class asType Class asOrderedSet return cls 3 5 Operationale Transformationen Nach der Einf hrung in die QVT Grundlagen wie auch der Betrachtung einiger zentraler OCL Konzepte die 1m Rahmen der Entwicklung von operationalen Transformationen oft eine Rolle spielen soll nun die Erl uterung der Haupt sprachmittel folgen mit denen Operational Mappings Scripte erarbeitet werden Es handelt sich dabei im Wesentlichen natiirlich um Transformationen und um Mapping Operationen und im Weiteren um einige spezielle Hilfsmittel und Techniken in diesem Zusammenhang 3 5 1 Definition von Metamodellen mit OVT Sprachmitteln Das Thema Metamodelle ist ausgiebig in Kapitel 2 behandelt worden wobei wir uns sowohl mit Metamodellen in Form von QVT Datenstrukturen wie auch mit Metamodellen in einem generellen Austauschformat besch ftigt haben In diesem Abschnitt wollen wir uns noch einmal mit den Sprachmitteln der QVT zur Definition von Metamodellen befassen und zwar a
198. kann gegen den Status failed gepr ft werden parallelTransform Status die aufgerufene Transformation startet sofort die aufrufende Transformation l uft ohne Verz gerung weiter wait List Status Void wartet auf das Terminieren aller zuvor gestarteten parallelen Transformatio nen die Liste der Status Objekte wird zur Synchronisation verwendet Methoden auf Model Model ist eine Instanz des Metatyps ModelType sie repr sentiert eine Basis klasse f r alle instantiierten ModelTypes Model lt methodname gt lt arguments gt lt resulttype gt objects Set Element liefert eine Liste aller Objekte eines Modells objectsOfType OCLType Set Element liefert eine Liste von Objekten eines vorgegebenen OCL Datentyps D 1 QVT Standardbibliothek 221 rootObjects Set Element liefert alle Objekte eines Modells die nicht in Beh lter Objekten z B Na mespaces Packages des Modells enthalten sind removeElement Element Void entfernt ein Objekt und all dessen Links zu anderen Objekten aus einem Mo dell asTransformation Model Transformation dynamisches Erzeugen einer Transformation copy Model eine vollst ndige Kopie eines Modells in ein anderes Modell createEmptyModel Model Erzeugen eines vollst ndig leeren neuen Modells eines bestimmten Modell typs Methoden auf Status Status enth lt Informationen ber den Zustand der Ausf hrung einer Tran
199. ktverfolgung Resolution mit dem zu einem sp teren Zeitpunkt auf im Zielmodell zuvor generierte Objekte zu gegriffen werden kann 4 2 Fortgeschrittene Konzepte der Operational Mappings 4 2 1 Objektverfolgung Der Transformationsprozess im Rahmen einer operationalen Transformation l uft in mehreren Phasen ab Operational Mappings bietet Mittel an auf die im Laufe der Transformation erzeugten Objekte 1m Zielmodell zuzugreifen Dies wird als Verfolgung der Transformation Tracing und Aufl sung von Beziehungen zwi schen Objekten Resolution bezeichnet Wenn zum Beispiel w hrend einer Trans formation das Zielobjekt target aus dem Quellobjekt source abgeleitet wor den ist dann wird dies im Trace abgelegt Und mit der Objektresolution kann dies im Trace dann nachvollzogen werden Die Objektresolution definiert zwei Typen von Funktionen Allgemeine Resolution Allgemeine Resolutionen sind solche die sich auf generell alle Objekte einer Transformation beziehen Syntax late resolve resolveone invresolve Invresolveone lt resolve_condition gt Der Zugriff auf Objekte die in einer vorherigen Transformationsphase Trace erzeugt worden sind erfolgt mit resolve Ausdr cken e resolve wird angewendet auf ein Objekt des Quellmodells Geliefert wird eine Liste aller Zielobjekte die aus dem Quellobjekt erzeugt worden ist 142 4 Operational Mappings Anwendungen e resolveone wird angewendet auf ein Objekt d
200. l sen indem f r jede dieser Aufgaben eine explizite Mapping Operation implementiert wird mapping Class ClassToTable Table when self kind persistent name self name Erzeugung des Prim rschl ssels columns self map CreateIDColumn keys self map CreatePrimaryKey result columns weitere Ma nahmen zur Erzeugung der Spalten mapping Class CreatelDColumn Column name self name _ID type int mapping Class CreatePrimaryKey keycol Sequence Column Key name gt PK_ self name columns keycol Eine weitere und in diesem Fall auch recht elegante Variante ist die implizite Generierung von Objekten mittels einer nline Objekterzeugung Da es keine Komponenten des Quellmodells gibt die im Rahmen der Erzeugung von Prim r schl sseln f r Datenbanktabellen verwertbar sind kann man beide Attribute der 136 4 Operational Mappings Anwendungen Zieltabelle mit object Anweisungen die innerhalb der Mapping Operation ClassToTable implementiert werden dem Datenbankschema neu hinzuf gen mapping Class ClassToTable Table when self kind persistent name self name Erzeugung des Prim rschl ssels mittels einer Inline Objekterzeugung columns object Column name self name _ID type int Inline Erzeugung einer Primarschlussels keys object Key name gt PK_ self n
201. l von Modellierungssprachen umfassen e Gegenstandliche Elemente Package Classifier Class DataType e Beziehungen einfache Assoziationen Generalisierung e Eigenschaften Attribute Dies sind auch die Elemente die blicherweise in UML Strukturmodellen zum Beispiel Klassendiagrammen Verwendung finden wobei die Modellierungs sprache UML nat rlich sehr viel komplexer ist und sehr viel mehr an Sprachmit teln und Ausdrucksvielfalt enth lt Doch dazu sp ter mehr erst einmal was wol len wir tun 4 3 1 UML2ZEJB Gehen wir wieder einmal von einem Klassenmodell einer fachlichen plattform unabh ngigen Ebene aus dem Darlehensmodell Das Fachklassenmodell be schreibt die strukturellen Gegebenheiten und Zusammenh nge der realen Welt des Wohnungsbaukreditgesch ftes in Form eines einfachen UML Klassendiagramms Abbildung 4 9 Personen beabsichtigen den Erwerb einer Immobilie und ben tigen zur Finanzierung ein Wohnungsbaudarlehen 156 4 Operational Mappings Anwendungen Personen haben einen Namen einen Vornamen ein Alter ein Einkommen und einen Wohnort Die zu finanzierende Immobilie hat eine spezielle Lage Angaben zum Grundbuch und einen Verkehrswert In Abh ngigkeit von den An gaben kann ein Beleihungswert ermittelt werden Nach der Vereinbarung der Konditionen Nennbetrag Zins Tilgung Zahlungsmodalit t Laufzeit wird das Darlehen auf einem Konto verwaltet Der Wohnort der Person wie auch die Lage der Immobilie w
202. land Together http www borland com us products together index html letzter Abruf 01 2009 BPMI BPMN COR DDS ECL EJB EMF EPL EUML M2T MAG MDA MDA03 MDTOCL MDT MOF MQVT M2M M2T OAW OCL OMG Referenzen im Internet 259 Business Process Modeling Initiative http www bpmi org letzter Abruf 12 2008 Business Process Modeling Notation http www bpmn org letzter Abruf 12 2008 Common Object Request Broker http www corba org letzter Abruf 03 2009 Data Distribution Service for Real Time Systems http portals omg org dds letzter Abruf 04 2009 Eclipse http www eclipse org letzter Abruf 12 2008 Enterprise JavaBeans Technology http java sun com products ejb letzter Abruf 05 2009 Eclipse Modeling Framework http www eclipse org emf letzter Abruf 12 2008 Eclipse Public License http www eclipse org legal epl v10 html letzter Zugriff 12 2008 Eclipse UML Project http www eclipse org modeling mdt project uml2 letzter Abruf 04 2009 MOF Model2Text Transformation http www omg org spec MOFM2T letzter Abruf 12 2008 MagicDraw von NoMagic http www magicdraw com letzter Ab ruf 12 2008 Model Drive Architecture http www omg org mda letzter Abruf 12 2008 MDA Guide 2003 http www omg org docs omg 03 06 01 pdf letzter Abruf 12 2008 Eclipse OCL Project http www eclipse org modeling mdt project ocl o
203. lassen und es muss nicht immer ein Top down Transformieren von oben nach unten sein 1 2 Die ber hmten Akronyme der OMG 11 MDA dehnt den Aspekt der modellgetriebenen Generierung auf die Entwick lung von Architekturen aus Um dies besser zu verstehen m ssen wir uns jedoch die Definitionen der OMG aus dem MDA Konzept etwas genauer vornehmen Dies soll hier auch wenn es f r ein Gesamtverst ndnis wichtig ist jedoch nur im berblick getan werden Zur Vertiefung m chte ich auf die weitere Literatur zum Thema MDA verweisen Gru06 Pet06 insbesondere auch auf das einleitende Kapitel von Nol09 und die Originalspezifikation der OMG MDA die aller dings nicht immer einfach zu lesen ist Grundbegriffe der Model Driven Architecture Im Folgenden sind einige Definitionen aufgef hrt die in dieser Form auch in Nol09 und in den dort angegebenen Quellen zu finden sind e System Ein System ist ein aus Teilen zusammengesetztes und strukturiertes Ganzes Systeme haben eine Funktion erf llen einen Zweck und verf gen ber eine Architektur IEEE 1471 Damit k nnen nahezu alle konkreten oder abstrak ten Dinge subsumiert werden die eine Struktur haben Im Kontext der mo dellgest tzten Entwicklung von IT Systemen interessieren uns nat rlich alle betrieblichen oder technischen Systeme in denen IT L sungen eingesetzt werden sollen wie auch die IT Systeme selbst die zur Entwicklung der IT L sungen herangezogen werden
204. lassen die speziellen Klassen repr sentieren Die speziellen Klassen erben die Eigenschaften der Oberklasse Darlehenssicherheit Abb 4 5 Das Package dar lehen mit einer Spezialisierung von Person 4 1 UML2RDBM 133 Wenn wir in unserem Darlehensmodell Abbildung 4 2 zum Beispiel erlauben wollen dass nicht nur nat rliche Personen als Darlehensnehmer zugelassen sein sollen sondern auch Firmen Kapitalgesellschaften etc also juristische Personen dann k nnte man dies als typische Spezialisierung von Person modellieren Ab bildung 4 5 Die Behandlung soll so erfolgen dass f r jede spezielle Klasse eine eigene Tabelle angelegt wird Diese erh lt als Spalten die Attribute der jeweiligen speziellen Klasse wie auch alle Attribute der generellen Oberklasse Der Mapping Operation ClassToTable muss also noch eine weitere Operation hinzugef gt werden getSuperAttributes mit der zu den speziellen Klassen die At tribute der Superklasse abgeleitet werden mapping Class ClassToTable Table when self kind persistent init var attr Sequence Attribute var superattr Sequence Attribute attr self attributes gt getAllPrimitiveAttributes if self general lt gt null then Sammeln aller Attribute aus der generellen Oberklassen superattr self general gt attributes gt getSuperAttributes gt flatten endif Die Attribute m ssen gepr ft werden ob sie primitiv
205. lb einer speziellen Mapping Operation aus dem Quellobjekt erzeugt worden sind 144 4 Operational Mappings Anwendungen e resolveoneln wird angewendet auf ein Objekt des Quellmodells Geliefert wird das letzte Zielobjekt das innerhalb einer speziellen Mapping Operation aus dem Quell objekt erzeugt worden ist e invresolveln wird angewendet auf ein Zielobjekt und liefert eine Liste aller Quellobjekte die innerhalb einer speziel len Mapping Operation zur Erzeugung des Zielob jektes benutzt worden sind e invresolveoneIn wird angewendet auf ein Zielobjekt und liefert das letzte Quellobjekt das innerhalb einer speziellen Mapping Operation zur Erzeugung des Zielobjektes benutzt worden ist Beispiel mapping Class ClassToTable Table var tbl Table var cls Class var tbls Sequence Table var clss Sequence Class Name der erzeugten Tabelle name T_ self name tbl ist die letzte aus self in ClassToTable erzeugte Tabelle tbl self resolveoneIn ClassToTable Table tbls sind alle aus self in ClassToTable erzeugten Tabellen tbls self resolveln ClassToTable Table cls ist Klasse aus der tbl in ClassToTable erzeugt worden ist cls tbl invresolveoneIn ClassToTable Class clss sind die Klassen aus denen die Tabellen tbls in ClassToTable erzeugt worden sind clss tbl invresolveln ClassToTable Class log resolveln Class name Table tbl
206. lcher in der Konstruktion vom Entwickler umgesetzt wird Fachexperte Betriebliche Betriebliche Beschreibung a Modelle Fachliche Modelle i Modelle Be systeme O Abb 1 1 Der klassische Anwendungsentwicklungsprozess Abbildung 1 2 stellt noch einmal etwas konkreter die Kooperation in den fr hen Phasen dar und zeigt die blicherweise dabei eingesetzten Mittel In den fr hen Phasen der Beschreibung und Analyse der betriebliche Prozesse kooperie ren Experten der betrachteten Fachwelt mit Analytikern um die fachlichen Gege benheiten in ersten betrieblichen Modellen zu erfassen und darzustellen Der Analytiker setzt dabei noch semi formale Modellierungstechniken ein insbeson dere die Sprachen und Darstellungsweisen die in der Fachwelt pr sent sind Fach sprachen oder spezielle dom nenspezifische Sprachen 1 1 Eine kurze Geschichte der modellgetriebenen Software Entwicklung 3 Im weiteren Entwicklungsprozess und mit zunehmender Abstraktion werden immer formalere Sprachen und Techniken angewendet letztendlich bis hin zum Einsatz von Programmiersprachen und plattformspezifischen Technologien Ab bildung 1 2 In weiteren Analyse und Designprozessen muss der Analytiker sich immer wieder mit den Mitwirkenden in den folgenden Phasen auseinandersetzen um die fachlichen Modelle zu berarbeiten und zu fertigen DV L sungen fortzu entwickeln Reale Welt Nat rliche Sprache Fachsprache lt lt subs
207. le als auch Ziel einer Transformation sein soll also falls das betroffene Modell einer Validierung oder einer Anderung unterzogen werden soll wird dies mit dem Kennzeichner inout belegt in ist voreingestellt sofern nichts anderes angegeben ist Beispiel Modelltypen transformation uml2rdbm in srcModel SimpleUML out destModel SimpleRDBM Rumpf der operationalen Transformation Der Rumpf einer Transformation enth lt zum ersten einen optionalen Block von Variablendeklarationen zweitens die main Methode die den Einstiegspunkt f r den Beginn der Transformation repr sentiert und letztlich weitere Transfor mationselemente zum Beispiel Mapping Operationen oder Helper Funktionen Transformationsr mpfe k nnen mit geklammert werden Das ist dann auch gefordert wenn eine Scriptdatei mehr als eine Transformation enth lt Syntax lt transformation_qualifier gt transformation lt transformation_name gt in out inout lt modelname gt lt modeltype name gt li lt variable declaration gt lt transformation_entry gt lt transformation_element gt iJ ter 3 5 Operationale Transformationen 95 Die Variablendeklarationen sind so wie wir sie aus dem Kapitel der OCL QVT Grundlagen bereits kennen Eine an dieser Stelle erkl rte Variable gilt immer f r den gesamten Block einer Transformation also global f r alle Map ping Operationen und Helper Funktionen Die main Methode
208. le element gt ri lt transformation_head gt nr lt qualifier gt transformation lt identifier gt lt tranformation_signature gt lt transformation_usage_refine gt lt transformation_signature gt lt simple_signature gt lt transformation_usage_refine gt lt module_usage gt lt transformtion_refine gt lt transformation_refine gt refines lt moduleref gt Library lt l1brary gt lt library_decl gt lt library_def gt lt library_decl gt lt library_h gt lt library_def gt lt library_h gt lt module_element gt it lt library_h gt library lt identifier gt lt library_signature gt lt module_usage gt lt library_signature gt lt Simple_signature gt Import of Modules Transformations and Libraries lt module_usage gt lt access_usage gt lt extends_usage gt lt access_usage gt access lt module_kind gt lt moduleref_list gt lt extends_usage gt extends lt module_kind gt lt moduleref_list gt lt module_kind gt transformation library lt moduleref_list gt nps lt moduleref gt lt moduleref gt lt moduleref gt lt scoped_identifier gt lt simple_signature gt A 2 Ableitungsregeln 185 lt access_decl gt lt access_usage gt lt module_element gt lt classifier gt lt property gt lt helper gt lt constructor gt lt entry gt lt mapping gt lt tag gt lt t
209. len Mappings oder einer Transfor mation In einer Terminierungssektion end kann eine Mapping Operation abschlie ende Arbeiten vornehmen Eine Transformation transformation beschreibt wie ein oder mehrere Quellmodelle berf hrt werden in ein oder mehrere Zielmodelle Transformationen sind ent weder deskriptiv oder operational e Bei deskriptiven Transformationen wird das Verhal ten ber eine Menge von Regeln zwischen den be troffenen Modellelementen definiert 248 Glossar Transformation bidirektional Transformation unidirektional Variable Vererbung Virtual Machine Analogy Vorbedingung Vorgehensmodell e Bei operationalen Transformationen wird der Prozess durch eine Menge und Abfolge von Mapping Opera tionen bestimmt Bidirektionale Transformationen sind Transformationen die Modelle A vom Typ MA in Modelle B vom Typ MB berf hren und mit der gleichen Transformation zur ck von B nach A A MA B MB B MB A MA Eine bidirektionale Transformation ist injektiv aber nicht bi jektiv Unidirektionale Transformationen sind Transformationen nur in eine Richtung also Modelle A vom Typ MA wer den nach Modellen B vom Typ MB transformiert und nicht zur ck Die imperative QVT Sprache Operational Mappings erm glicht unidirektionale Transformationen Variablen sind benannte und ver nderbare Elemente einer Transformation oder Funktion Hierbei handelt es sich um freie Elemente oder um M
210. library_signature gt lt module_usage gt 1 lt module_element gt Beispiel Ein typisches Beispiel fiir eine library ist die QVT Standardbibliothek siehe Anhang Ein weiteres Beispiel ist eine eigene kleine Bibliothek f r String Operatio nen library StringLib konkateniert zwei Strings query stringCat strl String str2 String Sering stri str2 146 4 Operational Mappings Anwendungen ermittelt die L nge eines Strings query stringLength str String Integer str size Die Adressierung und Verwendung von Komponenten einer Bibliothek kann sowohl in Transformationen als auch in anderen Bibliotheken erfolgen Die Be nutzung von Bibliotheken wird mittels der Zugriffsmethoden access und ex tends vorgenommen Syntax transformation lt transformation_name gt in Jout inout lt modelname gt lt modeltype gt 1 11 library lt identifier gt lt modeltype gt access extends library transformation lt modulename gt in out inout lt modeltype gt L Ir lt transformation_body gt e Alle Operationen und Hilfsfunktionen des mit extends eingebundenen Mo duls k nnen benutzt werden wie wenn sie Bestandteil der Transformation selbst waren Die Einbindung mittels extends impliziert zudem eine Verer bungssemantik Das hei t die Operationen des extends Moduls werden er erbt und damit k nnen s
211. lierungssprache mit der eine graphische Modellierung von einfachen geometrischen Figuren Rechtecken Kreisen Dreiecken m glich ist die mit Pfeilen miteinander verbunden sind Ein derartig entwickeltes Modell f r eine Modellierungssprache ist also ein Metamo dell Modellierungssprachen die in dieser Weise beschrieben worden sind wollen wir als formale Modellierungssprachen oder auch MOF Sprachen bezeichnen Beispiele f r formale Modellierungssprachen in diesem Sinne sind die UML selbst und die BPMN Business Process Modeling Notation BPMN Mit Metamodel len als Grundlage f r eine Modelltransformation werde ich mich in Kapitel 2 noch intensiver besch ftigen 1 2 4 OVT Query Views Transformation Die meisten MDA Konzepte haben wir kennen gelernt Was Modelle und Meta modelle sind und wie wir Metamodelle bauen und einsetzen ahnen wir auch schon Nun ist es langsam an der Zeit dass wir uns zum Abschluss der Einleitung mit der QVT besch ftigen QVT ist der mittlerweile standardisierte Vorschlag der OMG im Rahmen des MDA Konzeptes Transformationen zwischen Modellen zu beschreiben e Q Query ist sinngem die Beschreibung einer Anfrage bezogen auf ein Quellmodell um einen speziellen Ausschnitt als Kandidaten f r die Transfor mation zu ermitteln Der Kandidat f r die Transformation ist entweder das Quellmodell selbst oder eine spezielle Sammlung von Elementen welche durch die Anfrage die Query bestimmt wird e V
212. lossar 237 Deployment ist das Ver ffentlichen und Inbetriebnehmen von SW Komponenten auf Betriebseinheiten oder auch Plattformen Es muss zum Beispiel ein Deployment von Metamodellen erfolgen damit diese in Transformations scripten als Modelltypen zur Verf gung stehen oder ein Bauen und Inbetriebnehmen von Transformationen da mit diese ausf hrbar sind Ein Diagramm ist eine abstrahierende grafische Darstel lung eines bestimmten realen Sachverhaltes Formale Modellierungssprachen wie zum Beispiel die UML defi nieren in der Regel eine Menge von Sprachmitteln und Diagrammtypen mit denen eine grafische Modellierung einer realen Welt m glich gemacht wird Die UML stellt Sprachmittel und Diagrammtypen zur Verf gung um die Struktur eines Systems Strukturdiagramme und das Verhalten des Systems Verhaltensdiagramme zu be schreiben Der Begriff Dom ne bezeichnet im Allgemeinen eine fachliche Betrachtungseinheit der realen Welt Diese kann sowohl eine betriebliche Dom ne wie auch eine spezielle Organisationseinheit in einem IT Dienstlei stungsprozess sein In einer Dom ne gibt es in der Regel einen speziellen Sprachgebrauch Sofern diese Sprache in Form einer formalen Sprache spezifiziert ist sprechen wir von einer dom nenspezifischen Sprache Domain Specific Lan guage DSL In der Informationstechnik werden dom nenspezifische Sprachen h ufig auch definiert um damit Modellierungs und Transformationsprozesse
213. ls ein Zielmodell erzeugt welches Schemata erh lt deren Namen unter Verwendung des jeweiligen Packagenamens gebildet werden Die Generierung von Modellelementen in einem Zielmodell auf der Bas s von Elementen eines Quellmodells wird als Mapping Operation be zeichnet Transformationen in der Sprache Operational Mappings bestehen im Wesentlichen daraus dass die Modellumwandlungen mit Mapping Operationen beschrieben werden Doch bevor wir nun tiefer in die Transformation von Model len einsteigen m ssen wir uns zuvor etwas intensiver einem anderen Thema wid men welches schon das ein oder andere Mal angedeutet worden ist der Entwick lungsplattform 3 2 Die Operational Mappings Plattform SmartQVT Mit Topcased haben wir ein freies Eclipse basiertes Werkzeug zur Modellierung von Modellen und Metamodellen kennen gelernt Die Einf hrung in die QVT Sprache Operational Mappings soll mit der Vorstellung eines weiteren freien Werkzeugs beginnen mit dem Operational Mappings Transformationen be schreibbar und ausf hrbar sind SmartQVT Nach meiner Kenntnis ist SmartQVT das zurzeit in der Szene verf gbare Werkzeug welches die gr te N he zur OMG QVT Spezifikation besitzt Wie auch Topcased ist SmartQVT ein Eclipse Plugin Alle im Folgenden aufgef hrten Beispiele sind mit SmartQVT entwickelt und ge testet worden 3 2 1 Aufbau der SmartOVT Transformationsumgebung Das Erscheinungsbild einer SmartQVT Oberfl che wird exemplarisch in Abbil dun
214. lt constructor_name gt lt actparam gt lt actparamtype gt i i Beispiel constructor Column Column n String t String name n type t mapping Class createTable Table Erzeugung von Tabellenspalten columns self attributes gt new a Column a name a type sythetisches Attribut zur Identifizierung columns new Column self name _ID NUMBER Der Konstruktor wird f r jedes Attribut einer aktuellen Klasse aufgerufen Wie bereits beim nline Mapping muss zur Konstruktion der Tabellenspalten ein Ite rator verwendet werden um ber die Liste der Attribute einer Klasse zu iterieren Bei der Erzeugung einer zus tzlichen _ID Spalte ist dies nicht erforderlich 110 3 Operational Mappings die Sprache 3 5 5 Helper und Anfrage Operationen Zur besseren Strukturierung von komplexen Transformationsscripten erlaubt Ope rational Mappings die Auslagerung von Code Bestandteilen in Hilfsfunktionen helper und queries helper wie auch queries sind Funktionen die ein oder mehrere Quellinformationen bearbeiten und ein oder mehrere Ergebnisse lie fern Hilfsfunktionen bestehen aus einer Signatur und einem Rumpf In der Sig natur wird der Name der Funktion angegeben gefolgt von einer Liste von forma len Parametern Im Weiteren k nnen Hilfsfunktionen an Objekte des Modells oder Variablen gebunden sein indem der entsprechende Objekttyp oder Datentyp dem Namen vorangestellt w
215. lt literal_complex gt lt literal_collection gt lt literal_tuple gt lt literal_dict gt lt collection_item_list gt lt tuple_item_list gt lt dict_item_list gt lt dict_item gt lt if_exp gt lt then_part gt lt elif_part gt lt else_part gt xif_ body gt lt iterator_exp gt lt simple_iterator_op gt lt multi_iterator_op gt lt iterate_exp gt lt iter_declarator_list gt lt block_exp gt lt object_exp gt lt object_declarator gt lt do_exp gt lt switch_exp gt lt switch_body gt lt switch_alt gt lt switch_else gt A 2 Ableitungsregeln 189 lt literal_collection gt lt literal_tuple gt lt literal_dict gt lt collection_key gt lt collection_item_list gt Tuple lt tuple_item_list gt Dict lt dict_item_list gt lt expression_comma_list gt lt declarator_list gt lt dict item gt lt dict _item gt lt literal_simple gt lt expression gt if lt expression gt lt then_part gt lt elif_part gt lt else_part gt endif then lt if_body gt elif lt if_body gt else lt if_body gt lt expression gt lt expression_block gt lt simple_iterator_op gt lt declarator_vsep gt lt expression gt lt multi_iterator_op gt lt multi_declarator_vsep gt lt expression gt lt iterate_exp gt reject select collect exists one any isUnique collectNested sortedBy xselect
216. m vor gegebenen Typ var classes packages gt allSubobjectsOfType Class classes repr sentiert nun alle Klassen die direkt in einem Package und in den Packages liegen die sich in jeweils einem Exemplar von packages befinden Hiermit wird in die Tiefe des Baumes selektiert Selektion mit QVT Standardfunktionen Die Verwendung dieser gebr uchlichen Selektionsfunktionen der QVT Standard bibliothek sollten wir uns wieder einmal an einem kleinen aber durchaus repr sentativen Beispiel vor Augen f hren i Zun chst werden alle Modellelemente vom Typ Package ermittelt Hierzu dient die Funktion objectsOfType Package Die Ergebnismenge wird dann der Mapping Operation mapPackages ber geben InmapPackages werden die Elemente des Paketes selektiert die vom Typ Class sind subobjectsOfType Class Diese werden dann mit mapClasses weiter behandelt Beispiel transformation HelloWorld in source UML out target RDBM main source objectsOfType Package gt map mapPackages mapping Package mapPackages Schema name self name tables self subobjectsOfType Class gt map mapClasses mapping Class mapClasses Table name self name 3 4 OCL und QVT Grundlagen 83 OCL Selektionstechniken Nicht alle Werkzeuge unterst tzen die Funktionen der QVT Standardbibliothek vollst ndig was zwar gelegentlich ein kleines Hindernis darstellt welches
217. mation beschreibt eine Umwandlung eines UML Modells um1 fk in ein neues UML Modell umlejb Das Metamodell f r beide Modelle st also das UML2 Modell hier in einer Auspr gung des Eclipse UML2 Projektes EUML modeltype UML uses http www eclipse org uml2 2 1 0 UML transformation UML2EJB in umlfk UML out umlejb UML main Body UML Fachklassenmodelle enthalten Packages und Classifier vom Typ Class DataType Interface Association Die Classifier k nnen als Features Operationen und Attribute besitzen All diese Komponenten sollen jeweils mit einer eigenen Mapping Operation behandelt werden mapping in Package transformPackages Package Body mapping in Class transformClasses Class Body mapping in DataType transformDatatypes DataType Body mapping in Interface transformInterfaces Interface Body mapping in Association transformAssociations Association Body mapping in Property transformAttributes Property Body mapping in Operation transformOperations Operation Body 4 3 Transformation von UML Modellen 165 Das u erste Element eines UML Fachklassenmodells ist stets ein Package so dass die Transformation mit der Behandlung von Packages starten soll main umlfk objectsOfType Package gt map transformPackage Schritt 2 Aufbereiten der Mapping Operationen Im zweiten Schritt
218. me ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations mapping in Interface transformInterfaces Interface name self name ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations mapping in Association transformAssociations Association name self name C 2 UML2EJB 217 UG eer eee ee un an x f r alle x 3 Bu ee eee eee eae ee x mapping in Property transformAttributes Property name self name type self type visibility if self class oclIsUndefined then alle behalten ihre Sichtbarkeit self visibility else nur f r Klassen ist die Sichtbarkeit explizit private VisibilityKind private endif hier wird nur die Signatur generiert mapping in Operation transformOperations Operation name self name type self type visibility self visibility D Standardbibliotheken In den Standardbibliotheken sind die vollst ndige QVT Standardbibliothek und in repr sentativen Ausz gen die Funktionen der OCL Standardbibliothek zusam mengestellt D 1 QVT Standardbibliothek Die QVT Standardbibliothek ist eine Library die in Operational Mappings Werkzeugen grunds tzlich zur Verf gung steht stehen sollte Im Gegensatz zu der QVT Relations Language die als Standardbibliothek ledigl
219. methoden und das Remotelnterface zur Ver ffentlichung der Businessmethoden Ein Scope st der G ltigkeitsbereich von innerhalb eines Blocks deklarierten Variablen Eine Selektion ist eine strukturierte Anweisung bei der eine Bedingung gepr ft und in Abh ngigkeit von dem Pr fergebnis eine Anweisungsfolge ausgew hlt wird 246 Glossar Serialisierung Shorthand Signatur Software Engineering Als Sprachmittel f r die Implementierung von Selek tionen stehen die if then else Anweisung und das switch Konstrukt zur Verf gung Unter Selektion wird auch die Auswahl einer bestimmten Datenmenge aus einem Datenbestand verstanden datenorientierte Sicht Serialisierung bedeutet eine Darstellung von Daten in einer sequentiellen Form zum Zwecke der rechner gest tzten Verarbeitung oder des Datenaustausches Eine Serialisierung findet zum Beispiel dann statt wenn ein grafisch repr sentiertes Modell in eine textuelle Repr sentation berf hrt wird F r die Serialisierung von Daten im Allgemeinen und f r Modelle im Besonderen ist das universelle Austauschformat XML und XMI ver ffent licht worden Mit Shorthand wird in OCL und QVT ein Konstrukt be zeichnet bestimmte h ufig verwendete Anweisungen vereinfacht zu notieren Zum Beispiel ist die Punktnota tion ein shorthand f r die Anwendung der collect Standardfunktion lt name gt ist ein shorthand f r die Anwendung der isKindOf Standardfunktion Die Signatur e
220. mmen UmlToRdbn ist mit extends eingebunden Das hat zur Folge dass CleanUmlToRdbm die Mapping Operationen von Um1ToRdbm zum Beispiel packageToSchema ererbt Die mit extends importierte Transformation muss nicht ber eine main Funktion verf gen Anmerkung zur Benutzung von Libraries in SmartQVT SmartQVT unterst tzt die Arbeit mit externen Modulen in der derzeitig verf g baren Version 0 2 2 nur unvollst ndig Was funktioniert ist das Einbinden von Modulen mittels extends Die Module m ssen dazu als Eclipse Plugins imple mentiert und registriert sein das hei t die Bibliotheken werden als Eclipse Plug in Projekt entwickelt und in Betrieb genommen Export als Deployable plug ins and fragments Damit stehen sie f r eine Verwendung im Eclipse Kontext zur Verf gung Der Import und die Arbeit mit Modulen mit der Option access funktioniert noch nicht Aus dem Grund konnte obiges Beispiel CleanUm1lToRdbm welches sich recht konsequent an der Vorgabe der Spezifikation orientiert nicht endg ltig getestet werden Zu beachten ist dar ber hinaus die Konfigurierung der Kompo nenten in den entsprechenden QVT Konfigurationsdateien Properties Library Project zumBeispiel StringLib StringLib qvet Name der Bibliothek StringLib properties Name der Konfigurationsdatei Konfigurationseintrag StringLib packageUri http Stringlib gvt Verwendung zum Beispielin UmlToRdbm UmlToRdbm qvt Name der Transformation UmlToRdbm properties
221. modeltype UML uses http www eclipse org uml2 2 1 0 UML transformation CheckProfileDef in src UML main src objects Stereotype gt somelnfos query in Stereotype somelnfos Void log Stereotype gt self name log Qualified Name self qualifiedName log Owner gt self owner log Metaclasses 2 self gt getExtendedMetaclasses 4 4 QVT und UML Profile 177 Damit erhalten wir den Namen des Stereotyps den qualifizierten Namen in der Form lt packagename gt lt stereotypname gt den Owner welcher auch wieder das Package ist und eine Liste der erweiterten Metaklassen Die Aus gabe auf der Konsole ist folgenderma en Stereotype persistent Qualified Name ProfileDef persistent Owner gt data org eclipse uml2 uml internal impl ProfileImpl 103f66d name ProfileDef visibility lt unset gt Metaclasses gt y data 1 lorg eclipse uml2 uml inter Nnal impl Classimpl li3sbcr name Class visibility lt un set gt isLeaf false isAbstract false isActive false 1 Das sehr einfache UML Modell ProfileTest Abbildung 4 18 ist nun eine Anwendung des oben definierten UML Profils Es sind zwei Klassen A und B ab gebildet eine davon ist mit dem Stereotyp lt lt persistent gt gt versehen die an dere ist nicht markiert D Topcased Modeling O_UMLProfil model ProfileTest umldi Topcased Datei Bearbeiten Refactor Navig
222. mpleRDBM 3 5 Operationale Transformationen 97 main var schemas Sequence Schema Aufruf einer gebundenen Mapping Operation schemas srcModel objectsOfType Package gt map createSchema 1 createSchema ist an den Elementtyp Package des Quellmodells gebunden mapping Package createSchema str String Schema name self name str Im Allgemeinen beziehen sich Mappings auf bestimmte Elementtypen des Quellmodells die in Elemente des Zielmodells berf hrt werden sollen Es ist je doch auch m glich Mappings zu implementieren die keinen Bezug zum Quellmodell haben Die Operation ist dann nicht gebunden Das werden wir sp ter noch genauer sehen wenn wir uns mit der nline Objekterzeugung besch ftigen Beispiel Variante 2 mit ungebundenem Mapping transformation uml2rdbm in srcModel SimpleUML out destModel SimpleRDBM main var schemas Sequence Schema Aufruf einer ungebundenen Mapping Operation schemas map createSchemaX SchemaOhnePackagel mapping createSchemaX str String Schema name str Und damit wollen wir endlich zu den Mapping Operationen und deren syntak tischem Aufbau kommen Eine Mapping Operation transformiert eine oder meh rere Quellmodellelemente in eins oder mehrere Zielmodellelemente Eine Map ping Operation besteht syntaktisch aus einer Signatur einer optionalen Vorbedingung einer opt
223. mpleRDBM Datenbankschema besch ftigen das zweite Beispiel soll die Transformation eines nicht simplen UML Fachklassendia gramms der PIM Ebene in ein Klassendiagramm der PSM Ebene veranschau lichen 4 1 UML2RDBM Zuerst wollen wir uns dem simplen Beispiel UmlToRdbm zuwenden und ein fache UML Klassendiagramme in einfache Relationenschemata umwandeln Es handelt sich dabei um das Beispiel welches der OMG Spezifikation entnommen ist und das gar nicht so simpel ist wie wir sehen werden Abbildung 4 1 zeigt das Transformationspattern dieser exemplarischen Anwendung in einem Aktivit ten diagramm Bei der realen Welt unserer Betrachtung handelt es sich um den Ge sch ftsprozess der Finanzierung des privaten Wohnungsbaus In der fachlichen Analyse wird mit Hilfe der Modellierungssprache SimpleUML ein Fachklassen diagramm Darlehen simpleuml erstellt Dies wird in der Transformations phase mit Hilfe der Transformation UmlToRdbm unter Verwendung der Meta modelle SimpleUML und SimpleRDBM in ein konzeptionelles relationales Da tenbankschema Darlehen simplerdbm transformiert welches in der Phase des konzeptionellen Designs zum Beispiel mit der Modellierungssprache SimpleRDBM weiter bearbeitet werden kann Die Aktion UMLtoRDBM in dem Diagramm repr sentiert die Erstellung und Durchf hrung der Transformation un ter Verwendung eines Operational Mappings Scriptes S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 9
224. n collect expr Collection Type iteriert ber eine Sammlung von Elementen wendet den Ausdruck expr auf jedes Element an und liefert eine Menge von somit modifizierten Elementen collect ist die Methode zum Anpassen von Metamodelldatentypen col lect bewirkt implizit ein flatten Die sehr h ufig angewandte Funktion collect kann mit der Punkt Notation als Shorthand vereinfacht werden self gt collect expr self expr collectNested expr Collection Type liefert die Menge aller Elemente einer vorgegebenen Menge die expr erf l len exists expr Boolean expr ist ein Ausdruck der auf alle Elemente der Collection angewandt wird wenn dieser f r mindestens ein Element true ergibt dann ergibt diese Funktion insgesamt true forAll expr Boolean expr wird auf alle Elemente der Collection angewandt wenn das Ergeb nis in allen F llen true ergibt dann liefert diese Funktion insgesamt true isUnique expr Boolean isUnique pr ft ob f r alle Elemente der Collection der Wert der expr eindeutig ist one expr Boolean ergibt true falls es genau ein Element einer vorgegebenen Menge gibt wel ches expr erf llt reject expr Collection Type liefert die Teilmenge einer vorgegebenen Menge deren Elemente angewandt auf expr false ergeben expr ist in diesem Fall ein Bool scher Ausdruck im Gegensatz zu collect werden die Zielelemente nicht ver ndert select expr Collection Type
225. n Klassen aus Beziehungen allgemeinerer Art werden durch das Schl sselwort references ausgedr ckt In dem SimpleUML Beispiel besitzt ein Package verschiedene PackageElements wohingegen Associations zwei in Beziehung zu einander stehende Klassen referenzieren aber sie besitzen die assoziierten Klassen nicht Diese Unterscheidung ist nat rlich etwas feinsinnig und nicht immer leicht vorzunehmen Mit opposites kann ein Bezug zu der Metaklasse hergestellt werden die diese Beziehung auf der anderen Seite repr sentiert Mit dem Merkmal ordered wird ein strukturierter Datentyp als geordnete Liste deklariert Dies kann immer dann angegeben werden wenn ein Attribut die Multiplizit t gr er als eins besitzt Im Folgenden muss man unterscheiden zwischen class und Class Einmal handelt es sich um den strukturierten QVT Datentyp class zum anderen ist es das neu definierte UMLModelElement Class unseres SimpleUML Metamodells Listing 2 1 Die Metamodelle SimpleUML und SimpleRDBM metamodel SimpleUML abstract class UMLModelElement kind String name String class Package extends UMLModelElement composes elements PackageElement ordered opposites namespace 1 36 2 Modelle und Metamodelle abstract class PackageElement extends UMLModelElement E class Classifier extends PackageElement class Attribute extends UMLModelElement references type Classifier 1 opposites typeOpposite class Cl
226. n geeignet es werden ja schlie lich nur Klassendiagramm Editoren ben tigt Einige Hersteller haben f r diese Zwecke explizit Metamodell Editoren angeboten einige von diesen haben sie allerdings auch schon wieder ausgebaut Anmerken m chte ich an dieser Stelle jedoch dass mich die kommerziellen Werkzeuge bisher mehr berzeugen konnten als die frei verf gbaren auch wenn ich in diesem Buch konsequent freie Werk zeuge eben auch ein Modellierungswerkzeug einsetze n mlich Topcased TOP Da wir die Metamodelle in einer Ecore Fassung ben tigen bietet sich der Ecore Diagrammeditor von Topcased an Hierbei handelt es sich zum Beispiel um einen graphischen Editor f r Ecore UML Diagramme Mit File gt New gt Others gt Ecore Tools gt Ecore Diagram wird ein Ecore Modell angelegt und im Ecore UML Editor ge ffnet e Die Diagramminformationen der graphischen Repr sentation des Modells befinden sich in einer ecorediag Datei zum Beispiel SimpleUML ecorediag e Die Modellinformationen werden in einer Ecore Datei zum Beispiel SimpleUML ecore abgelegt Abbildung 2 6 zeigt im Ecore Diagrammeditor das Klassendiagramm des SimpleUML Modells Jede Modellierungsaktion im graphischen Editor wird un mittelbar in der Modelldatei nachvollzogen Die so erarbeitete Ecore Repr senta tion ist auch bereits die Fassung die wir f r die folgenden Schritte ben tigen Sofern zur Modellierung der UML Klassendiagrammeditor verwendet worden
227. n ist eine standardisierte Java Komponente die einen bestimmten Aspekt einer Anwendung implementiert Das Bean Konzept resultiert zum einen aus dem Aspekt der Komponente also der Implementierung von klar abge grenzten und wiederverwendbaren Systembestandteilen Zum anderen impliziert der EJB Ansatz eine Ent wicklungs und Betriebsarchitektur die sich ber ver schiedene Ebenen Tiers erstreckt zum Beispiel eine Pr sentationsebene eine operationale Ebene und eine Datenhaltungsebene In der operationalen Ebene finden wir die SessionBeans Komponenten die die Implemen tierung der operativen Funktionen zum Inhalt haben und die EntityBeans die im Wesentlichen als Schnittstelle zu einer physikalischen Datenbank dienen Den asynchronen Nachrichtenaustausch zwischen den verschiedenen Ebe nen bernehmen MessageDrivenBeans Blackbox ist ein Konzept der QVT Spezifikation Spe zielle Komponenten der definierten QVT Sprachen oder gar ganze Transformationen werden durch externe L sungen realisiert Es gibt lediglich die Mindestanforde rung dass die BlackBox Sprachen auf eine der deskrip tiven Sprachen abgebildet werden m ssen MDA Konformit t Mit anderen Worten eine der deskriptiven Sprachen Relations Language oder Core Language ist das Laufzeitsystem f r eine Blackbox Sprache Ein Block ist grunds tzlich jede geklammerte und ge schlossene Einheit innerhalb eines Transformations scriptes Im Allgemeinen umschlie t ein Block
228. nal Standardization Organization ISO ein e Struktogramme DIN66261 DIN85 e Programmablaufpl ne DIN66001 DIN83 ISO5807 In den folgenden Jahren wurden von Tom DeMarco und anderen Modelle und Darstellungstechniken herausgearbeitet die ausgehend von der strukturierten Pro grammierung hin zu einer globaleren strukturierten Anwendungsentwicklung f hrten Dem79 Mcn88 Mar88 Auch auf der Seite der Datenmodellierung und des Datenbankdesigns fanden Entwicklungen statt indem zum Beispiel beginnend mit Edgar F Codd das kon zeptionelle Datenbankdesign losgel st von netzwerkartigen physikalischen Daten banksystemen auf einer einfachen mathematischen Basis der Relationentheorie begr ndet wurde Cod70 Cod90 Auf dieser Grundlage beschrieb Peter P Chen 1976 das ber hmte Entity Relationship Model ein erster graphischer Modellie rungsansatz f r eine datenzentrierte objektorientierte Sicht der Dinge Che76 1 1 2 Objektorientierte Software Entwicklung Ab dann war es kein weiter Weg mehr die aus der objektorientierten Programmie rung stammenden Abstraktionstechniken Datenkapselung und Information Hiding Par72 im Sinne einer objektorientierten Analyse und Designs weiterzuf hren Bertrand Meyer ver ffentlichte 1988 die Object Oriented Software Construction Mey88 Peter Coad und Edward Yourdon 1991 Object Oriented Analysis Coa9la und Object Oriented Design Coa91b und James Rumbeaugh et al Ob ject Oriented Modeling and D
229. nd Generierungssprachen entwickelt und eingef hrt worden die durchaus eine gewisse Verbreitung und Anerkennung gefunden haben Doch auch die OMG hat die L cke mit der im April 2008 als Standard ver ffentlichten Spezifikation MOF QVT Query Views Transformation mittlerweile geschlossen Die QVT ist ein Konzept in dem drei alternative Sprachen angeboten werden um auf verschiedene Weise eine Transformation von Modellen beschreiben und durchf hren zu k nnen Die Operational Mappings ist eine von ihnen Nun ist es meiner Meinung nach sehr schwierig auf der Basis der OMG Spezifikationen neue Techniken und Technologien wie die der Transformation zu erlernen ein Problem dem ich mit diesem Fachbuch Abhilfe schaffen m chte Meine ersten intensiven Kontakte mit Modelltransformationen mit einer opera tionalen Sprache hatte ich 2006 Borland hatte mit Together 2006 als einer der ers ten Hersteller auf der Basis des bew hrten Modellierungswerkzeugs ein MDA Werkzeug auf den Markt gebracht welches Operational Mappings unterst tzte al lerdings in einer fr hen Auspr gung die nur sehr schwer zu erlernen war da es weder von Borland geeignete Literatur gab noch die QVT Spezifikation zum Er lernen des Together Dialektes taugte Dies war einmal mehr f r mich eine Motiva tion selbst ein Fachbuch zu dem Thema anzubieten ein Buch in dem ich mich recht konsequent auf die Seite der OMG gestellt habe Auch von Borlands Together mittlerweile in
230. nd auch mit der Erstellung von Metamodellen als Datentypen beziehungsweise Modelltypen f r die Transformation von formalen Modellen haben wir uns ver traut gemacht Damit verf gen wir ber genug Grundkenntnisse um uns der Ope rational Mappings zuwenden zu k nnen und zwar als erstes mit dem unvermeid baren HelloWorld Beispiel transformation HelloWorld main log Hello World S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_3 Springer Verlag Berlin Heidelberg 2010 54 3 Operational Mappings die Sprache Dieses Beispiel beschreibt eine formal vollst ndige wenn auch nicht gerade sinnvolle Transformation die lediglich die Zeichenkette Hello World in die Standardausgabe schreibt Das Script besteht aus einer operationalen Funktion main die den Einstieg in den Ablauf der Transformation erm glicht Aber wie gesagt dies ist eigentlich noch keine sinnvolle Transformation da noch keine Operation auf einem Modell vorgenommen wird Anders verh lt es sich mit fol gendem Script mit dem bereits ein Modell im Metamodell SimpleRDBM erzeugt wird welches ein Schema namens HelloWorld besitzt Beispiel modeltype RDBM uses SimpleRDBM transformation HelloWorld2 out outmodel RDBM main map createHello Erzeugung eines Schemas namens HelloWorld mapping createHello Schema name HelloWorld 7 Am Beispiel Hell
231. nd eine Art kina Zudem gibt es zwei neue Eigenschaften im Modell e entities welches der Metaklasse Package zugeordnet wird entities ist eine Liste von Elementen der Intermediate Class Entity entities er g nzt gewisserma en das Package Attribut elements e isEntity welches der Metaklasse Class zugeordnet wird isEntity ist ein zus tzliches Merkmal von Klassen um die Auspr gung des Merkmals kind persistent als Bool schen Wert aufzunehmen Alle Intermediate Data Elemente stehen f r den beschriebenen Transforma tionsprozess nahezu wie alle sonstigen Metamodellelemente zur Verf gung Das wollen wir uns einmal an einigen Beispielen ansehen 114 3 Operational Mappings die Sprache Beispiel 1 Verwendung des Properties von Klassen isEntity transformation Intermediate in source UML out target RDBM Metaklassen Class erhalten das Attribut isEntity intermediate property Class isEntity Boolean main source objects Package gt map setEntityClasses source objects Package gt map createSchema Bei allen Elementen eines Packages vom Typ Class wird wenn sie als persistent gekennzeichnet sind das Attribut isEntity true gesetzt mapping inout Package setEntityClasses name self name elements self subobjectsofType Class gt map setEntities mapping inout Class setEntities when self kind persistent is
232. nderung der in dem Block bearbeiteten Variablen und Objekte gepr ft Eine Iteration ist eine wiederholte Ausf hrung von An weisungen Zur Implementierung von Iterationen stehen in der QVT die imperativen Ausdr cke while for Each und forOne zur Verfiigung Dariiber hinaus ist auch die Anwendung von Iterationskonstrukten der OCL m glich zum Beispiel iterate 240 Glossar Konformit t strenge K effektive K Konstruktor Logging Mapping Metaattribut Metaklasse Metamodell Mit Konformit t wird allgemein die bereinstimmung einer Sache mit den Regeln und Normen eines Systems bezeichnet Konformit t im Sinne der MDA bedeutet eine bereinstimmung von Modellen nach den Vorgaben ei ner formalen Metamodellierungssprache Zwei Modelle sind zum Beispiel konform wenn sie mit den gleichen Sprachmitteln modelliert worden sind Zwei Metamodelle sind konform wenn sie die gleichen Metaklassen definie ren In der QVT wird im Weiteren zwischen strikter Kon formit t und effektiver Konformit t unterschieden e Strikte Konformit t strict bedeutet dass ein Modell als Kandidat einer Transformation mit genau demselben Metamodell entwickelt worden ist das auch als Modelltyp der Transformation angegeben wurde e Effektive Konformit t effective bedeutet dass ein Modellkandidat einer Transformation mit einem hnlichen aber konformen Metamodell entwickelt worden ist Ein Konstruktor constructor i
233. ne Liste aller direkten Subelemente des Elements allSubobjects List lt Element gt liefert eine Liste aller Subelemente des Elements also auch iterativ abstei gend die Subelemente von Subelementen subobjectsOfType OCLType List lt Element gt liefert eine Liste aller direkten Subelemente des Elements gefiltert nach ei nem vorgegebenen Typ D 1 QVT Standardbibliothek 223 allSubobjectsOfType OCLType List lt Element gt liefert eine Liste aller Subelemente des Elements gefiltert nach einem vorge gebenen Typ subobjectsOfKind OCLType List lt Element gt liefert eine Liste aller direkten Subelemente des Elements gefiltert nach ei nem vorgegebenen Typ oder dessen Supertyp allSubobjectsOfKind OCLType List lt Element gt liefert eine Liste aller Subelemente des Elements gefiltert nach einem vorge gebenen Typ oder dessen Supertyp clone Element erzeugt ein neues Element auf der Basis des vorgegebenen Elements deepclone Element erzeugt ein neues Element auf der Basis des vorgegebenen Elements mit Ko pien von allen Subelementen markedAs value String Boolean Priifung ob ein Modellelement mit einem bestimmten Wert value markiert ist z B mit einem MOF tag markValue Object liefert den Wert der Markierung sofern ein Modellelement z B mit einem MOF tag markiert ist stereotypedBy value String Boolean pr ft ob ein Modellelement mit einem speziellen Stereoty
234. nen Blockausdruck solange iterie ren bis eine gegebene Bedingung den Wert false ergibt while Bedingung Anweisungsteil re Wenn eine while Schleife mit einem compute Ausdruck kombiniert ist dann kann der Initialisierungsteil des compute Ausdrucks in den Bedingungsteil des while Ausdrucks hineingezogen werden Das Schliisselwort compute ist dadurch berfl ssig compute Initialisierung while Bedingung Anweisungsteil bi ist gleichbedeutend mit while Initialisierung Bedingung Anweisungsteil ia while Schleifen k nnen mit der break Anweisung an beliebiger Stelle in nerhalb des Anweisungsteils abgebrochen werden break bewirkt einen Sprung zum Ende der Schleife Der Ablauf wird hinter der Schleife fortgesetzt Mittels continue wird die Iteration an der Stelle unterbrochen und am Anfang des Schleifenblocks wieder aufgesetzt continue beginnt also einen neuen Itera tionsschritt w hrend break die gesamte Iterationsausf hrung beendet 3 4 OCL und QVT Grundlagen 77 for Iteration Ein for Ausdruck ist eine Schleife die zur Iteration ber eine Sammlung dient Eine for Schleife iteriert ber eine Collection und wendet auf jedes Element der Sammlung einen definierten Anweisungsblock an lt SourceCollection gt gt forEach forOne lt iteratorlist gt lt constraint gt Anweisungsteil SourceCollection ist eine Liste ber die
235. ner Class Liste zugewiesen werden Die collect Anweisung w rde scheitern wenn sich in der Ausgangsmenge Ele mente befinden die nicht zu einer Class konvertiert werden k nnen In dem Fall sollte eine der Varianten select oder iterate gew hlt werden 84 3 Operational Mappings die Sprache select select ist etwas qualifizierter als collect und liefert alle Elemente einer Menge die ein bestimmtes Selektionskriterium erf llen select iteriert ber die Elemente einer Sammlung und liefert eine Teilmenge aller Elemente die eine ge gebene Bool sche Bedingung erfiillen Syntax lt collection gt gt select lt iterator gt lt iterator_type gt lt boolean_expression gt lt iterator_boolean_expression gt Eine Iteratorvariable kann definiert werden Der Bool sche Ausdruck muss dann die Iteratorvariable verwenden Ein select entspricht einer Selektions abfrage in relationalen Datenbanken Beispiel var pckg Package var cls OrderedSet Class cls pckg elements gt select c PackageElement GC oc lisTypeot Class asType Class asOrderedSet Bei dieser L sung werden nur die Klassen in einem Package selektiert iterate iterate iteriert ber eine Sammlung von Elementen und wendet auf jedes Ele ment eine spezielle Operation an Diese Iterationsoperation wird auch als Akku mulation bezeichnet iterate ist die generellste Funktion auf Sammlungen mit der alle anderen implementiert we
236. ng eines Mapping Blocks 102 3 Operational Mappings die Sprache Beispiele Variante 1 vollst ndig mit Initialisierung Popularisierung und Terminierung mapping Package createSchema init var n Sering n self name population i name n end n ra Schema Variante 2 wie Variante 1 ohne population Schl sselwort mapping Package createSchema init var n oCring n self name name n end n Variante 3 ohne Terminierungsblock mapping Package createSchema init var n SCring n self name name n Schema Schema 3 5 Operationale Transformationen 103 Variante 4 ohne explizite Initialisierung mapping Package createSchema Schema name self name In der Literatur findet man h ufig die Kurzform Variante 4 insbesondere dann wenn es f r die ausf hrlicheren Varianten keine sinnvollen Begr ndungen gibt Dieser vereinfachenden Konvention werde ich mich im Weiteren an schlie en Vorbedingungen und Invarianten QVT Modelltransformationen dienen nicht nur dem Zweck Quellmodelle in Zielmodelle zu berf hren QVT erlaubt zudem auch die Pr fung von Modellen mit Hilfe von Vorbedingungen sogenannten Guards und Invarianten Guards sind W chter mit denen ein Quellmodell oder Modellelement vor der Verarbeitung auf Konsistenz gepr ft wird Dabei handelt es sich um eine logische OCL Anweisung d
237. ng von Relationen und Transformationen mit imperativen Sprachkonstrukten die denen von bekannten h heren Programmiersprachen hnlich sind Die Transformationen zwischen den Modellen werden in Form von Mapping Operationen mapping operations be schrieben Operational Mappings Scripte werden entweder auf die Relations Lan guage und dar ber auf die Core Language oder direkt auf die Core Language ab gebildet Damit definiert die Core Language auch hier das Laufzeitsystem f r die Operational Mappings Operational Mappings ist unidirektional und nicht bidi rektional die durch Mapping Operationen herbeigef hrten nderungen auf dem Zielmodell werden im Quellmodell nicht unmittelbar nachvollzogen 22 1 Einf hrung BlackBox Neben den deskriptiven und imperativen Sprachen bietet die QVT ein zus tzliches Konzept an die BlackBox Sprachen Hiermit ist anderen zum Beispiel Herstellern von MDA Werkzeugen die M glichkeit gegeben sich in das QVT Sprachschema der OMG einzuf gen Es wird also von Dritten nicht gefordert dass sie imperative oder deklarative Sprachen im Sinne der QVT Spezifikation beitragen damit ihre Produkte als MDA konform gelten Es wird aber vorgegeben dass sich die pro priet ren Sprachen von Dritten in der Weise in die QVT Architektur einordnen lassen dass sie vollst ndig auf die Relational Language oder auf die Core Lan guage abgebildet werden so wie das zum Beispiel auch f r die QVT Sprachen Relations Languag
238. ngung when Klausel erf llt ist Beispiel disjuncts transformation HelloInherit in source UML out dest RDBM main log Main Hello World source objects Package gt map disjunctsSchema mapping Package PackageWithClasses Schema when self allSubobjectsofType Class size gt 0 log disjunctsschema with Classes name self name 152 4 Operational Mappings Anwendungen mapping Package PackageWithoutClasses Schema when self allSubobjectsOfType Class size 0 log disjunctsSchema without Classes name self name mapping Package disjunctsSchema Schema disjuncts PackageWithClasses PackageWithoutClasses inherits und merges machen dann Sinn wenn die entsprechenden Mapping Operationen an verschiedenen Stellen ben tigt werden zum Beispiel zur Initialisierung oder Terminierung mehrerer anderer Mapping Operationen In Be zug auf die ererbten Methoden ist Konformit t gefordert in der Weise dass die er erbten Methoden auf denselben Objekten arbeiten wie die erbenden Operationen da sie ja diese initialisieren oder terminieren Das hei t konkret die Signaturen der ererbten Mapping Operationen die referenzierte Metaklasse und der Ergebnistyp m ssen identisch sein zu der erbenden Methode Die ererbten Methoden k nnen vollst ndig spezifiziert sein also auch mit Vor und Nachbedingungen Die Me thoden werden nat rlich in de
239. nkmodell SimpleRDBM dar 2 1 1 Das Metamodell SimpleUML Das SimpleUML Modell Abbildung 2 2 ist ein UML Metamodell welches zur Modellierung von einfachen Klassendiagrammen dient SimpleUML ist ein Me tamodell f r die PIM Ebene Jin destination Abb 2 2 Das Metamodell SimpleUML als UML Klassendiagramm 30 2 Modelle und Metamodelle Fachliche Gegenstandsstrukturen werden in Form von einfachen Klassendia grammen dargestellt ohne zu ber cksichtigen auf welchen Datenbankplattformen diese implementiert werden sollen Ein SimpleUML Modell besteht aus einer Menge von UMLModelEle ments Dabei handelt es sich um Packages PackageElements Classifier Classes Datatypes Attributes und Associations Packages sind Sammlungen die mehrere Elemente enthalten k nnen dies sind elements vom Typ PackageElement Derartige PackageElements sind Classes Datatypes und Associations Bei Classifiern kann es sich um Classes oder PrimitiveData Types handeln Alle UMLModelElements haben einen Typ kind und einen Namen name name ist eine frei definierbare Zeichenkette welche immer einen Wert haben muss kind repr sentiert einen bestimmten Typ des Elementes der ebenfalls in Form einer Zeichenkette angegeben werden muss So k nnen Klassen zum Beispiel persistent sein die Auspr gung von kind ist dann persistent kind muss nicht notwendigerweise einen Wert besitzen PrimitiveDataTypes haben einen kind mit den m glich
240. nkt Ver lag 2006 Petri CA Kommunikation mit Automaten Institut fiir Instrumentelle Mathematik Bonn Schriften des IIM Nr 2 1962 Petri CA Fundamentals of a Theory of Asynchronous Information Flow Proc of IFIP Congress 62 Amsterdam North Holland Publ Comp 1963 Pages 386 390 Reisig W Petri Netze Eine Einf hrung Springer 1991 Rumbeaugh J Blaha M Premerlani W Eddy F Lorenson W Ob ject Oriented Modeling and Design Prentice Hall 1991 Rumbeaugh J Blaha M Premerlani W Eddy F Lorenson W Ob jekt Orientiertes Modellieren und Entwerfen Hanser Verlag 1993 Rumpe B Modellierung mit UML Springer Verlag 2004 Seidwitz E What Models Mean IEEE Software 20 5 2003 Shavor et al Eclipse Anwendungen und Plugins mit Java entwi ckeln Addison Wesley 2004 Stachowiak H Allgemeine Modelltheorie Springer Verlag 1973 Stahl T V lter M Efftinge S Haase A Modellgetriebene Software entwicklung dpunkt Verlag 2007 Stevens P Bidirectional model transformations in QVT Proc of the 10 Int Conf on Model Driven Engineering Languages and Sys tems in Lecture Notes in Computer Science Springer 2007 Weilkins T Systems Engineering mit SysML UML dpunkt Verlag 2008 Wirth N Systematisches Programmieren Teubner 1993 Referenzen im Internet AMDA ATL BOR AndroMDA http www andromda org letzter Abruf 12 2008 ATLAS Transformation Language http www eclipse org m2m atl letzter Abruf 12 2008 Bor
241. nment gt Beispiele var irgendeineVariable String irgendeinWert var i Integer 0 var b Boolean false Es gibt folgende vordefinierten Variablen this Diese Variable repr sentiert die aktive Transformation selbst this kann im Rahmen der Definition verwendet werden um auf die At tribute und Operationen zugreifen zu k nnen die zu den Merkmalen der Transformation geh ren Das hei t diese Variable erm glicht es in die laufende Transformation einzugreifen Dazu gibt es spe zielle Standardfunktionen in der QVT Bibliothek self Diese Variable referenziert das Objekt welches der aktuelle Gegen stand einer Mapping Operation ist result Die result Variable existiert ausschlie lich in dem Kontext einer Mapping Operation Sie repr sentiert das Objekt das als Ergebnis eines Mappings geliefert wird 72 3 Operational Mappings die Sprache Es gibt folgenden vordefinierten Wert null Hierbei handelt es sich nicht um eine Variable sondern um einen vordefinierten Wert fiir beliebige Variablentypen und zwar fiir Vari ablen oder Objekte die deklariert aber noch nicht definiert sind var irgendeineVariable String null Die Abfragen lt variable_name gt oclIsUndefined oder lt var able_name gt null erlauben nun in identischer Weise die Abfrage dieses Zustandes Beispiele var classes OrderedSet Class null var package Package self var liste List null li
242. ns formation transformation UML2ERM in fkm UML out kdb ERM 2 1 Die Metamodelle SimpleUML und SimpleRDBM Die oben skizzierte Transformation UML2ERM ist in etwas vereinfachter Simpler Form die Transformation mit der wir uns im Rahmen dieses Buches intensiv besch ftigen werden Analog zu dem Transformationsbeispiel der QVT Spezifikation wird ein Modell im SimpleUML Metamodell transformiert in ein Modell des Metamodells SimpleRDBM Dazu m ssen zuerst die Metamodelle SimpleUML und SimpleRDBM erarbeitet oder in einer f r den Transformator interpretierbaren Form beigestellt werden Formale Metamodelle werden mit Hilfe von UML2 Klassendiagrammen definiert 2 1 Die Metamodelle SimpleUML und SimpleRDBM 29 Abbildung 2 2 und Abbildung 2 4 zeigen zum Beispiel die UML2 Repr sen tationen der Metamodelle SimpleUML und SimpleRDBM Sofern f r die Mo dellierungssprachen geeignete graphische Modellierungseditoren zur Verf gung stehen kann eine graphische Modellierung auf der Grundlage der Sprachen SimpleUML und SimpleRDBM vorgenommen werden Abbildung 2 3 zeigt das mit der SimpleUML dargestellte einfache Klassendiagramm eines Wohnungsbau kreditgesch ftes Die hier betrachtete reale Welt ist nat rlich sehr viel komplexer und die Modelle von daher komplizierter aber zur Veranschaulichung und bung der Modelltransformation soll das soweit reichen Abbildung 2 5 stellt das ent sprechende Schema im simplen relationalen Datenba
243. nsformationen sind unterschiedliche Schritte Die Ausf hrung der Transformation erfolgt mit der in der Standardbibliothek vordefinierten Operation Syntax lt transformation_name gt transform Beispiel uml2rdbm transform 3 5 3 Mapping Operationen Transformationsscripte bestehen im Wesentlichen aus Mapping Operationen Doch bevor ich auf deren Aufbau konkreter eingehe m chte ich zuerst die Benut zung erl utern da dies f r die folgenden Beispiele erforderlich ist Eine Mapping Operation ist eine Funktion die dadurch benutzt wird dass sie mit dem voran gestellten Mapping Operator map aufgerufen wird Mapping Call Sofern bei der Definition der Operation Parameter angef hrt sind m ssen beim Aufruf kompa tibel zu der Signatur der Operation Argumente aktuelle Parameter bergeben werden Syntax map lt mapping_name gt actual paranetars IT ys Das Ergebnis einer Mapping Operation kann einer Variablen zugewiesen wer den Die Variable muss nat rlich so definiert sein dass sie das Ergebnis der Map ping Operation aufnehmen kann Dabei wird es sich also da Mapping Operatio nen in der Regel mehrere Ergebnisobjekte liefern um einen Listentyp handeln Syntax var lt variable_name gt lt element_type gt gt map lt mapping_name gt lt actual_parameter gt Beispiel Variante 1 mit gebundenem Mapping transformation uml2rdbm in srcModel SimpleUML out destModel Si
244. o UML Profil mit Stereotyp lt lt persistent gt gt Anwendung des Stereotyps lt lt persistent gt gt 1m UML Modell Das Operational Mappings Script Um1ToRdbms im berblick Die Mapping Operation ClassToTable im Uberblick Die Mapping Operation AssociationToTable im berblick Die Transformation UML2EJB Das Mapping von Paketen Das Mapping von Fachklassen 118 125 129 132 134 138 140 156 157 159 160 162 163 169 174 176 177 202 203 204 210 211 212 1 Einf hrung 1 1 Eine kurze Geschichte der modellgetriebenen Software Entwicklung Die moderne Software Entwicklung ist zunehmend mit der Aufgabe konfrontiert immer kompliziertere Anforderungen aus der realen Welt mit immer vielf ltigeren Anwendungssystemen und Software L sungen zu unterst tzen Der Entwickler steht dabei grunds tzlich vor dem Problem dass er zum einen seine eigenen kom plexen Technologien beherrschen muss zum anderen die Sachverhalte Strukturen und Gegebenheiten der realen Welt verstehen muss mit der er es zu tun hat Um diesen grundlegenden Problemen die Mitte der sechziger Jahre zu dem Begriff Software Krise gef hrt haben zu begegnen hat sich im Lauf der Zeit die Einsicht ergeben den Software Entwicklungsprozess aus einer Anwendungsprogrammie rung herauszuheben und zunehmend nach ingenieursm igen Grunds tzen zu ge stalten Und damit wurde auf der ber hmten NATO Conference on Software Engi neering in Garmisch Partenkirchen 1968 der
245. oTable Noch einmal zur Erinnerung 66 e ist eine einfache Zuweisung die einem Objekt einen Wert zuordnet Sammlungsobjekte w rden damit stets den neuen Wert erhalten der vorherige ginge verloren 124 4 Operational Mappings Anwendungen e ist ein Zuweisungsoperator f r Sammlungen die die jeweiligen Objekt werte um die neuen erg nzt Das hei t Sammlungen werden fortgeschrieben Bezogen auf Sammlungen w rde ich empfehlen immer den Operator zu verwenden es sei denn eine Sammlung soll ausdr cklich initialisiert werden Und damit k nnen wir nun auch die Attribute der Klassen behandeln und den Tabellen als Columns zuordnen mapping Class ClassToTable Table name self name columns self attributes gt map AttributeToColumn Hier ist es anstelle von self attributes nat rlich auch wieder zul s sig die Attribute einer Klasse als Subobjekte zu selektieren self allSubob jectsOfType Attribute Im Gegensatz zu Paketen die als elements durchaus unterschiedliche Elementtypen besitzen k nnen haben Klassen jedoch nur Attribute so dass wir an dieser Stelle einfach auf die Eigenschaft attribu tes zur Bildung der Tabellenspalten zugreifen k nnen Zu guter Letzt ist es m glich f r eine Mapping Operation Vor und Nachbe dingungen zu spezifizieren So soll aus einer Class zum Beispiel nur dann eine Table im Schema erzeugt werden wenn sie das Merkmal hat per sist
246. oWorld2 k nnen wir bereits erkennen Eine operationale Transformation erfolgt in der Weise dass in Form von Mappings Beziehungen zwischen MOF Modellen oder deren Elementen beschrieben werden MOF Modelle werden in der Spezifikation auch als getypte Modelle bezeichnet Der Typ gewisserma en die Datenstruktur eines getypten Modells ist das Metamodell Das Transformationsscript HelloWorld2 arbeitet mit einem Modell vom Typ RDBM hierbei handelt es sich um das Zielmodell das mit dem Schl sselwort out gekennzeichnet ist HelloWorld2 ist im Sinne einer Modelltransformation immer noch nicht zu friedenstellend Das Zielmodell outmodel wird schlie lich nicht durch Trans formation erstellt sondern durch Generierung eines Schemas mit einem willk r lichen Namen Abhilfe schafft ein nach wie vor einfaches aber nun vollst ndiges Transformationsscript HelloWorld3 das ein Quellmodell in inmodel in ein Zielmodell out outmodel berf hrt Beispiel modeltype UML uses SimpleUML modeltype RDBM uses SimpleRDBM 3 2 Die Operational Mappings Plattform SmartQVT 55 transformation HelloWorld3 in inmodel UML out outmodel RDBM main inmodel objects Package gt map createHello Erzeugung eines Schemas mit dem Namen des Packages mapping Package createHello Schema name self name Hier wird also nun nicht mehr HellowWorld generiert sondern auf der Grundlage der Packages des Quellmodel
247. odeling uml documentation html letzter Abruf 12 2008 Unified Modeling Language http www uml org letzter Abruf 12 2008 UML Superstructure and Infrastructure http www omg org spec UML 2 1 2 letzter Abruf 12 2008 XML Metadata Interchange http www omg org spec XMI letzter Abruf 12 2008 Metamodelle in km3 Format und im Ecore Format http www emn fr x info atlanmod index php Zoos letzter Abruf 12 2008 Metamodelle in km3 Format und im Ecore Format http apps eclipse org gmt am3 zoos atlanticZoo letzter Abruf 12 2008 Index A Abbildung 12 Abfrageoperation 111 Ablauf 8 Ablaufmuster 4 Ablauforganisation 5 Abstrahieren 9 Adressierung 146 Aggregation 7 Akkumulation 84 Akkumulationsobjekt 85 Akteur 7 Aktion 117 Aktion imperative 122 Aktivit t 8 Aktivit tendiagramm 8 16 Aliasname 70 Analyse fachliche 117 Analyse objektorientierte 4 Analysieren 60 Analytiker 2 Anforderung 1 Anweisung break 76 Anweisung collect 83 Anweisung continue 76 Anweisung do 74 Anweisung forEach 77 Anweisung forOne 77 Anweisung imperative 93 Anweisung iterate 84 Anweisung return 74 110 Anweisung select 84 Anwendungsentwicklung strukturierte 4 Anwendungsentwicklungsprozess 9 Anwendungsfall 4 7 Anwendungsfalldiagramm 7 Anwendungsprogrammierung Anwendungssystem 1 11 Architektur 12 Architekturdiagramm 6 Architekturentwicklung 16 Architekturentwicklung modellgetriebene 12 Architekturmodell 16 Argument 27
248. odellelemente Objekte Freie Elemente besitzen einfache oder strukturierte OCL Datentypen Vererbung ist ein grundlegendes Konzept der objekt orientierten Entwicklung Vererbung wird durch eine spezielle Beziehung zwischen Klassen Generalisie rung Spezialisierung definiert in dieser Beziehung gibt es eine generelle Oberklasse die Eigenschaften vererben kann und eine spezielle Unterklasse die Eigenschaften ererben kann Auch in der QVT Operational Mappings ist Vererbung zwischen Modulen Transformationen Libraries vorgesehen Eine der deskriptiven Sprachen Relations Language oder Core Language ist das Laufzeitsystem virtuelle Maschine f r alle anderen QVT Sprachen Die Pr fung einer Vorbedingung erfolgt zu Beginn der Ausf hrung einer Anweisungsfolge Ist die Bedingung nicht erf llt wird die Anweisung nicht ausgef hrt Ein Vorgehensmodell f r die Software Entwicklung SWE beschreibt einen systematischen Prozess um die SWE insgesamt bersichtlicher steuerbarer und besser nachvollziehbar zu gestalten In einem Vorgehensmodell sind festgelegt e die durchzuf hrenden Aktivit ten e die Reihenfolge des Ablaufes e die Definition der Ergebnisartefakte Wiederverwendung Workspace Zusicherung Zuweisung Glossar 249 Methoden und Werkzeuge Ma st be Kriterien f r die geforderte Qualit t Verantwortlichkeiten und Kompetenzen Standards und Richtlinien Wiederverwendung verfolgt grunds tzl
249. oder komplex sind attr superattr gt getAllPrimitiveAttributes name self name columns attr gt map AttributeToColumn getSuperAttributes ist in sofern recht einfach zu l sen dass lediglich die Eigenschaften der Attribute einer existierenden Oberklasse self gen eral bernommen und in eine tempor re Liste superattr eingetragen werden m ssen Anschlie end ist f r jedes dieser superattr zu pr fen ob es einen primitiven oder komplexen Datentyp besitzt und gegebenenfalls wie oben beschrieben zu behandeln ist 134 4 Operational Mappings Anwendungen query Attribute getSuperAttributes Sequence Attribute Sequence object Attribute name self name type self type Eine Klasse die wir als Oberklasse erkannt haben self specific lt gt null muss dann nicht mehr als Tabelle erzeugt werden Es werden nur dann Klassen zu Tabellen transformiert wenn sie einerseits persistent sind und wenn sie andererseits keine weiteren Unterklassen besitzen self specific null mapping Class ClassToTable Table when self kind persistent and self specific null ClassToTable Rump f Das Ergebnis eingeschr nkt auf die Klassen Person NatuerlichePer son und JuristischePerson zeigt Abbildung 4 6 Die Benennung der aus der Oberklasse bernommenen Spaltennamen ist nat rlich ein wenig schief eine Firma hat selten einen Vornamen oder ein Alter vielleich
250. on Zeichenketten wird mit dem Konkatenationsoperator durchgef hrt lt string_expression gt lt string_expression gt 6 Mit der Notation werden bestimmte Elemente Attribute oder Operatio nen von Objekten referenziert lt QVT_variable gt lt expression gt 7 Die Elemente eines Sammlungstyps k nnen mit dem Operator gt referenziert werden lt QVT_variable gt gt lt expression gt Mit gt ist es m glich implizit ber alle Elemente eines Sammlungstyps zu iterieren 8 Der map Operator wendet eine referenzierte Mapping Operation auf einem Element an Oder mit anderen Worten der map Operator ruft eine Mapping Operation auf map lt mapping_operation gt 74 3 Operational Mappings die Sprache 3 4 4 Imperative OVT Ausdriicke Imperative Ausdriicke sind QVT Standardausdriicke mit denen in Operational Mappings Scripten anweisungsorientierte Programmierelemente angeboten wer den zum Beispiel Textausgaben auf eine Konsole oder Sprachmittel der struktu rierten Programmierung Logging log Ausdr cke werden an beliebiger Stelle benutzt um Meldungen auf die Standardausgabe auszugeben log Ausdr cke unterbrechen oder beenden den Ablauf nicht Als erstes Argument enthalten sie irgendeinen Text als zweites Argument k nnen sie optional ein Objekt enthalten Log Ausdriicke k nnen mit einer Bedingung verkn pft sein die Meldung wird nur dann angezeigt wenn die Bedingung erf llt ist
251. operationen erlaubt sind die wir in einem fr heren Abschnitt dieses Kapitels im berblick bereits kennengelernt haben Und in der main Methode ist bereits eine Besonderheit zur Schreibvereinfachung eingef hrt worden ein sogenannter Shorthand lt model_name gt objects Package Dies entspricht der QVT Standardfunktion lt model_name gt objectsOfType Package Der Rumpf von Mapping Operationen besteht aus e einem init Bereich in dem Anweisungen aufgef hrt sind die zur Vorberei tung und Instantiierung der Objekte und Variablen dienen e einem population Bereich in dem die Belegung der Werte des Zielmodells vorgenommen wird und e einem end Bereich in dem eine Nachbearbeitung und Terminierung des Map pings vorgenommen werden kann Syntax mapping in inout lt element_type gt lt mapping_name gt in out inout lt paramName gt lt paramType gt out lt return_parameter gt when lt constraint gt where lt constraint gt init lt init_section gt population lt population_section gt lt population_section gt end lt end_section gt Lt L LI Der init Bereich und der end Bereich sind optional und nur dann angezeigt wenn initialisierende oder terminierende Aktionen vorgenommen werden m ssen Der Populationsbereich ist immer erforderlich wenn auch das Schl sselwort po pulation entfallen kann Daraus ergeben sich folgende Varianten f r die Im plementieru
252. opme Generate Editor Code T5 Navigator Topcased SimpleuML genmodel Generate Test Code Generate All SimpleUML Modeling a E SimpleUML Show Annotations HE settings B E Ecore z SimpleRDBM ecore pi H UMLModelElement H Package gt UMLModelElement H PackageElement gt UMLModelElem H Attribute gt UMLModelElement H Classifier gt PackageElement SmpleUML ecore H Association gt PackageElement SimpleUML ecorediag Pi g Class gt Classifier _ Be SimpleUML genmodel er PrimitiveDataType gt Classifier 9 0 MI MAT i Reload Export Model Te SimpleRDBM ecorediag B SimpleRDBM genmodel Taraa Ir Selected object SimpleUML Abb 2 7 Generierung der Metamodelle Schritt 3 Deployment der Plugins Die Einbindung der Metamodelle in den Eclipse Kontext Deployment erfolgt mittels File gt Export gt Plug in Development gt Deployable plug ins and fragments Die deployable Metamodelle werden selektiert und in das Destination Verzeichnis der aktuellen Eclipse Plattform ver ffentlicht Abbildung 2 8 Das hei t sie werden in das Unterverzeichnis Plugins hineinkopiert Abbildung 2 9 2 2 Serialisierung der Metamodelle 49 Deployable plug ins and fragments j Export the selected projects into a form suitable for u deploying in an Eclipse product Available Plug ins and Fragments U lt SimpleRdbmsOvT 1 0 0 Select All
253. otype null stlist ost gt select p p name str return if not stlist gt isEmpty then true else false endif Eine Alternative besteht darin auf der Basis der assoziierten Stereotypen eine Liste mit deren Namen stnames aufzubereiten und dann nachzuschauen ob sich in dieser Liste der gesuchte Stereotypname befindet query in Class isStereotypedBy str String Boolean var ost OrderedSet Stereotype null ost self getAppliedStereotypes var stnames Set String null stnames ost gt select p p name str gt collect p p name return if stn gt includes str then true else false endif Damit sollte es nun m glich sein entweder mit den Optionen der QVT Stan dardbibliothek oder mit eigenen Mitteln Modelle zu bearbeiten die mit UML Pro filen entwickelt worden sind Zum Beispiel kann man fachliche Klassen die mit dem Stereotyp lt lt persistent gt gt versehen worden sind in ein plattformspezi fisches EJB Modell berf hren bei dem die persistenten Klassen als EntityBeans implementiert werden Mit dieser Aufgabe an den Leser m chte ich das Fachbuch zum Thema operationale Transformationen abschlie en A Die Syntax der Operational Mappings Die formale Syntax der QVT Operational Mappings gem der Spezifikation MOF QVT V1 0 mit Stand vom April 2008 MOF A 1 Reservierte W rter Bag Collection Dict OrderedSet Sequence Set Tuple abstract access
254. ows java lang Throwable return null Java Methoden die von SmartQVT generiert werden erhalten stets folgende Argumente 154 4 Operational Mappings Anwendungen e das Objekt selbst self e das Argument welches in der query oder der Operation deklariert worden ist hier die String Variable logText e ein Trace Objekt 2 Die Methode kann im Java Code nun beliebig ausformuliert werden etwa in einer sehr schlichten Weise wie folgt public java lang Long logTextToStdOut java lang Object self java lang String logText Trace trace throws java lang Throwable SyYstem out printin logText return null In obigem Code wird die QVT log Funktion durch eine Java Methode im plementiert In einem weiteren Beispiel wollen wir nun die Ermittlung der SQL Datentypen aus der UmlToRdbm Transformation mit Hilfe einer Java L sung bauen Beispiel mapping Attribute AttributeToColumn Column name self name type getAttributeType self type name query getAttributeType typeName String String Java BlackBox Funktion public java lang String getAttributeType java lang Object self java lang String typeName Trace trace throws java lang Throwable 1f typeName Integer return int if typeName Double return double if typeName String return varchar if typeName Date return date return undefined 4 3 Transformation von UML Modellen 155 Insg
255. p ter noch eingehender besch ftigen werden Beispiel mapping Package createSchema Schema log Durekhf hrung name self name Es ist m glich Mapping Operationen durch Angabe von Bedingungen kon kreter zu beschreiben Dabei handelt es sich einerseits um Vorbedingungen when Pr dikate die erf llt sein m ssen damit die Operation berhaupt aus gef hrt wird und andererseits um Invarianten where Pr dikate die f r den gesamten Lebenszyklus der von der Operation betroffenen Modellkomponente er f llt sein m ssen Bedingungen dieser Art werden in Form von OCL Ausdr cken spezifiziert Beispiel mapping Package createSchema Schema when der Name des Packages muss l nger sein als Q Bytes self name size gt 0 where der Name des generierten Schemas darf nicht leer sein name lt gt name self name Der Einstiegspunkt in eine Operational Mappings Transformation ist die main Funktion ein spezielles Mapping das die Transformation der Modelle repr sentiert Die Argumente der main Funktion sind demnach die Modellpara meter der Transformation In der main Funktion wird keine Initialisierung und Terminierung vorgenommen als Operationen sind nur Funktionen auf Modelle zugelassen Im folgenden Scriptausschnitt wird zum Beispiel die Standardfunktion objects benutzt die auf Modelle definiert ist um die Objekte eines bestimmten Typs zu selektieren
256. p value versehen ist stereotypedStrictlyBy value String Boolean pr ft ob ein Modellelement mit einem speziellen Stereotyp versehen ist Methoden auf Dictionary Ein Dictionary ist ein parametrisierter Datentyp das Symbol T repr sentiert dabei den Typ der Werte des Dictionaries und KeyT stellt den Index dar mit dessen Hilfe die einzelnen Elemente adressiert werden k nnen 224 D Standardbibliotheken Dictionary lt keytype gt lt valuetype gt lt methodname gt lt arguments gt lt resulttype gt KeytT keytype T valuetype get k KeyT T liefert das durch das k indizierte Objekt vom Typ T hasKey k KeyT Boolean pr ft ob das Dictionary f r den angegebenen Index k einen Wert besitzt defaultget k KeyT T liefert entweder den durch k indizierten Wert oder wenn dieser nicht existiert den Defaultwert put k KeyT v T Void tr gt den Wert v vom Typ T an der Stelle k ein clear Void entfernt alle Werte aus dem Dictionary size Integer liefert die Anzahl der Werte die sich in dem Dictionary befinden values List T liefert eine Liste aller Werte des Dictionaries keys List KeyT liefert eine Liste aller Indizes isEmpty Boolean ergibt true falls das Dictionary leer ist false sonst Methoden auf List List repr sentiert eine parametrisierte und ver nderbare Liste von Objekten List lt methodname gt l
257. pangabe die vorhanden sein muss Innerhalb des object Blocks findet die Erzeugung und Population des entsprechenden Objektes statt indem mit Hilfe weiterer Zuweisungsausdr cke die Merkmale des Objektes mit Werten belegt werden Als Zuweisungsausdr cke sind nat rlich auch wieder object Aus dr cke zugelassen so dass eine beliebige Schachtelung m glich ist Beispiel mapping Package PackageToSchema Schema name self name tables self subobjectsOfType Class gt map ClassToTable mapping Class ClassToTable Table name self name 3 5 Operationale Transformationen 107 columns self attributes gt object a col Column name a name E In diesem Beispiel wird f r jedes Attribut einer Klasse ein Objekt vom Typ Column erzeugt und den Tabellenspalten columns zugewiesen Der Identifier col k nnte hier weil eine direkte Zuweisung an columns erfolgt auch weg gelassen werden Der Iterator a ist erforderlich da wir hier eine Referenz auf die aktuelle Klasse ben tigen self bezieht sich auf jeweils eine Class In dem Fall dass eine weitere Spalte hinzugef gt werden soll die unter Verwendung des Klassennamens benannt wird wird ein Iterator nicht ben tigt Beispiel mapping Class ClassToTable Table name self name columns self attributes gt object a col Column name a name bi columns object Column name self name _ID Und nun das
258. pe2class Class name self name mapping in Class class2stereotype Class name self name 4 4 2 Transformation von persistenten Klassen Mit der Transformation CreateEntityBean wird nun f r die markierte Klasse A ein Paket namens A_EB im Zielmodell angelegt die Klasse A soll dann Element des neuen Paketes sein Die Klasse ohne Stereotyp B wird nicht behan delt Das Problem ist also die markierte Klasse mit ihrem Stereotyp zu erkennen und den Stereotyp zu interpretieren Das wird eigentlich recht einfach mit Hilfe der QVT Standardfunktionen zum Beispiel isStereotypedBy lt quali fied_name gt zu l sen sein transformation CreateEntityBean in src UML out dest UML 4 4 QVT und UML Profile 179 main src objects Class gt markedClass mapping Class markedClass Package when self isStereotypedBy persistent name self name EB packagedElement object Class Name self name Bedauerlicherweise wird die QVT Standardbibliothek nicht immer im vollen Umfang unterst tzt so dass wir unter Umst nden diese Funktion mit Hilfe einiger Hilfsfunktionen des Eclipse UML2 Frameworks selbst implementieren m ssen query in Class isStereotypedBy str String Boolean var st Stereotype null st self getAppliedStereotype ProfileDef str return if self isStereotypeApplied st then true else fals
259. perBound 1 eType PrimaryKey eOpposite PrimaryKey column gt lt eStructuralFeatures xsi type ecore EReference name foreignKeys upperBound n eType ForeignKey eOpposite ForeignKey column gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name PrimaryKey eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name columns upperBound 1 eType Column eOpposite Column primaryKey gt lt eStructuralFeatures xsi type ecore EReference name refersToOpposite upperBound eType Foreignkey eOpposite ForeignKey refersTo gt lt eStructuralFeatures xsi type ecore EReference name owner lowerBound 1 eType Table eOpposite Table primaryKey gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name ForeignKey eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name owner lowerBound 1 eType Table eOpposite Table foreignKey gt 200 B Metamodelle in serialisierter Darstellung lt eStructuralFeatures xsi type ecore EReference name refersTo lowerBound eType PrimaryKey eOpposite PrimaryKey refersToOpposite gt lt eStructuralFeatures xsi type ecore EReference name columns upperBound eType Column eOpposite Column foreignKey gt lt eClas
260. peration gt map transformOperations je Attribut eine getter und setter Methode ownedOperation self ownedAttribute gt map getter ownedOperation self ownedAttribute gt map setter Standard Methoden einer SessionBean nach EJB ownedOperation getSbOperations hy Inline Erzeugung des Home Interfaces packagedElement object Interface Name self name Home visibility v e b latryKaned s public ownedOperation getHomeMethods ry Inline Erzeugung des Remote Interfaces packagedElement object Interface name gt self name Remote yvisibility Vis1ib1 l tyKinds s public ownedOperation self ownedAttribute gt map getter ownedOperation self ownedAttribute gt map setter a Getter Methode mit dem Datentyp des Attributes als Resulttyp mapping in Property getter Operation name get self name firstToUpper type self type vis b licy lt V s b l tykKind zpubl1s setter Methode mit einem Input Parameter vom Typ des Attributes mapping in Property setter Operation name set self name firstToUpper vis n licy Visipbrlitykind z3public ownedParameter object Parameter direction ParameterDirectionKind _in name o self name firstToUpper type self type C 2 UML2EJB 215 Erzeugung der Standard Methoden der SessionBean query getSbOperations
261. plen Metamodelle SimpleUML und SimpleRDBM 3 3 Allgemeiner Aufbau von Operational Mappings Scripten Damit zun chst genug von der Entwicklungsumgebung Kehren wir zur ck zum HelloWorld Beispiel um uns den grunds tzlichen Aufbau von Operational Mappings Scripten etwas genauer anzusehen Beispiel metamodel SimpleUML class Package name String metamodel SimpleRDBM class Schema name String modeltype UML uses SimpleUML modeltype RDBM uses SimpleRDBM transformation HelloWorld in source out target main log Main Hello World UML RDBM source objects Package gt map createSchema mapping Package createSchema Schema init log Schema init Hello World log Schema population Hello World name HelloWorld end log Schema end Hello World 64 3 Operational Mappings die Sprache In dieser Modelltransformation wird auf der Basis eines SimpleUML Pa ckages ein SimpleRDBM Schema namens HelloWorld erzeugt Die dazu erforderlichen Metamodelle sind sehr schlicht Jede Operation wird mit einer log Meldung begleitet Die Log Anweisung ist recht hilfreich wenn man mit den verf gbaren Werkzeugen kein Debuggen zur Suche von Fehlern zur Verf gung hat wie das bei SmartQVT der Fall ist Die folgende Anweisung wiirde bei der Erzeugung des Schemas den Namen des Paketes beriicksichtigen Beispiel mapping Package cre
262. ppen Paketen zusammenzufassen e Kompositionsstrukturdiagramm Ein Kompositionsstrukturdiagramm erm glicht explizit die Modellierung von Teile Ganzes Beziehungen Derartige Teile Ganzes Beziehungen werden als Kompositionsstrukturen bezeichnet Kompositionsstrukturen sind h ufige Beziehungen zwischen Klassen die im Klassendiagramm mit Aggregationen oder Kompositionen dargestellt werden e Komponentendiagramm Wie auch das Kompositionsstrukturdiagramm ist das Komponenten diagramm eine Option zur Darstellung von fachlichen Architekturen Ein Komponentendiagramm dient der Darstellung und Betrachtung der Be standteile eines modellierten Systems welche auf einem DV System oder allgemeiner auf einer zugrundeliegenden Plattform betrieben werden sol len Als Komponente in diesem Sinne wird ein UML Element bezeichnet das eine austauschbare Einheit eines Systems darstellt e Verteilungsdiagramm Ein Verteilungsdiagramm zeigt die Zuordnung von Komponenten in Form von speziellen SW Artefakten zum Beispiel Dateien Archiven auf Betriebseinheiten eines Systems Die Einheiten werden als Knoten oder Ger te Devices bezeichnet Ein Verteilungsdiagramm ordnet also die im Wesentlichen aus Software bestehenden Komponenten den Hardware Einheiten einer IT Infrastruktur zu Dabei wird systemnahe Software Be triebssysteme Applikationsserver DB Server im Allgemeinen den Hard ware Einheiten zugerechnet e Verhaltensdiagramme Verh
263. prachen Relations Language Die Relations Language beschreibt in deskriptiver Weise eine Transformation in Form von g ltigen Beziehungen zwischen Modellen Dies geschieht durch Rela tionen zwischen den beteiligten Modellelementen und der Angabe von Regeln welche durch spezielle Muster Patterns spezifiziert werden Die Relations Lan guage ist vom Sprachumfang her relativ m chtig da neben den Relationen auch Optionen zur Beschreibung von Regeln auf der Basis der kompletten OCL ange boten werden Relations Language ist aufgrund der starken Beziehung zwischen dem Quellmodell Query und dem Zielmodell View bidirektional jede Ande rung am generierten Modell schl gt sich auch unmittelbar auf die Quelle der Ge nerierung nieder Core Language Die Core Language ist ebenfalls eine deskriptive Sprache die sich konsequent auf das Prinzip des Pattern Matching abst tzt Die Core Language ist verh ltnism ig gering im Umfang aber vollst ndig im Sinne einer Transformationssprache so dass jede Modell nach Modell Transformation damit beschreibbar ist Die Core Language ist gewisserma en das Laufzeitsystem f r andere deklarative wie auch imperative QVT Sprachen Dies wird als Virtual Machine Analogy be zeichnet Mit der RelationsToCore Transformation wird die Relations Language vollst ndig auf die Core Language abgebildet Imperative Sprachen Operational Mappings Die Sprache Operational Mappings erlaubt die Formulieru
264. r Aufruf der Mapping Operation transformPackages Abbildung C 4 repr sentiert den Einstieg in die Transformation lt lt UML gt gt lt lt mapping gt transformPackage source rh Abb C 4 Die Transformation UML2EJB transformPackages Die Transformation von Paketen bedeutet einen rekursiven Aufruf der Mapping Operation transformPackages Abbildung C 5 aber nur dann wenn ein Paket weitere ownedElements enth lt was in der Regel der Fall ist Subpakete im Metamodell sind nestedPackages alle anderen Elemente sind packed Elements C 2 UML2EJB 211 D L Existieren ownedElements ja lt lt mapping gt gt nestedPackage EN gt transformPackages rule nestedPackges oder rh packagedElements packagedElement lt lt mapping gt gt lt lt mapping gt gt transformClasses transformAssociations Ses Oa 00 ae ae ee ee s lt mapping gt gt transforminterfaces lt lt mapping gt gt transform ttributes lt lt mapping gt gt transformOperations lt lt mapping gt gt transformaDatatypes lt lt mapping gt gt transform ttributes lt lt mapping gt gt transformOperations Abb C 5 Das Mapping von Paketen Alle Elemente eines fachlichen UML Modells zum Beispiel Datentypen Schnittstellen werden im Grunde genommen so berf hrt wie sie sind also je weils mit ihrem Namen und ihren Attributen und Operationen Assoziationen Wer den zun chst nur mit ihrem Namen bernommen Die
265. r Operation AttrToLeafAttrs einge sammelt werden bevor eine Umwandlung in Spalten der Tabelle erfolgen kann LeafAttrToOrdinaryColumns Dieser L sungsansatz ist sicher nicht weni ger kompliziert als der oben vorgeschlagene Doch die OMG hat diesen L sungsweg eingef hrt um daran die Anwendung der Intermediate Data zu de monstrieren und aus dem Grunde m chte ich meinen Lesern dieses Beispiel hier nicht vorenthalten mapping Class ClassToTable Table Initialisierung Sammlung aller Blatt Attribute in leafAttributes init In leafAttributes wird die Liste der Attribute mit primitiven Datentypen abgelegt self leafAttributes self attributes gt map AttrToLeafAttrs gt flatten Population Erzeugung der Tabellen name self name 4 1 UML2RDBM 131 je und Tabellenspalten unter Verwendung von leafAttributes columns self leafAttributes gt map LeafAttrToOrdinaryColumn gt asOrderedSet Die Operation AttrToLeafAttrs wird in der Initialisterungsphase von ClassToTable fir die Attribute der aktuellen Klasse aufgerufen Das Argu ment prefix dient dem Zweck beim Aufruf den Namen der aufrufenden Klasse mitzugeben um so bei der Erzeugung der Blattattribute potentielle Namenskon flikte zu vermeiden Beim ersten Aufruf ist das Argument zun chst ohne einen Wert das hei t die primitiven Attribute der Klasse werden mit ihrem Original namen bernommen ohne dass ihnen
266. r als auch queries k nnen intern deklariert und extern in einer an deren Sprache implementiert werden Eine besondere Kennzeichnung der jeweili gen Hilfsfunktion zum Beispiel durch ein vorangestelltes Schl sselwort black box ist in diesem Fall nicht erforderlich die Funktion wird lediglich deklariert und in ihrer Signatur spezifiziert der Anweisungsteil wird weggelassen Mit der Deklaration der Signatur ist dann auch das Ger st der BlackBox Methode festge legt In einer Implementierung muss nur noch der Methodenrumpf entsprechend ausformuliert werden Beispiel wird als BlackBox Methode mit JAVA implementiert query logTextToStdOut logText String Integer mapping in Package transformPackages Package logTextToStdOut Beginn des Logs Aufruf einer BlackBox Methode logTextToStdOut transformPackages name self name logTextToStdOut Name des Paketes name logTextToStdOut Ende des Logs Implementierung der BlackBox Funktion zum Beispiel in SmartQVT 1 SmartQVT generiert f r Operational Mappings Transformationen Eclipse Applikationen Die Transformation ist ein Java Programm die Mapping Operationen und Hilfsfunktionen sind entsprechende Java Methoden Die deklarierte query logTextToStdOut wird durch eine Java Me thode zun chst ohne Anweisungsteil angelegt public java lang Long logTextToStdOut java lang Object self java lang String logText Trace trace thr
267. r erbenden Mapping Operation nur dann ausgef hrt wenn die jeweilige Vorbedingung erf llt ist Im Falle disjuncts werden dann wenn eine referenzierte Mapping Opera tion durch ihre Bedingung ausgel st wird alle folgenden nicht mehr aktiviert auch dann nicht wenn ihre Vorbedingungen erf llt sein w rden Die Mapping Operation in der die disjunkte Liste spezifiziert worden ist hat keinen eigenen Rumpf Die disjunkt eingebundenen Operationen m ssen jeweils eine when Klau sel besitzen 4 2 4 BlackBox Funktionen Wir haben oben im Kontext Library bereits erfahren dass Operational Mappings auch das Konzept der BlackBox Implementierung zul sst Das hei t ganze Trans formationen oder Bibliotheken oder auch einzelne Komponenten von diesen k n nen gewisserma en transparent opaque deklariert und in einer beliebigen Spra che implementiert werden Transformationen und Mapping Operationen werden dazu mit dem Schl sselwort blackbox versehen eine besondere Kennzeichnung von Libraries ist nicht erforderlich Beispiele library MathFunctions blackbox transformation UMLHelper inout uml UML blackbox mapping Class ClassHelper Class 4 2 Fortgeschrittene Konzepte der Operational Mappings 153 Damit ist es m glich komplette Transformationen auszulagern und mit nicht QVT Mitteln umzusetzen In diesem Kapitel wollen wir uns das exemplarisch einmal im Kleinen ansehen und zwar bezogen auf einzelne Hilfsfunktionen so wohl helpe
268. ransformation die Differenzierung zwischen formalen Modellierungs sprachen und formalen Programmiersprachen ist nicht so sehr von Belang Ope rational Mappings ist jedoch eine Sprache die die Transformation von formalen Modellen unterst tzt worauf wir uns somit konzentrieren werden Die Generie rung von Code die Modell nach Text Transformation wird in diesem Buch nicht betrachtet werden auch wenn sie im Rahmen einer Entwicklung von DV gest tzten Anwendungssystemen eine wesentliche Rolle spielt Die Modelle die Gegenstand von Transformationen sind liegen entweder in derselben Abstraktionsebene CIM CIM PIM PIM PSM PSM oder in aufein ander folgenden Abstraktionsebenen CIM PIM PIM PSM PSM IM Theore tisch ist auch ein berbr cken von mehreren Abstraktionsebenen CIM PSM denkbar praktisch macht es aber keinen Sinn Theoretisch ist ebenso ein R ck transformieren zum Beispiel aus der PSM in die PIM denkbar in wieweit das je doch auch praktisch Sinn macht m chte ich bis auf weiteres der Forschung ber lassen In den meisten Quellen wird Transformation zwischen den Ebenen PIM und PSM veranschaulicht das macht Sinn und das wollen auch wir tun siehe Ab bildung 1 6 Architektur Plattform Modelle Analyse Fachliche gt ane a Abb 1 6 Das MDA Transformationspattern 16 1 Einf hrung Dieses Diagramm entspricht der Darstellung des MDA Transformationspat terns wie es im MDA Guide vorgest
269. ration 55 86 96 97 122 Mapping Operator 96 Mapping Rumpf 101 MDA 12 MDA Konzept 9 11 mediniQVT 25 member 158 memberEnd 161 Menge 79 83 128 Merkmal 6 33 124 Merkmal dom nenspezifisches 175 Metaattribut 91 Metaelement 87 91 Metaelement dynamisches 129 Metaklasse 88 91 Metaklasse abstrakte 88 165 Metamerkmal 166 Metamodell 16 18 19 27 54 67 87 Metamodell externes 67 Metamodelldefinition 87 Metaobjekt dynamisches 112 Methode 6 Methode getter 157 Methode setter 157 Methodenrumpf 153 Modell 12 67 Modell fachliches 9 Modell formales 15 18 27 Modell getyptes 54 Modell plattformunabh ngiges 156 Modell profiliertes 175 Modellelement 21 87 Modellieren 9 Modellierung 9 12 Modellierung fachliche 158 Modellierung formale 13 Modellierungsaktivit t 9 Modellierungseditor 29 Modellierungsphase 10 Modellierungsschritt 13 Modellierungssprache 18 27 29 68 Modellierungssprache formale 12 19 Modellierungstechnik 4 Modellierungstechnik semi formale 2 Modellinformation 46 Modellparameter 65 Modelltransformation 15 27 53 Modelltransformationen 56 Modelltyp 67 91 Model To Model 23 Model To Text 23 Modul 145 Modularisierung 145 MOF 18 MOF Sprache 19 Multiplizit t 35 90 Muster 21 N Nachbehandlung 64 Nachbildung 12 Nachrichtenaustausch 8 NamedElement 158 Namenskonflikt 131 Namensraum 158 Namespace 158 Nassi Shneiderman Diagramm 4 Navigatorsicht 56 nestedPackages 158 Normung 4
270. rden k nnen Syntax lt collection gt gt iterate lt iterator gt lt iterator_type gt lt accumulator gt lt accumulator_type gt lt expression gt lt iteration_expression gt Beispiel var pckg Package var pEls OrderedSet PackageElement null 3 4 OCL und QVT Grundlagen 85 var cls OrderedSet Class null pElements inPckg gt collect p p gt elements gt asOrderedSet cls pEls gt iterate iter PackageElement acc Set Class Set if iter oclisTypeOf Class then acc gt including iter endif Iteriert wird hier ber alle Elemente pEls eines Packages Wenn ein aktu elles Element vom Typ Class ist wird es mit der OCL Funktion including der Liste der Klassen acc hinzugef gt acc ist das Akkumulationsobjekt iter der Iterator Iterator und Eingangsobjekt miissen von demselben Typ sein hier PackageElement In den oben angef hrten Beispielen wurden nun einige L sungen beschrieben die unter Verwendung der OCL Sammlungsoperationen Selektionen auf einem Modell realisieren Diese k nnen anstelle der QVT Standardfunktionen in den Mappings eingesetzt werden Grunds tzlich ist also jede QVT Standardoperation auch mit OCL Techniken zu implementieren was wie gesagt interessant ist f r einige Operational Mappings Werkzeuge die die QVT Standardbibliothek nur unzureichend unterst tzen Beispiel main source objectsOfType Package gt map mapPac
271. rden kann sonst false asInteger Integer ergibt einen Integer Wert sofern der vorgegebene String als ganzzahliger numerischer Wert interpretiert werden kann sonst null asFloat Float ergibt einen Float Wert sofern der vorgegebene String als reeller numerischer Wert interpretiert werden kann sonst null startStrCounter ctr String Void assoziiert einen Z hler Index ctr mit dem vorgegebenen String dieser wird mit 0 initialisiert Der Z hler wird durch einen symbolischen Namen Variable repr sentiert getStrCounter ctr String Integer liefert den aktuellen Wert des zugewiesenen Z hlers ctr incrStrCounter ctr string Integer erh ht der Wert des zugewiesenen Z hlers ctr um 1 restartAllStrCounter Void initialisiert alle zugewiesenen Z hler mit 0 addSuffixNumber ctr Integer String liefert die vorgegebene Zeichenkette mit einem Suffix der sich aus dem Wert der Position des zugewiesenen Z hlers ctr ergibt ctr wird um 1 inkremen tiert D 2 Die wichtigsten OCL Standardfunktionen 229 D 2 Die wichtigsten OCL Standardfunktionen Im Folgenden werden die OCL Standardfunktionen vorgestellt die sich auf Sammlungstypen Collections beziehen Eine vollst ndige Referenz der OCL Standardfunktionen befindet sich in der OCL Spezifikation Es gibt folgende Sammlungstypen Collection eine beliebige Menge von Elementen Collection ist der Oberbegriff f r die folgenden Mengent
272. rgang um mit tels Modellierung und Programmierung von einer Realit t zu einer DV L sung zu kommen Akkumulation in diesem Zusammenhang ist eine Technik aus der OCL Im Rahmen der Iterationsfunktion ite rate wird ein Akkumulationsobjekt eingesetzt um be stimmte Mengenoperationen auszuf hren Ein Arbeitsbereich Workspace st das physikalische Verzeichnis welches von der Entwicklungsplattform Eclipse zur Organisation von Projekten eingerichtet wird S Nolte OVT Operational Mappings Xpert press DOI 10 1007 978 3 540 92293 3_BM2 Springer Verlag Berlin Heidelberg 2010 234 Glossar Architektur Architektur entwicklungs ebenen Argument Assertion Assignment Attribut Ausdruck imperativer Ausnahme Architektur allgemein ist die Organisation eines Systems und dessen Umgebung Das System ist zusammengesetzt aus untereinander in Beziehung stehenden Komponenten es hat eine Ordnung Architektur bedeutet hier konkret die Darstellung von Systemen als Menge von unterein ander in Beziehung stehenden Komponenten die ber klar definierte Schnittstellen miteinander kommunizieren Architekturentwicklungsebenen oder auch Abstraktions ebenen sind die zentralen Entwicklungsstufen im Rahmen einer modellgetriebenen Architekturentwicklung Die OMG unterscheidet folgende Architekturentwicklungs ebenen die auch als Modellierungsebenen bezeichnet werden k nnen e CIM Computational Independent Model PIM Platform
273. rstellt Das Klas sendiagramm liegt als UML Modell vor 2 Im Transformationsschritt soll das Klassendiagramm in ein konzeptionelles Datenbankschema berf hrt werden Hierzu wird als Metamodell das Entity Relationship Modell Che66 verwendet 3 Das Ergebnis der Transformation ist also ein konzeptionelles Entity Relation ship Datenbankschema das in der konzeptionellen Modellierung im Sinne ei nes logischen Datenbankdesigns weiter bearbeitet werden kann Die Wahl der physikalischen Datenbank spielt bei diesen berlegungen noch keine Rolle 4 Die Modelltransformation soll mit einer QVT Sprache vorgenommen werden Eine der Aufgaben im Rahmen der Aktion Transformation besteht nun auch darin die Metamodelle zu definieren oder zu organisieren In der Regel existie ren die Metamodelle in einer graphischen Repr sentation f r die Transforma tion werden sie allerdings in einer serialisierten Form ben tigt 5 Und schlie lich ist das Schreiben des QVT Scriptes vorzunehmen mit dem die Transformation durchgef hrt werden soll 1 2 Die ber hmten Akronyme der OMG 17 Bi Modellierung Transformation a Metamodell Modellierung lt lt UML gt gt lt lt Script gt gt Diagramm pt QUT Transformation Ea iom m lt lt ERM gt gt Konzeptionelles DB Schema Konzeptionelle Modellierung Abb 1 7 Ein exemplarisches MDA Transformationspattern 1 2 3 MOF Modelle und Metamodelle Wie im vorigen Kapitel angesproc
274. rt map lt name gt e Wie in den bisherigen Kapiteln werde ich weiterhin englische Original Begriffe aus der Spezifikation kursiv schreiben Englische Benennungen die ich f r Allgemeingut halte zum Beispiel Compilation Script Code etc werde ich nicht weiter hervorheben e Reservierte W rter werden in fetter Schrift hervorgehoben Dabei wer de ich nicht unterscheiden zwischen reservierten W rtern von QVT oder OCL da QVT auf OCL basiert e Namen von Variablen werden im Text mit einem anderen Schrifttyp ge schrieben e Zeichenketten und Kommentare werden in grauer Schrift dargestellt 1 3 Zusammenfassung und Ausblick 25 1 3 2 Werkzeuge Die komplette Architektur der hier verwendeten QVT Entwicklungsumgebung ist in Abbildung 1 11 dargestellt Mehr ber die Entwicklungsumgebung findet sich auf der Webseite des SimpleMDA Projektes SMDA Zur Erarbeitung und De monstration der in den folgenden Kapiteln vorgestellten Beispiele sind folgende Werkzeuge eingesetzt worden Eclipse ECL mit dem Eclipse Modeling Framework EMF EMF Tools und dem Graphical Modeling Framework ist die generelle Plattform f r die UML und QVT Werkzeuge F r die Erstellung der Modelle und Metamodelle k nnen beliebige UML Werkzeuge verwendet werden vorausgesetzt ist dass sie eine Serialisierung der Metamodelle im Eclipse Ecore Format unterst tzen Als frei verf gbare Werkzeuge f r die Erstellung von Modellen und Metamodellen bieten sich an das Ecl
275. s der Bundesrepublik Deutschland vom 9 September 1965 in der jeweils geltenden Fassung zul ssig Sie ist grunds tzlich verg tungspflichtig Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes Die Wiedergabe von Gebrauchsnamen Handelsnamen Warenbezeichnungen usw in diesem Werk be rechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme dass solche Namen im Sinne der Warenzeichen und Markenschutz Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden d rften Einbandentwurf K nkelLopka Heidelberg Gedruckt auf s urefreiem Papier Springer ist Teil der Fachverlagsgruppe Springer Science Business Media www springer de Vorwort Warum ein Buch ber OVT Operational Mappings Beim Paradigmenwechsel von der strukturierten zur objektorientierten Software Entwicklung Mitte der Neunziger gab es im Grunde genommen zwei Wege sich den neuen Methoden und Techniken zu n hern zum einen den datenorientierten ausgehend von der Lehre der Datenbanken und Datenmodellierung zum anderen den sprachlichen ausgehend von den Programmiersprachen die zur der Zeit den Weg der objektorientierten Entwicklung bereiteten So hnlich verh lt es sich auch mit dem Thema des modellgetriebenen Vorgehens Auch hier gibt es grund s tzlich zwei alternative Blickrichtungen die zum einen auf die modellgetriebene Code Entwicklung mit generativen Techniken und zum anderen auf den Weg der Entwicklung b
276. s der OMG ist die Architektur eines Systems die abstrakte Spezifikation seiner Bestandteile Parts der verbindenden Elemente Konnektoren und der Regeln f r die Interaktion zwischen den Teilen eines Systems ber die definierten Konnekto 66 ren Der Begriff MDA ist nun nicht einfach in diesen Katalog einzuordnen MDA bedeutet intuitiv die systematische Entwicklung von stabilen tragf higen IT Architekturen also modellgetriebene Architekturentwicklung Dies geschieht wie wir oben in Abbildung 1 4 sehen k nnen durch eine iterierende Abfolge von Mo 1 2 Die ber hmten Akronyme der OMG 13 dellierungs und Transformationsschritten In den Entwicklungsebenen findet Mo dellierung statt Der bergang von einer Entwicklungsebene zur folgenden wird jeweils durch eine Transformation der Modelle unterst tzt Transformationen er m glichen jedoch nicht nur eine berf hrung von Modellen sondern auch Pr fung von deren G ltigkeit im Sinne einer formalen Modellierung wodurch ge wisserma en die Tragf higkeit der Systeme konzeptionell hergestellt werden kann Ein willkommener Nebeneffekt eines MDA orientierten Vorgehens ist es demnach dass bei jedem Phasen bergang von einer Entwicklungsebene zu einer anderen unter formalen Gesichtspunkten g ltige Ausgangsmodelle bergeben werden In gewisser Weise kann auch die semantische sachlogische Validit t von Modellen kontrolliert und gewahrt werden n mlich durch die Erg
277. se ein Der Einfachheit halber soll davon ausgegangen werden dass diese nicht kom plex sind Ansonsten m sste auch hier eine Iteration oder Rekursion implemen tiert werden Danach wird eine Tabelle konstruiert indem die Eigenschaften der Klassen name etc bernommen werden Die Spalten der Tabelle ergeben sich aus den Attributen der Klasse die in Form von leafAttributes als flache Liste vorliegen und aus den Attributen der Superklasse 204 C Operational Mappings Beispiele Zum Schluss wird eine zus tzliche Spalte hinzugef gt die f r die Generierung des Prim rschl ssels verwendet wird Alternativ k nnte eine Spalte aus der Tabel le daf r genommen werden sofern es eine gibt die mit dem Merkmal prima ry versehen ist AssociationToTable In Abbildung C 3 wird die Behandlung von Assoziationen gezeigt Eine Behand lung erfolgt nur dann wenn die referenzierten Klassen persistent sind ee AssociationToTable ee Initialis ierung uk err Ne ri amp lt lt inline gt gt makeForeignKeyCols I istration A aN r i Populatic E f p a a l u l lt lt inline gt gt u makeForeignKey o ems l lt lt inline gt gt makePrimarykey u oo a A primarykey N O j ss aaa Saar Abb C 3 Die Mapping Operation AssociationToTable im berblick C 1 UmlToRdbm 205 In der Initialisierungssekt
278. sfor mation Die Statusinformation kann mit der Methode transform auf einer Transformation abgefragt werden Status lt methodname gt lt arguments gt lt resulttype gt failed Boolean true falls eine Transformation gescheitert ist false sonst raisedException Class sofern eine Transformation mit dem Status failed terminiert wird mit dieser Methode die Exception geliefert succeeded Boolean true falls eine Transformation erfolgreich ist false sonst 222 D Standardbibliotheken Methoden auf Object Object repr sentiert alle Typen einschlie lich DataType Object ist umfas sender als Element Object lt methodname gt lt arguments gt lt resulttype gt repr String liefert eine textuelle Repr sentation des Objektes in Form eines Strings asOrderedTuple OrderedTuple T der Inhalt eines Objektes wird in Form eines geordneten Tupels aufbereitet es wird ein neues Objekt T vom Typ OrderedTuple erzeugt Methoden auf Element Element repr sentiert alle Instanzen die vom Typ einer Metaklasse sind Element lt methodname gt lt arguments gt lt resulttype gt _ localld String liefert einen lokalen Identifier f r das instantiierte Element _globalld String liefert einen globalen Identifier f r das instantiierte Element metaClassName String liefert den Namen der Metaklasse des Elements subobjects List lt Element gt liefert ei
279. sifiers gt lt ecore EPackage gt B 3 Benutzung der Ecore Metamodelle Bei den Metamodellen im Ecore Format wird davon ausgegangen dass diese als Plugins im Eclipse Kontext integriert worden sind EMF SUML In dem Fall k nnen sie ber eine entsprechende URL referenziert werden modeltype UML uses SimpleUml http SimpleUML ecore modeltype RDBM uses SimpleRDBM http SimpleRDBM ecore Die Benutzung des UML2 Metamodells aus dem Eclipse UML Projekt ist wie folgt modeltype UML uses UML2 http www eclipse org uml2 2 1 0 UML In SmartQVT wird die Referenzierung der Metamodelle in einer Properties Datei erwartet UML2 nsURI http www eclipse org uml2 2 1 0 UML Im Code des Transformationsscriptes k nnen die Metamodelle dann in folgen der Weise einfach deklariert werden modeltype UML uses UML2 C Operational Mappings Beispiele Dieser Anhang enth lt die vollst ndigen Transformationsscripte der Operational Mappings Applikationen Um1ToRdbm und UML2EJB C l UmlToRdbm In diesem Anhang wird das komplette Beispiel Um1ToRdbm welches wir bisher kontextbezogen in Ausschnitten betrachtet haben im Zusammenhang pr sentiert Es handelt sich dabei mit einigen Modifikationen um das Originalbeispiel der Spezifikation mit dem ein SimpleUML Modell in ein SimpleRDBM Modell berf hrt wird Der Ablauf der Transformation wird in der Abbildungsfolge C 1 C 2 C 3 gezeigt Der Kontrollfluss repr sentiert die Aufruffol
280. ssion gt var lt declarator_list gt var lt declarator_list gt break continue lt return_exp gt return lt expression gt try lt expression_block gt lt except gt except lt scoped_identifier_list gt lt expression_block gt raise lt scoped_identifier gt lt arg_list gt lt expression_comma_list gt assert lt identifier gt lt expression gt with lt log_exp gt log lt arg_list gt when lt expression gt Syntax for Defining Explicitly Metamodel Contents lt metamodel gt lt metamodel_decl gt lt metamodel_def gt lt metamodel_h gt lt metamodel_element gt lt classifier gt lt classifier_decl gt lt metamodel_decl gt lt metamodel_def gt lt metamodel_h gt lt metamodel_h gt lt metamodel_element gt 5 metamodel package lt scoped_identifier gt lt classifier gt lt enumeration gt lt tag gt lt classifier_decl gt lt classifier_def gt lt selassirier h gt lt classifier_def gt lt classifier_h gt lt classifier_info gt lt classifier_extension gt lt classifier_feature_list gt lt classifier_feature gt lt classifier_property gt lt feature_qualifier gt lt feature_key gt lt stereotype_qualifier gt lt multetIplieity gt lt multiplicity_range gt lt classifier_operation gt lt enumeration gt lt enumeration_h gt lt opposite_property gt lt tag gt
281. st wird das Modell mit einem Transformationsschritt in eine n chste Phase berf hrt wo die Modellierung mit den entsprechenden Mitteln und Techniken fortgesetzt wer den kann Auch die Umsetzung in Code ist in diesem Sinne eine Modellierungsak tivit t Abbildung 1 4 zeigt anschaulich diesen Prozess 10 1 Einf hrung I Bsseitierung 5 Betriebliche Betriebliche ia Beschreibung a Modelle S i A Gun Analyse aa Fachliche as 5 Fe Modelle o i eee SS ae Konzeption ee Konzeptionelle Oo e DZ 2 Transformation DA E onstruktion a Technische Sas Modelle i YH Ecenerterung Generierung Applikation Abb 1 4 Ein modellgetriebener Anwendungsentwicklungsprozess D 2 D 5 S E D 6 Die Phasen beziehungsweise die Entwicklungsebenen dargestellt durch die horizontalen Bereiche sind im Grunde genommen die des einfachen phasenorien tierten Vorgehensmodells wie wir es kennen Abbildung 1 1 In dem MDA Verst ndnis gibt es jedoch zwei weitere S ulen hier dargestellt durch die Partitio nen Modellierung und Transformation Nach der Bearbeitung eines Mo dells in einer Phase geht dies in den Transformationsbereich ber wo dann eine Transformation eines Modells als Ausgangspunkt f r die n chste Modellierungs phase vorgenommen wird Diese Anschauung ist nat rlich noch etwas einfach denn Transformation ist durchaus auch in derselben Ebene zuge
282. st eine Funktion die zur Erzeugung von Objekten beziehungsweise von Elementen eines Modells dient Logging log ist eine Option der Ausgabe von freien Texten auf einer Konsole Logging ist ein praktisches Konstrukt um Transformationsabl ufe zu protokollieren und zu verfolgen Mapping Operationen mapping sind imperative Operationen die immer eine Wirkung auf ein Zielmodell haben Mapping Operationen sind in der Regel an Ele mente eines der Modelltypen gebunden Es kommt auch vor dass Mapping Operationen ungebunden sind in dem Fall handelt es sich gewisserma en um eine externe In line Objekterzeugung Ein Metaattribut ist ein Attribut einer Metaklasse Metaklasse ist eine Klasse eines Metamodells Ein Metamodell ist ein Modell mit dem eine formale Modellierungssprache spezifiziert wird Ein Metamodell besteht aus einer abstrakten Syntax in der die Elemente der Modellierungssprache beschrieben sind und einer Semantik bestehend aus einer Menge von Regeln die f r den Gebrauch der Sprachmittel festgelegt worden sind Modell Modellierungs sprache Modelltyp Module Nachbedingung Objekt Glossar 241 Im Sinne der MOF werden Metamodelle mit Hilfe von UML Klassendiagrammen in ihrer Syntax beschrieben Ein Modell ist eine abstrakte Abbildung einer Realit t unter Verwendung einer formalen Modellierungssprache Modelle im Sinne der Transformation candidate models sind entweder Quellmodelle o
283. ste Liste A B C ks two 2 three 3 2 3 var dict Dict Dict one 1 var myTuple Tuple Tuple 1 Tuple ist eine ungeordnete Menge von Werten auf die nicht einzeln zu gegriffen werden kann Durch Zuweisung an andere Variablen sind die Ele mente eines Tupels erreichbar So wird zum Beispiel ein Tupel auf eine Menge von mehreren Variablen verteilt var X Y Z myTuple x 15 y 2 z 3 3 4 3 Operatoren 1 Sequentiell aufeinander folgende Ausdr cke werden mit einem Semikolon ge trennt lt expression gt lt expression gt 2 Die Zuweisung eines Wertes an eine Variable erfolgt mit dem Zuweisungs operator 66 3 4 OCL und QVT Grundlagen 73 lt variable gt lt value_assigment gt 3 Der Operator ist ein spezieller Zuweisungsoperator mit dem Elemente einer Liste hinzugef gt werden lt collection variable gt lt variable gt __ 6 Der Operator ist ebenfalls als Operator anwendbar w rde allerdings die Liste nicht erg nzen sondern ersetzen lt collection variable gt lt variable gt 4 Ein Vergleich auf Gleichheit kann mit den Vergleichsoperatoren vor 66 genommen werden die Abfrage auf Ungleichheit erfolgt mit lt gt lt variable gt lt gt lt value_assigment gt Eine Vergleichsoperation muss immer ein Bool sches Resultat true oder false ergeben 66 5 Vereinigung v
284. stellt den Ein stiegspunkt in die Transformation dar Es gibt auch nur h chstens eine main Methode main Methoden beziehen sich stets auf die in der Signatur angef hrten Modelle der Transformation aus dem Grund ist hier eine Signatur mit der Erkl rung von Parametern nicht erforderlich aber m glich Syntax transformation lt transformation name gt in Jout inout lt modelname gt lt modeltype name gt _ lt global variable declaration gt main lt parameter_declaration gt lt main_body gt i lt transformation element gt Beispiel transformation uml2rdbm in srcModel SimpleUML out destModel SimpleRDBM Variablen main Einstiegspunkt und operationale Anweisungen bezogen auf die Modelle srcModel und dstModel destModel name srcModel name Operationale Transformationen besitzen einen impliziten Konstruktor ber den die Ausf hrung vorbereitet wird Dieser Konstruktor vollzieht folgende Auf gaben 1 F r jeden deklarierten out Parameter wird ein MOF Modell erzeugt mit zu n chst leeren Inhalten 2 Die Attribute jedes Modellparameters werden zugewiesen und initialisiert und somit sind sie ber die vordefinierte this Variable zug nglich 3 Die Variablen einer Konfigurationsdatei sofern solche angegeben worden sind werden geladen 96 3 Operational Mappings die Sprache Die Initialisierung und die Ausfiihrung von operationalen Tra
285. stract class lt class_name gt extends lt id_name gt lt id_name gt lt stereotype_list gt composes references readonly derived i lt property_name gt lt property_type gt lt multiplicity gt ordered opposites lt identifier gt lt initial_assignment gt Properties haben einen Namen und einen Datentyp Der Name ist frei w hlbar bei der Angabe des Datentyps steht die gesamte Palette der OCL und QVT Datentypen zur Verf gung vgl Kapitel 3 4 1 wie auch die im Meta modell definierten primitiven Datentypen sowie die Klassen zum Beispiel dann wenn das Attribut die Beziehung zu anderen Klassen repr sentiert Bei der Definition des Attributes mit einem OCL Datentyp kann unter An wendung einer OCL Funktion eine initiale Wertzuweisung vorgenommen werden das Attribut sollte dann mit derived als abgeleitet markiert sein Ein mit read only erg nztes Attribut ist nur lesbar und kann im Rahmen der Modellierung nicht mit Werten versehen werden Beispiel metamodel SimpleUML Deklaration der Metaklassen abstract class ModelElement name STRING kind STRING class Package extends ModelElement derived size Integer self ownedElement gt size Dar ber hinaus resultieren Attribute im Metamodell h ufig aus Beziehungen zwischen Klassen diese besitzen also eine Klasse des Metamodells als Datentyp Je nach Art des Beziehungstyps ist diesen Attributen das S
286. t liches Verhalten haben Mit der Ver ffentlichung der Version 1 1 ist die UML dahingehend erweitert worden dass die Object Constraint Language OCL der Firma IBM eingeflossen ist Kle03a Kle03b OCL Seit der Version 1 3 hat durch die Spezifikation des XML Metadata Interchanges XMI eine Vereinheitlichung des Austauschfor mates stattgefunden so dass ein einfacherer Austausch zwischen den Modellie rungswerkzeugen unterschiedlicher Hersteller m glich ist XMI 1 2 Die ber hmten Akronyme der OMG 9 Und schlie lich ist mit der Version 2 0 die UML konsequent auf der Basis ei nes UML Metamodells formal spezifiziert worden Damit ist die UML zu einer Basis f r das MDA Konzept geworden 1 2 2 MDA Model Driven Architecture In der Abbildung 1 1 kann man bereits erkennen dass ein zeitgem er Anwen dungsentwicklungsprozess in jeder Phase immer wieder Modellierung bedeutet Jede Aktivit t der Anwendungsentwicklung umfasst ein stetiges Abstrahieren und Abbilden von Erkenntnissen in einer bestimmten formalen Weise Die Erkenntnisse der fr hen Phasen werden gemeinsam mit Experten der Fachwelt analysiert und in fachliche Modelle berf hrt zum Beispiel Gesch fts prozessmodelle oder Ereignis Prozessketten Diese Modelle werden aufgegriffen und in folgenden Phasen in anderen Modellen zum Beispiel mit Hilfe der UML dargestellt bis zuletzt auf der Basis der vorliegenden Modelle eine Implemen tierung also eine berf hrung in Daten
287. t M2T Transformation ist in einer ei 24 1 Einf hrung genstandigen Sprachspezifikation der OMG behandelt worden M2T welche wie auch die QVT Spezifikation Anfang 2008 als offizielle erste Version herausge geben und damit standardisiert worden ist Mit der M2T kann eine Model To Text Transformation beschrieben werden mit der eine Code Generierung durchgef hrt werden kann Abbildung 1 10 Die Model To Text Transformation ist natiirlich das Feld welches zurzeit mit anderen Sprachen und praktikablen MDSD Kon zepten bedient wird AMDA OAW 1 3 1 Hinweise zur Notation Die formale Beschreibung der Sprachen erfolgt in einer erweiterten Backus Naur Form mit folgenden Abweichungen In der Backus Naur Form steht e f r 0 1 also kein oder ein Vorkommen des geklammerten Ausdrucks e f r O n also kein ein oder mehrere Vorkommen des geklammerten Ausdrucks Da die jedoch zu den reservierten Symbolen der Sprache geh ren werde ich folgende Notation verwenden e f r 0 1 ein optionales Vorkommen des geklammerten Ausdrucks e fiir 1 n mindestens ein oder mehrere Vorkommen des geklammerten Ausdrucks e f r O n kein ein oder mehrere Vorkommen des geklammerten Aus drucks Im Weiteren soll gelten e lt gt Der so geklammerte Ausdruck wird durch einen anderen Ausdruck oder ein reserviertes Wort ersetzt zum Beispiel lt mapping_operation_call gt repr sentie
288. t arguments gt lt resulttype gt D 1 QVT Standardbibliothek 225 add T Void f gt einen Wert am Ende der Liste hinzu prepend T Void f gt einen Wert am Anfang der Liste hinzu insertAt T int Void f gt einen Wert an der angegebenen Position hinzu joinfields sep String begin String end String String erzeugt eine Zeichenkette die durch sep separiert ist und mit begin und end Strings begrenzt ist Methoden auf Integer einfache numerische Datentypen Integer Integer lt methodname gt lt arguments gt lt resulttype gt range start end List liefert eine Liste von Integer Werten die mit start beginnen und mit end enden Methoden auf String Der einfache Datentyp String String lt methodname gt lt arguments gt lt resulttype gt format value Object String Die vorgegebene Zeichenkette wird ausgedruckt die Platzhalter 3s d Sf werden durch value aufgef llt wobei s String Werte d Integer Werte und f Floating Werte repr sentieren Als value kann auch ein Dictio nary bergeben werden Das Format der Platzhalter lautet dann key s wobei key den aktuellen Wert indem Dictionary adressiert 226 D Standardbibliotheken size Integer liefert die Anzahl der Zeichen in der Zeichenkette alternativ lLength substringBefore match String String liefert den Teilstring vor der Zeichenkette match substringAfter match String gt
289. t der QVT Editor Der Editor ist grunds tzlich mit diesem Dateityp verkn pft Open with gt OVT Editor Unterschiedliche syntaktische Konstrukte zum Beispiel reservierte W rter der Sprache Kommentare etc werden farblich hervorgehoben Wie in Eclipse blich erh lt man mit STRG Leertaste eine kontextabh ngige Texterg nzung In ge wissen Grenzen werden syntaktische Fehler unmittelbar erkannt und angezeigt Resource OM_HelloWorld qvt HelloWorld2 qvt Eclipse SDK File Edit Navigate Search Project SmartOYT QvtSource Run Window Help Q O Q FY 5 Resource Java Q HelloWorld1 qvt Q HelloWorld2 qvt Xa o 5 1 E 2 HelloWorld this transformation generates RDBMS Schema with name HelloWorld H E META INF E S model ie A Bank_Kunden myuml Helloworld myuml B qvt 5 transformation HelloWorld inout target RDE B Helloworldi properties 67main Q HelloWorld1 qvt 7 if E HelloWorld2 properties 8 target objects Schema gt map createSchema etre a eo Helle Cd OO mapping Schema createSchema Schema ff Helle Open F3 i MC Hell Open With 12 name HelloWorld Hel Ik Helle Copy Ctrl C Q Helk JE Paste Ctrl Helk Delete Delete Y Move EN AS m a Hell yo 0 E console 53 N E Problems Ex bb mpm amp E Helk g Import T HelloWorldS qvt of Helk pA Export 2R result oo i Helle
290. t map transformDatatypes 166 4 Operational Mappings Anwendungen packagedElement self ownedMember Interface gt map transformInterfaces packagedElement self ownedMember Association gt map transformAssociations Das UML2 Metamodell l sst bei der Generierung von Elementen die Spezia lisierungen der Metaklasse Type sind anstelle des Metamerkmals packaged Element auch das Metamerkmal ownedType zu Class gt DataType gt Interface gt Association gt ownedType self ownedMember ownedType self ownedMember ownedType self ownedMember ownedType self ownedMember er Wie auch immer ich werde versuchen eine homogene Linie zu finden und dieser konsequent zu folgen Sofern Klassen Schnittstellen und Datentypen Attribute ownedAttri bute und Operationen ownedOperation besitzen sollen diese ebenfalls bereits aufgearbeitet und mit ihrem Namen und Typ ins Zielmodell bernommen werden mapping in Property transformAttributes Property name self name type self type visibility self visibility mapping in Operation transformOperations Operation name self name type self type visibility self visibility mapping in Class transformClasses 2 elass name self name die Attribute und fachliche Operationen der Klasse ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation
291. t stattdessen eine Rechts form und ein Gr ndungsjahr Aber darauf kommt es hier nicht an lt lt table gt gt lt lt table gt gt NatuerlichePerson JuristischePerson handelsregistereintrag integer einkommen double precision ort varchar postleitzahl integer postleitzahl integer strasse varchar strasse varchar hausnummer integer hausnummer integer Abb 4 6 Das Datenbankschema nach Aufl sung der Spezialisierung 4 1 UML2RDBM 135 4 1 6 Identifizierung von Tabellen Prim rschl ssel Mit der Behandlung der primitiven und komplexen Attribute und der Aufl sung von Vererbungsbeziehungen haben wir einige schwierigere Themen behandelt wonach etwas Erholung angesagt ist Die aus den Klassen resultierenden Tabellen sind nun weitgehend fertig zumindest soweit die Informationen aus den Klassen des SimpleUML Modells bernommen werden konnten Somit k nnen wir uns der Identifizierung der Tabellen zuwenden was denn auch verh ltnism ig ein fach ist Alle Tabellen sollen ein zus tzliches numerisches Attribut erhalten das den Namen der Tabelle bekommt der mit einem Suffix ID versehen ist Der Datentyp soll ganzzahlig numerisch sein der SimpleRDBM Datentyp ist int Dieses dentifizierende Attribut wird zur Bildung des Prim rschl ssels heran gezogen welcher als Namen ebenfalls den Namen der Klasse erhalten soll er g nzt durch einen Pr fix PK_ Man kann dies nun auf klassische Weise
292. te Analyse und Design mit praktischen Anwendungen Addison Wesley 1994 Booch G Rumbeaugh J Jacobson I The Unified Modeling Lan guage User Guide Addison Wesley 2005 256 Quellenverzeichnis Boo05b Boo03 Bor03 Bud04 Bun08 Bur06 Che76 Cle06 Coa9 la Coa9 1b Cod70 Cod90 Col06 Cza00 Dat98 Dat99 Dau08 Dem79 DIN83 DIN85 Dud04 Frie08 Gron08 Booch G Rumbeaugh J Jacobson I Das UML Benutzerhandbuch Addison Wesley 2005 Boon K Applied Enterprise JavaBeans Technology Prentice Hall 2003 Born E Holz E Kath O Softwaredevelopment mit UML2 Addison Wesley 2003 Budinsky F Ellersick R Grose T Merks E Steinberg D Eclipse Modeling Framework the eclipse series Addison Wesley 2006 Bunse C v Knethen A Vorgehensmodelle kompakt Spektrum Aka demischer Verlag 2008 Burke B Monson Haefel R Enterprise JavaBeans 3 0 O Reilly 2006 Chen P The Entity Relationship Model Toward a Unified View of Data ACM Transactions on Database Systems Vol 1 1976 Clayberg E Rubel D Eclipse Building Commercial Quality Plug Ins the eclipse series Addison Wesley 2006 Coad P Yourdon E Object Oriented Analysis Prentice Hall 1991 Coad P Yourdon E Object Oriented Design Prentice Hall 1991 Codd EF A Relational Model of Data for Large Shared Data Bank Commun ACM 26 1 1970 Codd EF The Relational Model for Database Management Addi son Wesley 19
293. tel 158 unidirektional 21 68 Unified Modeling Language 5 Index 267 Unterklasse 132 Untermenge 83 Use Case 4 V Validierung 94 Validit t 13 Variable 69 71 104 Variable freie 105 Variable null 72 Variable result 71 Variable self 71 Variable this 71 Vereinigung 73 Vererbungssemantik 146 Verfolgung 141 Vergleichsoperator 73 Verhalten 6 Verhalten funktionales 7 Verhalten zeitliches 8 Verhaltensdiagramm 7 Verteilungsdiagramm 7 View 19 Virtual Machine Analogy 21 Vorbedingung 65 68 103 152 Vorbereitung 64 Vorgang 7 Vorgehen architekturgetriebene 12 Vorgehensmodell 10 13 Vorgehensprozess modellgetriebenes 9 W Werkzeug 25 55 Wiederverwendbarkeit 13 Wiederverwendung 145 150 Weort reserviertes 59 X XMI 37 XML Metadata Interchange 34 Z Zeichenkette 73 Zielmodell 19 21 27 54 93 122 Zugriffsmethode 146 Zusicherungstyp 77 Zustand 8 Zustandsdiagramm 8 Zustands bergang 8 Zuweisung 72 123 Zuweisungsoperator 124 Zweck 11
294. tes forward class PrimitiveDataType extends Classifier metamodel SimpleRDBM abstract class RModelElement kind 4 String name String class Schema extends RModelElement composes tables Table ordered opposites schema 1 class Table extends RModelElement composes columns Column ordered opposites owner 1 composes keys Key ordered opposites owner 1 composes foreignKeys ForeignKey ordered opposites owner 1 class Column extends RModelElement type String B 2 Ecore Repr sentation 195 class Key extends RModelElement references columns Column ordered opposites keys class ForeignKey extends RModelElement references refersTo Key 1 references column Column ordered opposites foreignkeys B 2 Ecore Repr sentation Ecore ist ein De facto Standard der durch die Eclipse Initiative und das Eclipse Modeling Framework Projekt EMF begr ndet ist Alle MDA Werkzeuge die wie die hier angef hrten OpenSource Werkzeuge SmartQVT und Operatio nalQVT in die Eclipse Plattform integriert sind unterst tzen das Ecore Format f r Metamodelle Zur besseren Lesbarkeit sind die Namen des Metamodells der Metaklassen und Metaattribute fett hervorgehoben SimpleUML lt xml version 1 0 encoding ISO 8859 1 gt lt ecore EPackage xmi version 2 0 xmins xmi http www omg org XMI xmlnsxsi http
295. tifier gt lt complete_signature gt lt qualifier gt lt helper_kind gt helper query lt helper_header gt lt helper_header gt lt helper_header gt lt expression_block gt lt expression gt lt constructor_decl gt lt constructor_def gt lt qualifier gt constructor lt scoped_identifier gt lt simple_signature gt lt constructor_header gt lt constructor_header gt lt expression_block gt A 2 Ableitungsregeln 187 Syntax for Mapping Operations lt mapping gt lt mapping_decl gt lt mapping_def gt lt mapping_full_header gt lt mapping_header gt lt mapping_extra gt lt mapping_extension gt lt mapping_extension_key gt lt when gt lt where gt lt mapping_refinement gt lt mapping_body gt lt init_section gt lt population_section gt lt end_section gt Expressions lt expression gt lt assign_exp gt lt assign_op gt lt default_val gt lt implies_exp gt lt or_exp gt lt or 20p gt lt and_exp gt lt mapping_decl gt lt mapping_def gt lt mapping_full_header gt lt mapping_full_header gt lt mapping_body gt lt mapping_header gt lt when gt lt where gt lt qualifier gt mapping lt param_direction gt lt scoped_identifier gt lt complete_signature gt lt mapping_extra gt 1 lt mapping_extension gt lt mapping_refinement gt lt mapping_extension_key gt lt scop
296. truktur transformation UmlToRdbm in uml UML out rdbm RDBM main Mapping Body Mapping Call von PackageToSchema 4 1 UML2RDBM 121 mapping Package PackageToSchema Schema Mapping Body Mapping Call von ClassToTable Mapping Call von AssocToTable mapping Class ClassToTable Table Mapping Body Mapping Call von AttributeToColumn mapping Association AssociationToTable Table Mapping Body mapping Attribute AttributeToColumn Column Mapping Body Die main Funktion ist der Einstiegspunkt f r die Transformation und damit im Grunde genommen die erste Mapping Operation die sich auf das Modell an sich bezieht In einigen Realisierungen der Operational Mappings wird dann auch die main Funktion selbst als Mapping Operation erwartet wie das zum Beispiel bei dem Produkt QVTO QVTO des Eclipse Modeling Projects oder auch bei Borland s Together BOR der Fall ist transformation UmlToRdbnm mapping main in uml UML rdbm RDBM Mappings oder transformation UmlToRdbnm mapping main in uml UML out rdbm RDBM Mappings Auch wenn obige Varianten durchaus schl ssig und konsequent sind werde ich versuchen mich so nah wie m glich an der Spezifikation der OMG zu orien tieren Mit der Differenzierung der verschiedenen werkzeugabh ngigen Dialekte werde ich mich ohne Not nicht mehr besch ftigen
297. ttp www w3 org 2001 XMLSchema instance xmlns emof http schema omg org spec QVT 1 0 emof xml1 name SimpleUML uri http SimpleUML ecore gt lt ownedType xsi type emof Class name UMLModelElement isAbstract true gt lt ownedAttribute name name gt lt type xsi type emof PrimitiveType href olatform plugin fr tm elibel smartqvt external ecore ecore emof 0 ownedType 50 gt lt ownedAttribute gt lt ownedType gt lt emof Package gt Die EMOF Repr sentationen unserer simplen Metamodelle sind vom Inhalt her identisch zu den obigen QVT Datentypdeklarationen F r eine werkzeug basierte Transformation von Modellen wird h ufig diese Form der Repr sentation ben tigt allerdings l sst sich die EMOF Variante mit geeigneten Werkzeugen recht einfach herstellen F r ein weiteres Verst ndnis der Sprache QVT ist sie nicht unbedingt erforderlich so dass man eine intensivere Auseinandersetzung mit dem folgenden Code Abschnitt berspringen darf Trotzdem m chte ich der Vollst ndigkeit halber die Metamodelle in ihrer kompletten EMOF Auspr gung m Listing 2 2 zeigen und einen kurzen exemplarischen Einblick in den Aufbau von EMOF Datenstrukturen geben Wer tiefer blicken m chte sollte sich mit der MOF Spezifikation besch ftigen MOF auch sind Kenntnisse ber das UML2 Metamodell erforderlich UML2 Zum besseren berblick der ja in den umfassenden Listings leicht verloren gehen kann sind hier die Namen der
298. ture gt lt transformation_body gt tJ Operationale Transformationen haben einen Namen eine Signatur und einen Rumpf Die Signatur ist obligatorisch ein Rumpf muss nicht notwendigerweise vorhanden sein In der Signatur werden die Modelle die Gegenstand der Trans formation sind durch Angabe eines Namens und eines der zu Beginn deklarierten Modelltypen bezeichnet Es kann eine Liste von beliebig vielen Modellen an gegeben werden die durch Kommata getrennt sind Mindestens ein Modell muss angegeben sein Mit der Qualifizierung von Transformationen werden wir uns in sp teren Kapiteln im Zusammenhang mit weitergehenden Konzepten besch f tigen Eine Operational Mappings Scriptdatei kann mehrere Transformationen ent halten Falls nur eine einzige Transformation vorhanden ist was im Sinne eines guten Programmierstils nat rlich zu empfehlen ist dann k nnen die u eren des Rumpfes entfallen 94 3 Operational Mappings die Sprache Syntax transformation lt transformation_name gt in out inout lt modelname gt lt modeltype name gt lt transformation_body gt Modelle werden in der Signatur mit dem Merkmal in out oder inout be legt um auszudriicken ob es sich um reine Quellmodelle handelt in die im Rahmen der Transformation zwar verarbeitet aber nicht ver ndert werden oder um Zielmodelle out die vollst ndig erzeugt also nur geschrieben werden So fern ein Modell sowohl Quel
299. ublic by object Operation Name ejbActivate vierbil ty lt Wisi la Cyh ines pub lac by object Operation Name ejbPassivate y r b l ey ve Visibility nd pub lic by object Operation name ejbRemove v s b Liv J gt Vigibilitykind public 172 4 Operational Mappings Anwendungen mapping in Class transformClasses Package name SB self name packagedElement object Class name self name Yisibility Vi sipilitykind public Attribute und fachliche Operationen ownedAttribute self ownedAttribute gt map transformAttributes ownedOperation self ownedOperation gt map transformOperations getter und setter ownedOperation self ownedAttribute gt map getter ownedOperation self ownedAttribute gt map setter Standardmethoden Aufruf der helper Funktion ownedOperation getSBOperations Interfaces Schritt 6 Ver ffentlichung der Methoden in den Interfaces Zum Schluss dieses Abschnitts m ssen wir uns noch Gedanken machen welche Methoden in den Interfaces der Bean Komponente ffentlich gemacht wer den sollen zum Beispiel per se e alle getter und setter als Businessoperationen im Remote Interface e einige Standardmethoden zur Erzeugung und Eliminierung von Bean Objekten im Home Interface Beides l sst sich nun recht einfach l sen indem die helper Funktionen an den entsprechenden Stellen wiederholt aufg
300. uf Modellen Modelle sind Instanzen von Modell typen bei diesen handelt es sich um spezielle Metamodelle die zuvor beigestellt worden sind Modelltypen k nnen durch Angabe von Bedingungen spezialisiert werden Die Definition von Metamodellen kann entweder durch eine QVT Daten struktur im Script oder durch eine Referenz auf ein externes Metamodell erfolgen welches dann in einem allgemeinen Austauschformat vorliegen muss zum Beispiel XMI oder einer auf XMI basierenden Variante 68 3 Operational Mappings die Sprache blicherweise werden Metamodelle referenziert die in einer externen Repr sentation vorliegen da diese in der Regel ja auch als Modell f r die Definition der Modellierungssprachen benutzt werden zumindest f r die Sprachen deren Mo delle Gegenstand der Transformation sind Umfassende Beispiele f r die Defini tion von Metamodellen SimpleUML und SimpleRDBM sind bereits im Kapitel 2 2 Serialisierung der Metamodelle vorgestellt worden Transformationen besitzen einen Namen eine Signatur und einen Ausf h rungsteil In der Signatur werden die Modelle angegeben die Gegenstand der Transformation sind Dabei kann es sich um Eingangsmodelle handeln in oder um Ausgangsmodelle out Operational Mappings Transformationen sind unidi rektional Das hei t in der Regel erfolgt eine Umwandlung von einem oder meh reren Quellmodellen in ein Zielmodell Also werden mindestens zwei Modelle erwartet oder ein Modell wel
301. uf der Ebene der formalen Syntax Wie wir auf der Grundlage des MOF Konzeptes bereits erkannt haben handelt es sich bei formalen Metamodellen um Datenstrukturen die als UML Klassendia gramme dargestellt werden k nnen Zur rechnergest tzten Interpretation der Metamodelle in Transformationsscripten ben tigen wir sie in einer serialisierten Form Auch die QVT stellt Sprachmittel zur Verf gung um die in Form von Klassendiagrammen repr sentierten Modelle in seriellen Datenstrukturen implizit im Rahmen eines Transformationsscriptes definieren zu k nnen 3 5 Operationale Transformationen 87 Definition von Metamodellen Metamodelle sind Pakete von speziellen Modellelementen Sie werden mit dem Schl sselwort package oder metamodel eingeleitet gefolgt von einem Na men Alle Elemente innerhalb einer Metamodelldefinition k nnen in Paketen wei ter gegliedert und strukturiert werden Bei den inneren Paketen ist nur das Schl s selwort package zul ssig es ist empfohlen das u ere Paket mit dem Schl s selwort metamodel zu versehen Metamodelle bestehen im Wesentlichen aus der Definition der Metaelemente in Form von Klassen class im Weiteren ist die Definition von primitiven Datentypen primitive und Aufz hlungstypen enum wie auch ein spezielles Konstrukt f r die Behandlung von Ausnahme f llen exception vorgesehen Syntax metamodel package lt metamodel_name gt lt elass derinition gt package lt package_name
302. ung der Transformation mit Ope rational Mappings dienen werden obige Metamodelle SimpleUML und SimpleRDBM 2 2 1 Deklaration der Metamodelle als OVT Datenstruktur Gem der in der Einf hrung vorgestellten Konvention werden die reservierten W rter der QVT Datentypdeklaration fett hervorgehoben e Metamodelle sind Packages einer QVT Datenstruktur die die gesamte Modell definition umklammern Packages dieser Art bekommen den Namen meta model e Die Hauptkomponenten von Metamodellen sind Meta Pakete package oder Meta Klassen class Die Komponenten von Metamodellen sind Metakomponenten Im Folgenden werde ich diese konsequente Differenzierung nicht mehr vornehmen und mich auf Klassen Pakete etc beschr nken 2 2 Serialisierung der Metamodelle 35 Weitere Komponenten sind Enumeration Listen enum und primitive Datentypen primitive Klassen k nnen abstract sein diese sind dann nicht als Objekte instantiier bar Klassen k nnen untereinander in Beziehung stehen extends referen ces composes Eine extends Beziehung bedeutet dass Klassen von anderen Klassen erben composes bezeichnet eine Kompositionsbeziehung das hei t Objekte einer Klasse setzen sich aus Objekten anderer Klassen zusammen Eine Klasse ist zum Beispiel dann sinnvoll wenn sie Attribute besitzt Auch Pakete ohne in nere Elemente machen wenig Sinn Eine composes Beziehung dr ckt also einen st rkeren Verbund zwischen den assoziierte
303. unterschiedliche Stile verwendet Ich werde in den folgenden Beispielen eher die Kurzschreibweise verwenden und auf die Optionen verzichten mapping Package PackageToSchema kein Zielname Schema kein when wenn nicht n tig kein where wenn nicht n tig kein init wenn keine Initialisierung stattfindet population Schl sselwort ist Geschmacksache ich w rde fast immer darauf verzichten es sei denn man m chte den population Block klammern name self name kein end wenn keine Terminierung stattfindet 4 1 3 Behandlung primitiver und strukturierter Datentypen Mit dem in der Abbildung 4 3 gezeigten Ergebnis sind wir bereits ein wenig ber das Ziel hinausgeschossen Die Attribute der Klassen sind zwar zu Spalten der Tabellen transformiert worden Allerdings haben wir uns noch nicht um die Da tentypen genauer um die Umwandlung der SimpleUML Datentypen zu 126 4 Operational Mappings Anwendungen Simp 1e RDBM Datentypen gek mmert Das wollen wir nun nachholen und zwar zun chst f r die primitiven Datentypen bernahme von primitiven Datentypen Der Datentyp eines Attributes ist grunds tzlich ein Classifier im SimpleUML Modell der ber das Merkmal type referenziert wird Primitive Datentypen sind nun konkrete Classifier der Art PrimitiveDataType Die Datentypen der Tabellenspalten werden im SimpleRDBM in dem Merkmal kind eingetragen Der Name des durch type referenzierten
304. ures xsi type ecore EReference name tables upperBound 1 eType Table containment true eOpposite Table schema gt lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Table eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EReference name columns upperBound 1 eType Column containment true eOpposite Column owner gt lt eStructuralFeatures xsi type ecore EReference name foreignKeys upperBound 1 eType ForeignKey containment true eOpposite ForeignKey owner gt lt eStructuralFeatures xsi type ecore EReference name keys upperBound 1 eType PrimaryKey containment true eOpposite PrimaryKey owner gt lt eStructuralFeatures xsi type ecore EReference name schema lowerBound 1 eType Schema eOpposite Schema table gt B 2 Ecore Repr sentation 199 lt eClassifiers gt lt eClassifiers xsi type ecore EClass name Column eSuperTypes ModelElement gt lt eStructuralFeatures xsi type ecore EAttribute name type lowerBound 1 eType ecore EDataType http www eclipse org emf 2002 Ecore EString gt lt eStructuralFeatures xsi type ecore EReference name owner lowerBound 1 eType Table eOpposite Table column gt lt eStructuralFeatures xsi type ecore EReference name primaryKeys up
305. ut geeignet um einem eher praktisch veranlagten Leser einen schnelleren Zugang zu dem Thema zu er ffnen den man sich dann nach und nach mit der Methode Versuch und Irrtum er schlie en kann Ein so veranlagter Leser wird vielleicht mit diesem Kapitel einsteigen und die erforderlichen Grundlagen bedarfsgerecht nachlesen wollen Zuletzt werde ich einige fortgeschrittene Konzepte erl utern zum Beispiel die Ar beit mit UML Profilen BlackBoxes etc die nicht einfach aber sicher spannend sind Wem bin ich zu Dank verpflichtet Einen gro en Anteil an der Entstehung dieses Buches hat der Springer Verlag dem ich f r die Zusammenarbeit herzlich danken m chte Einen weiteren erhebli chen Anteil daran dass dieses Buch entstehen konnte wie es ist haben die beiden wichtigsten Frauen in meinem Leben Konstanze und Christine die sich w hrend der Arbeiten an diesem Buch das ein oder andere Mal durch fr he Fassungen hin durch gearbeitet haben Als Nicht IT Experten geh ren sie nicht gerade zur klassischen Zielgruppe und daf r dass sie mich und die Entstehung des Buches geduldig ertragen und mit Kritik und Anregungen unterst tzt haben bin ich ihnen sehr dankbar Letztendlich ist auch zu erw hnen dass verschiedene Initiativen und Produkt hersteller dazu beigetragen haben dass es nicht nur bei einer theoretischen Ausar beitung geblieben ist sondern dass ich im Laufe der Arbeiten an dem Buch viele Beispiele entwickeln und disk
306. utieren konnte Im Einzelnen zu nennen sind die Sourceforge Initiative mit der Herausgabe des Produktes SmartQVT die Firma Borland f r die Freigabe des Produktes Operational QVT QVTO und die Eclipse Modeling Toolkit Initiative f r die Integration von QVTO in die Eclipse Platt form F r die Beispiele im Kapitel Metamodelle ist das freie UML Werkzeug Topcased eingesetzt worden Bei fast allen Abbildungen handelt es sich um UML Diagramme die mit dem Werkzeug MagicDraw der Firma NoMagic Inc erstellt worden sind Allen Herstellern und Initiativen gilt mein Dank Und schlie lich m chte ich nat rlich auch der Gemeinde der Leser danken ins besondere dann wenn ich mit anregender Kritik versehen werde Inhaltsverzeichnis 1 MUTATE RN tee NA 1 1 1 Eine kurze Geschichte der modellgetriebenen Software Entwicklung 1 1 1 1 Strukturierte Software Entwicklung 00000 essen 1 1 2 Objektorientierte Software Entwicklung 4 1 2 Die ber hmten Akronyme der OMG s nnseeesssssssssssssssssererrrsssssssssssss 5 1 2 1 UML Unified Modeling Language eeeenn 6 1 2 2 MDA Model Driven Architecture cccccccccceeeeeeeeeees 9 Grundbegriffe der Model Driven Architecture 11 Transformation nannten 14 1 2 3 MOF Modelle und Metamodelle 222000000 17 1 2 4 QVT Query Views Transformation cccccccee
307. uvor von Redundanzen ges ubert wird kann nun mit folgender Transformation erfolgen transformation CleanUmlToRdbm in source UML out target RDBM access transformation UmlCleaning inout UML extends transformation UmlToRdbm in UML out RDBM main var tmpsrc UML source copy var tmpTrans new UmlCleaning tmpSrc Benutzung der Transformation UmlCleaning als Ganzes var retcode tmpTrans gt transform Generierung des RDBM Schemas mit dem sauberen redundanzfreien Quellmodell if not retcode failed then Die Operation packageToSchema befindet sich in der importierten Transformation UmlToRdbm tmpSrc objectsOfType Package gt map packageToSchema else log Fehler beim Eliminieren der Redundanzen endif 4 2 Fortgeschrittene Konzepte der Operational Mappings 149 In diesem Beispiel wird UmlCleaning mit access eingebunden Von UmlCleaning wird eine neue Instanz erzeugt und auf das Quellmodell ange wendet Mit der Standardmethode transform wird die Instanz der Transforma tion ausgef hrt und damit ein sauberes redundanzfreies Quellmodell geliefert Die auszuf hrende Transformation muss eine main Funktion enthalten trans form copy und failed sind QVT Standardoperationen die im Anhang be schrieben werden Anschlie end wird mit Hilfe der Transformation UmlToRdbm die berf h rung des ges uberten Quellmodells in ein RDBM Schema wie wir es kennen vor geno
308. wickelnde System Eine Plattform ist eine Ausf hrungsumgebung f r die Entwicklung und den Betrieb eines Anwendungssystems Nach dem Begriffsverst ndnis der OMG ist eine Platt form eine koh rente Menge von Systemen und Technolo gien die von einem Anwendungssystem das auf der Plattform betrieben werden soll genutzt werden Der Plattformbegriff impliziert ein kaskadierendes Architek turverst ndnis dahingehend dass eine definierte und implementierte Anwendung eine Plattform f r die Ent wicklung und den Betrieb einer weiteren Anwendung sein kann Dies ist eines der Grundprinzipien der modell getriebenen Architekturentwicklung Ein Plugin ist eine implementierte Komponente die in ein vorhandenes System als Bauelement eingef gt wer den kann Moderne objektorientierte Systeme wie zum Beispiel die Entwicklungsplattform Eclipse erm glichen zunehmend eine nderbarkeit und Erweiterbarkeit nach dem Baukastenbetrieb In der Populationssektion population wird inner halb von Mapping Operationen die Erzeugung und Bele gung von Objekten vorgenommen Ein Pr dikat ist eine logische Aussage die mit wahr oder falsch beantwortet werden kann Pr dikate werden in QVT verwendet um Bedingungen zu formulieren Die Formulierung und Implementierung von Pr dikaten er folgt mit Hilfe der OCL Ein Prim rschl ssel PrimaryKey ist ein Konzept von relationalen Datenbanksystemen um eindeutig die S tze in einer Datenbank zu
309. y name gt self source name _FK columns colSourceTable refersTo self source resolveone Table keys bi foreignkeys object Foreignkey name self destination name _FK columns colDestTable refersTo self destination resolveone Table keys hr Damit haben wir ein recht umfassendes und schon relativ vollst ndiges Ergeb nis unseres Datenbankschemas Abbildung 4 8 lt lt table gt gt lt lt table gt gt Immobilie name varchar vorname varchar zahlungsmodalitaet integer alter integer beginn integer strasse varchar ende integer hausnummer integer hausnummer integer postleitzahl integer strasse varchar ort varchar lt lt table gt gt lt lt table gt gt Darlehenssicherheit Hausbesitzer Darlehenssicherheit_PK Immobilie_ID integer Immobilie_FK lt lt table gt gt Darlehensgeschaeft Darlehensgeschaeft_PK Darlehen_ID integer Darlehen_FK Person_ID integer Person_FK Abb 4 8 Schema darlehen mit Assoziationstabellen 4 2 Fortgeschrittene Konzepte der Operational Mappings 141 An dieser Stelle wird das Beispiel erst einmal abgeschlossen Es ist ja auch schon ein recht respektables relationales Datenbankschema erzeugt worden Und damit wollen wir uns wieder auf einer formalen Ebene weiteren Konzepten der Sprache Operational Mappings zuwenden Denn heimlich hat sich hier ein neues Konzept eingeschlichen und zwar das der Obje
310. yp st eine Klasse mit der im UML2 Meta modell bestimmte dom nenspezifische Markierungen und Merkmale definiert werden k nnen Konkreter ein Ste reotyp ist eine spezielle Klasse des UML2 Metamodells Mit einer Extensionsbeziehung wird die Klasse Stereotyp mit einer Basisklasse des UML2 Metamodells verkn pft Objekte der Metaklasse haben damit ein zus tzliches Merkmal welches durch den Stereotyp definiert wird Die Syntax einer formalen Sprache beschreibt eine Menge von Regeln mit denen korrekte S tze der forma len Sprache ableitbar sind Dieses Syntaxverst ndnis wird auch auf die Definition formaler Modellierungssprachen angewendet Modellierungssprachen sind dann formal wenn sie auf der Basis einer formalen Syntax definiert worden sind Nach dem MOF Konzept der OMG wird die Syntax einer formalen Modellierungssprache mit Hilfe eines UML2 Klassendiagramms spezifiziert Das Modell der Spezifikation wird als Metamodell bezeich net Ein System ist ein aus untereinander in Wechselwir kung stehenden Teilen zusammengesetztes und struk turiertes Gebilde Systeme haben eine Funktion erf llen einen Zweck und verf gen ber eine Architektur Eine Tabelle im Sinne des relationalen DB Konzeptes ist eine Organisation von zusammengeh renden oder unter einander in Beziehung stehenden Daten die in der Regel auch zusammen physikalisch verwaltet werden Terminierung bedeutet das normale kontrollierte Been den eines operationa
311. ype UML effective uses SimpleUML where self objectsOfType Package gt size gt 1 bi modeltype RDBM strict uses SimpleRDBM Noch einmal zur Erinnerung Alternativ zu der nline Deklaration von Meta modellen ist es auch erlaubt dass sie in einem XML basierten generellen Aus tauschformat fiir MOF Modelle vorliegen zum Beispiel als EMOF oder Ecore Datei Die Benutzung in einer operationalen Transformation wird dann durch URL Referenz der entsprechenden Datei realisiert Beispiel Metamodelle extern modeltype UML uses SimpleUML http omg qvt examples SimpleUm1 he 3 5 Operationale Transformationen 93 modeltype RDBM uses SimpleRDBM http omg qvt examples SimpleRdbms Beispiel Metamodelle im Eclipse Kontext modeltype UML uses SimpleUML http SimpleUML ecore modeltype RDBM uses SimpleRDBM http SimpleRDBM ecore Dies soll nun zur Frage der Metamodelle gen gen und wir wollen nun endlich das Thema der operationalen Transformationen erschlie en 3 5 2 Transformationen Eine Transformation transformation ist eine Operation zwischen Model len in der in Form von imperativen Anweisungen Quellmodelle auf Zielmodelle projiziert werden Diese Projektion wird als Mapping bezeichnet In den Opera tional Mappings ist eine Transformation ein Mapping zwischen Modellen Syntax lt transformation_qualifier gt transformation lt transformation_name gt lt transformation_signa
312. ypedef gt lt access_decl gt Syntax for Entries lt entry gt lt entry_decl gt lt entry_def gt lt entry_header gt main lt simple_signature gt lt entry_decl gt lt entry_header gt lt entry_def gt lt entry_header gt lt expression_block gt Properties in Transformation lt property gt intermediate lt property_key gt lt declarator gt lt property_key gt derived literal configuration property General Purpose Grammar Rules lt qualifier gt blackbox abstract static lt complete_signature gt lt simple_signature gt lt param_list gt lt simple_signature gt lt param_list gt lt param_list gt lt param gt lt param gt lt param gt lt param_direction gt lt declarator gt lt param_direction gt in inout out lt simple_declarator gt lt typespec gt lt scoped_identifier gt lt typespec gt lt declarator gt lt typespec gt lt init_part gt lt scoped_identifier gt lt typespec gt lt 2n1 L part lt simple_declarator_list gt lt simple_declarator gt lt simple_declarator gt ie lt declarator_list gt lt declarator gt lt declarator gt i lt declarator_semi_list gt lt declarator gt lt declarator gt i lt init part lt init_op gt lt expression gt lt 1 Op gt 2 lt Lypespec gt lt type_reference gt lt extent_loc
313. ypen Set eine ungeordnete Menge von Elementen ohne Duplikate OrderedSet eine geordnete Menge von Elementen ohne Duplikate Bag eine ungeordnete Menge von Elementen in der Duplikate er laubt sind Sequence eine geordnete Menge von Elementen in der Duplikate er laubt sind OCL Standardfunktionen auf Sammlungen allInstances Set Type liefert alle Instanzen einer Klasse allInstances ist nur auf Klassen an wendbar in allen anderen F llen liefert sie oc1Void asBag Bag Type eine Menge wird zu einem Bag konvertiert asOrderedSet OrderedSet Type eine Menge wird zu einem OrderedSet konvertiert asSequence Sequence Type eine Menge wird zu einer Sequence konvertiert asSet Set Type eine Menge wird zu einem Set konvertiert count obj Type Integer die Anzahl des Vorkommens von obj in einer Collection 230 D Standardbibliotheken excludes obj Type Boolean true falls obj kein Element der Collection ist sonst false excludesAll coll Boolean true falls die untersuchte Collection self keines der Elemente der gegebenen Collection coll enth lt sonst false excluding obj Type Set Type die neue Menge enth lt alle Elemente von self ohne obj diese Methode ist auch auf Bag und Sequence definiert flatten Set Type alle Elemente aller Sub Collections werden insgesamt zu einem Set zusam mengestellt wenn eine Collection aus Elementen besteht die
314. ystem gt gt betriebliche Modelle Fachdom ne Gegenst nde Prozesse Verfahren Regeln Fachexperte Modellierungssprachen semiformal Modell nat rliche Sprache formal z B BPMN Modellierung Analyse Analytiker DY Wel formale Modellierungssprachen z B UML Modellierung Spezifikation ormale Modellierungssprachen z B UML lt lt subsystem gt gt DV Domane Entwickler Programme Datenstrukturen Datenbanken Rechnersysteme Programmiersprachen Datendefinition DY Modelle ProgrammierungKonstruktion Abb 1 2 SWE Analyse Spezifikation und Implementierung 4 1 Einf hrung 1 1 1 Strukturierte Software Entwicklung Bereits in den fr hen sechziger Jahren haben Vordenker wie Carl Adam Petri Mo dellierungstechniken entwickelt mit deren Hilfe komplexe Steuerungsvorg nge beschrieben und untersucht werden konnten die ber hmten Petrinetze Pet62 Pet63 Rei91 Einen weiteren Ansatz Techniken der strukturierten Programmie rung Wir93 in graphischer Form abzubilden haben Isaac Nass und Ben Shnei derman 1972 73 vorgeschlagen die Struktogramme oder auch Nassi Shneider man Diagramme NSD73 Etwa zeitgleich wurde die Abbildung von imperativen Ablaufmustern in Programmablaufpl nen entwickelt Beide Techniken Sachver halte der strukturierten Programmierung in Diagrammen darzustellen flossen in die Normungen und Standards des Deutschen Institutes f r Normung DIN und der Internatio
315. zige ist die Anwendung der UML Eine Serialisierung eines solchen Metamodells erfolgt dann dadurch dass eine Repr sentation in dem universellen Austauschformat XMI hergestellt wird XMI Dies soll hier als EMOF Repr sentation bezeichnet werden XMI dient generell zum Austausch von formalen Modellen EMOF ist speziell ein Format zur Beschreibung von Metamodellen die auf UML Klassen diagrammen basieren In beiden Repr sentationen findet sich nat rlich das UML Metamodell mit seinen Strukturen und Elementen wieder Beispiel Ausschnitt des SimpleUML Metamodells im XMI Format lt xmi XMI xmi version 2 1 xmlns xmi http schema omg org spec XMI 2 1 xmlns xsi http www w3 org 2001 XMLSchema instance xmlns uml http www eclipse org uml2 2 1 0 UML gt lt uml Model xmi id _ev8DoASpEd29 dJ huT 4g Name SimpleUML gt lt packagedElement xmi type uml Class xmL id ev8DoQ0SpEd29 dJ huT 4qg name UMLModelElement gt 38 2 Modelle und Metamodelle lt ownedAttribute xmi id _ev8DogSpEd2Q dJ huT 4g name name Visibility public isOrdered true gt lt type xmi type uml PrimitiveType href pathmap UML_LIBRARIES EcorePrimitiveTypes library uml EString gt lt ownedAttribute gt lt packagedElement gt lt uml Model gt lt xmi XMI gt Ausschnitt des Simp 1eUML Metamodells im EMOF Format lt emof Package xmi version 2 0 xmilns xmi http www omg org XMI xmins xsi h
316. zwei zus tzliche Spalten colSourceTable und col DestTable angelegt werden die zur Referenzierung der beteiligten Tabellen source und destination herangezogen werden Der Datentyp ist wie auch bereits bei der Konstruktion des Prim rschl ssels ganzzahlig numerisch Die syn thetischen Spalten dienen zusammengenommen als Prim rschl ssel zur Identifi zierung der Assoziationstabelle mapping Association AssociationToTable Table when self source kind persistent and self destination kind persistent init var colSourceTable Column var colDestTable Column Referenz auf die source Tabelle colSourceTable object Column name self source name _ID type int E Referenz auf die destination Tabelle colDestTable object Column name self destination name _ID type int te name self name columns Sequence colSourceTable colDestTable keys object Key name gt self name _PK columns result columns ta 140 4 Operational Mappings Anwendungen Zu guter Letzt werden unter Verwendung der synthetischen Spalten col SourceTable und colDestTable die Fremdschl ssel definiert mit denen die Referenz zu den beteiligten Tabellen hergestellt wird mapping Association AssociationToTable Table when self source kind persistent and self destination kind persistent wie oben foreignkeys object Foreignke

Download Pdf Manuals

image

Related Search

Related Contents

運動 - 兵庫県  Tablet Cert 1. What are the product specifications? Tablet 7" colo  Sin t.tulo-1  DSP-13 User Manual  TX-099 - Gentos  Xtant X604 Car Audio Amplifier  JVC CA-MXGT91R User's Manual  manual de instruções do alicate digital modelo ad-6000  Reid, G.B., Potter, S.S. & Bressler, J.R.  Consignes de sécurité importantes CONSERVER CE MODE D  

Copyright © All rights reserved.
Failed to retrieve file