M2M-Transformation mitder QVTRelations Language



Ähnliche Dokumente
M2M-Transformation mitder QVTOperational Mappings

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

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Arbeiten mit UMLed und Delphi

Vortrag von: Ilias Agorakis & Robert Roginer

Grundlagen von Python

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

Rundung und Casting von Zahlen

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Erstellen von x-y-diagrammen in OpenOffice.calc

Übungen zur Softwaretechnik

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Benutzerverwaltung Business- & Company-Paket

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Model Driven Development im Überblick

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Inkrementelles Backup

Jochen Bauer

Anleitung Captain Logfex 2013

Objektorientierte Programmierung. Kapitel 12: Interfaces

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

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

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Innovator 11 classix. Erweiterter XMI-Export aus Innovator Business und Object classix. HowTo.

Klausur zur Einführung in die objektorientierte Programmierung mit Java

1 topologisches Sortieren

Internet Explorer Version 6

Data Lineage goes Traceability - oder was Requirements Engineering von Business Intelligence lernen kann

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

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Innovator 11 classix. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Michael Kaaden.

Model Driven Architecture (MDA)

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Teil 1: IT- und Medientechnik

Lehrer: Einschreibemethoden

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Professionelle Seminare im Bereich MS-Office

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

IAWWeb PDFManager. - Kurzanleitung -

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Stand: Adressnummern ändern Modulbeschreibung

1 Mathematische Grundlagen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

WhiteStarUML Tutorial

Deswegen bekomme ich folgende Fehlermeldung: Ich will aber nicht aufgeben, deswegen mache ich es erneut, aber mit einen anderen Seite - networkpro.

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Model Driven Architecture Praxisbeispiel

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Überprüfung der digital signierten E-Rechnung

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Kommunikations-Management

Anleitung Typo3-Extension - Raumbuchungssystem

Wie funktioniert ein Mieterhöhungsverlangen?

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

TYPO3 Super Admin Handbuch

Office 365 Domänen bei 1und1 einrichten. Variante A: P1-Tarif die von MS empfohlene Volldelegation

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering Klassendiagramme Assoziationen

Einführung in die Algebra

Einführung in die Programmierung für NF

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Anleitung - Archivierung

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

SANDBOXIE konfigurieren

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

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

malistor Phone ist für Kunden mit gültigem Servicevertrag kostenlos.

Reporting Services und SharePoint 2010 Teil 1

Einkaufslisten verwalten. Tipps & Tricks

Eine Logikschaltung zur Addition zweier Zahlen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

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

Dow Jones am im 1-min Chat

Primzahlen und RSA-Verschlüsselung

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

icloud nicht neu, aber doch irgendwie anders

Übung: Verwendung von Java-Threads

How to do? Projekte - Zeiterfassung

8.2 Thermodynamische Gleichgewichte, insbesondere Gleichgewichte in Mehrkomponentensystemen Mechanisches und thermisches Gleichgewicht

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

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Software Engineering Interaktionsdiagramme

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Häufig wiederkehrende Fragen zur mündlichen Ergänzungsprüfung im Einzelnen:

Anwendungsbeispiele Buchhaltung

Transkript:

