program       registration       lodging       call for contributions       organization       [aosd home]

overview       technical papers       practitioner reports       workshops       tutorials       demos       exhibits      
Go back to Demonstrations Home

FEAT - A Tool for Locating, Describing, and Analyzing Concerns in Source Code

Wed March 19, 14:00 - 15:30
  - Thu March 20, 11:00 - 12:30

Martin Robillard (University of British Columbia)
  - Gail Murphy (University of British Columbia)

Developers working on existing programs repeatedly have to address concerns, or aspects, that are not well modularized in the source code comprising a system. In such cases, a developer has to first locate the implementation of the concern in the source code comprising the system, and then document the concern sufficiently to be able to understand it and perform the actual change task.

In this demonstration, we will present FEAT, a tool for locating, describing, and analyzing the code implementing a concern in a Java system. The demonstration will consist in using the tool to locate and analyze a set of concerns scattered in an existing code base. Specifically, we will show how, by visually navigating structural program dependencies through the tool's graphical interface, we can rapidly locate the code implementing a concern, and store the result as an abstract representation consisting of building blocks that are easy to manipulate and query. We will also show how the representation of the concerns supported by FEAT can be used to investigate the relationships between the captured concerns and the base code, and between the different concerns. Finally, we will show how this representation can be used to robustly keep track of the actual source code implementing the concern.

We argue that the FEAT tool supports aspect-oriented software development by allowing users to easily produce and analyze descriptions of the actual code implementing concerns in existing systems. The novelty of our approach is to capture concerns using an abstract representation that can be mapped back to source code, instead of working directly at the level of program text. This way, developers can use the abstract representation as a support for managing the code in a concern, and can potentially use the representation as a basis from which to refactor the concern into an aspect-oriented programming language.

FEAT version 2 is implemented as a plugin for the Eclipse Platform. It uses the compiled representation (bytecode) of programs to extract the structural relationships between different program elements, such as classes, methods, or fields. It uses IBM's Jikes Bytecode Toolkit to represent and manipulate Java classes at run-time.


For additional information, clarifications, questions, or special requirements, please contact the AOSD 2003 Demonstrations Chair: Mik Kersten (

 Send comments to: