
Die approbierte Originalversion dieser Diplom-/ Masterarbeit ist in der Hauptbibliothek der Tech- nischen Universität Wien aufgestellt und zugänglich. http://www.ub.tuwien.ac.at The approved original version of this diploma or master thesis is available at the main library of the Vienna University of Technology. http://www.ub.tuwien.ac.at/eng Code Generation for fUML DIPLOMARBEIT zur Erlangung des akademischen Grades Diplom-Ingenieur im Rahmen des Studiums Wirtschaftsinformatik eingereicht von Ulrich Fischer Matrikelnummer 0703588 an der Fakultät für Informatik der Technischen Universität Wien Betreuung: o.Univ.-Prof. Dipl.-Ing. Mag. Dr. Gerti Kappel Mitwirkung: Dipl.-Ing. Dr. Tanja Mayerhofer, BSc Wien, 11.04.2017 (Unterschrift Verfasser) (Unterschrift Betreuung) Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.ac.at Code Generation for fUML MASTER’S THESIS submitted in partial fulfillment of the requirements for the degree of Diplom-Ingenieur in Business Informatics by Ulrich Fischer Registration Number 0703588 to the Faculty of Informatics at the Vienna University of Technology Advisor: o.Univ.-Prof. Dipl.-Ing. Mag. Dr. Gerti Kappel Assistance: Dipl.-Ing. Dr. Tanja Mayerhofer, BSc Vienna, 11.04.2017 (Signature of Author) (Signature of Advisor) Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.ac.at Erklärung zur Verfassung der Arbeit Ulrich Fischer Nevillegasse 2/23, 1050 Wien Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwende- ten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit - einschließlich Tabellen, Karten und Abbildungen -, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Ent- lehnung kenntlich gemacht habe. (Ort, Datum) (Unterschrift Verfasser) i Danksagung Ich bedanke mich beim BIG der TU Wien für die Möglichkeit, meine Arbeit in dieser Forschungs- gruppe abfassen zu können, bei meiner Betreuerin Tanja für ihre unermüdliche Unterstützung und besonders bei meiner Familie – Mama, Papa und Bruder – die mich bei meinem Weg durch dieses Studium begleitet hat. iii Abstract The concept of abstraction is the foundation of the evolution of computer science. Complex concepts and techniques are composed to a level of abstraction on which new techniques can be built. The evolution of programming languages is no exception. The assembly language was an abstraction of binary machine code instructions, making them interpretable by humans. Up to the nineties, many programming languages required the user to manually allocate and deallocate memory—a task that is carried out by all modern languages without the knowledge of the user. Model-driven engineering (MDE) is a software development methodology that introduces mod- els as the central element, raising the level of abstraction beyond programming languages. Soft- ware systems described by the means of modeling languages have certain advantages: they are easier to understand, better to maintain as the described system changes over time, and they can be translated to be used on different target platforms. The latter is carried out by model transfor- mations and code generators. UML is a standardized modeling language that is widely used to express the structure and be- havior of systems. The transformation of systems described by means of UML concepts into executable code has been a tedious task for many years. This is because of the lack of formal se- mantics, which specify how models that conform to the abstract syntax of the modeling language have to be interpreted, which required the developers of code generators to rely on individual interpretations of the meaning of the modeling concepts. This circumstance was addressed with the fUML standard published in 2011. It covers the formal specification of the semantics of a subset of UML consisting of class modeling, activity modeling and action language concepts. Along with the standard, a conforming virtual machine was introduced that allows the user to ex- ecute fUML compliant models. However, up until today, no code generator compliant to fUML has been develped impeding the automated generation of implementation artifacts from fUML models for different target platforms. The first goal of this thesis is to elaborate and implement a code generation approach that generates executable code from fUML compliant models. The main requirement of the generator is to produce code that, when executed, behaves equivalent to the fUML model from which it was generated. The second goal of this thesis is to develop a component that verifies the correctness of the code generated from an input model by comparing its execution to the execution of the model carried out by the fUML virtual machine. Both goals aim to provide support for one of the key features of MDE for fUML: the automated transformation from a higher level of abstraction to a lower level. Thereby, an increase in productivity and efficiency for users of fUML shall be achieved. v Kurzfassung Das Konzept der Abstraktion ist das Fundament der Weiterentwicklung in der Informatik. Kom- plexe Konzepte und Techniken werden auf einer Abstraktionsebene zusammengefasst, auf der aufbauend weitere Techniken entstehen können. Die Geschichte der Programmiersprachen ist dabei keine Ausnahme. Die Assemblersprache ist eine Abstraktion binärer Maschinenbefeh- le, wodurch diese für den Menschen einfacher interpretierbar werden. Bis in die Neunziger mussten Benutzern Speicher manuell bereitstellen und wieder freigeben—eine Aufgabe die mo- derne Sprachen automatisch bewerkstelligen. Modellgetriebene Softwareentwicklung, englisch Model-Driven Engineering (MDE), ist eine Methodik der Softwareentwicklung, in der Modelle das zentrale Element darstellen und das Abstraktionslevel über jenes von Programmiersprachen heben. Softwaresysteme, die mittels Modellen beschrieben werden, haben gewisse Vorteile: sie sind einfacher zu verstehen, sind wenn sich das zugrunde liegende System ändert leichter zu warten und können übersetzt werden, um anschließend auf verschieden Plattformen eingesetzt zu werden. Letztere Aufgabe wird mittels Modelltransformationen und Codegeneratoren durch- geführt. UML ist eine weit verbreitete, standardisierte Modellierungssprache. Sie wird genutzt um die Struktur und das Verhalten von Systemen zu beschreiben. Die Transformation von Systemen, die mittels UML beschrieben sind, zu ausführbarem Code, war lange eine mühselige Aufgabe. Das Fehlen einer formalen Semantik für UML, die angibt wie UML Modell zu interpretieren sind, erforderte es von Entwickler von Codegeneratoren eine individuellen Interpretationen der Bedeutung von Modellierungskonzepten vorzunehmen. Dieser Umstand änderte sich mit der Veröffentlich des fUML-Standards im Jahr 2011. Dieser Standard definiert die formale Seman- tik für einer Teilmenge von UML, bestehend aus Konzepten von Klassen- und Aktivitätsdia- grammen, sowie der UML Action Language. Gemeinsam mit dem fUML Standard wurde eine virtuelle Maschine eingeführt, mit der Benutzer fUML-konforme Modelle ausführen können. Das erste Ziel dieser Diplomarbeit ist die Erarbeitung und Implementierung eines Codegene- rators, der aus fUML-konformen Modellen ausführbaren Code erzeugt. Die wichtigste Anfor- derung ist dabei, dass sich die Ausführung des erzeugten Codes äquivalent zum fUML Modell verhält, von dem er generiert wurde. Das zweite Ziel ist die Entwicklung einer Komponente, die die Korrektheit des generierten Codes verifiziert. Dies soll durch einen Vergleich der Ausfüh- rung des generierten Codes mit der Ausführung des ursprünglichen Modells durch die virtuelle Maschine erfolgen. Beide Ziele streben an, eine wichtige Funktionalität von MDE für fUML bereitzustellen: das automatische Transformieren von einer höheren Abstraktionsstufe zu einer niedrigeren. Dadurch soll eine höhere Produktivität und Effizienz beim Arbeiten mit fUML er- reicht werden. vii Contents 1 Introduction 1 1.1 Motivation . 1 1.2 Problem Statement . 2 1.3 Aim of the Work . 3 1.4 Methodology . 4 1.5 Structure of the Work . 6 2 State of the Art 7 2.1 Code Generation for UML Activity Diagrams . 7 2.2 Code Generation for Behavioral UML Diagrams other than Activity Diagrams . 9 2.3 Code Generators Provided by Commercial UML Tools . 13 2.4 Code Generation for Process Models . 14 2.5 Summary . 15 3 Background 17 3.1 Unified Modeling Language . 17 3.2 Model Driven Architecture . 25 3.3 Foundational Unified Modeling Language . 26 4 Code Generation 33 4.1 Requirements . 33 4.2 Model to Text Transformations . 34 4.3 Code Generation for Class Diagrams . 35 4.4 Code Generation for Activity Diagrams . 38 4.5 Mapping of fUML Actions to Java Code . 47 4.6 Limitations . 69 5 Code Verification 73 5.1 Overview . 73 5.2 Execution Event Tracing Metamodel . 75 5.3 Tracing the Execution of fUML Models . 75 5.4 Tracing the Execution of the Generated Java Code . 79 5.5 Comparing Executions . 81 ix 6 Evaluation 89 6.1 Overview . 89 6.2 Test Suite . 90 6.3 Online Store Case Study . 99 6.4 Summary . 103 7 Conclusion and Future Work 107 7.1 Conclusion . 107 7.2 Future Work . 109 A Implementations 113 List of Figures 114 List of Tables 116 List of Listings 117 Bibliography 119 x CHAPTER 1 Introduction 1.1 Motivation One could argue that every concept in computing is an abstraction of a much more complex concept underneath. The key press on a computer keyboard is an abstraction of the transfer of ones and zeros
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages138 Page
-
File Size-