Dopplinger, M. (2018). Supporting model extensions in RubyTL [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2018.21931
E194 - Institut für Information Systems Engineering
-
Date (published):
2018
-
Number of Pages:
106
-
Keywords:
Ruby; EMF Profiles; UML Profiles; Transformations
de
Ruby; EMF Profiles; UML Profiles; Transformations
en
Abstract:
Model Engineering wird immer wichtiger, da die Nutzung von Modellen in der Software Entwicklung zu nimmt. Gleichsam bedeutend ist es, dass die Modelle leicht zu adaptieren und zu erweitern sind. Allerdings ist dies nicht immer möglich. Dies kann zum Beispiel sein, wenn das Modell nicht von einem selbst entwickelt wurde und es notwendig ist die Kompatibilität zu wahren. Deshalb wurden mehrere leichtgewichtige Erweiterungsmechanismen entwickelt. Zum Beispiel UML Profile für UML Diagramme oder EMF Profile für Standard Diagramme des Eclipse Modeling Frameworks (EMF). Diese erlauben es ein bestehendes Diagramm zu erweitern ohne das Originalmodell zu ändern. Aber leider haben diese leichtgewichtigen Erweiterungen einen Nachteil. Nur wenige Modell Transformationssprachen besitzen eine Unterstützung für diese. Die Atlas Transformation Language (ATL), zum Beispiel, kann nur über die unterliegende Java API darauf zugreifen und RubyTL bietet überhaupt keine Unterstützung an. Im Rahmen dieser Arbeit soll eine Erweiterung entwickelt werden die es RubyTL erlaubt sowohl UML als auch EMF Profile zu verarbeiten. Dabei soll die Erweiterung nicht in den bestehenden Programmcode von RubyTL eingreifen. Um diese Anforderung zu erfüllen, werden Modellprozessoren verwendet. Diese integrieren das Profil in das bestehende Diagramm wodurch das Profil dann zu einem kompletten Bestandteil des ursprünglichen Diagramms wird. Dadurch ist es der Transformationssprache möglich auf die Informationen des Profils zuzugreifen. Weiters soll es möglich sein, die Modellprozessoren auch mit anderen Transformationssprachen, wie ATL, verwenden zu können. Als Abschluss der Arbeit wird gezeigt, wie man mit den Modellprozessoren bestehende Diagramme verarbeiten kann. Dabei wird gezeigt, wie man die Prozessoren benutzt und wie die Transformationsregeln aussehen. Da ATL bereits UML Profile unterstützt, wird an Hand von ATL gezeigt wie die Modellprozessoren die Transformationsregeln vereinfachen können.
de
Model Engineering gets more important in software development because of the increasing use of models. At the same it is important the adapt and extend existing models. But this is sometimes not possible. For example the model was developed from somebody else or the model is used in another project and it is necessary to keep the compatibility. Therefore several lightweight extension mechanism have been developed. For example UML profile for UML diagrams or EMF profiles for standard diagrams of the Eclipse Modeling Framework (EMF). They allow to extend an already existing model without changing the original one. But unfortunately they have some drawbacks. Only a few transformation languages have a support for lightweight extensions and if they do only very basic. ATL can only access the profile with the underlying Java API. With RubyTL it is not possible to process profiles at all. This thesis covers the development of an extension which enables RubyTL to process EMF and UML profiles. Thereby should the extension be not integrated into the RubyTL code. This will be done with model processors. They integrate the profile into the existing model. Due to the circumstance that the profile is now a complete part of the diagram it is possible that the transformation language can access the stereotypes. Furthermore should it be possible to use the model processors for other transformation languages, like ATL. The goal is to enable the use of UML and EMF profiles also for other transformation languages. But they do not get integrated into the language. The model processors are used from a command line interface (CLI). The feasibility of the approach is demonstrated by using transformations to apply and read profile information in RubyTL and ATL. The resulting ATL transformations are also compared with ATL transformations using the basic ATL support based on the Java API for UML.