Dr. Jones:
A Software Archaeologist’s
Magic Lens


Mark A. Foltz
November 15, 2001

The Problem
Program comprehension is time consuming and cognitively taxing.
Documentation is scarce and out-of-date.
Source code browsing environments are inadequate.

Outline
 User Studies and Results
 Supporting Navigation and Capturing Abstractions
 Situating Dr. Jones

User Studies of Java Browsing
Observe software browsing behavior.
Collect browsing strategies and rationale.
Collect frustrations with and wishes for browsing tools.

User Studies: Subjects
12 sessions, 12 subjects, 2 programs/session
Computer science graduate students
3 months to 5 years of Java experience
Longest program worked on:  6 classes to 100K+ LoC
480 minutes of browsing behavior

User Studies: Methods
Subjects given an unfamiliar program organized as hypertext [Demo]
Subject prompted while browsing to capture rationale
Maintenance tasks
End-of-session interviews

User Studies: Conditions

User Studies: Strategies
Name Guessing (10)
Starting from main() (9)
Critical-Method (5)
Sequential (4)
Top-Down (3)
Bottom-Up (2)
Tracing (2)

User Studies: Results
Dependency information (3)
Keyword searching (2)
Dead/abstract code elimination (2)
Diagramming (2)

User Studies: Take-Away
Consistent browsing strategies
In terms of program structure and behavior
Can assist user navigation in the program
Names are crucial
Guide programmer’s choices across strategies
Would renaming be useful?

Outline
 User Studies and Results
 Supporting Navigation and Capturing Abstractions
 Situating Dr. Jones

Dr. Jones: Supporting Navigation
 Goal: Rapidly prototype software browsers
 Build a graph of the program text (a TextGraph)
Nodes contain source and comments.
 Add edges to the TextGraph from program dependencies
 Support navigation by creating a walkthrough

Dr. Jones: Supporting Navigation

Dr. Jones: Capturing Abstractions

Slide 15

Slide 16

Slide 17

Outline
 User Studies and Results
 Supporting Navigation and Capturing Abstractions
 Situating Dr. Jones

Software Design

Reverse Engineering

Model-Based Reverse Engineering

Dr. Jones: Closing the Loop

Dr. Jones: Closing the Loop

How to look at software?

Dr. Jones: Contributions and Challenges
A set of heuristics that create effective walkthroughs.
Multimodal annotation of software diagrams.
TextGraph: Program representation grounded in the raw source, integrating programmer and automatic annotations.

Points for Discussion
Visualizing software evolution
Round-trip engineering
Extreme and/or Pair Programming
Other languages
Invariant extraction (Daikon)
Grungers vs. Architects
What are useful views of a program?