Suppose you need to ask, "Where is call forwarding implemented in this telephone switch?" You would run a small set of test cases that involved forwarding a call and a second set that did not. You keep traces of program execution from each run. Software Reconnaissance then analyzes the traces to look for program components that were executed in the first set and not in the second. Common code and "background noise" are filtered leaving the code related to the feature sought.
We have used Software Reconnaissance successfully on a range of systems of up to 200 KLOC. Several technical reports on this experience can be downloaded. Reconnaissance gives you quick insight into how a program works, so it is useful on almost any task that involves existing unfamiliar code, for example:
The TraceGraph 4 tool, allows a
Software Engineer to do