Besides design and implementation of components, software engineering for component-based systems has to deal with component integration issues whose impact is not restricted to separate components but rather affects the system as a whole. The bigger the software system is, the more difficult it will be to deal with. Aspect-Oriented programming (AOP) addresses these cross-cutting, multi-component concerns. AOP describes system properties and component interactions in terms of so-called aspects. Often, aspects express non-functional component properties, such as resource usage (CPU, memory, network bandwidth), component and object (co-) locations, fault-tolerance, timing behavior, or security settings. Typically, these properties do not manifest in the components’ functional interfaces. Aspects often constrain the design space for a given software system. System designers have to trade off multiple, possibly contradicting aspects affecting a set of components (e.g.; the fault-tolerance aspect may require replication of component data, whereas the security aspect may prohibit it). Component software may be deployed in varying contexts, maybe requiring emphasis on only a few of the aspects considered during design and implementation. Static aspect weavers often require compromises with respect to the generality of services provided by a component system. In this paper, we focus on dynamic management of aspect information during program runtime. We introduce an approach called ”dynamic aspect weaving” to interconnect aspect code and functional code. Using our approach, it is possible to decide at runtime whether objects living inside a component should be instantiated with support for a particular aspect or not. We present a distributed Mandelbrot computation as an example and discuss dynamic aspect weaving as a technique to manage speed versus memory usage trade-offs. We have implemented our approach in the context of the C# language and the Microsoft .NET and the ROTOR environment. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Copyright 2002 ACM X-XXXXX-XX-X/XX/XX ... $5.00.
[1]
Mehmet Aksit,et al.
Composing Multiple Concerns Using Composition Filters
,
2001
.
[2]
Daniel Mahrenholz,et al.
Program instrumentation for debugging and monitoring with AspectC++
,
2002,
Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.
[3]
Andrew Whitechapel,et al.
Inside C
,
2001
.
[4]
Karl J. Lieberherr,et al.
Aspect-oriented programming with adaptive methods
,
2001,
CACM.
[5]
Andreas Polze,et al.
Aspect-oriented programming with C# and .NET
,
2002,
Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.
[6]
Benoit B. Mandelbrot,et al.
Fractal Geometry of Nature
,
1984
.
[7]
Bedir Tekinerdogan,et al.
Solving the modeling problems of object-oriented languages by composing multiple aspects using composition filters
,
1998
.
[8]
Wilson C. Hsieh,et al.
Runtime aspect weaving through metaprogramming
,
2002,
AOSD '02.
[9]
William G. Griswold,et al.
Getting started with ASPECTJ
,
2001,
CACM.
[10]
Bedir Tekinerdogan,et al.
Aspect-Oriented Programming Using Composition-Filters
,
1998,
ECOOP Workshops.
[11]
Gregor Kiczales,et al.
Aspect-oriented programming
,
2001,
ESEC/FSE-9.
[12]
Gregor Kiczales,et al.
Discussing aspects of AOP
,
2001,
CACM.
[13]
Kris Gybels.
Using a logic language to express cross-cutting through dynamic joinpoints
,
2002
.
[14]
Laurence Duchien,et al.
JAC: A Flexible Solution for Aspect-Oriented Programming in Java
,
2001,
Reflection.