CS 552, Spring 1998

Guidelines for User-Centered Design

From C. Pancake, 1997,"Improving the Quality of Numerical Software through User-Centered Design," in The Quality of Numerical Software: Assessment and Enhancement, ed. R. Boisvert, Chapman & Hall, London, pp. 44-60.

  1. Focus on the users and their needs. Before even beginning to plan new software, ask these questions:
  2. Carry out a detailed analysis of users' tasks and task environment. The first step in UCD is to study the intended audience. Visit customer sites and meet with potential users (installers and support staff, as well as end users). Make sure you understand the users' current task structure: how the users currently accomplish the tasks, what their underlying logical model is and how it is organized into sub-tasks, and typical strategies and problem work-arounds. Then, make an educated guess about what their future strategies will be (remember that using a system changes users' attitudes).

    Based on the task analysis, use a task-oriented organization for the interface. Establish what users tasks need to be supported. Visually identify the key tasks in some way, and make the tasks self-explanatory.

  3. Carry out early testing and evaluation with users. Expose representative groups of users to paper prototypes and ask them what they expect will happen, or what they think a representation means. Capitalize on the phenomenon of attention as a searchlight. Pay close attention to where users are focusing their attention; nothing else is being processed mentally. Use this information to restructure the interface so that it seems more "natural" to the user.

  4. Design iteratively with many cycles of design / user-test / redesign. Capitalize on the phenomenon of selective attention by watching how user attention shifts from one area of the interface to another during tests. Use this information to avoid elements that are distracting. If a switch in attention needs to be made, make sure it has significant content. Use think-aloud protocols so you can understand the users' logic. If something isn't clear, always re-design it, even if you're convinced that it should have been obvious to the user. Refine the design incrementally, so that you benefit from each round of testing.