TU Darmstadt / ULB / TUprints

Advanced Object-Oriented Language Mechanisms for Variability Management

Gasiūnas, Vaidas (2010)
Advanced Object-Oriented Language Mechanisms for Variability Management.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
PDF
gasiunas-thesis.pdf
Copyright Information: CC BY-NC-ND 2.5 Generic - Creative Commons, Attribution, NonCommercial, NoDerivs .

Download (1MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Advanced Object-Oriented Language Mechanisms for Variability Management
Language: English
Referees: Mezini, Prof. Dr. Mira ; Drossopoulou, Prof. Dr. Sophia
Date: 1 December 2010
Place of Publication: Darmstadt
Date of oral examination: 16 December 2009
Abstract:

Classes are often too small units of modularization. In a lot of cases, a cohesive piece of functionality involves a group of related classes. Although mainstream languages provide class grouping mechanisms, such as packages and inner classes in Java, the typical object-oriented techniques, such as inheritance and subtype polymorphism, are not supported at the scope of such class groups. As a result, variations involving multiple classes must be encoded by variations of individual classes. Such encodings compromise type-safety and produce a considerable amount of glue code, which is often error-prone and not stable. The main statement of this thesis is that by making typical object-oriented techniques available at the scope of a group of classes we can provide a better support for managing variations at that scope. For the purpose of making inheritance and polymorphism available for a group of classes, we rely on the ideas of virtual classes and family polymorphism. A large-scale multiple inheritance is enabled by the propagating mixin composition. In this thesis we present the first implementation of these ideas for Java, and propose improvements to their semantics, namely a more intuitive linearization algorithm for propagating mixin composition and more flexible path-dependent types. We also introduce abstract virtual classes, which increase the advantages of family polymorphism by providing the possibility to describe interfaces for families of classes. Further, we propose a novel concept of dependent classes, which enhances virtual classes in analogous way like multimethods enhance single-dispatch. The multi-dispatch for classes not only enables dispatch of their functionality by multiple constructor parameters, but also generalizes family polymorphism with the possibility to express membership of an object in multiple families. The feasibility of the new concept is validated in two ways. First, we design a concrete language with dependent classes, called DepJ, and implement a type-checker and interpreter for it. Second, we formalize the features of dependent classes in vc^n and DC_C calculi, and verify their soundness and decidability. The expected advantages of virtual classes and dependent classes for variation management are validated by a set of variation scenarios. We explore variations at the scope of individual objects, as well as at the scope of a group of objects. We also investigate interactions of different kinds of variations and analyze specific variation scenarios in the context of object-oriented frameworks. We identify the problems of implementing these scenarios using conventional object-oriented techniques, and show that these problems are resolved by implementations with the advanced techniques. In particular, we show that virtual classes and propagating-mixin composition provide the typical advantages of inheritance for managing variations of a group of objects. Dependent classes provide the typical advantages of multi-dispatch for managing variations of a class. They also generalize the advantages of virtual classes with the possibility to modularize variations of multiple overlapping groups of objects, and provide a better solution for modelling multiple variations of a group of objects.

Alternative Abstract:
Alternative AbstractLanguage

Die Klassen sind oft zu kleine Einheiten für Modularisierung. In vielen Fällen betrifft ein logisch zusamenhängender Teil der Funktionalität eine Gruppe von zusamenhängenden Klassen. Obwohl die etablierten Sprachen verschiedene Mechanismen zur Gruppierung von Klassen anbieten, zum Beispiel Packages und innere Klassen in Java, werden auf der Ebene solcher Gruppierungen objektorientierten Techniken, wie die Vererbung und die Subtyppolymorphie, nicht unterstützt. Demzufolge müssen die Variationen, die mehreren Klassen betreffen, durch die Variationen der einzelnen Klassen kodiert werden. Solche Kodierungen beeinträchtigen aber die Typsicherheit und erzeugen eine beträchtliche Menge an Glue-Code. Die Hauptthese dieser Dissertation ist, dass die Ermöglichung der objektorientierten Techniken auf der Ebene von Gruppen der Klassen eine bessere Unterstützung für die Modularisierung der Variationen auf dieser Ebene erreicht werden kann. Um die Vererbung und die Subtyppolymorphie für eine Gruppe von Klassen zu ermöglichen, greifen wir auf die Ideen der virtuellen Klassen und der Familienpolymorphie zurück. Die Verwendung von Mehrfachvererbung im großem Umfang wird durch propagierende Mixin-Komposition ermöglicht. In dieser Arbeit zeigen wir die erste Implementierung dieser Ideen für Java und schlagen einige Verbesserungen zu ihrer Semantik vor, nämlich einen intuitiveren Lineasierungsalgorithmus für die propagierende Mixin-Komposition und flexiblere pfadabhängige Typen. Wir führen auch das Konzept der abstrakten vituellen Klassen ein, das die Beschreibung der Schittstellen von Klassfamilien ermöglicht und so die Vorteile der Familienpolymorphie steigert. Außerdem schlagen wir das Konzept der abhängigen Klassen vor, der die virtuellen Klassen analog zur Idee des Multi-Dispatch erweitert. Multi-Dispatch von Klassen ermöglicht nicht nur den Dispatch ihrer Funktionalität durch mehrere Konstruktorparameter, sondern erweitert auch die Familien-Polymorphie um die Möglichkeit, die Zugehörigkeit eines Objekts zu mehreren Familien auszudrücken. Die Machbarkeit des neuen Konzepts wurde in zwei Weisen validiert. Erstens haben wir eine konkrete Programmiersprache mit abhängigen Klassen, DepJ, entworfen und implementiert. Zweitens haben wir die Semantik der abhängigen Klassen durch die Kalküle vc^n und DC_C formalisiert, die dann auf Korrektheit und Entscheidbarkeit verifiziert wurden. Die erwarteten Vorteile der virtuellen und der abhängigen Klassen bezüglich der Implementierung von Variationen werden durch eine Reihe verschiedenen Variationsszenarien überprüft. Wir untersuchen die Variationen sowohl auf der Ebene der einzelner Objekten als auch auf der Ebene der Gruppen von Objekten. Des Weiteren erforschen wir die Interaktionen zwischen verschiedenen Arten von Variationen und untersuchen spezifische Variationsszenarien im Kontext der objektorientierten Frameworks. Wir identifizieren die Probleme mit den Implementierungen solcher Szenarien mit den konventionellen objektorientierten Techniken, und zeigen dass diese Probleme durch die fortgeschrittenen Techniken gelöst werden können. Insbesondere zeigen wir dass die virtuellen Klassen und die propagierende Mixin-Komposition die typische Vorteile der Vererbung für die Implementierung von Variationen auf der Ebene einer Gruppe von Objekten bieten. Die abhängigen Klassen stellen die typischen Vorteile des Multi-Dispatch für die Implementierung von Variationen einer Klasse bereit. Sie erweitern auch die Vorteile der virtuellen Klassen um die Möglichkeit, die Variationen von mehreren einander überlappenden Gruppen von Objekten auszudrücken.

German
URN: urn:nbn:de:tuda-tuprints-23531
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
20 Department of Computer Science > Software Technology
Date Deposited: 06 Dec 2010 09:49
Last Modified: 07 Dec 2012 11:58
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/2353
PPN: 229298893
Export:
Actions (login required)
View Item View Item