|
|
|
|
Program comprehension is time consuming and
cognitively taxing. |
|
|
|
Documentation is scarce and out-of-date. |
|
|
|
Source code browsing environments are
inadequate. |
|
|
|
|
|
|
|
|
User
Studies and Results |
|
|
|
Supporting Navigation and Capturing Abstractions |
|
|
|
Situating Dr. Jones |
|
|
|
|
|
|
Observe software browsing behavior. |
|
|
|
Collect browsing strategies and rationale. |
|
|
|
Collect frustrations with and wishes for
browsing tools. |
|
|
|
|
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 |
|
|
|
|
Subjects given an unfamiliar program organized
as hypertext [Demo] |
|
Subject prompted while browsing to capture
rationale |
|
Maintenance tasks |
|
End-of-session interviews |
|
|
|
|
|
Name Guessing (10) |
|
Starting from main() (9) |
|
Critical-Method (5) |
|
Sequential (4) |
|
Top-Down (3) |
|
Bottom-Up (2) |
|
Tracing (2) |
|
|
|
|
Dependency information (3) |
|
Keyword searching (2) |
|
Dead/abstract code elimination (2) |
|
Diagramming (2) |
|
|
|
|
|
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? |
|
|
|
|
|
|
User
Studies and Results |
|
|
|
Supporting Navigation and Capturing Abstractions |
|
|
|
Situating Dr. Jones |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
User
Studies and Results |
|
|
|
Supporting Navigation and Capturing Abstractions |
|
|
|
Situating Dr. Jones |
|
|
|
|
|
|
|
|
|
|
|
|
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. |
|
|
|
|
|
|
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? |
|