The existing body of feature-location research focuses on discovering feature-code traceability links for supporting programmers in understanding and modifying static artifacts of software. In this paper we propose a different utilization of this type of reverse-engineering information. We introduce the concept of runtime feature awareness that enables a running program to establish and make use of its own feature-code traceability links. We present an implementation of this idea, a dynamic-analysis Java library called JAwareness. JAwareness provides a meta-level architecture that can be non-invasively added to a legacy program to enable it to act upon the activations of its own features. We demonstrate the feasibility of runtime feature awareness by presenting its three applications: error reporting, usage statistics and behavior adaptation.
In Proceedings of The18th Working Conference on Reverse Engineering (wcre 2011), 2011, p. 271-274