Please use this identifier to cite or link to this item: http://dx.doi.org/10.14279/depositonce-3887
Main Title: Modularisierung und Wiederverwendung durch generische Klassen in Object Teams
Translated Title: Modularization and reuse by generic classes in object teams
Author(s): Mertgen, Andreas
Advisor(s): Jähnichen, Stefan
Referee(s): Jähnichen, Stefan
Aßmann, Uwe
Granting Institution: Technische Universität Berlin, Fakultät IV - Elektrotechnik und Informatik
Type: Doctoral Thesis
Language: German
Language Code: de
Abstract: Modularisierung und Wiederverwendung sind von wesentlicher Bedeutung für die Produktivität in der Softwareentwicklung. Die rollenorientierte Programmierung ergänzt die Konzepte der objektorientierten Programmierung mit dem Ziel, die Modularisierung zu fördern. Die Programmiersprache Object Teams, eine rollenorientierte Erweiterung der Sprache Java, bietet eine gezielte Unterstützung der Modularisierung von Kollaborationen zwischen Objekten. Eine Klasse bzw. ein Objekt kann unterschiedliche Rollen in separaten Kontexten annehmen. Die Abbildung von Rollen und Kontext wird in Object Teams durch spezielle Klassen unterstützt. Eine Rollenklasse definiert dabei eine der Vererbung ähnelnde Beziehung zu einer sogenannten Basisklasse, welche die Rolle spielt. Der Rollenmechanismus erlaubt einerseits eine feinere und flexiblere Modularisierung kontextspezifischer Daten und Funktionen, führt aber andererseits auch zu einer starken Kopplung der beteiligten Klassen und wirkt sich damit negativ auf die Wiederverwendbarkeit aus. Ursache dafür ist die fehlende Möglichkeit zur Abstraktion der Bindung zwischen Rolle und Basis. Das Ziel dieser Arbeit ist es, die starke Kopplung zwischen den beteiligten Klassen zu reduzieren und damit deren Flexibilität und deren Wiederverwendbarkeit zu fördern. Als Lösungsansatz werden Mechanismen zur Abstraktion von Klassen eingeführt, mit denen vor allem strukturelle Abhängigkeiten zwischen Rollen- und Basisklassen in generischer Form ausgedrückt werden können. Solche generischen Klassen repräsentieren Templates, die je nach Anwendung, in der sie zum Einsatz kommen, unterschiedlich ausgeprägt werden. Im Quellcode der Klasse können dazu an ausgewählten Punkten Metavariablen anstelle von statischen Definitionen verwendet werden. Die Metavariablen dienen dabei als Platzhalter für spezifische Programmelemente wie Klassen und Methoden und stellen eine Form der Metaprogrammierung dar. Zur konkreten Definition der Metavariablen wird eine deklarative Beschreibungssprache nach Art der logischen Programmierung in Prolog eingeführt. Diese erlaubt es, spezifische Programmelemente anhand ihrer strukturellen Eigenschaften auszuwählen – unabhängig von ihren Bezeichnern. Die Funktionalität einer Rolle kann so in generischer Form definiert werden. Die spezifischen Basisklassen und deren Methoden, die mit der Rolle für eine konkrete Anwendung verknüpft werden sollen, werden automatisch anhand der deklarativen Beschreibung identifiziert. Die konkrete Ausprägung einer generischen Klasse wird für jede Anwendung neu bestimmt, indem Metavariablen in Abhängigkeit vom jeweiligen Kontext durch spezifische Programmelemente ersetzt werden. Im Rahmen der Verarbeitung des Programms werden die generischen Anteile des Codes zu ausführbarem Code transformiert. In dieser Arbeit werden zunächst die Probleme von Object Teams hinsichtlich Modularisierung und Wiederverwendbarkeit analysiert. Darauf aufbauend wird dann die neu entwickelte Spracherweiterung Generic Object Teams mit Syntax und Semantik vorgestellt, die Object Teams um die beschriebenen Möglichkeiten zur Metaprogrammierung erweitert. Bestandteil dieser Erweiterung ist die Abbildung und Auswertung des Programms in Prolog. Der Effekt der neuen Sprachmittel auf die Modularisierung und die Wiederverwendbarkeit wird anhand einer Studie zu Entwurfsmuster-Anwendungen evaluiert. Die Arbeit zeigt, dass sich die Metaprogrammierung mit Prolog erfolgreich in Object Teams integrieren lässt. Der entwickelte Ansatz wirkt sich einerseits positiv auf die Modularisierung und die Wiederverwendbarkeit aus, führt andererseits aber auch zu einer gesteigerten Komplexität der Programme. Mit der Komplexität steigen gleichermaßen die Anforderungen an den Programmierer, was die Anwendbarkeit des Ansatzes einschränkt. Insgesamt sehen wir in dem Ansatz einen nützlichen Beitrag für die rollenorientierte Programmierung in Object Teams, der auch als Anregung und Grundlage für weitere Entwicklungen in diesem Bereich dienen kann.
Modularization and reuse are essential for the productivity of software development. Role-oriented programming complements the concepts of object-oriented programming with the goal to improve modularization. The programming language Object Teams, a role-oriented extension of the Java language, provides specific support for modularization of collaborations between objects. A class or object can play different roles in separate contexts. The realization of roles and context is supported in Object Teams through special classes. A role class defines a relationship, which is similar to inheritance, to a so called base class that plays the role. Roleplaying on the one hand allows a finer and more flexible modularization of context-specific data and functions, but on the other hand also leads to a strong coupling of the classes involved and thus has a negative impact on the reusability. This is due to the inability to abstract the binding between role and base. The goal of this work is to reduce the strong coupling between the classes involved and to improve both their flexibility and their reusability. Our approach introduces mechanisms for the abstraction of classes, which primarily allow expressing structural dependencies between role and base classes in a generic form. Such generic classes represent templates that are transformed depending on the specific application in which they are used. Metavariables can be used instead of static definitions in selected positions of the source code of the class. Metavariables represent placeholders for specific program elements such as classes and methods and provide a form of metaprogramming. A declarative description language, which is similar to logic programming in Prolog, is introduced for the specific definition of the metavariables. This allows the programmer to select specific program elements based on their structural properties – regardless of their identifiers. This way the function of a role may be defined in a generic form. The specific base classes and their methods that are to be bound to the role for a specific application are automatically identified based on the declarative description. The concrete form of a generic class is created for each new application by replacing the metavariables with specific program elements, depending on the respective context. As part of the compilation process of the program, the generic elements will be transformed into executable code. In this work we analyze the problems of Object Teams regarding modularization and reusability. Based on the analysis, the newly developed language extension Generic Object Teams, which extends Object Teams to include the options described for metaprogramming, is presented with syntax and semantics. The extension includes the mapping and evaluation of the program in Prolog. The effect on the modularization and reusability of the new language features will be evaluated with a study of design pattern applications. This work shows that metaprogramming in Prolog can be successfully integrated into Object Teams. The developed approach improves the modularization and reusability, but also leads to an increased complexity of programs. The complexity raises the demands on the programmer and therefore limits the applicability of the approach. In summary, we consider the approach a useful contribution for role-oriented programming in Object Teams, which can serve as an inspiration and a basis for further developments in this area.
URI: urn:nbn:de:kobv:83-opus4-45373
http://depositonce.tu-berlin.de/handle/11303/4184
http://dx.doi.org/10.14279/depositonce-3887
Exam Date: 13-Dec-2013
Issue Date: 19-Dec-2013
Date Available: 19-Dec-2013
DDC Class: 004 Datenverarbeitung; Informatik
Subject(s): Generizität
Modularisierung
Prolog
Rollenorientierte Programmierung
Genericity
Modularization
Object teams
Role-oriented programming
Usage rights: Terms of German Copyright Law
Appears in Collections:Technische Universität Berlin » Fakultäten & Zentralinstitute » Fakultät 4 Elektrotechnik und Informatik » Institut für Softwaretechnik und Theoretische Informatik » Publications

Files in This Item:
File Description SizeFormat 
mertgen_andreas.pdf1,85 MBAdobe PDFThumbnail
View/Open


Items in DepositOnce are protected by copyright, with all rights reserved, unless otherwise indicated.