TU Darmstadt / ULB / TUprints

Modules for Hierarchical and Crosscutting Models

Ostermann, Klaus (2003)
Modules for Hierarchical and Crosscutting Models.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
PDF
main.pdf
Copyright Information: In Copyright.

Download (1MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Modules for Hierarchical and Crosscutting Models
Language: English
Referees: Mezini, Prof. Dr. Mira ; Kiczales, Prof. Gregor
Advisors: Mezini, Prof. Dr. Mira
Date: 11 July 2003
Place of Publication: Darmstadt
Date of oral examination: 9 July 2003
Abstract:

Good separation of concerns in software is the key for managing growing complexity. The most important task of programming languages with respect to this goal is to provide means to express the mental models of the domain experts as directly as possible in the programming language. Since the advent of `structured programming', programming languages feature modules for hierarchical models: We can view a software system at different levels of abstraction, based on whether we look at the interface of a module or zoom into the implementation of the module and the interfaces/implementations of the next lower-level modules. The possibility to view and implement a software system on different levels of detail has greatly improved the quality of software. An important insight of recent years was the identification of so-called crosscutting concerns - concerns which cannot be localized in a given module structure or cannot be localized simultaneouly with other concerns. Programming languages with explicit support for crosscutting concerns have already been proposed and implemented but this branch of language design is at the very beginning. This is the context within which this thesis tries to improve the state-of-the-art. Based on the most successfull paradigm for separation of concerns, object-oriented programming, a trio of proposals is described that refines and generalizes the conventional constructs for modularization and composition with respect to both hierarchical and crosscutting concerns. The first two proposals deal with modules for hierarchical models. Firstly, the thesis goes back to the foundations of object-oriented programming and reasons about the relation between the two fundamental OO concepts for hierarchical decomposition: Inheritance and aggregation. There is a well-known tension between these two concepts: Inheritance enables incremental specification whereas aggregation allows polymorphic composition at runtime. Frequently, however, one needs a mixture of properties from both aggregation and inheritance. Compound references are proposed, a new abstraction for object references that unifies aggregation, inheritance and delegation and provides explicit linguistic means for expressing and combining individual composition properties on-demand. The second approach explores how the means for hierarchical decomposition can be generalized to work on sets of collaborating classes, motivated by the observation that a slice of behaviour affecting a set of collaborating classes is a better unit of organization and reuse than single classes. Different techniques and language extensions have been suggested to express such slices in programming languages but none of them fully fits in the conceptual framework of object technology. Delegation layers are a new approach to cope with these problems. It scales the object-oriented mechanisms for single objects, such as delegation, late binding, and subtype polymorphism, to sets of collaborating objects. The third approach of the thesis is devoted to language concepts for representing crosscutting models, meaning independent models that represent different overlapping views of a common system. A crosscutting concern is seen as a concern that belongs to a different crosscutting model. Keeping crosscutting models independent allows the programmer to reason about each concern in isolation. The Caesar model is proposed, where ideas for hierarchical decomposition from the first two parts of the thesis are used and extended in order to provide means for representing and composing independent crosscutting models. Caesar's strengths are in the reuse and componentization of aspects. The notion of aspectual polymorphism as a generalization of subtype polymorphism to crosscutting models is introduced and a novel concept for dynamic deployment of aspects is proposed.

Alternative Abstract:
Alternative AbstractLanguage

Eine gute Separierung der verschiedenen Aspekte eines Programms ist der Schlüssel, um mit wachsender Komplexität umzugehen. Die wichtigste Aufgabe, die Programmiersprachen in Bezug auf dieses Ziel erfüllen sollten, ist, Mittel zur Verfügung zu stellen, um die mentalen Modelle der Domainexperten so direkt wie möglich in der Programmiersprache auszudrücken zu können. Seit dem Anbruch der `Strukturierten Programmierung' bieten Programmiersprachen Modulkonstrukte für hierarchische Modelle: Wir können ein Softwaresystem auf unterschiedlichen Abstraktionsebenen betrachten, je nachdem, ob wir nur die Schnittstelle eines Moduls oder auch seine Implementation und die Schnittstellen/Implementierungen der nächsten tieferliegenden Module betrachten. Die Möglichkeit, ein Softwaresystem auf unterschiedlichen Detailebenen zu betrachten und zu implementieren, hat die Qualität von Software entscheidend verbessert. Eine wichtige Erkenntnis der vergangenen Jahre war die Identifizierung von sogenannten crosscutting concerns oder querschneidenden Aspekten - Aspekte, die in einer gegebenen Modulstruktur oder simultan mit anderen Aspekten im Programmtext nicht lokalisiert werden können. Erste Programmiersprachen mit expliziter Unterstützung für `crosscutting concerns' wurden bereits entwickelt, doch dieser Forschungszweig ist noch im Entstehen. Dies ist der Kontext, in dem diese Arbeit versucht, den gegenwärtigen Stand der Technik zu verbessern. Basierend auf dem erfolgreichsten Paradigma für die Separierung von Aspekten, objekt-orientierter Programmierung, werden drei Ansätze beschrieben, die die konventionellen Konzepte für Modularisierung und Komposition in Bezug auf hierarchische und querschneidende Aspekte verbessern. Die ersten beiden Ansätze behandeln Module für hierarchische Modelle. Zunächst geht die Arbeit zurück zu den Grundlagen der objekt-orientierten Programmierung und untersucht die Beziehung zwischen den beiden fundamentalen objekt-orientierten Konzepten für hierarchische Zerlegung: Vererbung und Aggregation. Es gibt eine wohlbekannte Spannung zwischen diesen beiden Konzepten: Vererbung ermöglicht inkrementelle Spezifikation, während Aggregation polymorphe Komposition zur Laufzeit ermöglicht. Häufig jedoch benötigt man eine Mixtur der Eigenschaften von Aggregation und Vererbung. Ein Modell names Compound References wird vorgeschlagen. Eine Compound Reference ist eine neue Abstraktion für Objektreferenzen, die Aggregation, Vererbung und Delegation vereinheitlicht und explizite Sprachunterstützung dafür bietet, deklarativ je nach Bedarf gewünsche Kompositionseigenschaften festzulegen. Im zweiten Ansatz geht es darum, wie die Mittel für hierarchische Dekomposition verallgemeinert werden können, um auch auf Mengen zusammenarbeitender Klassen zu arbeiten. Dies wird durch die Beobachtung motiviert, daß ein Modul, das das Verhalten mehrerer zusammenarbeitender Abstraktionen definiert, eine besser wiederverwendbare Organisationseinheit ist als einzelne Klassen. Unterschiedliche Techniken und Spracherweiterungen wurden bereits vorgeschlagen, um solche Module in Programmiersprachen ausdrücken zu können, doch keiner dieser Vorschläge passt vollständig in den konzeptuellen Rahmen der objekt-orientierten Programmierung. Delegation Layers sind ein neuer Ansatz, um mit diesem Problem umzugehen. In diesem Ansatz werden die objekt-orientierten Mechanismen für einzelne Objekte, zum Beispiel Delegation, späte Bindung und Subtyp-Polymorphie, auf Mengen zusammenarbeitender Klassen verallgemeinert. Der dritte Ansatz dieser Arbeit behandelt Sprachkonzepte zur Repräsentation von querschneidenden Modellen. Mit `querschneidenden Modellen' sind unabhängige Modelle gemeint, die unterschiedliche, sich überschneidende Sichten auf ein gemeinsames System repräsentieren. Ein querschneidender Aspekt wird als Aspekt gesehen, der zu einem anderen querschneidenden Modell gehört. Wenn diese querschneidenden Modelle unabhängig voneinander gehalten werden, wird es möglich, jeden Aspekt getrennt von den anderen zu behandeln. Das Caesar Modell wird vorgeschlagen, in dem die in den vorherigen Teilen vorgeschlagenen Ideen für hierarchische Dekomposition benutzt und erweitert werden, um die Repräsentation und Kombination unabhängiger querschneidender Modelle zu ermöglichen. Die Stärken von Caesar liegen in der Wiederverwendbarkeit und Komponentisierung von Aspekten sowie in der Möglichkeit, Aspekte polymorph zu benutzen. Das Konzept der Aspekt-Polymorphie wird als Verallgemeinerung der Subtyp-Polymorphie auf querschneidende Modelle eingeführt, und ein neues Konzept für den dynamisches Einsatz von Aspekten wird vorgeschlagen.

German
URN: urn:nbn:de:tuda-tuprints-3462
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
Date Deposited: 17 Oct 2008 09:21
Last Modified: 07 Dec 2012 11:49
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/346
PPN:
Export:
Actions (login required)
View Item View Item