One of the most important steps towards effective software maintenance of a
large complicated system is to understand how program features are spread
over the entire system and their interactions with the program components.
However, we must first be able to represent an abstract feature in terms of
some concrete program components. In this paper, we use an execution slice
-based technique to identify the basic blocks which are used to implement a
program feature. Three metrics are then defined, based on this identificat
ion, to determine quantitatively, the disparity between a program component
and a feature, the concentration of a feature in a program component, and
the dedication of a program component to a feature. The computations of the
se metrics are automated by incorporating them in a tool (chi Suds), which
makes the use of our metrics immediately applicable in real-life contexts.
We demonstrate the effectiveness of our technique by experimenting with a r
eliability and performance evaluator. Results of our study suggest that the
se metrics can provide an indication of the closeness between a feature and
a program component which is very useful for software programmers and main
tainers to better understand the system at hand. (C) 2000 Elsevier Science
Inc. All rights reserved.