E188 - Institut für Softwaretechnik und Interaktive Systeme
-
Date (published):
2015
-
Number of Pages:
120
-
Keywords:
Transformation; SiTra; Java 8; Legacy Code
de
Transformation; SiTra; Java 8; Legacy Code
en
Abstract:
Seit in den letzten Jahren die modellbasierte Softwareentwicklung erheblich an Bedeutung gewonnen hat, entstanden gleichermaßen auch eine Reihe von Modell-zu-Modell Transformationssprachen (MTL). Heutzutage gibt es eine Vielzahl an populären Vertreter dieser Sprachen, wie zum Beispiel ATL, Kermeta oder Sprachen, die auf QVT basieren. Auch wenn diese speziell für den Zweck der Modelltransformation geschaffen wurden und damit eine benutzerfreundliche und einfache Art der Transformation ermöglichen sollen, verlangen sie dennoch vom Entwickler sich eine komplett neue Sprache anzueignen. Außerdem sind viele dieser MTLs deklarative Sprachen und verfolgen damit oft einen, für viele Entwickler, welche oft vorrangig oder ausschließlich mit imperativen Sprachen arbeiten, komplett neuen Ansatz. Die, in dieser Arbeit entwickelte Bibliothek namens jTL soll Entwicklern die Möglichkeit bieten, eine komplette Modelltransformation in der von ihnen gewohnten Umgebung, nämlich Java zu schreiben. Des Weiteren wurde jTL aber auch mit Hinblick auf komplexe Source Code Übersetzungen entwickelt. Gerade bei diesem Anwendungsfall bietet der imperative Ansatz einen erheblichen Vorteil im Gegensatz zum deklarativen Ansatz. Außerdem bietet sich mit automatisierter Source Code Migration durch direkte Übersetzung eine Möglichkeit an, die es erlaubt Legacy Code in Quelltext moderner Programmiersprachen zu übersetzen. Da in der Industrie noch immer eine große Menge an beispielsweise Cobol oder PL/1 Applikationen verwendet wird und der finanzielle und personelle Aufwand diese zu warten, die Unternehmen vor immer größere Herausforderungen stellen, kann automatisierte Source Code Transformation eine mögliche Strategie bieten, um diese Softwaresysteme in das 21 Jahrhundert überzuführen. jTL erfüllt dabei die Anforderungen um als Fundament einer solchen Übersetzung zu dienen, auch wenn natürlich noch viele weitere Herausforderungen bei dieser Art der Softwaremigration warten. Um von den Problemen und Schwachstellen vorhandener Java basierten Transformationen zu lernen, wurde in dieser Arbeit eine bereits existierende Bibliothek namens SiTra, sowie ein ebenfalls Java basierter Transformer, der eine konkrete Implementierung einer automatischen Source Code Transformation von Cobol & PL/1 auf Java darstellt, untersucht und analysiert. Des Weiteren wurde ein besonderes Augenmerk auf neue Java 8 Features gelegt, die jTL nicht nur zu einer state-of-the-art Library machen soll, sondern von welchen diese auch im Bezug auf Wartbarkeit, Lesbarkeit und Performance profitieren soll. Auch wenn eines der Hauptziele die komfortable und benutzerfreundliche Nutzung von jTL war, wurden auch wichtige Features wie Tracing und Wiederverwendungsmechanismen wie Rule-Inheritance (Regelvererbung) implementiert. Damit bietet jTL einen kompletten Ansatz um die unterschiedlichsten Transformationen durchführen zu können. Am Ende dieser Arbeit wird anhand einer Modeltransformation und einer Source Code Transformation die Anwendung von jTL demonstriert und gleichzeitig aufgezeigt welche Vorteile jTL gegenüber den zwei weiteren Java basierten Ansätzen bietet.
de
Although many different model transformation languages (MTLs) and model transformation frameworks (MTFs) exist, each of them is requiring a developer to learn an additional language. Moreover since many of them follow a declarative approach, they are often less intuitive for programmers familiar with imperative language. Therefore a Java based imperative library called jTL has been developed which enables the user to write the whole transformation process in pure Java. The resulting jTL is applicable to a wide range of transformation tasks that include classical graph based source models or especially source code translation, because transformation of legacy code is still a not yet solved challenge in software migration. Since source code transformation is a quite complex and performance intensive task, the jTL represents an easy to use approach, which focuses on goals like maintainability, readability, reusability and performance improvements. To achieve these goals two similar existing approaches were examined to uncover weaknesses and deduce possible improvements for the resulting jTL. Moreover jTL further benefits from new Java 8 features like bulk operation, lambda expression, functional interface and parallel stream processing. Although jTL has been kept as simple as possible, it is still a complete transformation approach, since it also supports further important features like tracing or reuse mechanisms like rule inheritance which should be part of every state of the art transformation language. As an evaluation, two concrete transformation examples are given that make use of jTL. This should give an idea how a transformation with jTL can be established and what differences and improvements come up with jTL in contrast to other Java based transformation solutions.
en
Additional information:
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in dt. Sprache