M2M-Transformation mitder QVTRelations Language Siegfried Nolte Beethovenstraße 57 22941 Bargteheide siegfried@siegfried-nolte.de Abstract: QVT ist ein Sprachkonzept der Object Management Group zur Transformation von formalen Modellen. In diesem Beitrag werden ausgehend von einem einfachen Fachklassenmodell die zentralen Konzepte und Techniken der Transformationssprache Relations Language vorgestellt, so dass abschließend eine vollständige Transformation eines UML-Modells der PIM-Ebene in eins der PSM- Ebene vorgenommen werden kann. 1 Einordnung der QVT in die MDA Die Model Driven Architecture (MDA) der Object Management Group (OMG) beschreibt einen Ansatz der Anwendungsentwicklung auf der Grundlage von modellbasierten Techniken [MDA03]. Auf der einen Seite sind dies Sprachen und Verfahren zur Modellierung von Sachverhalten einer betrachteten Domäne, auf der anderen Seite handelt es sich um Konzepte zur Transformation der Modelle bis hin zur Erzeugung von Software-Bausteinen. Die Modellierung eines betrachteten Ausschnittes der realen Welt, der Domäne, erfolgt unter Verwendung von formalen, metamodellbasierten Modellierungssprachen, zum Beispiel der Business Process Modeling Notation (BPMN) oder der Unified Modeling Language (UML). Ein Anwendungsentwicklungsprozess im Allgemeinen wie auch Modellierung im Besonderen ist iterativ inkrementell, der Entwicklungsprozesses findet über mehrere Abstraktionsebenen statt, wobei die Modelle immer weiter formalisiert und konkretisiert werden bis hin zu einer maschineninterpretierbaren Form, zum Beispiel einem Code- Artefakt in einer beliebigen Programmiersprache. Rechnergestützte Transformation von Modellen aus einer Entwicklungsebene in eine andere aus der rechnerunabhängigen Modellierungsebene (CIM) über die plattformunabhängige Modellierungsschicht (PIM) und die plattformspezifische Schicht (PSM) zum Implementierungsmodell (IM) kann dabei von großem Wert sein [PM06]. Der Vorschlag der OMG zur Transformation von Modellen ist die QVT, die Query View Transformation, eine Spezifikation von Sprachen, mit denen Modelle einer formalen Modellierungssprache in Modelle anderer formaler Modellierungssprachen überführt werden können [QVT08]. Mit Veröffentlichung der Version 1.0 im April 2008 ist die QVT ein von der OMG herausgegebener Standard. Die QVT bietet zwei Klassen von Sprachen zur Modelltransformation an, zum einen deskriptive Sprachen, von denen als 957

Beispiel hier die Relations Language (QVT-R) näher beleuchtet werden soll, und zum anderen imperative Sprachen, ein Beispiel dafür ist die Operational Mappings (QVT-O). 2 Modelle und Metamodelle QVT-Sprachen arbeiten auf Modellen, welche mit Hilfe von formalen Modellierungssprachen, sogenannten MOF-Sprachen, entwickelt worden sind [Nol07]. Formale Modellierungssprachen sind Sprachen, denen eine wohldefinierte Syntax zugrunde liegt. Nach der MOF-Spezifikation der OMG [MOF06] wird die Definition von Modellierungssprachen in ihrem syntaktischen Teil unter Verwendung der UML konkret, UML-Klassendiagramme vorgenommen. Die formale Spezifikation einer Modellierungssprache in einem Modell wird als Metamodellierung bezeichnet, das Modell der Modellierungssprache ist ein Metamodell. Alle OMG-Modellierungssprachen, so auch die BPMN, UML und SysML, sind formale Modellierungssprachen in diesem Sinne. Das Ergebnis einer Transformation auf dieser Grundlage ist jeweils wieder ein formales Modell, das mit einer formalen Modellierungssprache dargestellt und im Rahmen des inkrementellenentwicklungsprozesses weiter bearbeitet werdenkann. 3 Transformation mit QVT-R An einem einfachen UML-Modell werden einige grundlegende Konzepte und Transformationstechniken mit der deskriptiven QVT-Sprache QVT-R demonstriert [Nol09]. Mit der Wahl von UML als Modellierungssprache ist das Metamodell festgelegt. Die Fachklassen, die im Rahmen der Transformation behandelt werden sollen, sind unter Verwendung eines speziellen UML-Profiles mit dem Stereotyp <<entity>> markiert. Die Möglichkeit der Einarbeitung von domänenspezifischen Belangen in die Modellierungssprache UML ist eine sehr interessante Technik, die das UML-Metamodell mit UML- Profilen anbietet [UML10]. Als Zielmodell soll ebenfalls ein UML-Klassendigramm erstellt werden, welches bereits einige Designaspekte wie Paketierungen, Schnittstellen und Muster aufzeigt. Als Entwicklungsplattform wird ein aus freien Komponenten bestehendes Produkt eingesetzt [Nol10], welches auf der Basis der Eclipse Modeling Workbench entwickelt worden ist [EMP10]. Zur Unterstützung der Transformation soll mediniqvt [Med10] dienen. 3.1 Transformationen, Relationen und Domänen QVT-R-Transformationen haben einen Namen und eine Liste von Parametern, in der die Modellkandidaten angegeben werden. Die Modelle sind Instanzen von Modelltypen, diese referenzieren Metamodelle, die im Kontext bekannt sein müssen [Nol07]. In dem Eclipse-basierten mediniqvt müssen die Metamodelle entweder als ein Eclipse-Plugin vorliegen oder alternativ in Form des universellen Austauschformates XMI [XMI07]. Die erforderlichen Metamodelle werden im Rahmen der Eclipse-Präferenzen QVT Metamodels spezifiziert. 958

