I’d like to bring the computer back into this process by starting with two observations.
 First, programmers’ pen and paper diagrams are task-relevant – they draw the parts of the program they want to change and the dependencies that are involved, and leave out the rest.
Second, there’s a growing body of commonly used design moves called refactorings – local, structural changes to the program that involve a few of its related parts.
These observations led me to the thesis that if a diagramming tool understood the refactorings the programmer wanted to make, it could
(1) draw relevant, task-specific diagrams and
(2) use those diagrams to help the programmer interactively explore the program’s design.