Sun Java Solaris Communities My SDN Account Join SDN
 
Article

Transforming User-Centered Analysis into Concrete Design

 

A CHI '96 Workshop Position Paper

Frank Ludolph
Sun Microsystems, Inc.
901 San Antonio Road, MS CUP02-306
Palo Alto, CA 94303
Frank.Ludolph@sun.com

This workshop position paper describes a personal approach to UI design based on a model of how people interact with the real world around them. The approach can be scaled and utilized appropriately for each project based on complexity and project scheduling. The activities both iterate and pipeline, i.e., as soon as the most important design element of a step is completed, the next step is begun. Details of each step are completed later as confidence is gained with respect to the central design elements. This workshop paper was expanded to chapter length in User Interface Design: Bridging the Gap, 1997, CRC press.

At various points during the design process, the author uses several sets of guidelines for guidance and evaluation: human information processing, human interaction with the physical world, human social interaction, visual and audio presentation styles, and platform/toolkit specific styleguides. While clearly relevant to the workshop, they are too numerous, and perhaps implicit, to be included below.

A portion of an application builder is used as an example throughout this paper. A developer builds an application using reusable chunks of software as building blocks. The example focuses on how the user locates and selects the software chunks to be used.

Necessary Background Information

Some background information must be collected before the design activity can be started. (The workshop description indicates that the means of collecting this information is beyond the scope of workshop.)

Goals of the application
The purpose of the application, i.e., what it us to be used for, in terms of the environment it will be used in
Environmental Description
A description of the computing and real world systems in which the application will function. What function does the system perform? What are the objects in the system? How does the application fit into the system, i.e., what are the tasks, in terms of the systems, that it will be used for? What are the inputs and outputs to the application?
People
A description of the various rolls that people assume with respect to the application. What is the range of their education, experience, and physical abilities. What other activities are they involved in, especially those that they perform concurrently with the proposed application.
Real-life scenarios
How are the tasks, identified in the environmental description, performed now. What frequencies/volumes associated with the tasks? What obstacles and errors occur while performing the tasks? Describe any artifacts used and their use within a scenario.
Constraints
What parts of the environment can be changed and which cannot?

Environmental Model

The first design step is to extract an environmental model from the background information. The purpose is to identify the environmental objects the application will interact with and the "essential tasks" that describe what a user will perform in terms of these objects.

This extraction is most easily begun by generalizing the real-life scenarios, focusing on the system provided objects, inputs and outputs, and recasting user actions in functional terms, i.e. free of interaction specifics such as "click on...". The resulting "essential scenarios" should include the problems that can be encountered and the information and techniques used to recover from them. They should also include frequency and volume information.

The environmental model, i.e. the essential tasks and the objects involved, can be easily extracted from the essential scenarios. (A task is defined as an action involving one or more objects.)

Write up these scenarios and discuss them with the person(s) responsible for establishing the functional requirements. Focus on the objects and the functionality and flow of the tasks. Listen carefully for phrases that indicate underlying confusion.

These scenarios are usually too abstract for good discussions with users that were interviewed during the "background" stage above. Too avoid confusion, it is best to go back to users with a more concrete design early in the "Look and Feel" stage below.

A simple environmental model for our application builder example would include the tasks:

  • Access the collection of software chunks
  • Get a chunk
  • Add chunk to the application being built

The only objects in this environmental model are `software chunk' and `collection of chunks.' A chunk is a piece of a software program; it may have other as yet unknown aspects that will be defined by the needs of the app builder.

The collection of chunks is expected to contain from several hundred to a few thousand different kinds of chunks.

Metaphor Selection and Mapping

The author has a strong bias toward creating user interfaces based on people's experience in the real world. Over time, people develop relatively efficient methods for dealing with commonly occurring situations. Ideally these typical solutions are widely used and easily recognized, reducing the need for training, but even in those situations where a metaphor is not widely known, it can still provide provide the structure of a time-tested solution.

First we need to generate a list of candidate metaphors by matching up elements of the environmental model with things (potential) users already know about. The real-life scenarios may contain the metaphor, i.e., the metaphor is the way things are already done. In the case of replacing an existing computer-based application with a new one, the metaphor may be the manual methods that were originally used. Other metaphors may be discovered by focusing on the objects, tasks, and scenarios of the environmental model and looking for parallels.

