Advanced object-oriented language mechanisms for variability management [Elektronische Ressource] / vorgelegt von Vaidas Gasiūnas
303 pages
English

Découvre YouScribe en t'inscrivant gratuitement

Je m'inscris

Advanced object-oriented language mechanisms for variability management [Elektronische Ressource] / vorgelegt von Vaidas Gasiūnas

Découvre YouScribe en t'inscrivant gratuitement

Je m'inscris
Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus
303 pages
English
Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus

Description

Advanced Object-Oriented LanguageMechanisms for Variability ManagementVom Fachbereich Informatik der Technischen Universit at Darmstadt genehmigteDissertationzur Erlangung des akademischen Grades einesDoktor-Ingenieurs (Dr.-Ing.)vorgelegt vonMagister der Informatik Vaidas Gasiunasgeboren in Paneve_zys, LitauenReferent: Prof. Dr. Mira MeziniKorreferent: Prof. Dr. Sophia DrossopoulouDatum der Einreichung: 25.11.2009 der mundlic hen Prufung: 16.12.2009Erscheinungsjahr 2010Darmstadt D17iiAbstractDecomposition of software into components is usually not su cient to achieve a high-degree of reusability, because a component seldom completely ts to the needs of aparticular use, and needs to be adapted to speci c requirements and the technical contextof that use. Thus, in order to increase reusability of components, they must be madecon gurable and adaptable, or in other words they must support a certain degree ofvariation.Object-oriented techniques, in particular inheritance and subtype polymorphism, facili-tate modular variability management. Subtype polymorphism can be used to hide vari-ations of an object behind stable inherfaces and bind them dynamically. Inheritance canmodularize unanticipated variations and variations a ecting interfaces of objects. Themodularized variations can be combined using some form of multiple inheritance. Multi-dispatch of methods enables modularization and dynamic binding of multi-dimensionalvariation.

Sujets

Informations

Publié par
Publié le 01 janvier 2010
Nombre de lectures 17
Langue English
Poids de l'ouvrage 1 Mo

Extrait

