An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces

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

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 $