Designating join points in Compose * - a predicate - based superimposition selector language for
نویسندگان
چکیده
Aspect Oriented Programming is an increasingly popular approach used to increase the modu-larity of applications. The Compose* project implements an aspect oriented programming language based on the .NET platform. By using the Common Language Infrastructure defined by .NET it is independent of a particular implementation language. Using Compose*, it is possible to define concerns that superimpose filtermodules on existing base classes. Filtermodules can intercept and modify message calls, thus enabling concerns to change the existing behaviour of an application. To define where filtermodules should be superimposed, Compose* uses a superimposition selector language. Problems with the current selector language are its limited expressiveness and the tight coupling between selector expressions and base classes, thus impeding the maintainability and evolvability of applications. This thesis describes a new superimposition selector language based on predicate logic. Selectors written in this language specify where filtermodules have to be superimposed based on the static structure of an application. The selector language is independent of any implementation language because it uses an abstract language model to represent the language model used in Compose*. Additionally, the selector language implements support for metadata annotations, a feature found in recent programming languages such as Java and C#. Annotations can be attached in the source of base classes and used as a selection criterion in selector expressions, allowing for selection based on design information rather than application structure or syntax. This also removes the tight coupling between selector expressions and base classes and addresses the scattering of annotations over reusable base classes. The combination of selection based on annotations and the superimposition of annotations allows for the derivation of annotations, a mechanism that removes the need to manually enumerate where annotations should be superimposed. However, it also introduces the possibility of dependencies between selectors. This can lead to conflicts, as different orders of evaluating the selectors and superimposing annotations can lead to different results. In addition, circular dependencies could potentially lead to non-termination of the selector evaluation mechanism. An algorithm is presented to handle the superimposition of annotations and evaluation of selectors in a correct order. The algorithm also detects dependency conflicts.
منابع مشابه
Composing Aspects at Shared Join Points
Aspect-oriented languages provide means to superimpose aspectual behavior on a given set of join points. It is possible that not just a single, but several units of aspectual behavior need to be superimposed on the same join point. Aspects that specify the superimposition of these units are said to "share" the same join point. Such shared join points may give rise to issues such as determining ...
متن کاملComposing Aspects at Shared
Aspect-oriented languages provide means to superimpose aspectual behavior on a given set of join points. It is possible that not just a single, but several units of aspectual behavior need to be superimposed on the same join point. Aspects that specify the superimposition of these units are said to "share" the same join point. Such shared join points may give rise to issues such as determining ...
متن کاملIntroduction and Derivation of Annotations in AOP Applying Expressive Pointcut Languages to Introductions
Meta-data annotations and AOP are a powerful combination. Several aspect-oriented languages already support the use of annotations as a selection criterion in pointcut designators. Some languages also support the introduction of annotations using aspect-oriented techniques. This paper describes a combination of these techniques as they are implemented in Compose*, our aspect-oriented language. ...
متن کاملReasoning about Behavioral Conflicts between Aspects
Aspects have been successfully promoted as a means to improve the modularization of software in the presence of crosscutting concerns. The socalled aspect interference problem is considered to be one of the remaining challenges of aspect-oriented software development: aspects may interfere with the behavior of the base code or other aspects. Especially interference between aspects is difficult ...
متن کاملSpatial Queries with Two kNN Predicates
The widespread use of location-aware devices has led to countless location-based services in which a user query can be arbitrarily complex, i.e., one that embeds multiple spatial selection and join predicates. Amongst these predicates, the k-Nearest-Neighbor (kNN) predicate stands as one of the most important and widely used predicates. Unlike related research, this paper goes beyond the optimi...
متن کامل