Spyder
Sponsored by: National Science Foundation, SERC
Overview
Despite the variety of software development tools and techniques, and
despite the best efforts of software engineers, software is frequently
produced that contains faults (bugs). Even if it were possible to
produce fault-free code from this time hence, the huge quantity of
existing code to be maintained and reused would require fault
detection and elimination technology.
Validation and verification of software is an important part of the
software development process. Experience with current methods of
software development continues to illustrate the need for testing of
software, followed by the identification and repair of bugs exposed by
that testing. This debugging process is usually time consuming and
labor-intensive, and relies on tools and methodologies little changed
from the earliest debuggers developed 20 and 30 years ago. Some
studies have shown that 50% or more of the total cost of software
development may be attributed to testing and debugging, with nearly
80% of that cost being attributable to fault localization (the first
step in debugging).
We are investigating new approaches that will enhance the state of
debugging technology, and that may be applied to a wide range of
software systems. We are
exploring automating methods of using existing information --
information not currently used effectively (or at all) in other
debuggers -- to aid the debugger. That information may be present in
the mapping of specifications to code, in the behavior of the code
when executed against test data, in data produced by the compiler, and
in the performance of previous debugging steps.
This project has involved research into advanced
methods of software debugging, including
exploration of new methods of bounded backtracking, dynamic program slicing,
slice heuristics, and an active debugging critic.
Selected technical reports
The following are SERC technical
reports on research in the Spyder project. Paper copies of
these reports are available from the SERC; PostScript can be obtained
via ftp.
TR-22-P
- An Execution Backtracking
Approach to Program Debugging, by H.
Agrawal, Richard A. DeMillo, and
Eugene H. Spafford. This paper was
published in IEEE Software, May 1991, pp. 21-26.
TR-80-P
- Efficient Debugging With Slicing
and Backtracking, by H. Agrawal, Richard A. DeMillo, and Eugene H. Spafford. An expanded version of this paper appeared as Debugging With Dynamic Slicing and Backtracking in Software Practice & Experience, 23(6), pp.589-616, June 1993.
TR-93-P
- Dynamic Slicing in the Presence
of Unconstrained Pointers, by H.
Agrawal, Richard A. DeMillo, and Eugene H. Spafford. This paper appeared
in Proceedings of the 4th ACM Symposium on Testing, Analysis and
Verification, Oct 1991, pp. 60-73, under the title
Dynamic Slicing in the Presence of Pointers, Arrays, and
Records.
TR-103-P
- Towards Automatic Debugging of
Computer Programs, Ph.D. dissertation by H.
Agrawal.
TR-116-P
- Heuristics for Automatic
Localization of Software Faults, by Hsin
Pan and Eugene H. Spafford. A
shortened version of this paper appeared in Proceedings of the
10th Pacific Northwest Software Quality Conference, Oct 1992,
pp. 192--209. An expanded of this paper is to appear in a future
issue of Journal of Computer and Software Engineering.
TR-120-P
- Experimental Designs: Testing A
Debugging Oracle Assistant by Eugene H. Spafford and Chonchanok Viravan.
TR-134-P
- Pilot Studies on Debugging
Oracle Assistants by Eugene H.
Spafford and Chonchanok Viravan.
TR-145-P
- Software Debugging With Dynamic
Instrumentation and Test-Based Knowledge, Ph.D. dissertation by Hsin Pan.
TR-151-P
- Enhancing Debugging Technology, Ph.D. dissertation by
Chonchanok Viravan.
Personnel
Faculty
Gene Spafford has been the lead researcher on this project from its inception. He was co-advisor for Agrawal and Pan's work (below), and advisor for Viravan's work.
Richard DeMillo was co-investigator of the first part of this project. He was co-advisor of Agrawal and Pan's dissertation work.
Students
Hiralal Agrawal received his Ph.D. in August 1991 and
is now at Bellcore. For his thesis work, Hiralal developed the theory
behind dynamic slicing and bounded backtracking. He then implemented
both in the Spyder prototype debugging tool. He can be reached at
hira@bellcore.com
Hsin Pan received his Ph.D. in August of 1993 and is now at IBM. For
his thsis work, Hsin developed a family of heuristics for combining
dynamic slices to localize faults. He further examined several new
slicing methods he designed, including criticial slicing, He
can be reached at hpan@vnet.ibm.com
Chonchanok Viravan
(Nok) received her Ph.D. in May of 1994. For her thesis,
Nok developed an active critic system to provide guidance
and feedback to users of the Spyder system. The critic provides
information shown in experiments to help debugging speed. She can be
reached at viravan@nwg.nectec.or.th
Source code
An alpha release of Spyder is available for ftp.
The README
file explains conditions of use and configuration.