Simon Willison’s Weblog


Usability and interface design

27th September 2002

Graphical User Interfaces

This course covers HCI with a heavy emphasis on implementation. We will be developing the interface/interaction components of software using Java, in particular the AWT and Swing toolkits.

The course will consist of one piece of group coursework and one exam. The coursework will last from week 3 to week 10 of the course.

Swing is huge. No one can be expected to know all of Swing, but we will need to be able to use the library documentation to find the classes we need when we need to use them.


Usability is functionality. If a user can not use a feature the feature may as well not exist. Usability can be measured through evaluation, which differs from testing in that testing checks that the sofware does what the developer intended while evaluation checks that the software does what the user wants it to do.

How do we get usability? We build it in from the start. Designing for usability is a key part of the development process. It can not be tacked on at the end.

There are four design methodologies that relate to usability:

User centered design
The design takes in to account data gathered from the end users of the system.
Particapatory design
Similar to user centered design, but the users are actively involved in the design process. This technique was developed in Scandinavia in the early 80s thanks to a Norwegian law which required the workers (through their trade unions) to approve any software being introduced in to the work place.
Experimental design
Iterative design
The initial design is evolved and improved over many iterations

HCI is a multi-disciplinary activity. It involves more than just designing software, and ends up being part management consultancy, part anthropolgy and part code hacking.

The usability trinity is:

  • Users
  • Task
  • Environment

Task-based design activities include collecting information on the tasks that users will be completing using the software.

Another way of looking at the usability design process is the following:

  1. Understand how the user’s tasks work at the moment
  2. Think how these tasks could be done better. If the organisation needs software it means that their current working practises are inefficient, so it would not be a good idea to build a system to support their current practises without first considering their weaknesses. The model you come up with is called the envision task model.
  3. Build the software to support your model.

People do not like being told to change their working practises, so usability engineering using the above method can be very difficult.

This is Usability and interface design by Simon Willison, posted on 27th September 2002.

Next: XFML 1.0 soon

Previous: Functional programming

Previously hosted at