CS252. User Interface Design

Lecture Outline for Feb. 7
Strategy for User-Centered Design

1.     Basic Strategy for User-Centered Design (UCD)
     (1) Identify the target audience and focus on their needs

     (2) Carry out a detailed analysis of users' requirements and task structure
          Requirements analysis:

          Task analysis:

     (3) Develop a specification of how usability will be achieved

     (4) Design iteratively with many cycles of design/user-testing/redesign

     UCD requires extra work, especially at the outset

2.     Identify Audience and Needs    
     Issues / requirements / specifications should center on the target users

     Case Study: Parallel Tools Consortium's Lightweight Corefile Browser (LCB)
          Audience of Ptools is people developing applications to run on parallel computers

          Concept of tool arose at meetings   when users prioritized needs, this was cited as #1
               Need: When a program running on 100 processors crashes, how can I tell
                         (A) which CPU cause the problem, and why?
                         (B) how far did the other CPUs get?

               Users were also clear that using corefiles was not a real solution
                    not all machines can create corefiles, and they're different on each machine
                    a complete corefile for 100 CPUs is too slow to offload to disk
                    a complete corefile for 100 CPUs is too large to store on disk (1+ Gbytes)
                    it's too hard to find out anything from a corefile               

     Lessons Learned:  Questions to ask before even beginning software planning
          (1) Will this do something users do now?

          (2) If not, is this something that users have specifically asked for?

          (3) If not, how are you going to convince them they need it?

     Case Study: Identifying target audience for LCB tool:
          Who the users are:

          Physical characteristics: 

          Cognitive characteristics:

3.   Analyze User Requirements and Task Structure
     Capture user requirements
          Functionality requirements
          Data requirements
          Usability requirements
     Case Study: Analyzing requirements for LCB tool
          The users requesting the tool established the basic requirements:

     Analyze the user task structure
          Purpose of task analysis is to understand how users conceptualize what they need to do and form
               strategies about how to do it
          Relates to issues of mental models

          Need to visit customer sites and meet with potential users

          Explore the way users currently accomplish their goals
          Look at how goals are broken down into tasks and sub-tasks


     Case Study: Analyzing user task structure for LCB tool
          Observed users debug parallel programs

          Listened to user complaints

4.   Develop a Usability Specification
     As Jordan point out, it's important to establish clear specifications for usability
     Look for an implicit usability benchmark
          ex:  the pencil [Cox and Walker 1993] as "word processor"

          [Gould 1981] studied professionals drafting business letters

          [Card, Robert & Keenan 1984] updated the study to full-screen editors

          Could argue that these are the wrong users (secretarial staff are the real target audience?)
          But more careful study of usability benchmark might have yielded key insights:

     Case Study: Usability specifications for LCB tool
          Based on the task analysis
          (1) To be effective, the representation of program state must relate clearly to
               (A) Users' ideas of how a parallel program executes (that's where the error shows itself)
               (B) The source code (that's where the problem must be fixed)

          (2) To be efficient, the tool
               (A) Must not require more than a few Mbytes to store the program information
               (B) Must be able to load and analyze information from a 100-CPU program in under 2
               (C) Must be able to show information on programs using up to 1000 CPUs

          (3) To be satisfactory to users, the tool
               (A) Must not require any special learning curve
               (B) Must not introduce any new possibilities for error
               (C) Must not require significant time/effort to customize

5.   Design Iteratively with User Participation

6.   Checklist for UCD (from Web)