Tools for User Interface Design and Construction

590H -- Spring 1995

Special Demands of UI Design and Construction

Traditional models of system development:

UI design seems to work better with more frequent user testing using informal prototypes. (Aside about the difference between software development as it is taught and as it is practiced ...)

Input/Output Devices

Input: keyboard, chording keyboard, mouse, tablet, joystick, touchscreen, dataglove, microphone (speech), blowtube, various musical instruments, ....

Output: bitmap display, printer, meters, sound (speech, music, beeps, natural sounds), headmounted display, retinal scanner, force feedback, ...

What Makes User Interface Programming Difficult?

User Interface Toolkits; User Interface Management Systems

In the earliest systems, the user interface portions of the system were just scattered among the application code. This has several disadvantages for large systems:

Researchers began exploring ways of separating the interface from the application. Perhaps the first such system was described in a paper by William Newman in 1968.

An influential workshop on "User Interface Management Systems" was held in Seeheim, Germany in 1983. (Compare with "Database Management Systems".) The Seeheim model was descrbed in a paper by Mark Green -- this model emphasizes the deparation of the application, dialog control, and presentation. (The concern here was text-based interfaces with a dialog eliciting responses from users.) The Seeheim model breaks down for UI's with tighter coupling between the application and its interface, e.g. a graphical checkers interface that flashes squares to which it is legal to move.

This is an instance of a general problem in designing a system architecture for a user interface tool: the tension between the desire to separate the user interface from the application (motivated by modularity concerns), and the need to couple them tightly

The term "UIMS" seems to be used in different ways -- generally indicates a system with substantial runtime support for the user interface; sometimes for tools that handle the sequencing of operations following a user input

More recent systems are often called UI toolkits, user interface development environments, interface builders, or application frameworks.

Window Systems

The currently dominant paradigm (rectangular windows, menus, icons, etc) was pioneered at Xerox PARC in the 70's by the Learning Research Group and others. (We will investigate this history in more detail later, as part of the case study of the Star system.)

On Unix workstations X windows is dominant; on Macintoshes the Mac environment; on PC's and clones Microsoft Windows.

Output: bitblt (RasterOp), often plus specialized drawing and text display operations. Some systems support Postscript.

Input: represented as a stream of input events. Each event typically consists of a mouse button or keyboard event, along with the cursor location, state of the shift and control keys. The windowing system is in charge of directing input events to the input focus (window that currently receives events). (Note that other windows may be actively displaying information at the same time.)

event-driven computation vs. polling

Typically change focus by moving the mouse into a new window, with or without clicking in it.

Linking the Interface to the Application

Some techniques:

Callbacks

In this model, a widget (for example, a slider) will have a list of procedures to call if it receives some user input. This is the most frequently used technique.

Model-View-Controller

This is the system architecture used in ParcPlace Smalltalk. The model is the application object. The view is its graphical depiction (for output). The controller handles input. Models have a list of dependents (typically views). When the model changes, it sends itself the changed: message, perhaps with an argument (a symbol) indicating which aspect has changed. This invokes each of the views with the update: message (with the aspect as an argument). The views must then redisplay or otherwise update. The window manager distributes input events to the appropriate controller, which then sends messages to the model asking it to update itself.

Constraints

A constraint is a relation that should be satisfied. In user interfaces, these can be used for maintaining model-view consistency and for layout. More on constraints in a separate page ...

Tools for Prototyping

In addition to tools for rapid prototyping of deliverable systems, UI designers sometimes also use tools for building prototypes only, where the delivered system will be written in a different language or using a different toolkit.