Fundamentals of Designing User Interaction - Design Principles and Methodology
User-Centered Design Principles
The information in this section describes the design principles on which Windows and the guidelines in this book are based. You will find these principles valuable when designing software for Windows.
User in Control
An important principle of user interface design is that the user should always feel in control of the software rather than feeling controlled by the software. This principle has a number of implications:
- The operational assumption is that the user - not the computer or software - initiates actions. The user plays an active rather than reactive role. You can automate tasks, but implement the automation in a way that allows the user to choose or control it.
- Because of their widely varying skills and preferences, users must be able to personalize aspects of the interface. The system software provides user access to many of these aspects. Your software should reflect user settings for different system properties, such as colors, fonts, or other options.
- Your software should be as interactive and responsive as possible. Avoid modes whenever possible. A mode is a state that excludes general interaction or otherwise limits the user to specific interactions. When a mode is the best or only design alternative - for example, for selecting a particular tool in a drawing program - make sure the mode is obvious, visible, the result of an explicit user choice, and easy to cancel.
Here are some other suggested ways of keeping your application's design interactive:
- Use modeless secondary windows wherever possible. For more information, see Chapter 9, "Secondary Windows."
- Segment processes, such as printing, so you do not need to load the entire application to perform an operation.
- Run long processes in the background, keeping the foreground interactive. For example, when a document is printing, the user should be able to minimize the window even if the document cannot be altered. The multitasking support in Windows allows you to define separate processes, or threads, in the background.
For information about applying the user-in-control design principle, see Chapter 5, "Input Basics," and Chapter 6, "General Interaction Techniques." These chapters cover the basic forms of interaction your software should support.
Directness
Design your software so that users can directly manipulate software representations of information. Whether they are dragging an object to relocate it or navigating to a location in a document, users should see how their actions affect the objects on the screen. Visible information and choices also reduce the user's mental workload. Users can recognize a command more easily than they can recall its syntax.
Familiar metaphors provide a direct and intuitive interface for user tasks. By allowing users to transfer their knowledge and experience, metaphors make it easier to predict and learn the behaviors of software-based representations.
When using metaphors, you need not limit a computer-based implementation to its real-world counterpart. For example, unlike its paper-based counterpart, a folder on the Windows desktop can be used to organize a variety of objects such as printers, calculators, and other folders. Similarly, a Windows folder can be sorted in ways that its real-world counterpart cannot. The purpose of using metaphor in the interface is to provide a cognitive bridge; the metaphor is not an end in itself.
Metaphors support user recognition rather than recollection. Users remember a meaning associated with a familiar object more easily than they remember the name of a particular command.
For information about applying the principle of directness and metaphor, see Chapter 6, "General Interaction Techniques," and Chapter 14, "Visual Design." These chapters cover, respectively, the use of directness in the interface (including drag-and-drop operations) and the use of metaphors in the design of icons or other graphical elements.
Consistency
Consistency allows users to transfer existing knowledge to new tasks, learn new things more quickly, and focus more attention on tasks. This is because they do not have to spend time trying to remember the differences in interaction. By providing a sense of stability, consistency makes the interface familiar and predictable.
Consistency is important through all aspects of the interface, including names of commands, visual presentation of information, operational behavior, and placement of elements on the screen and within windows. To design consistency into software, you must consider the following:
- Consistency within an application. Present common functions using a consistent set of commands and interfaces. For example, avoid implementing a Copy command that immediately carries out an operation in one situation but in another displays a dialog box that requires a user to type in a destination. As a corollary to this example, use the same command to carry out functions that seem similar to the user.
- Consistency within the operating environment. By maintaining a high level of consistency between the interaction and interface conventions provided by Windows, your software benefits from the users' ability to apply interactive skills they have already learned.
- Consistency with metaphors. If a particular behavior is more characteristic of a different object than its metaphor implies, the user may have difficulty learning to associate that behavior with an object. For example, an incinerator communicates a different model than a wastebasket as far as recovering the objects placed in it.
Although applying the principle of consistency is the primary goal of this book, the following chapters focus on the elements common to all Windows-based software: Chapter 7, "Windows"; Chapter 8, "Menus, Controls, and Toolbars"; and Chapter 9, "Secondary Windows." For information about closely integrating your software with the Windows environment, see Chapter 11, "Integrating with the System," and Chapter 12, "Working with OLE Embedded and Linked Objects."
Forgiveness
Users like to explore an interface and often learn by trial and error. An effective interface allows for interactive discovery. It provides only appropriate sets of choices and warns users about potential situations where they could damage the system or data, or better, makes actions reversible or recoverable.
Even in the best-designed interface, users can make mistakes. These mistakes can be both physical (accidentally pointing to the wrong command or data) and mental (making a wrong decision about which command or data to select). An effective design avoids situations that are likely to result in errors. It also accommodates potential user errors and makes it easy for the user to recover.
For information about applying the principle of forgiveness, see Chapter 13, "User Assistance," which provides information about supporting discoverability in the interface through the use of contextual, task-oriented, and reference forms of user assistance. For information about designing for the widest range of users, see >Chapter 15, "Special Design Considerations."
Feedback
Always provide feedback for a user's actions. Good feedback helps confirm that the software is responding to input and communicates details that distinguish the nature of the action. Effective feedback is timely and is presented as close to the point of the user's interaction as possible. Even when the computer is processing a particular task, provide the user with information about the state of the process and how to cancel the process if that is an option. Nothing is more disconcerting to users than a "dead" screen that is unresponsive to input. A typical user will tolerate only a few seconds of an unresponsive interface.
It is equally important that the type of feedback you use be appropriate to the task. You can communicate simple information through pointer changes or a status bar message; for more complex feedback, you may need to display a progress control or message box.
For information about applying the principle of visual and audio feedback, see Chapter 14, "Visual Design" and >Chapter 15, "Special Design Considerations."
Aesthetics
Visual design is an important part of an application's interface. Visual attributes provide valuable impressions and communicate important cues to the interactive behavior of particular objects. At the same time, it is important to remember that every visual element that appears on the screen potentially competes for the user's attention. Provide a coherent environment that clearly contributes to the user's understanding of the information presented. The skills of a graphics or visual designer can be invaluable for this aspect of the design.
For information and guidelines related to the aesthetics of your interface, see Chapter 14, "Visual Design." This chapter covers everything from individual element design to font use and window layout.
Simplicity
An interface should be simple (not simplistic), easy to learn, and easy to use. It must also provide access to all functionality of an application. Maximizing functionality and maintaining simplicity work against each other in the interface. An effective design balances these objectives.
One way to support simplicity is to reduce the presentation of information to the minimum required to communicate adequately. For example, avoid wordy descriptions for command names or messages. Irrelevant or verbose phrases clutter your design, making it difficult for users to extract essential information easily. Another way to design a simple but useful interface is to use natural mappings and semantics. The arrangement and presentation of elements affects their meaning and association.
Simplicity also correlates with familiarity; things that are familiar often seem simpler. Whenever possible, try to build connections that draw on your users' existing knowledge and experiences.
You can also help users manage complexity by using progressive disclosure. Progressive disclosure involves careful organization of information so that it is shown only at the appropriate time. By hiding information presented to the user, you reduce the amount of information the user must process. For example, you can use menus to display lists of actions or choices, and you can use dialog boxes to display sets of options.
Progressive disclosure does not imply using unconventional techniques for revealing information, such as requiring a modifier key as the only way to access basic functions or forcing the user through a longer sequence of hierarchical interaction. This can make an interface more complex and cumbersome.
For information about applying the principle of simplicity, see Chapter 8, "Menus, Controls, and Toolbars." This chapter discusses progressive disclosure in detail and describes how and when to use the standard (system-supplied) elements in your interface.
>Fundamentals of Designing User Interaction
>Windows Interface Components
>Design Specifications and Guidelines
>Appendixes and References