Most of software design is redesign. Redesign in the normal course of design happens when the software becomes difficult to maintain and the problem it is intended to solve has changed. Although software redesign is necessary, frequent, and pervasive, there is a dearth of tools that help programmers do it. Instead, programmers primarily use pen and paper, away from the computer where tools could help the most. To address this shortcoming, I have developed Dr. Jones, a redesign assistant for Java programs.Dr. Jones diagrams the class structure of a Java program and allows the programmer to modify that design by applying refactorings. Refactorings are localized patterns of structural change intended to improve a program's design, without changing its observable behavior. With Dr. Jones, the programmer can explore the design space of the program, inspect future designs as visual diagrams, and get design assistance to guide his refactoring choices.
As the programmer explores designs, Dr. Jones explicitly maps the design space he traverses. This map lets him revisit any prior design and branch to explore an alternative design path, without having to explicitly manage versions of the program.
Dr. Jones is distinguished from other refactoring tools by separating the tasks of developing an improved design through design exploration, from transforming the source code to execute design changes. It does so by deriving and using an abstract representation of the program that captures the essential information needed for design exploration, while omitting its source-level details. Dr. Jones also characterizes refactorings in a novel manner particularly suited for interactive design exploration. Twenty-two such refactorings are incorporated into the Dr. Jones prototype.
This research also contributes user interface techniques for software design exploration, including multiple-level-of detail rendering for software design diagrams, and a dialogue management interface for Dr. Jones' design assistance.
The abstract below focuses on the Ligature user interface:
Foltz, Mark (2001). Ligature: Gesture-Based Configuration of
the E21 Intelligent Environment. Proceedings of MIT Student Oxygen
Workshop, July 2001. PostScript, PDF.
Program comprehension remains a major bottleneck for software maintenance. When a programmer must understand a large legacy program whose documentation is scarce, out-of-date, or irrelevant, she must browse its source code to build an effective mental model of its structure and behavior. But source code is far from an ideal representation for this task.I propose a system, Dr. Jones, to help a programmer understand an unfamiliar program. Dr. Jones is a magic lens over the program that reveals information that usually requires effort to extract from source code. This information is broken into tightly coupled views of the program's structure and behavior that, taken together, help the programmer build a good mental model of the program. Dr. Jones presents these views as diagrams, to engage the programmer's perception in extracting knowledge about the program.
The design of Dr. Jones will be motivated by user studies to find the kinds of knowledge programmers seek to extract from unfamiliar programs, and the strategies they employ to do so. Dr. Jones will make use of techniques like multiscale browsing, design pattern recognition, and ``software jiggling'' to permit the orderly and conceptual exploration of an unfamiliar program.
This paper explores how the design of information spaces might be grounded in knowledge of human visual processing, notably what kinds of visual selection are most efficient. Information maps spatially array graphical symbols representing items of information and their attributes. Ideally, their users should be able to do query by attention: answer questions about the information quickly by controlling visual attention (i.e., through spatial selection and visual search), instead of manipulating an interface. I propose a preliminary method for designing visually searchable maps based on experimental results about what kinds of visual search are easy. The hope is that the resulting maps will better employ the perceptual capabilities of their viewers when they search. An example information map of recent movies illustrates the approach.
Currently, computer users are ``lost in hyperspace:'' they have difficulty knowing where they are and locating the information they desire. To remedy this, information should be situated in an information space that enables people to explore knowledge in the same way they navigate in the physical environment. This thesis will enumerate a set of principles to guide information space design, enabling designers to create effective information spaces. The design principles fall into three categories: communication principles, which inform the spatial organization of information; wayfinding principles, which structure the space to allow successful navigation; and computational principles, which use the computational nature of digital media to enhance the information space. Two information spaces designed using these principles are presented and analyzed.