Advanced Object-Oriented Language
Mechanisms for Variability Management
Vom Fachbereich Informatik der Technischen Universit at Darmstadt genehmigte
Dissertation
zur Erlangung des akademischen Grades eines
Doktor-Ingenieurs (Dr.-Ing.)
vorgelegt von
Magister der Informatik Vaidas Gasiunas
geboren in Paneve_zys, Litauen
Referent: Prof. Dr. Mira Mezini
Korreferent: Prof. Dr. Sophia Drossopoulou
Datum der Einreichung: 25.11.2009 der mundlic hen Prufung: 16.12.2009
Erscheinungsjahr 2010
Darmstadt D17iiAbstract
Decomposition of software into components is usually not su cient to achieve a high-
degree of reusability, because a component seldom completely ts to the needs of a
particular use, and needs to be adapted to speci c requirements and the technical context
of that use. Thus, in order to increase reusability of components, they must be made
con gurable and adaptable, or in other words they must support a certain degree of
variation.
Object-oriented techniques, in particular inheritance and subtype polymorphism, facili-
tate modular variability management. Subtype polymorphism can be used to hide vari-
ations of an object behind stable inherfaces and bind them dynamically. Inheritance can
modularize unanticipated variations and variations a ecting interfaces of objects. The
modularized variations can be combined using some form of multiple inheritance. Multi-
dispatch of methods enables modularization and dynamic binding of multi-dimensional
variation.
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
rst implementation of these ideas for Java, and propose improvements to their seman-
tics, namely a more intuitive linearization algorithm for propagating mixin composition
and more exible path-dependent types. We also introduce abstract virtual classes, which
iiiincrease 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 parame-
ters, but also generalizes family polymorphism with the possibility to express member-
ship 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
ndependent classes in vc and DC calculi, and verify their soundness and decidability.C
A further development of dependent classes, so-called second-order dependent classes
combines parameterization of classes by objects and by types and provides the advan-
tages of dependent classes for generic classes. In particular, they make it possible to
vary the functionality of a generic class with respect to its type parameters, and to de-
ne such variations in a modular way. Abstraction from such variations in the client
code and their dynamic binding is enabled by representing types as runtime values and
supporting dynamic dispatch by such values.
The expected advantages of virtual classes and dependent classes for variation manage-
ment 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 di erent kinds of variations and analyze speci c 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.
ivZusammenfassung
Die Zerlegung von Software in Komponenten ist oft nicht ausreichend um einen ho-
hen Wiederverwendbarkeitsgrad zu erreichen, weil eine Komponente selten genau den
Bedurfnissen einer konkreten Verwendung entspricht und deswegen an die speziellen An-
forderungen und den technischen Kontext dieser Verwendung angepasst werden muss.
Um folglich die Wiederverwendbarkeit der Komponenten zu erh ohen, mussen sie kon-
gurierbar und anpassungsf ahig gemacht werden, oder, anders gesagt, sie mussen einen
bestimmten Grad an Variabiliatt unterstutzen.
Die Modularisierung der Variabilit at wird duch die objektorientierten Techniken, inbeson-
dere durch die Vererbung und die Subtyppolymorphie, unterstutzt. Die Subtyppolymor-
phie macht es m oglich, die Variationen eines Objekts hinter stabilen Schnittstellen zu
verbergen und sie dynamisch zu binden. Die Vererbung ist besonders geeignet zur Modu-
larisierung der unvorhergesehenen Variationen und der Variationen, die die Schnittstellen
der Objekte beein ussen. Die modulariserten Variationen k onnen mittels einer Form der
Mehrfach-Vererbung kombiniert werden. Die Multi-Methoden erm oglichen die Modular-
isierung und das dynamische Binden einer mehrdimensionalen Variation.
Die Klassen sind oft zu kleine Einheiten fur Modularisierung. In vielen F allen betri t ein
logisch zusamenh angender Teil der Funktionalit at eine Gruppe von zusamenh angenden
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 unterstutzt. Demzufolge mussen die Variationen, die
mehreren Klassen betre en, durch die Variationen der einzelnen Klassen kodiert wer-
den. Solche Kodierungen beeintr achtigen aber die Typsicherheit und erzeugen eine
betr achtliche Menge an Glue-Code.
Die Hauptthese dieser Dissertation ist, dass die Erm oglichung der objektorientierten
Techniken auf der Ebene von Gruppen der Klassen eine bessere Unterstutzung fur die
Modularisierung der Variationen auf dieser Ebene erreicht werden kann.
Um die Vererbung und die Subtyppolymorphie fur eine Gruppe von Klassen zu erm oglichen,
greifen wir auf die Ideen der virtuellen Klassen und der Familienpolymorphie zuruc k.
Die Verwendung von Mehrfachvererbung im gro em Umfang wird durch propagierende
Mixin-Komposition erm oglicht. In dieser Arbeit zeigen wir die erste Implementierung
vdieser Ideen fur Java und schlagen einige Verbesserungen zu ihrer Semantik vor, n amlich
einen intuitiveren Lineasierungsalgorithmus fur die propagierende Mixin-Komposition
und exiblere pfadabh angige Typen. Wir fuhren auch das Konzept der abstrakten
vituellen Klassen ein, das die Beschreibung der Schittstellen von Klassfamilien erm oglicht
und so die Vorteile der Familienpolymorphie steigert.
Au erdem schlagen wir das Konzept der abh angigen Klassen vor, der die virtuellen
Klassen analog zur Idee des Multi-Dispatch erweitert. Multi-Dispatch von Klassen
erm oglicht nicht nur den Dispatch ihrer Funktionalit at durch mehrere Konstruktor-
parameter, sondern erweitert auch die Familien-Polymorphie um die M oglichkeit, die
Zugeh origkeit eines Objekts zu mehreren Familien auszudruc ken. Die Machbarkeit des
neuen Konzepts wurde in zwei Weisen validiert. Erstens haben wir eine konkrete Pro-
grammiersprache mit abh angigen Klassen, DepJ, entworfen und implementiert. Zweit-
nens haben wir die Semantik der abh angigen Klassen durch die Kalkule vc und DCC
formalisiert, die dann auf Korrektheit und Entscheidbarkeit veri ziert wurden.
Eine Weiterentwicklung der abh angigen Klassen, sogennante abh angige Klassen zweiter
Ordnung, vereinigen die Parameterisierung der Klassen durch Objekte und durch Typen
und stellen die Vorteile der abh angigen Klassen auch fur die generischen Klassen bereit.
Insbesondere machen sie es m oglich, die Variationen der Funktionalit at einer generischen
Klasse bezuglic h ihrer Typparameter

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents