A good user interface allows the user to transfer skills from real-world
experiences. For example, PushButtons push, and Scales slide. This makes
it easier for the user to infer how to use an application.
When you design a new component, consider how a similar real-world
control performs to incorporate the metaphor into the new component.
Real-world metaphors can extend to groups of components as well, especially
when making a computer-based user interface to replace a mechanical
user interface.
Allow Direct Manipulation
Users need to be able to directly manipulate elements of the user interface and their applications. For example, the user needs to be able to directly scroll Text with a ScrollBar, rather than using a keyboard-driven command. Direct manipulation simulates the real world where the user employs tools to perform tasks on physical objects. Users control applications by directly manipulating graphical components similar to real-world controls, rather than entering a command on a command line. Direct manipulation reduces the amount of information the user needs to memorize.
Direct manipulation connects an action to an observable response from a component. Using direct manipulation, the user gets an immediate visible result from each action.
The direct manipulation model is an object-action model. That is, you first select an object or group of objects, then you perform an action on the selected objects. An object-action model allows the user to see what elements will be acted on before performing an action. It also allows multiple actions to be performed successively on the selected elements.
Although it is important to allow direct manipulation of
the objects in your application,
you must also support methods
for interacting with your application by keyboard-only users.
These methods can also be used by advanced users to
perform some tasks more quickly.
Provide Rapid Response
Make your application respond to input as rapidly as possible. The immediacy of the visual response is crucial to the experience of direct manipulation. When using components, provide the application's response immediately and in proportion to the component's actions. The application must also have a consistent speed of response. Delays, disproportionate responses, or inconsistent responses can render an otherwise well-designed application unusable. Performance problems make it difficult for the user to concentrate on the task at hand.
Another feature of direct manipulation is that the output of one part of an application or the output of the application itself is also available as input. For example, if one action produces a list of filenames, another action can select them for use elsewhere.
The user manipulates objects by locating them and clicking on them rather than typing in their names. Design so that the only time the user needs to type a name is to create an object. A well-designed application reduces the amount of information the user needs to memorize to perform tasks.