Das folgende Beispiel überführt ein UML-Quellmodell in ein UML-Zielmodell, wobei alle Packages eines Quellmodells mit ihrem Namen in Packages eines Zielmodells transformiert werden. Der Kern einer QVT-R-Transformation ist die Relation. Eine Relation ist die Spezifikation einer gültigen Beziehung zwischen einem Element eines Quellmodells und einem Element eines Zielmodells. In dem Beispiel werden alle Packages des Quellmodells source gemäß den vorgegebenen, in diesem Fall sehr einfachen, Bedingungen geprüft und diejenigen, die die definierten Bedingungen erfüllen, werdenals Packages im Zielmodell target angelegt: transformation GI1_Transformation (source:uml, target:uml) top relation Packages pckgname : String; checkonly domain source srcpkg : Package name = pckgname ; enforce domain target dstpkg : Package name = pckgname ; Die Prüfungen der Bedingungen und die Zuweisungen werden nach den Prinzipien des Pattern Matching vollzogen. Diesem Zweck dienen die Domänenspezifikationen. Jede Domäne beschreibt ein Pattern, welches sich auf die Attribute des angegebenen Modellelementes bezieht. Im Fall von checkonly-domänen erfolgt eine Prüfung und ein Abgleich der Werte der Elemente eines Quellmodells, im Fall enforce werden die Attribute des Prüfkandidaten mit den gegebenen Werten überschrieben und damit ein Objekt im Zielmodell erzeugt. Beim checkonly ist eine Besonderheit zu beachten, die hier ausgenutzt wird: pckgname ist eine selbstdefinierte freie Variable, diese besitzt initial keinen Wert, sie ist also oclundefined. Beim Pattern Matching bezogen auf die Domäne checkonly domain source wird der Wert von name an die freie Variable pckgname übergeben, womit die Bedingung erfüllt wird. Mit dieser Technik ist ein Initialisieren von Zielelementen unter Verwendung von Quellelementen möglich. 3.2 Top-level- und Non-Top-Level-Relationen In der QVT-R wird unterschiedenzwischen top-level-und non-top-level-relationen. toplevel-relationen gekennzeichnet mit dem Schlüsselwort top sind solche, die bei der Ausführung einer Transformation grundsätzlich aktiviert und abgearbeitet werden, nontop-level-relationen sind solche, die explizit aufgerufen werden müssen. In einer Transformation muss es mindestens eine top-level-relation geben. Die top-level-relation Packages würde also beim Start der Transformation alle Packages eines Modells nach einem vorgegebenen Muster untersuchen und die entsprechende Aktion im Zielmodell ausführen, vorausgesetzt, esgibt Packages im Quellmodell. Also sollte für jedes Element eines Quellmodells, welches top in einem Diagramm vorkommen kann also 959

