Results 1 -
8 of
8
Dynamically Composable Collaborations with Delegation Layers
- In Proc. of ECOOP 2002, LNCS
, 2002
"... It has been recognized in several works that a slice of behavior affecting a set of collaborating classes is a better unit of reuse than a single class. Different techniques and language extensions have been suggested to express such slices in programming languages. We propose delegation layers, an ..."
Abstract
-
Cited by 59 (4 self)
- Add to MetaCart
It has been recognized in several works that a slice of behavior affecting a set of collaborating classes is a better unit of reuse than a single class. Different techniques and language extensions have been suggested to express such slices in programming languages. We propose delegation layers, an approach that scales the OO mechanisms for single objects, such as delegation, late binding, and subtype polymorphism, to sets of collaborating objects. Technically, delegation layers combine and generalize delegation and virtual class concepts. Due to their runtime semantics, delegation layers are more flexible than previous compile time approaches like mixin layers.
Aspectual Feature Modules
- IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
, 2008
"... Two programming paradigms are gaining attention in the overlapping fields of software product lines (SPLs) and incremental software development (ISD). Feature-oriented programming (FOP) aims at large-scale compositional programming and feature modularity in SPLs using ISD. Aspect-oriented programmin ..."
Abstract
-
Cited by 47 (34 self)
- Add to MetaCart
Two programming paradigms are gaining attention in the overlapping fields of software product lines (SPLs) and incremental software development (ISD). Feature-oriented programming (FOP) aims at large-scale compositional programming and feature modularity in SPLs using ISD. Aspect-oriented programming (AOP) focuses on the modularization of crosscutting concerns in complex software. Although feature modules, the main abstraction mechanisms of FOP, perform well in implementing large-scale software building blocks, they are incapable of modularizing certain kinds of crosscutting concerns. This weakness is exactly the strength of aspects, the main abstraction mechanisms of AOP. We contribute a systematic evaluation and comparison of FOP and AOP. It reveals that aspects and feature modules are complementary techniques. Consequently, we propose the symbiosis of FOP and AOP and aspectual feature modules (AFMs), a programming technique that integrates feature modules and aspects. We provide a set of tools that support implementing AFMs on top of Java and C++. We apply AFMs to a nontrivial case study demonstrating their practical applicability and to justify our design choices.
Model-View-Controller and Object Teams: A Perfect Match of Paradigms
- In AOSD’03 [2
, 2003
"... From the early days of object-oriented programming, the model-view-controller paradigm has been pursued for a clear design which separates different responsibilities within an interactive application. In contrast to its untyped implementation in Smalltalk, any implementation in a statically typed la ..."
Abstract
-
Cited by 20 (5 self)
- Add to MetaCart
From the early days of object-oriented programming, the model-view-controller paradigm has been pursued for a clear design which separates different responsibilities within an interactive application. In contrast to its untyped implementation in Smalltalk, any implementation in a statically typed language involves certain trade-offs which either blur the clear structure, destroy the intended independence, or introduce undue administrative overhead. Each alternative creates a dierent caricature of the originally crisp architecture. The programming model Object Teams provides a new modeling unit called Team plus a number of binding mechanisms by which a Team and its contained roles can be bound to existing parts of an application. It turns out that these mechanisms fit nicely for implementing a clear model-view -controller design not only for single elements but also for complex structures of GUI elements plus their binding to complex model structures. We furthermore propose to use the model-view-controller paradigm as a benchmark for AOSD approaches, since it combines a set of typical problems concerning the separation and integration of concerns.
Aspect-Oriented Programming with Jiazzi
, 2003
"... We present aspect-oriented programming in Jiazzi. Jiazzi enhances Java with separately compiled, externally-linked code modules called units. Besides making programming in Java generally more modular, units are also effective "aspect" constructs that can separate concerns. The unit-linking metaphor ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
We present aspect-oriented programming in Jiazzi. Jiazzi enhances Java with separately compiled, externally-linked code modules called units. Besides making programming in Java generally more modular, units are also effective "aspect" constructs that can separate concerns. The unit-linking metaphor provides a convenient and explicit way for programmers to explicitly control the inclusion and configuration of code that implements a concern, while separate compilation of units enhances concern independent development and deployment. The expressiveness of concern separation are enhanced by units in two ways. First, classes can be made open to the addition of new fields and methods by multiple units, which enables the direct modularization of concerns that crosscut objects. Second, the signatures of methods and classes used in a unit can be made open to refinement by other units, which makes it easier to integrate concern implementations by isolating them from the naming and calling requirements of shared methods and classes.
A Comparison of Jiazzi and AspectJ for Feature-wise Decomposition
, 2004
"... Feature-wise decomposition is an important approach to building configurable software systems. Although there has been research on the usefulness of particular tools for feature-wise decomposition, there are not many informative comparisons on the relative effectiveness of different tools. In this p ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
Feature-wise decomposition is an important approach to building configurable software systems. Although there has been research on the usefulness of particular tools for feature-wise decomposition, there are not many informative comparisons on the relative effectiveness of different tools. In this paper, we compare AspectJ and Jiazzi, which are two different systems for decomposing Java programs. AspectJ is an aspect-oriented extension to Java, whereas Jiazzi is a component system for Java. To compare these systems, we reimplemented an AspectJ implementation of a highly configurable CORBA Event Service using Jiazzi. Our experience is that Jiazzi provides better support for structuring the system and manipulating features, while AspectJ is more suitable for manipulating existing Java code in non-invasive and unanticipated ways.
A Survey on Versatility for Publish/Subscribe Infrastructures
- Sinnema Sinnema, Sinnema Sinnema, , M. M. and and Deelstra Deelstra, Deelstra
, 2005
"... Current publish/subscribe middleware infrastructures fall short of mechanisms that allow their customization and configuration to comply with the requirements of different application domains. This shortcoming is a consequence of their original design which does not account for mechanisms or approac ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
Current publish/subscribe middleware infrastructures fall short of mechanisms that allow their customization and configuration to comply with the requirements of different application domains. This shortcoming is a consequence of their original design which does not account for mechanisms or approaches that allow the evolution of this kind of services. This survey introduces the concept of versatility in publish/subscribe infrastructures and examines the current approaches to versatility in publish-subscribe middleware as well as approaches to versatility that have been applied in other kinds of middleware and may possibly succeed in the context of publish/subscribe infrastructures. In this context, versatility is defined as a set of properties (such as variability, reuse, dynamism and usability) that allows the customization, extension and compression of middleware. This paper surveys existing and advanced software engineering approaches to address those requirements. A comparative framework on software versatility, as a set of properties, is presented to help researches and practitioners to evaluate and compare the strengths and limitations of such approaches that have been or might be applied to this
Comparative Analysis of Porting Strategies in J2ME Games
- In Proceedings of the 21st IEEE International Conference on Software Maintenance
, 2005
"... Porting is a critical task in mobile device game development. The high diversity of devices requires correspondingly customized versions of a single game. Managing the variabilities among these customized versions while exploring the latent game commonality cannot be solely addressed with a single t ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Porting is a critical task in mobile device game development. The high diversity of devices requires correspondingly customized versions of a single game. Managing the variabilities among these customized versions while exploring the latent game commonality cannot be solely addressed with a single technique. This paper contributes to this task by identifying and analyzing porting challenges, and by evaluating and contrasting existing approaches within industrial-strength case studies of J2ME games. Further, we present lessons learned, proposing more effective guidelines for this process, aiming at improving the quality of the resulting applications and porting process productivity. 1.
Using Mixin Technology to Improve Modularity
"... In object-oriented languages, aspects can be defined by generalizing the idea of a class to that of a mixin. Mixins, which can be implemented as generic types, become aspects when they contain code for multiple classes. In this chapter, we describe mixins and we explain how mixins can be used to def ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In object-oriented languages, aspects can be defined by generalizing the idea of a class to that of a mixin. Mixins, which can be implemented as generic types, become aspects when they contain code for multiple classes. In this chapter, we describe mixins and we explain how mixins can be used to define aspects. We demonstrate the flexibility of mixin programming by prototyping a graphical user interface library that can be configured to run on dissimilar devices. We describe additional language and compiler sup-1 2 Chapter 33 Using Mixin Technology to Improve Modularity port that increases the effectiveness of mixin programming. We conclude by proposing some new ideas about how mixins, and generic types in general, can be better supported in object-oriented languages. One approach to reducing the cost of software is to make software easier to reuse and, in doing so, to reduce the risk and expense of developing new ap-

