GUI Design Principles

Generally accepted principles for Graphical user interface design are:

1.	Aesthetically pleasing Provide visual appeal by following these presentation and graphic design principles:
 * Provide meaningful contrast between screen elements.
 * Create groupings.
 * Align screen elements and groups.
 * Provide three dimensional representation
 * Use colors and graphics effectively and simply.

2.	Clarity The interface should be visually, conceptually and linguistically clear, including
 * Visual elements
 * Functions
 * Metaphors
 * Words and text

3.	Compatibility Provide compatibility with the following:
 * The user
 * The task and job
 * The product
 * Adopt the user’s perspective

4.	Comprehensibility A system should be easily understood and learned. A user should know the following
 * What to do
 * What to look at
 * When to do it
 * Where to do it
 * Why to do it
 * How to do it
 * The flow of actions, responses, visual preparations and information should be in a sensible order that is easy to recollect and place in context.

5.	Configurability Permit easy personalization, configuration and reconfiguration of settings.
 * Enhances a sense of control
 * Encourages an active role in understanding

6.	Consistency A system should look, act, and operate the same throughput. Similar components should:
 * Have a similar look
 * Have similar uses.
 * Operate similarly
 * The same action should always yield the same result.
 * The function of the elements should not change
 * The position of standard elements should not change.

7.	Control The user must control the interaction.
 * Actions should result from explicit user requests
 * Actions should be performed quickly
 * Actions should be capable of interruption or termination
 * The user should never be interrupted for errors
 * The context maintained must be from the perspective of the user.
 * The means to achieve goals should be flexible and compatible with the user’s skills, experiences, habits and preferences.
 * Avoid modes since they constrain the actions available to the user.
 * Permit the user to customize aspects of the interface, while always 	providing a proper set of defaults.

8.	Directness Provide direct ways to accomplish tasks
 * Available alternatives should be visible,
 * The effect of actions on objects should be visible.

9.	Efficiency
 * Minimize eye and hand movements, and other control actions.
 * Transitions between various system controls should flow easily and 		freely.
 * Navigation paths should be as short as possible.
 * Eye movement through a screen should be obvious and sequential.
 * Anticipate the user’s wants and needs whenever possible.

10.	Familiarity Employ familiar concepts and use a language that is familiar to the user.
 * Keep the interface natural, mimicking the user’s behavior patterns.
 * Use real world metaphors.

11.	Flexibility A system must be flexible to the different needs of its users, enabling a level and type of performance based upon:
 * Each user’s knowledge and skills.
 * Each user’s experience.
 * Each user’s personal preference
 * Each user’s habits
 * The conditions at that moment

12.	Forgiveness
 * Tolerate and forgive common and unavoidable human errors
 * Prevent errors from occurring whenever possible.
 * Protect against possible catastrophic errors.
 * When an error does occur, provide constructive messages.

13.	Predictability The user’s should be able to anticipate the natural progression of the task.
 * Provide distinct and recognizable screen elements
 * Provide cues to the result of an action to be performed
 * All expectations should be fulfilled uniformly and completely.

14.	Recovery A system should permit: Ensure that users never lose their work as a result of
 * Commands or actions to be abolished or reversed.
 * Immediate return to a certain point if difficulties arise.
 * An error on their part
 * H/W, S/W or communication problems.

15.	Responsiveness The system must rapidly respond to the user’s requests.
 * Provide immediate acknowledgement for all user actions
 * Visual
 * Textual
 * Auditory

16.	Simplicity Five ways to provide simplicity:
 * Provide as simple an interface as possible
 * Provide defaults
 * Minimize screen alignment points.
 * Make common actions simple at the expense of uncommon actions being made harder.
 * Provide uniformity and consistency
 * Present common and necessary functions first.
 * Prominently feature important functions,
 * Hide more sophisticated and less frequently used functions

17.	Transparency
 * Permit the user to focus on the task or job, without concern for the mechanics of the interface.
 * Workings and reminders of workings inside the computer should be invisible to the user.

18.	Trade-offs
 * Final design will be based on a series of trade-offs balancing often-conflicting design principles
 * People’s requirements always take precedence over technical requirements