The `assembly' and `collection' elements of the example's environmental model suggest several metaphors including:

  • Assembly of an app from chunks suggests that a chunk is a `part'. A needed part can be picked from a `drawer' of a `parts cabinet'.
  • Semiconductor manufactures provide `data handbooks' that list the various kinds of `components' they make. For each component there is a `data sheet' that describes it purpose and use, often with an example circuit that demonstrates its actual application.
  • Companies distribute catalogs that describe their products and provide a means to order/obtain the products.

Pick a couple of metaphors that seem the best fit and generate some trial generic scenarios by recasting the essential scenarios in the metaphors. The scenarios should still be functionally oriented, free of interaction specifics. If you don't like the resulting scenarios, pick a couple of the remaining scenarios and generate some more trial generic scenarios.

A metaphor never fits exactly right. Parts of the metaphor may not be needed. If the parts are central, users will likely be confused by their absence. On the other hand, the unneeded parts may indicate missing functionality in the proposed application. From the example, a scenario using the `parts cabinet' doesn't contain any mechanism for evaluating a parts suitability, so it seems a poor fit. A scenario using the `data handbook' is strong on evaluation but doesn't include anything about obtaining a component.

More typically, parts of the scenarios cannot be mapped onto the metaphor. Perhaps the metaphor can be extended in plausible ways with functionality that people wish actually existed in the real environment from which the metaphor is drawn. In either case, a metaphor should be rejected if the essential scenarios can't be reasonably mapped to it. From the example, a scenario based on the catalog metaphor works well, but the `descriptions' typically aren't very technical. That aspect can be built up by using descriptions more like those found in a `data handbook'.

Begin drawing some simple sketches to illustrate some of the trial scenarios from the most promising metaphor using metaphor-based visuals and the styles of presentation and representation common to other applications in the current computing system. The intention is to get a feel for how the metaphor might be presented, not to define the user interface.

Describe the selected metaphor to the developers. Illustrate with selected sketches; a couple of clean line drawings or short storyboards are best. The intent is to keep the developers informed rather than surprising them later, but take time to consider their comments and proposed revisions.

Detailed, Metaphor-specific User Model

A user model consists of a description of necessary concepts, objects, parts of objects, relationships between the objects, and the tasks and subtasks, all in terms of the metaphor. The model is made more concrete with a set of generic scenarios that describe a user's activity in functional terms. The user model is a functional description so it should not include any references to specific types of user interaction, e.g., "double-click."

The basic user model is created by recasting the system-level objects and essential scenarios and tasks of the environmental model in terms of the metaphor, an activity that was begun during metaphor selection. The parts of each object are enumerated and relationships between objects and other object parts need to be described.

A basic user model for the example would be:

Tasks

Open the component catalog
Get a component
Add the component to the application being built.

Objects

Component - the basic building block
Catalog - a collection of components
Data Sheet - a description of a component.

A task tree is built from the tasks generated by recasting the essential tasks in terms of the metaphor. Each task is iteratively refined as a set of subtasks, using the metaphor and essential scenarios as a guide, until each task corresponds to an atomic action in the metaphor. The tasks should include the obstacles that can arise and the tasks performed to resolve them. Note that a subtask may be used to perform many different tasks.

The portion of the example's task tree might look like this:

...
Get a component -from the basic user model
Locate candidate components
Turn to `section' of catalog that contains similar components (or)
Locate in Index, if name is known (or)
Turn to Index
Scan names - May be more than one found.
Find by description.
Indicate attribute -enumerate set of attributes
Enter value
Query - May find more than one.

Find a suitable component among the candidates -a plausible extension

Select a component
Show its data sheet
If none found, Locate more candidate components until no more.
...

Generating the complete task tree is tedious and sometimes difficult because the lower levels may involve significant design effort that is best done using visualization tools. Typically it is sufficient to focus on the primary tasks, iterating on secondary tasks as the design for the primary tasks solidifies.

At this point it is a good idea to review the task tree and reduce the marginal functionality either by folding it into other tasks or by eliminating it. In our example, the `Locate in Index' could be folded into `Find by description' if one of the supported attributes is a component's name. This is a good choice since it eliminates an object, the Index, while only adding a simple attribute, the name. And it likely that a user would rather find-by-name by typing the name than by looking through a long list.

The user model identifies the set of operations supported by each object. Each task defines an operation involving one or more objects. As the task tree is refined, the operation of each atomic task, and its description, should be added to the list of operations for the appropriate object. The user model objects are the nouns that appear in the task tree, the operations are the verbs. From the example:


 
Objects  Operations 
Component  Show Data Sheet, Add to application 
Data Sheet 
Section  Turn (displays candidates) 
Description  Query (displays candidates) 
Attribute  Indicate kind, type-in value 
Candidates  Select one (a component) 

