An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces
Table of Contents
Abstract
A variety of language features to modularize crosscutting concerns have recently been discussed, e.g. open modules, annotation-based pointcuts, explicit join points, and quantified-typed events. All of these ideas are essentially a form of aspect-oriented interface between object-oriented and crosscutting modules, but the representation of this interface differs. While previous works have studied maintenance of AO programs versus OO programs, an empirical comparison of different AO interfaces to each other to investigate their benefits has not been performed. The main contribution of this work is a rigorous empirical study that evaluates the effectiveness of these proposals for AO interfaces towards software maintenance by applying them to 35 different releases of a software product line called MobileMedia and 50 different releases of a web application called Health Watcher. Our comparative analysis using quantitative metrics proposed by Chidamber and Kemerer shows the strengths and weaknesses of these AO interface proposals. Our change impact analysis shows the design stability provided by each of these recent proposals for AO interfaces.
Read the paper paper.
View the slides.
Software Engineering Metrics
- MobileMedia
- Health Watcher
Download Code Artifacts
All code artifacts are available for download. The 'All' downloads contain the build system and compiler for that artifact. The individual revision downloads only contain the source for that revision.
MobileMedia
Please note that the Java and AspectJ MobileMedia revisions were re-used (and un-altered) from Figueiredo et al. (ICSE 08). The Annotated AspectJ and Open Modules revisions are based off the original AspectJ revisions.
R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | All | |
---|---|---|---|---|---|---|---|---|---|
Java | Get | Get | Get | Get | Get | Get | Get | Get | Get |
AspectJ | Same as Java | Get | Get | Get | Get | Get | Get | Get | Get |
Annotated AspectJ | Same as Java | Get | Get | Get | Get | Get | Get | Get | Get |
Open Modules | Same as Java | Get | Get | Get | Get | Get | Get | Get | Get |
Ptolemy | Same as Java | Get | Get | Get | Get | Get | Get | Get | Get |
Health Watcher
Please note that the Java and AspectJ Health Watcher revisions were re-used (and un-altered) from Greenwood et al.. The Annotated AspectJ and Open Modules revisions are based off the original AspectJ revisions.
R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 | All | |
---|---|---|---|---|---|---|---|---|---|---|---|
Java | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get |
AspectJ | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get |
Annotated AspectJ | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get |
Open Modules | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get |
Ptolemy | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get | Get |
Tools
- Ptolemy Compiler
- Homepage
- Download the version used in this study
- Contains support for measuring CK metrics
- Contains support for generating input for the change propagation tool
- ABC (AspectBench Compiler)
- Homepage
- Download the (modified) version used in this study
- Contains support for measuring CK metrics
- Contains support for generating input for the change propagation tool
- Contains support for (only!) parsing pointcuts containing annotations (no typechecking/backend support)
- Change Propagator
Page last modified on $Date: 2012/03/26 10:27:11 $