Norman Wilde
University of West Florida
Pensacola, Florida 32514, USA
e-mail:
Christopher Casey
University of West Florida
Pensacola, Florida 32514, USA
SOFTWARE RECONNAISSANCE is a technique to help programmers locate code that they may need to understand, fix, or enhance in an unfamiliar system. Projects that maintain or reuse old code often suffer from unexpected high costs or schedule slips because of hidden "gotchas" in the code that surface late in the project cycle. We believe that Reconnaissance could be a useful aid in reducing these and other problems of program comprehension.
To use the technique, the programmer runs a few test cases that exercise different features of the unfamiliar system. A Software Reconnaissance tool then analyzes traces of execution to locate the code that implements each feature.
Reconnaissance is currently the focus of a SERC technology transfer project to make the technique available to affiliate companies. Effective technology transfer requires practical experimentation and adaptation in a real industrial setting, so a series of case studies are in progress on different systems from industrial practice.
This report describes four such studies on three different systems of moderate size. The studies have confirmed several initial impressions about the Reconnaissance technique: The studies have confirmed several initial impressions about the Reconnaissance technique: It is relatively easy to use, requiring only a small number of test cases for effective results.
- It identifies a small number of "good places to start looking" for a programmer to begin code exploration in a large and unfamiliar program.
- It can often provide insights into a program that would be very difficult to obtain by other means.
The studies also identified some issues that need to be addressed in using Reconnaissance:
- The current Reconnaissance tool set needs several improvements to improve usability and portability. Enhancements identified in these and other studies are being systematically included in new versions currently under development.
- Test cases must be carefully selected; in general they should be as simple as possible to avoid spurious results. Guidelines for Reconnaissance test cases are discussed in the report and in the references.
The Software Reconnaissance technique would seem to be a useful addition to the programmer's tool kit; SERC plans to continue to perfect it and make it available to affiliates.
This report may be cited as SERC-TR-78-F, Software Engineering Research Center, University of Florida, CSE-301, Gainesville, FL 32611, May 1995.
Download
a copy of this report in troff format with 'me' macros.