Modularisierung und Wiederverwendung durch generische Klassen in Object Teams

dc.contributor.advisorJähnichen, Stefanen
dc.contributor.authorMertgen, Andreasen
dc.contributor.grantorTechnische Universität Berlin, Fakultät IV - Elektrotechnik und Informatiken
dc.contributor.refereeJähnichen, Stefanen
dc.contributor.refereeAßmann, Uween
dc.date.accepted2013-12-13
dc.date.accessioned2015-11-20T22:59:57Z
dc.date.available2013-12-19T12:00:00Z
dc.date.issued2013-12-19
dc.date.submitted2013-12-16
dc.description.abstractModularisierung 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.de
dc.description.abstractModularization 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.en
dc.identifier.uriurn:nbn:de:kobv:83-opus4-45373
dc.identifier.urihttps://depositonce.tu-berlin.de/handle/11303/4184
dc.identifier.urihttp://dx.doi.org/10.14279/depositonce-3887
dc.languageGermanen
dc.language.isodeen
dc.rights.urihttp://rightsstatements.org/vocab/InC/1.0/en
dc.subject.ddc004 Datenverarbeitung; Informatiken
dc.subject.otherGenerizitätde
dc.subject.otherModularisierungde
dc.subject.otherPrologde
dc.subject.otherRollenorientierte Programmierungde
dc.subject.otherGenericityen
dc.subject.otherModularizationen
dc.subject.otherObject teamsen
dc.subject.otherRole-oriented programmingen
dc.titleModularisierung und Wiederverwendung durch generische Klassen in Object Teamsde
dc.title.translatedModularization and reuse by generic classes in object teamsen
dc.typeDoctoral Thesisen
dc.type.versionpublishedVersionen
tub.accessrights.dnbfree*
tub.affiliationFak. 4 Elektrotechnik und Informatik::Inst. Softwaretechnik und Theoretische Informatikde
tub.affiliation.facultyFak. 4 Elektrotechnik und Informatikde
tub.affiliation.instituteInst. Softwaretechnik und Theoretische Informatikde
tub.identifier.opus44537
tub.publisher.universityorinstitutionTechnische Universität Berlinen

Files

Original bundle
Now showing 1 - 1 of 1
Loading…
Thumbnail Image
Name:
mertgen_andreas.pdf
Size:
1.81 MB
Format:
Adobe Portable Document Format

Collections