A+

Crosscutting Revision Control System

Large and medium scale software projects often require a source code revision control (RC) system. Unfortunately, RC systems do not perform well with obliviousness and quantification found in aspect-oriented code. When classes are oblivious to …

Cedalion: A Language for Language Oriented Programming

Language Oriented Programming (LOP) is a paradigm that puts domain specific programming languages (DSLs) at the center of the software development process. Currently, there are three main approaches to LOP: (1) the use of internal DSLs, implemented …

Modeling Aspect Mechanisms: A Top-Down Approach

A plethora of aspect mechanisms exist today. All of these diverse mechanisms integrate concerns into artifacts that exhibit crosscutting structure. What we lack and need is a characterization of the design space that these aspect mechanisms inhabit …

Pluggable AOP: Designing Aspect Mechanisms for Third-party Composition

Studies of Aspect-Oriented Programming (AOP) usually focus on a language in which a specific aspect extension is integrated with a base language. Languages specified in this manner have a fixed, non-extensible AOP functionality. This paper argues the …

Pluggable Reflection: Decoupling Meta-Interface and Implementation

Reflection remains a second-class citizen in current programming models, where it's assumed to be imperative and tightly bo und to its implementation. In contrast, most object-oriented APIs all ow interfaces to vary independently of their …

A Case for Statically Executable Advice: Checking the Law of Demeter with AspectJ

We define a generic join point model for checking the Law of Demeter (LoD). Join points are trees, pointcuts are predicates over join points, and advice is checked statically similar to how declare warning is checked in AspectJ. We illustrate how a …

Aspects and Polymorphism in AspectJ

There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for object-oriented programming, and it is worthwhile to consider …

Designing Components versus Objects: A Transformational Approach

A good object-oriented design does not necessarily make a good component-based design, and vice versa. What design principles do components introduce? This paper examines component-based programming and how it expands the design space in the context …

Tiling Design Patterns: A Case Study Using the Interpreter Pattern

Environmental Acquisition — A New Inheritance-Like Abstraction Mechanism

The class of an object is not necessarily the only determiner of its runtime behaviour. Often it is necessary to have an object behave differently depending upon the other objects to which it is connected. However, as it currently stands, …