As mentioned above, it is likely that some of the objects and operations required by the application may not occur in the metaphor. When possible, these should be cast as plausible extensions (described above) to the metaphor. These extensions must be clearly delineated and defined.

Look and Feel

The look and feel design portion is begun by selecting the high- frequency, high-level tasks and grouping them based on the objects involved and "closeness," i.e., the likelihood that they will be used one after another. From the example, `Get a component' is the high- frequency task.

Sketching is the next step begining with the primary window(s). In the example application there are two primary windows, the catalog and application- under-construction. Since one of the frequent tasks is to add suitable components from the catalog to the application, the windows should not overlap if possible. Since the application build window will be large (trust me), the catalog window should have `portrait' dimensions, tall and narrow.

Review the subtasks of the primary (high-frequency) task. Divide the window it into views that correspond to objects needed by the subtasks. From the example, the subtask `Locate candidate components' generates a collection of candidate components so we need a view for that collection. One way to generate that set is to `Turn to a section' so we need a view that shows the set of sections. Another way to generate the candidates is to `Find by description' so we need a view for the description. Their lower level subtasks don't suggest any new views.

The second subtask is `Find a suitable component from the candidates.' There is already a view for the candidates. The next level subtasks are `Select a candidate' (from the candidates view) and `Show the data sheet', another new view.

The primary task from our example appears to require four views: candidates, sections, description, and data sheet.

The views are arranged top-down and/or left-to-right based on the subtask flow of the primary tasks or based on the flow of data if that is a part of the metaphor. From the example, the sections and description views are the beginning views, the candidates next, and the data sheet last. Since the catalog window is tall and narrow, the views would be approximately arranged top-down.

The sketches suggest that arranging four views vertically will make them `short' so that they won't be able to display very much. After reviewing the task flow, we note that the process always begins with either the sections view or the description view so we map them into the same space and add a means to switch between them, typically a button though Windows '95 would use `tabbed subviews.'

The type of each view depends on the objects and/or data it contains. The environment and metaphor are reviewed for existing representations which might be appropriate. From the example, the data sheet shows text maybe graphics. The candidates view is a collection of components, i.e. objects, and objects are generally rendered either iconically (spacial) or by name (list). The typical pattern of a discription view is a form, a collection of type-in fields and a query button. The sections view is the most interesting. The catalog metaphor suggests a set of `tabs' but the number of sections is likely to be large if the catalog contains thousands of components. Typically large numbers of catagories, the sections, are organized hierarchically, so some sort of hierachical view seems appropriate for the sections.

Widgets/menu items are added to the views to enable the actions of atomic tasks. Widget selection and menu organization are based on the platform/toolkit guidelines.

Arrows are added to the sketch to indicate the sequence of user actions necessary to perform the task. Storyboards, a sequence of sketches, are drawn for tasks involving more than a few steps.

As additional tasks are added, secondary windows are created for parts and tool palettes and non-modal dialogs if necessary. Modal dialogs are avoided if at all possible. If the designer is good at sketching, he/she can show them to potential users and members of the development team for feed back, perhaps running paper and pencil user studies.

The author strongly prefers to create highly realistic, tightly scripted interactive prototypes of a primary task sequence using Director, though platform specific GUI builder might be used if the latter is available and can be made to "fake" content. The Director approach has often been faster to produce and more realistic.

It has been the author's experience that the dynamics of an interactive prototype stress the design details and thus promote confidence in the quality of the finished design. The prototypes are repeatedly demo'd, run through "cheap" user studies, and shown to the developers. Needed revisions are incorporated and shown/tested again. It has been repeated demonstrated that such prototypes are the best way to convey the feel of the finshed product to others.

The graphics used in the prototypes are first approximations as the author is not trained in graphical arts. A graphics designer is contracted to produced production quality graphics with the direction to capture the essence of the objects/actions they represent. Again, platform guidelines set the style.

Specifications

A narrated, platform-independent QuickTime movie is then made from the prototype and distributed to the developers as the basic visual/interaction specification. The author has also created, and revised as needed, the actual application user interface using a GUI builder. Graphics from the prototype are used by the developers as placeholders until the production graphics are provided by the graphics designer.

A Graphics and Interaction Specification provides the full details, i.e. the full menus, a picture of each window, a description of all mouse actions on each receptive element of each window, a list of dialogs including a picture and description of each non-standard dialog, and a set of target response times for each type of interaction.