Modules for Hierarchical and Crosscutting Models

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...

Full description

Bibliographic Details
Main Author: Ostermann, Klaus
Format: Others
Language:English
en
Published: 2003
Online Access:http://tuprints.ulb.tu-darmstadt.de/346/1/main.pdf
Ostermann, Klaus <http://tuprints.ulb.tu-darmstadt.de/view/person/Ostermann=3AKlaus=3A=3A.html> : Modules for Hierarchical and Crosscutting Models. [Online-Edition] Technische Universität, Darmstadt [Ph.D. Thesis], (2003)
id ndltd-tu-darmstadt.de-oai-tuprints.ulb.tu-darmstadt.de-346
record_format oai_dc
collection NDLTD
language English
en
format Others
sources NDLTD
description 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.
author Ostermann, Klaus
spellingShingle Ostermann, Klaus
Modules for Hierarchical and Crosscutting Models
author_facet Ostermann, Klaus
author_sort Ostermann, Klaus
title Modules for Hierarchical and Crosscutting Models
title_short Modules for Hierarchical and Crosscutting Models
title_full Modules for Hierarchical and Crosscutting Models
title_fullStr Modules for Hierarchical and Crosscutting Models
title_full_unstemmed Modules for Hierarchical and Crosscutting Models
title_sort modules for hierarchical and crosscutting models
publishDate 2003
url http://tuprints.ulb.tu-darmstadt.de/346/1/main.pdf
Ostermann, Klaus <http://tuprints.ulb.tu-darmstadt.de/view/person/Ostermann=3AKlaus=3A=3A.html> : Modules for Hierarchical and Crosscutting Models. [Online-Edition] Technische Universität, Darmstadt [Ph.D. Thesis], (2003)
work_keys_str_mv AT ostermannklaus modulesforhierarchicalandcrosscuttingmodels
_version_ 1718423872883130368
spelling ndltd-tu-darmstadt.de-oai-tuprints.ulb.tu-darmstadt.de-3462017-03-17T06:34:27Z http://tuprints.ulb.tu-darmstadt.de/346/ Modules for Hierarchical and Crosscutting Models Ostermann, Klaus 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. 2003-07-11 Ph.D. Thesis PeerReviewed application/pdf eng only the rights of use according to UrhG http://tuprints.ulb.tu-darmstadt.de/346/1/main.pdf Ostermann, Klaus <http://tuprints.ulb.tu-darmstadt.de/view/person/Ostermann=3AKlaus=3A=3A.html> : Modules for Hierarchical and Crosscutting Models. [Online-Edition] Technische Universität, Darmstadt [Ph.D. Thesis], (2003) http://elib.tu-darmstadt.de/diss/000346 en info:eu-repo/semantics/doctoralThesis info:eu-repo/semantics/openAccess