Since the design principles are basically derived from design experiences, it is very natural that different authors may have their own sets of principles which are different from one another in order or even details. However, there are always something common in their considerations due to the abstractness of the principles. For your reference and comparison, several collections of principles from different sources will be presented in this report. They are, namely, Ben Shneiderman's "Eight Golden Rules of Dialog Design", Deborah J. Mayhew's "General Principles of User Interface Design", IBM's "design principles for tomorrow" and the principles discussed in class. Some related world wide web links are provided at the end.
1 Strive for consistency.
Consistent sequences of actions should be required in similar situations;
identical terminology should be used in prompts, menus, and help screens;
and consistent commands should be employed throughout.
2 Enable frequent users to use shortcuts.
As the frequency of use increases, so do the user's desires to reduce the
number of interactions and to increase the pace of interaction. Abbreviations,
function keys, hidden commands, and macro facilities are very helpful to an
expert user.
3 Offer informative feedback.
For every operator action, there should be some system feedback. For
frequent and minor actions, the response can be modest, while for
infrequent and major actions, the response should be more substantial.
4 Design dialog to yield closure.
Sequences of actions should be organized into groups with a beginning,
middle, and end. The informative feedback at the completion of a group
of actions gives the operators the satisfaction of accomplishment, a
sense of relief, the signal to drop contingency plans and options
from their minds, and an indication that the way is clear to prepare
for the next group of actions.
5 Offer simple error handling.
As much as possible, design the system so the user cannot make a serious
error. If an error is made, the system should be able to detect the
error and offer simple, comprehensible mechanisms for handling the error.
6 Permit easy reversal of actions.
This feature relieves anxiety, since the user knows that errors can be
undone; it thus encourages exploration of unfamiliar options.
The units of reversibility may be a single action, a data entry, or
a complete group of actions.
7 Support internal locus of control.
Experienced operators strongly desire the sense that they are in charge
of the system and that the system responds to their actions. Design
the system to make users the initiators of actions rather than
the responders.
8 Reduce short-term memory load.
The limitation of human information processing in short-term memory
requires that displays be kept simple, multiple page displays be
consolidated, window-motion frequency be reduced, and sufficient
training time be allotted for codes, mnemonics, and sequences of actions.
1 User compatibility.
Perhaps the most fundamental principle, from which all
other derive, is to know the user. Designer should be familiar with
cognitive psychology, or an understanding of the general strengths and
weaknesses of the human mind so as to make the design acceptable
to most users, not only a few of them.
2 product compatibility.
Often the intended user of a new system is already
a user of other systems, who has already invested a great deal of time
and/or money
in learning the existing systems. The across-product compatibility
is important since it allows the user to adapt to a new system
quickly.
3 Task compatibility.
The structure and flow of a system should match and
support the task that is being carried out. The user doesn't
need to navigate back and forth between applications in order to
complete a task.
4 Work flow compatibility.
A system should be organized to facilitate transitions between tasks.
For example, a windowed, multitasking system can support the nature
of this type of user's work
more effectively.
5 Consistency.
Consistency
refers to similarities within a product, rather than across
products.
It allows people to reason by analogy and predict how to do things they
have never done before.
6 Familiarity.
Concepts, terminology, and spatial arrangements
that the user is already familiar with can be incorporated into
the interface.
7 Simplicity.
Don't try to provide all the functionality that any user could possibly
ever want or need. Instead, make the interface relatively simple.
8 Direct manipulation.
A direct manipulation interface is one in which users directly
perform actions on visible objects. This is in contrast to interfaces
in which users specify actions, parameters, and objects
indirectly through language.
9 Control.
User prefer to feel a sense of mastery and control over any tool
at their disposal, and the computer is no exception. The designer
should be sensitive to this and present a tool-like interface.
10 WYSIWYG.
Try to make what you see on the screen is what you get on printed output
or stored files.
11 Flexibility.
Allow more user control and accommodates variations in user
skill and preferences.
12 Responsiveness.
Give users feedback as soon as possible and let users be aware of the
progress.
13 Invisible technology.
Hide the technology from users.
Only present the functionality that users need to know.
14 Robustness.
A system should tolerate common and unavoidable human error.
System crashes should be minimized, and simple to understand and execute
recovery measures should be presented. A robust system
encourages users to learn new features
and thus increases productivity.
15 Protection.
People make errors, especially when they are working quickly
or under pressure. Users should be protected against the
catastrophic results of common human error. "Undo" or other
recovery measures should also be provided.
16 Ease of learning and ease of use.
System should be both easy to learn for the novice and efficient and easy to
use for the expert.
1 Simplicity: Don't compromise usability for function
Keep the interface simple and straightforward. Users don't benefit from function that is not easily accessible and usable. A poorly organized interface cluttered with many advanced functions distracts users from accomplishing their everyday tasks. Basic functions should be immediately apparent, while advanced functions may initially be less obvious to new users. Function should be included only if required based on task analysis. Therefore, keep the number of different objects and actions to a minimum while allowing users to accomplish their tasks.
2 Support: User is in control with proactive assistanceAllow users to be in control of the interface. Don't limit users by artificially restricting their choices to your notion of the "correct" sequence of steps needed to accomplish a task. For instance, provide users with alternative courses of action appropriate to their way of thinking.
Allow users to establish and maintain a working context, or frame of reference, from within which they can perform actions. The current state of the system, and possible user actions, should be obvious. Users should be able to leave their systems for a moment or a day and find the system in the same familiar state when they return. This contextual framework contributes to the feeling of stability.
3 Familiarity: Build on users' prior knowledgeAllow users to build on prior knowledge, especially knowledge they have gained from experience in the real world. A small amount of knowledge, used consistently throughout an interface, can empower the user to accomplish a large number of tasks. Concepts and techniques can be learned once and then applied in a variety of situations. Users should not have to learn new things to perform familiar tasks. The use of concepts and techniques that users already understand from their real world experiences allows them to get started quickly and make progress immediately.
Avoid the tendency to employ consistency without understanding your users, their tasks, and shared experiences. When choosing a dimension within which to be consistent, seek to understand what the user expects and be consistent with those expectations. Providing a familiar experience is the ultimate use of consistency in which a truly intuitive interface will result.
4 Obviousness: Make objects and their controls visible and intuitiveWhere practical, use real-world representations in the interface. Real-world representations and natural interactions (direct action) give the interface a familiar look and feel and can make it more intuitive to learn and use. Icons and windows were early attempts to draw on user experiences outside the computing domain. As we move toward real-world representations, reliance on such computer artifacts should decline.
The controls of the system should be clearly visible and their functions identifiable. Visual representations provide cues and reminders that help users understand roles, remember relationships, and recognize what the computer is doing. For example, the numbered buttons on the telephone object indicate that they can be used to dial a telephone number.
5 Encouragement: Make actions predictable and reversibleUser actions should cause the results the user expects. In order to meet those expectations, the designer must understand the users' tasks, goals, and mental model. Use terms and images that match users' task experience, and that help users understand the objects and their roles and relationships in accomplishing tasks.
Users should feel confident in exploring, knowing they can try an action, view the result, and undo the action if the result is unacceptable. Users feel more comfortable with interfaces in which their actions do not cause irreversible consequences.
6 Satisfaction: Create a feeling of progress and achievementAllow the user to make uninterrupted progress and create a sense of accomplishment. Reflect the results of actions immediately; any delay intrudes on users' tasks and erodes confidence in the system. This allows users to assess whether the results were what was expected and allows them to take alternative action immediately. For example, when a user chooses a new font, the font of all applicable text, or of sample text, should change immediately. The user can then decide if the effect is what was desired, and if not, can change it before switching attention to something else.
7 Accessibility: Make all objects accessible at all timesUsers should be able to use all of their objects in any sequence and at any time. Avoid the use of modes, those states of the interface in which normally available actions are no longer available, or in which an action causes different results than it normally does.
8 Safety: Keep the user out of troubleUsers should be protected from making errors. The burden of keeping the user out of trouble is on the designer. The interface should provide visual cues, reminders, lists of choices, and other aids, either automatically or on request, especially since humans are much better at recognition than recall. Contextual and hover help, as well as agents, can provide supplemental assistance. Simply stated, eliminate the opportunity for user error and confusion.
9 Versatility: Support alternate interaction techniquesAllow users to choose the method of interaction that is most appropriate to their situation. Interfaces that are flexible in this regard are able to accommodate a wide range of user skills, interactions, and usage environments.
Each interaction device is optimized for certain uses or users and may be more convenient in different situations. For example, a microphone used with voice-recognition software can be helpful for fast entry of text or in a hands-free environment. Pen input is helpful for people who sketch and mouse input works well for precise indication in selection. Alternate output formats such as computer-generated voice output for foreign language instruction are useful. No single method is best for every situation.
10 Personalization: Allow users to customizeThe interface should be tailorable to individual users' needs and desires. No two users are exactly alike. Users have varying backgrounds, interests, motivations, and levels of experience. Customization can help make an interface feel comfortable and familiar.
Personalizing a computer interface can also lead to higher productivity and user satisfaction. For example, allowing users to change default values can save them time and hassle when accessing frequently used functions.
11 Affinity: Bring objects to life through good visual designThe goal of visual design in the user interface is to surface to the user in a cohesive manner all aspects of the design principles. Visual design should support the user model and communicate the function of that model without ambiguities. Visual design should not be the "icing on the cake" but an integral part of the design process. The final result should be an intuitive and familiar representation that is second nature to users.
10 Use simple and natural dialog in user's language
Match user's task in natural way. Avoid jargon, and techno-speak.
Present exactly information users need, not too little or too much.
9 Strive for consistency
Sequences, actions, commands, layouts and terminology should be consistent
so as to make the interface more predictable.
8 Provide informative feedback
Continuously inform user what is happening. It is most important
to provide feedback on substantive and infrequent actions.
7 Minimize user's memory load
Human mind can recognize better than recall. Provide enough
information so that the user can take action without recalling
a lot.
6 Permit easy reversal of actions (undo)
To reduce anxiety and encourage experiments.
5 Provide clearly marked exits
So that the user won't be trapped on any level of the applications.
4 Provide shortcuts
Enable frequent users to perform often used operations
quickly.
3 Support internal locus of control
Put user in charge, not computer.
2 Handle errors smoothly and positively
Make the system robust and provide easy to use recovery measures.
1 Provide useful help and document
Users should be able to get sufficient help information when
they get confused.
Since the principles are derived from practice, they need to be applied carefully. Often principles have to be traded-off against other constraints or each other and to be refined or extended according to a particular context. In order to effectively apply these design principles, users's tasks and requirements should be fully understood.
Web Design Principles:
On this site, there are some useful design principles which are
particularly contributed to WWW interface design.
HCI Resources: Guidelines, styleguides, standards
Human factors design principles
[2] Ben Shneiderman, Designing the User Interface - Strategies for Effitive Human-Computer Interaction, second edition, Reading, MA: Addison-Wesley Publishing Company, 1992
[3] William M. Newman and Michael G. Lamming, Interactive System Design, Reading, MA: Addison-Wesley Publishing Company, 1995
[4] Deborah J. Mayhew, Principles and Guidelines in Software User Interface Design, Englewood Cliffs, NJ: Prentice Hall, 1992