zum Beispiel Package, Class, Interface, DataType eine top-level-relation definiert sein. Wenn es Beziehungen zwischen den Elementen im Modell gibt, die es nötig machen, dass ein Element im Rahmen einer Objekterzeugung im Zielmodell bereits existiert, dann ist das in den Pattern-Definitionen durch ein when-prädikat entsprechend zu formulieren. In folgendem Beispiel sind sowohl die Relationen Packages wie auch Classes top-level. Esgibt jedoch Klassen, die Komponenten von Paketen sind, in dem Fall müssen die entsprechenden Pakete bereits bearbeitet und im Zielmodell angelegt sein, bevor die Bearbeitung der Klassen erfolgen kann. Dies wird durch den expliziten Aufruf der Relation Packages in dem when-prädikat der Relation Classes gewährleistet. transformation GI2_TopLevel ( source:uml, target:uml ) top relation Packages pckgname : String; checkonly domain source srcpkg : Package name = pckgname ; enforce domain target dstpkg : Package name = pckgname ; top relation Classes classname : String; checkonly domain source srccls : Class name = classname, owner = srcpkg : Package ; enforce domain target dstcls : Class name = classname, owner = dstpkg : Package ; when Packages ( srcpkg, dstpkg ); Wenn allerdings in dem Modell eine hierarchische Ordnung zwischen den Elementen existiert, wie das zum Beispiel bei UML-Modellen der Fall ist (mal abgesehen davon, dass im UML-Metamodell das Attribut owner ohnehin nur lesbar und nicht veränderbar ist und somit in der enforce-domäne nicht verwendet werden kann), dann ist es oft einfacher, die Transformation explizit auszulösen durch Aufrufe von non-top-level- Relationeninden where-klauseln. 960

transformation GI2_NonTopLevel ( source:uml, target:uml ) top relation Package checkonly domain source srcpkg : Package...; enforce domain target dstpkg : Package...; where Classes (srcpkg, dstpkg ); relation Classes checkonly domain source srcp : Package...; enforce domain target dstp : Package...; 3.3when- und where-prädikate In den obigen Beispielen sind zwei unterschiedliche Bedingungstypen eingeführt worden, when- und where-klauseln. when-prädikate dienen als Vorbedingung für die Erzeugungskomponente einer Relation, die letztendlich erfüllt sein muss, damit der generative Teil überhaupt bearbeitet werden kann. Das where-prädikat bewirkt, dass immer dann, wenn ein Zugriff auf ein Objekt oder eine Variable in der enforce-domäne erfolgt, die inder where-klausel beschriebenen Aktionenausgeführt werden. Zur Erinnerung: top-level-relationen werden mit dem Start einer Transformation aktiviert und ausgeführt. Ein explizites Auslösen einer top-level-relation kann nur über ein when-prädikat vorgenommen werden. Der Aufruf von non-top-level-relationen erfolgt ausschließlich in where-klauseln. Angenommen, es gibt ein UML-Profil UMLEJB, in dem der Stereotyp <<entity>> definiert und mit der Metaklasse Class assoziiert ist. In dem folgenden Beispiel werden dann ausschließlich die Klassen behandelt, die mit dem Stereotyp <<entity>> markiert sind. getappliedstereotype() und is- StereotypeApplied() sind Standardfunktionen, die den Zugriff auf Stereotypen erlauben. relation Classes classname, classname1 : String; st: Stereotype; checkonly domain source srcp : Package packagedelement = srccls : Class name=classname ; enforce domain target dstp : Package packagedelement = dstcls : Class name=classname1; when st = getappliedstereotype('umlejb::entity'); srccls.isstereotypeapplied(st); where classname1 = classname + '_DerivedFromEntity'; 961

