Dr. Jones: A Software Archaelogist’s Magic Lens

The Problem

Thesis

Contributions
Software Engineering
Better tools for program comprehension
Design Rationale
Reverse engineering
What information should we be capturing during design?
Artificial Intelligence
Hierarchical recognition of design patterns in structure and behavior of software

Why is source code hard to understand?

Approach
User Studies of Program Comprehension
What info is sought? (program concepts)
How is info extracted? (strategies)
Why? (software maintenance tasks)
Dr. Jones, a software archaeologist’s assistant
Visualization of structure and behavior
Incremental exploration
Design pattern recognition

User Studies: Methods
Navigate source code as hypertext
Verbally describe movement through program
Explain program later
Browse/edit source code to improve design
Screen capture of editing actions
Still debugging methods….

User Studies: Results
From prior studies:
Explaining from the UI backward
Draw UI, write pseudocode
From recent studies:
Top-down vs. Bottom-up

User Studies: Results

Viewing structure

Application-Specific Knowledge

Viewing Behavior

Evaluation
Visualize simple programs
I.e. solitaire
Compare with Javadoc
See how it does on big programs
10k LOC

Related Work
Cognitively motivated program understanding tools
Lethbridge 00, Storey 97
Design pattern recognition in programs
Programmer’s Apprentice
Software visualization
SeeSoft (Eick 94)

Conclusion
Source code is not “self-documenting”
Figure out what programmers are looking for
Abstract from what’s in the code to provide that info
Visualize it to see how it all fits together