System comprehension is a prerequisite for software maintenance and evolution, but it is a time-consuming and costly activity. In an effort to support system comprehension, researchers have devised many different reverse engineering techniques. Several of these are based on statically analyzing the source code. Purely static analysis techniques, however, overlook valuable end-user knowledge of how a system behaves at runtime.
To address this problem, several researchers have identified the potential of exploiting features in a reverse engineering context. Features are abstractions of a system's problem domain that well-understood by end-users. They encapsulate knowledge of a problem domain and denote units of system behavior. Thus, they represent a valuable resource for reverse engineering a system, The main body of feature-related reverse engineering research is concerned with \emph{feature identification}, a technique to map features to source code. To fully exploit features in reverse engineering, however, we need to extend the focus beyond feature identification and exploit features as primary units of analysis. We formulate our thesis as follows:
To exploit the inherent domain knowledge of features for object-oriented system comprehension, we need to explicitly model features, their relationships to source artefacts, and their relationships to each other.
The contribution of our work is twofold: on the one hand, we enrich reverse engineering analysis of object-oriented systems with semantic knowledge of features, and on the other hand, we introduce new techniques that treat features as the primary entities of analysis. Our key contribution is our definition of Dynamix, a meta-model for expressing feature entities in the context of a structural meta-model of source code entities. Using case studies, we demonstrate how our feature-centric reverse engineering techniques, based on Dynamix, exploit feature knowledge to establish traceability between the problem and solution domains throughout the life-cycle of a system.