In der where-klausel wird erzwungen, dass der Name der Zielklasse um einen konstanten Stringergänzt wird. 3.4 Primitive Domänen und Queries Eine Relation kann beliebig viele checkonly- oder enforce-domänen besitzen. Bei dem Aufruf von Relationen inwhen- oder where-klauseln müssen dann entsprechend der Domänentypen und Reihenfolge Aufrufparameter übergeben werden. In dem obigen Beispiel besitzt die Classes-Relation zwei Domänen, jeweils eine checkonly und eine enforce. Dementsprechend müssen beim Aufruf dieser Relation zwei Objekte vom Typ Package als Parameter mitgegeben werden. Neben den Domänen mit einer Check- und Generierungsfunktion erlaubt QVT-R, dass weitere auch neutrale, sogenannte primitive, Domänen definiert werden. In dem folgenden Beispiel wird damit der gerufenen Relation eine zusätzliche String-Variable übergeben, die zur Erzeugung desnamensdes Zielpaketesherangezogen wird. relation ClassesWithPrefix cname, cname1 : String; checkonly domain source pckg : Package packagedelement = srccls : Class name = cname1 ; enforce domain target schm : Package packagedelement = dstcls : Class name = cname ; primitive domain prefix : String; where cname = if prefix = '' then cname1 else prefix + '_' + cname1 endif; Aufruf: ClassesWithPrefix (srcpckg, dstpckg, 'HelloWorld'); Der einzige Zweck für primitive Domänen ist die Option, der gerufenen Relation weitere Parameter zuübergeben. Ein ähnliches Ergebnis kann man mit der Verwendung vonhilfsfunktionen(query) erreichen. query PrefixToClassname ( prefix : String, cname : String ) : String if prefix = '' then cname else prefix + '_' + cname endif Aufruf: cname = PrefixToClassname('HelloWorld', cname1); 962

4 Zusammenfassung undausblick Die QVT-R ist eine interessante, verhältnismäßig einfache Sprache, die allerdings als deskriptive Sprache und aufgrund des konsequenten Pattern Matching-Ansatzes eher etwas gewöhnungsbedürftig ist. Dieser Beitrag konnte lediglich einen kleinen Einblick geben in die Transformation von Modellen mit Hilfe der QVT-R. Für tiefer gehendes Interesse sei auf die angeführte Literatur verwiesen, insbesondere [Nol09]. Mittlerweile ist die Werkzeugsituation stabil und weitgehend ausgereift, so dass man sagen kann, der MDA-Ansatz der Transformationen von Modellen nach Modellen funktioniert. So mag es durchaus interessant sein, die modellgetriebene Entwicklung von Anwendungssystemen auch in der Praxis um den Aspekt der Transformation von Modellen zu ergänzen, und damit die Phasenübergänge eines iterativen Entwicklungsprozesses gerade in den frühenphasenzuunterstützen. Literaturverzeichnis [EMP10] EclipseModelingProject; http://www.eclipse.org/modeling/ [MDA03] MDA Guide, Version1.0.1. www.omg.org/cgi-bin/doc?omg/03-06-01, 2003 [Med10] mediniqvt; http://projects.ikv.de/qvt [MOF06]MOF 2.0/Meta Object Facility Core, Version 2.0. http://www.omg.org/spec/mof/, 2006 [Nol10] Nolte, S.: freemda -Einefreie Plattformfüreineintegrierte modellgetriebene Anwendungsentwicklung. EclipseMagazin -Heft 01, 2010 [Nol09] Nolte, S.: QVT Relations Language. Springer-Verlag, 2009 [Nol07] Nolte, S.: Modelle und Metamodelle im Eclipse Kontext. ObjektSpektrum, Heft 6,2007 [OCL10] Object Constraint Language. http://www.omg.org/spec/ocl/2.2/,2010 [PM06] Petrasch R, Meimberg O: ModelDriven Architecture. dpunkt Verlag, 2006 [QVT08] MOF QVT-Version 1.0.http://www.omg.org/spec/QVT/1.0/, 2008 [UML10]UML Superstructureand Infrastructure. http://www.omg.org/spec/uml/2.3/,2010 [XMI07] OMG, MOF 2.0/XMI Mapping,Version 2.1.1. http://www.omg.org/spec/xmi/2.1.1/ PDF/index.htm, 2007 963