Notes
Outline
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?