Summary: | This dissertation shows that existing functional tests of software features can
be used by a developer unfamiliar with the software system to identify source code
relevant to those features as well as understand why the source code is relevant.
There have been prior techniques to locate features in source code which can
be roughly broken down into techniques that use static analysis and those that use
dynamic analysis.
Features, being behaviors of a system, are dynamic in nature. Therefore, this
dissertation focuses on dynamic techniques, rather than the use static techniques.
The dynamic techniques all require significant knowledge about the system
before the technique can be useful. Furthermore, they all suffer in one or both
of these respects: they make binary judgments about which source code artifacts
relate to a feature without determining to what extent they relate (meaning that the
feature must be precisely characterized, or else the technique will return inaccurate
results), or they do not provide an idea of why a piece of code is relevant to a feature.
Our technique of creating Dynamic Feature Traces improves upon previous
work 1) by taking advantage of an existing test suite thereby reducing the amount
of system knowledge necessary to use the technique, 2) by ranking the source code
artifacts by how strongly they are related to the feature, and 3) by retaining some
part of the execution trace of the test suite so that developers can understand why
a piece of code is part of a feature. We show that our technique provides benefit
over other techniques by applying it to existing software systems and comparing its
results to an existing technique.
|