8 Golden Rules of Dialog Design – Software Engineering

Ben Shneiderman proposed this collection of principles, which is derived heuristically from experience and applicable in most interactive systems after properly refined, extended and interpreted.


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 actions, 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 imitators 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.

Some other principles of user interface design are as follows;

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 importance 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. Consistencies: Consistency refers to similarities within a product, rather than across products. I allows people to reason by analogy and predicts how to do things they have never done before.

6. Familiarities: Concepts, terminology, and spatial arrangements that the user is already familiar with can be  incorporated into 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 manipulations: 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. Controls: User prefers to feel a sense of mastery and control over 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 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.

In other words, we can conclude the principle of design are as follows;

  1. It should be simple.
  2. It should be concise, verifiable and complete.
  3. It should minimize the intellectual distance between the software and the problem, as it exists in the real world.
  4. It must be efficient in context of proper use of scarce resources by the system.
  5. It should be designed as changes can be done easily.

Although new techniques are to be developed but concepts regarding the software design are same. The basic concepts of software design are described in the next section and these concepts help a software engineer to distinguish between the function or data structure detail from a conceptual representation of the software.

Leave a Reply