Carr, D. (May 1995)
The design of new user-interface interaction objects (or widgets) remains a laborious process. The designer must translate the proposed widget into a computer language and install it in the graphical user interface. This dissertation proposes an executable, graphical specification method to help solve this problem. After a review of previous methods used to specify user interfaces and widgets, the Interaction Object Graph (IOG) is introduced and defined. IOGs are a graphical specification method designed specifically for widgets. Example IOG specifications are given for many current widgets and for several new widgets. In addition, it is shown that an arbitrary Turing machine can be transformed into an IOG. Therefore, IOGs may be used to specify any widget. The dissertation also reports on a pilot experiment comparing IOGs with a text specification method, User Action Notation. This experiment gives a weak indication that graphical specifications such as IOGs are easier to understand. Finally, a C++ class library was implemented for executing IOG-specified widgets while animating the diagrams. The design of this library and the animated specification diagrams are discussed. IOGs extend statecharts with special states to represent display changes and with special nodes and arcs to model widget attribute updates. Display states are represented by a picture of the widget appearance. The picture improves IOG diagram readability by providing an idea of how the widget's appearance will change as the user operates the widget. Data nodes and arcs allow the widget designer to specify the relationship between user actions and widget attribute values. This capability can result in smaller specifications than methods without data modeling. It is also easier to locate all updates to a particular data item in an IOG than in methods that model change with equations annotating a state or column entry. Finally, in order to enhance specification understanding and debugging, the IOG class library animates an IOG diagram showing changes in the active states as the user operates the widget.