<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.cas.mcmaster.ca/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Sandhj2&amp;title=Special%3AContributions</id>
		<title>Computing and Software Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Sandhj2&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Special:Contributions/Sandhj2"/>
		<updated>2026-04-12T12:08:46Z</updated>
		<subtitle>From Computing and Software Wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T20:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands and Controls&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands and Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Textboxes====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:*Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
:With a link, users can navigate to another page, window, or Help topic; display a definition; initiate a command or choose an option. A link is text or a graphic that indicates that it can be clicked, typically by being displayed using the visited or unvisited link system colors. Traditionally, links are underlined as well, but that approach is often unnecessary and falling out of favor to reduce visual clutter.  Here are some generally used guidelines:&lt;br /&gt;
:*A link that has been clicked must appear different than one that hasn't, usually this is done with bold and unbold&lt;br /&gt;
:*Display a busy pointer if the result of clicking a link isn’t instantaneous. Without feedback, users might assume that the click didn’t happen and click again.&lt;br /&gt;
:*Use the theme or link system colors for visited and unvisited links. The meaning of these colors is consistent across all programs. If for any reason users don’t like these colors (perhaps for accessibility reasons), they can change them themselves.&lt;br /&gt;
:*Don’t use graphics-only links. Users have difficultly recognizing them as links and any text within the graphic (used to indicate their action when clicked) creates a localization problem.&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:48:05Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Textboxs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands and Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Textboxes====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:*Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Textbox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands and Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Textboxs====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:*Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Standards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands and Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Textbox====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:*Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:36:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Command Buttons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For&lt;br /&gt;
example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t&lt;br /&gt;
matter.&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:36:13Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Textbox]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For&lt;br /&gt;
example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t&lt;br /&gt;
matter.&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Radio]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Radio.jpg</id>
		<title>File:Radio.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Radio.jpg"/>
				<updated>2009-11-23T18:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Textbox.jpg</id>
		<title>File:Textbox.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Textbox.jpg"/>
				<updated>2009-11-23T18:35:18Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
[[Image:Textbox.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For&lt;br /&gt;
example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t&lt;br /&gt;
matter.&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
[[Image:Radio.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:31:31Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Radio Buttons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without&lt;br /&gt;
harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For&lt;br /&gt;
example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t&lt;br /&gt;
matter.&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need to change the option labels.&lt;br /&gt;
:Every radio button should have a label&lt;br /&gt;
&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
:Text boxes are a double edge sword, they are very versatile but also have very few constraints. Basically you can restrict the amount of space in a textbox and whether numeric or alphabetical characters are allowed within it.  Labels are a necessary addition to textbox's to show what needs to be put in the text box.  General guidelines are:&lt;br /&gt;
:*When disabling a text box, also disable any associated labels, instruction labels, spin controls, and command buttons.&lt;br /&gt;
:*Only use auto complete to help the user fill in common information faster, do not use it for sensitive information such as passwords or PIN numbers&lt;br /&gt;
:*If you expect data to be larger than the text box and you can readily make the text box larger without&lt;br /&gt;
harming the layout, size the box to eliminate the need for scrolling.&lt;br /&gt;
:*For numeric input, you may use a spin control. For textual input, use a drop-down list or editable drop-down list instead.&lt;br /&gt;
:*Limit the length of the input text when you can. For example, if the valid input is a number between 0 and 999, use a numeric text box that is limited to three characters. All parts of text boxes that use formatted data input must have a short, fixed length.&lt;br /&gt;
:*Be flexible with data formats. If users are likely to enter text using a wide variety of formats, try to handle all the most common ones. For&lt;br /&gt;
example, many names, numbers, and identifiers can be entered with optional spaces and punctuation, and the capitalization often doesn’t&lt;br /&gt;
matter.&lt;br /&gt;
====Radio Buttons====&lt;br /&gt;
:With a radio button, users make a choice among a set of mutually exclusive, related options. Users can choose&lt;br /&gt;
one and only one option. Radio buttons are so called because they function like the channel presets on radios. There are a few guidelines for the use of these:&lt;br /&gt;
:*List the options in a logical order, such as most likely to be selected to least, simplest operation to most complex, or least risk to&lt;br /&gt;
most. Alphabetical ordering is not recommended because it is language dependent and therefore not localizable.&lt;br /&gt;
:*Leave dependent editable text boxes and drop-down lists enabled if they share the radio button’s label. When users type or&lt;br /&gt;
paste anything into the box, select the corresponding option automatically. Doing so simplifies the interaction.&lt;br /&gt;
:*Avoid nesting radio buttons with other radio buttons or check boxes. If possible, keep all the options at the same level.&lt;br /&gt;
:*Make the first option the default option, since users often expect that—unless that order isn’t logical. To do this, you might need&lt;br /&gt;
to change the option labels.&lt;br /&gt;
:Every radio button should have a label&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:04:36Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Ribbons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Toolbars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|400px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Toolbar.jpg</id>
		<title>File:Toolbar.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Toolbar.jpg"/>
				<updated>2009-11-23T18:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T18:03:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Toolbars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
[[Image:Toolbar.jpg|right|thumbnail|200px|Toolbar]]&lt;br /&gt;
:Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required. Standard guidelines for the usage of toolbars are:&lt;br /&gt;
:*Toolbar commands should be instant, for example clicking print on the toolbar will print the document automatically with the settings already saved, but clicking print from the menu bar would lead to a user input screen with more options&lt;br /&gt;
:*Toolbars should not be hidden, so using the space well is very important, organization of the buttons is crucial to allow fast results&lt;br /&gt;
:*Menu's provide comprehensiveness, therefore toolbars should provide efficiency to avoid overlap&lt;br /&gt;
:*Only add a customizable toolbar if there are enough commands to validate the use of it.&lt;br /&gt;
:*If space is at a premium, save space by:&lt;br /&gt;
:**Omitting the labels of well-known icons and less frequently used commands.&lt;br /&gt;
:**Using only a partial toolbar instead of the entire window width.&lt;br /&gt;
:**Consolidating related commands with a menu button or split button.&lt;br /&gt;
:**Using an overflow chevron to reveal less frequently used commands.&lt;br /&gt;
:**Displaying commands only when they apply to the current context.&lt;br /&gt;
:*Disable individual toolbar buttons that don’t apply to the current context, instead of removing them. Doing so makes toolbar contents stable and easier to find.&lt;br /&gt;
:*Disable individual toolbar buttons if clicking on them would directly result in an error. Doing so is necessary to maintain a direct feel.&lt;br /&gt;
:*For the unlabeled icons toolbar pattern, remove entire toolbars if they don’t apply to the current context. Display them only in the applicable modes.&lt;br /&gt;
&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T17:51:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
[[Image:Menu.jpeg|right|thumbnail|400px| Menu]]&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required.&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Menu.jpeg</id>
		<title>File:Menu.jpeg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Menu.jpeg"/>
				<updated>2009-11-23T17:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Menu.jpg</id>
		<title>File:Menu.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Menu.jpg"/>
				<updated>2009-11-23T17:50:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T17:49:07Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* etc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required.&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T17:48:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
:Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
:The following is a general menu structure for the most common menu, File:&lt;br /&gt;
::File&amp;lt;br&amp;gt;&lt;br /&gt;
::New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
::Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
::Close&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
::Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Send to&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
::Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
::Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::...&amp;lt;br&amp;gt;&lt;br /&gt;
::&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
::Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required.&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
====etc====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T17:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
:*All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
:*Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
:*If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
:*Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
:*A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
:*Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
:*For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
:*Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
:*It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
:*Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
:*Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
The following is a general menu structure for the most common menu, File:&lt;br /&gt;
File&amp;lt;br&amp;gt;&lt;br /&gt;
New Ctrl+N&amp;lt;br&amp;gt;&lt;br /&gt;
Open... Ctrl+O&amp;lt;br&amp;gt;&lt;br /&gt;
Close&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Save Ctrl+S&amp;lt;br&amp;gt;&lt;br /&gt;
Save as...&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Send to&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Print... Ctrl+P&amp;lt;br&amp;gt;&lt;br /&gt;
Print preview&amp;lt;br&amp;gt;&lt;br /&gt;
Page setup&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3 &amp;lt;filename&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;separator&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Exit Alt+F4 (shortcut usually not given)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Toolbars====&lt;br /&gt;
Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required.&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
====etc====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T17:42:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
====Title Bar====&lt;br /&gt;
&lt;br /&gt;
:All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
:* Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
:* Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
:* Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
====Windows Title====&lt;br /&gt;
:A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
:''NOTE: If you need to display more than one item in the title, separate the items with a dash (—) with space on either side.''&lt;br /&gt;
&lt;br /&gt;
:''NOTE: The main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed. Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.''&lt;br /&gt;
&lt;br /&gt;
====Windows Size====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
:* Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
:* Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
:* For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
:* Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
:* Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
:* May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
====Windows Location====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
:For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
:If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
:*'''Show contextual windows near the object that it was launched from'''&lt;br /&gt;
 &lt;br /&gt;
::*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
::*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Cascade top-level application or document windows off the upper-left corner of the monitor'''&lt;br /&gt;
::*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
:*'''Center top-level utility windows'''&lt;br /&gt;
::*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
::*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
:*'''Window order (Z order)'''&lt;br /&gt;
::*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
::*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows Activation====&lt;br /&gt;
&lt;br /&gt;
:*Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
:*Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
:*Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
====Persistence====&lt;br /&gt;
&lt;br /&gt;
:*When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
:*Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
====Scrolling Windows====&lt;br /&gt;
&lt;br /&gt;
:People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
:The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
:The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
:* Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
:* Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
:* Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:NOTE: It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls. It’s best to place the majority of your features in the menus as commands. Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Titles and Icons====&lt;br /&gt;
&lt;br /&gt;
:Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|center|thumbnail|500px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
&lt;br /&gt;
:In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|center|thumbnail|400px|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
====Color====&lt;br /&gt;
&lt;br /&gt;
:Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
:Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png|center|thumb|300px| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
:The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
:While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Mouse====&lt;br /&gt;
&lt;br /&gt;
:The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
:Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
:Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
:Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png|center|thumbnail|500px| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
:*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
:The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
:*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
:Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
:Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
:Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
:*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
:Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
:*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
:Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
:Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
:Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
====Touch====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
:Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
:A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
:Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
:*Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
:*Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
:*Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
:*Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
:*Each input device has its strengths and weaknesses: &lt;br /&gt;
::*The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
::*The mouse is best for efficient, precise pointing. &lt;br /&gt;
::*Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
:*Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
:*You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
:*Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard====&lt;br /&gt;
&lt;br /&gt;
:The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
:Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
:'''Shortcut keys'''&lt;br /&gt;
:By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
:*They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
:*They are primarily for efficiency for advanced users.&lt;br /&gt;
:*They are assigned only to the most commonly used commands.&lt;br /&gt;
:*They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
:*They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
:*They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
:*They aren't localized.&lt;br /&gt;
&lt;br /&gt;
:Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
 &lt;br /&gt;
:Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|center|thumb|700px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Errors and Warnings====&lt;br /&gt;
:A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
:*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
:*It should be easy to understand that an error has occurred.&lt;br /&gt;
:*It should be clear what the user has to do to correct the error.&lt;br /&gt;
:*It should be clear for the user where the error was found in the application.&lt;br /&gt;
:*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
:*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
:*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
:*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
:*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
:*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
:*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
&lt;br /&gt;
====Confirmation and Notifications====&lt;br /&gt;
:Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
:*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
:*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
:*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
====Font Type====&lt;br /&gt;
:There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
====Font Size====&lt;br /&gt;
:Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: :Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
====Style and Justification====&lt;br /&gt;
:Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
:In terms of justification, there are generally two options available: &lt;br /&gt;
:*Ragged right - The text body is left aligned&lt;br /&gt;
:*Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
&lt;br /&gt;
:Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Menus====&lt;br /&gt;
Drop-down menus are menus displayed on demand on mouse click or hover. They are normally hidden from view and therefore are an efficient means of conserving screen space. A submenu or cascading menu is a secondary menu displayed on demand from within a menu. They are indicated by an arrow at the end of the submenu label. A menu item is an individual command or option within a menu. Menu's are standardly contained in a menu bar at the top of an application as shown in the picture to the right.  The following are standard guidelines for the usage of menu's in an application:&lt;br /&gt;
**All menu patterns except menu bars need a drop-down arrow to indicate the presence of a pull-down menu. The presence of menus&lt;br /&gt;
goes without saying in a menu bar, but not in the other patterns.&lt;br /&gt;
**Don’t change menu item names dynamically because doing so is confusing and unexpected. An exception is that you can change menu item names that are based on object names dynamically. For example, lists of recently used files or window names can be dynamic.&lt;br /&gt;
**If there are only a few commands (three or less), consider lighter alternatives such as toolbar menus, or more direct alternatives such as command buttons and links.&lt;br /&gt;
**Do not have too many options in one menu, it can become overwhelming and distracting.  A good limit is 10 items in a menu.&lt;br /&gt;
**A menu should have the option to be hidden if most of the commands are available through a toolbar or other sources.&lt;br /&gt;
**Choose single word names for menu categories. Using multiple words makes the separation between categories confusing.&lt;br /&gt;
**For programs that create or view documents, use the standard menu categories such as File, Edit, View, Tools, and Help. Doing so&lt;br /&gt;
makes the application consistant and common menu items predictable and easier to find.&lt;br /&gt;
**Only use submenu's if necessary, they make things harder to locate because of the nesting.&lt;br /&gt;
**It is inefficient to put commonly used items in a sub menu unless there are easier ways to use that command, such as a toolbar button.&lt;br /&gt;
**Icons are useful in menu's, but are not required for every command.  You do not want to create clutter with hard to read icons for every command.&lt;br /&gt;
**Shortcut keys should be assigned to only the most common menu items, to speed up the process for advanced users.  Remember to be consistant with shortcuts because changing them up can create confusion (ex. Cut is always ctrl-x)&lt;br /&gt;
The following is a general menu structure for the most common menu, File:&lt;br /&gt;
File&lt;br /&gt;
New Ctrl+N&lt;br /&gt;
Open... Ctrl+O&lt;br /&gt;
Close&lt;br /&gt;
&amp;lt;separator&amp;gt;&lt;br /&gt;
Save Ctrl+S&lt;br /&gt;
Save as...&lt;br /&gt;
&amp;lt;separator&amp;gt;&lt;br /&gt;
Send to&lt;br /&gt;
&amp;lt;separator&amp;gt;&lt;br /&gt;
Print... Ctrl+P&lt;br /&gt;
Print preview&lt;br /&gt;
Page setup&lt;br /&gt;
&amp;lt;separator&amp;gt;&lt;br /&gt;
1 &amp;lt;filename&amp;gt;&lt;br /&gt;
2 &amp;lt;filename&amp;gt;&lt;br /&gt;
3 &amp;lt;filename&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;separator&amp;gt;&lt;br /&gt;
Exit Alt+F4 (shortcut usually not given)&lt;br /&gt;
====Toolbars====&lt;br /&gt;
Toolbars make a great addition to menu's.  They do not include as many commands as a menu, but show the most commonly used ones with easy to recognize buttons.  Generally toolbars are contained right under the menu bar, or at the sides of the screen if more room is required.&lt;br /&gt;
====Ribbons====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
====Textbox====&lt;br /&gt;
====Radio &amp;amp; Checkmark Options====&lt;br /&gt;
====Command Buttons====&lt;br /&gt;
====etc====&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T07:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;amp;nbsp;&amp;amp;nbsp;The Windows Size */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
*Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
*Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
*For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
*Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
*Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
*May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
&lt;br /&gt;
Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|top|800px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts=====&lt;br /&gt;
&lt;br /&gt;
In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|top|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Color=====&lt;br /&gt;
&lt;br /&gt;
Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Type=====&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Size=====&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Justification=====&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T07:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
&lt;br /&gt;
Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|top|800px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts=====&lt;br /&gt;
&lt;br /&gt;
In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|top|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Color=====&lt;br /&gt;
&lt;br /&gt;
Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Type=====&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Size=====&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Justification=====&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T06:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor.&lt;br /&gt;
*If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
&lt;br /&gt;
Icon genres help communicate what users can do with an application before they open it. Applications are classified by role—user applications, software utilities, and so on—and each category, or genre, has its own icon style.&lt;br /&gt;
&lt;br /&gt;
[[Image:Icons.jpg|top|800px| Example of icons in MacOSX.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts=====&lt;br /&gt;
&lt;br /&gt;
In traditional typography, a font describes a combination of a typeface, a point size, and attributes. A typeface is the look of the font. Segoe UI, Tahoma, Verdana, and Arial are all typefaces. Point size refers to the size of the font, measured from the top of the ascenders to the bottom of the descenders, minus the internal spacing (called leading). A point is roughly 1/72 inch. Finally, a font can have attributes of bold or italic.&lt;br /&gt;
&lt;br /&gt;
[[Image:Font.png|top|Fonts.]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Color=====&lt;br /&gt;
&lt;br /&gt;
Color is an important visual element of most user interfaces. Beyond pure aesthetics, color has associated meanings and elicits emotional responses. To prevent confusion in meaning, color must be used consistently. To obtain the desired emotional responses, color must be used appropriately.&lt;br /&gt;
&lt;br /&gt;
Color is often thought of in terms of a color space, where RGB (red, green, blue), HSL (hue, saturation, luminosity), and HSV (hue, saturation, value) are the most commonly used color spaces.&lt;br /&gt;
&lt;br /&gt;
[[Image:Color.png| The RGB color space can be visualized as a cube.]]&lt;br /&gt;
&lt;br /&gt;
The RGB color space can be visualized as a cube.&lt;br /&gt;
&lt;br /&gt;
While display technology uses RGB values and consequently developers often think of colors in terms of RGB, the RGB color space doesn't correspond to how people perceive color. For example, if you add red to dark cyan, the result isn't perceived as more red but as lighter cyan.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Mouse.png| Typical mouse pointers.&amp;lt;sup&amp;gt;13&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Type=====&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Size=====&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Justification=====&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
:*'''The structure principle.'''Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
:*'''The simplicity principle.'''Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
:*'''The visibility principle.'''Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
:*'''The feedback principle.'''Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
:*'''The tolerance principle.'''Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
:*'''The reuse principle.'''Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [http://www.cas.mcmaster.ca/wiki/index.php?title=User_Interface_Standards#Principles Principles]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[6] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[8] Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[9] Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[10] Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[11] Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[12] ''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[13] ''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[14] ''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T05:07:17Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor. *If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&amp;lt;sup&amp;gt;14&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Type=====&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Font Size=====&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Justification=====&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[13]''Apple Human Interface Guidelines.'' Retrieved from http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
[14]''Windows User Experience Interaction Guidelines.'' Retrieved from http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
[15]''Beta Research. Standards and Guidelines'' Retrieved from http://www.beta-research.com/standards.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:58:17Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor. *If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the figure shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see in the figure to the right. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
*'''Style and Justification'''&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[13]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[14]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[15]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:TextFigure2.gif</id>
		<title>File:TextFigure2.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:TextFigure2.gif"/>
				<updated>2009-11-23T04:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor. *If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Image:TextFigure2.gif|right|thumbnail|200px| Font Type.]]&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the picture shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see Figure 1. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
*'''Style and Justification'''&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[13]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[14]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[15]© Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Text_Figure2.gif</id>
		<title>File:Text Figure2.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Text_Figure2.gif"/>
				<updated>2009-11-23T04:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:51:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor. *If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the picture shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see Figure 1. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
*'''Style and Justification'''&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
Ragged right - The text body is left aligned&lt;br /&gt;
Justified - A box of text is created, straight on both the left and right sides&lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:48:56Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
&lt;br /&gt;
*	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
*	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
*	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: if you need to display more than one item in the title, separate the items with a dash (—)&lt;br /&gt;
with space on either side. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: the main viewer window of Mail displays the currently selected message mailbox and the&lt;br /&gt;
selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and &lt;br /&gt;
show the extension if the user has elected to show extensions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
 &lt;br /&gt;
*If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
*If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
*If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
&lt;br /&gt;
'''Center top-level utility windows.'''&lt;br /&gt;
*If necessary, adjust the initial location so that the entire window is visible within the target monitor. *If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
&lt;br /&gt;
'''Window order (Z order)'''&lt;br /&gt;
*Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
*Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
*'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
*'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
*'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
*'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each input device has its strengths and weaknesses: &lt;br /&gt;
- The keyboard is best for text input and giving commands with minimal hand movement. &lt;br /&gt;
- The mouse is best for efficient, precise pointing. &lt;br /&gt;
- Touch is best for object manipulation and giving simple commands. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.png|bottom|850px| Example of a keyboard.]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the picture shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see Figure 1. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
*'''Style and Justification'''&lt;br /&gt;
Text orientation is not an issue for English software, as it is always horizontal and from left to right.  Other places in the world, the direction of the text is important, whether it be from right to left or from top to down.&lt;br /&gt;
&lt;br /&gt;
In terms of justification, there are generally two options available: &lt;br /&gt;
**Ragged right - The text body is left aligned&lt;br /&gt;
**Justified - &lt;br /&gt;
Although justifying continuous text provides a nice block of text, the extra spaces that appear between individual words often create continuous vertical spaces that can appear meaningful—like vertical rivers of white so it is standard to use ragged right to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;amp;nbsp;&amp;amp;nbsp;UI Text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the picture shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see Figure 1. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*'''Consistency and standards''' &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;amp;nbsp;&amp;amp;nbsp;UI Text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
*	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
*	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
*	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful. Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;It’s best not to add controls to the scroll-bar area of a window. &lt;br /&gt;
If you add more than one control to this area, it’s hard for people to distinguish among controls.&lt;br /&gt;
It’s best to place the majority of your features in the menus as commands. &lt;br /&gt;
Only frequently accessed features should be elevated to the primary interface.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
As both the UI and User get more advanced, less and less text is being used.  Regardless, text still makes up a huge part of any interface so there are still standards being followed:&lt;br /&gt;
*'''Font Type'''&lt;br /&gt;
There are hundreds of different serif and sans serif fonts available, both with their own advantages and disadvantages.  Serif fonts improve readability in continuous text, because the serifs help readers to structure and discriminate characters.  An example of a serif font is Times New Roman as the picture shows. Typically, newspapers, magazines, and books use serif fonts. Sans serif fonts like Arial do not feature these little strokes, as you can see Figure 1. On computer screens, sans serif fonts are preferable, because relatively low screen resolutions—typically around 100 pixels per inch rather than the 800 dots per inch of print—make serif fonts look fuzzier, especially in small sizes.&lt;br /&gt;
*'''Font Size'''&lt;br /&gt;
Font size plays a huge role in determining if font is readable or not.  Software developers often simply use the common font—for example, 10-pixel Verdana or Arial. While it makes sense to recommend standard font sizes for software or Web sites, keep this in mind: Font size is just one determinant of the physical size of a character on a computer screen. Thus, it is more appropriate to base our recommendations for character size on physiological measures. In other words, what matters is what a user actually sees on the screen, not what a product team has designed and developed.  A more detailed explanation can be found at http://www.uxmatters.com/mt/archives/2009/01/text-treatment-and-the-user-interface.php&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*'''Consistency and standards''' &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T04:13:24Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
*	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
*	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
*	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
*	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
*	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
*	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
*	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
&lt;br /&gt;
The keyboard is the primary input device used for text input in computers. For accessibility and efficiency, most actions can be performed using the keyboard as well.&lt;br /&gt;
Keyboards can also refer to virtual, on-screen keyboards and writing pads used by computers without a physical keyboard, such as tablet-based computers.&lt;br /&gt;
&lt;br /&gt;
'''Shortcut keys'''&lt;br /&gt;
By contrast, shortcut keys have the following characteristics:&lt;br /&gt;
&lt;br /&gt;
*	They primarily use Ctrl and Function key sequences (Windows system shortcut keys also use Alt+non-alphanumeric keys and the Windows logo key).&lt;br /&gt;
*	They are primarily for efficiency for advanced users.&lt;br /&gt;
*	They are assigned only to the most commonly used commands.&lt;br /&gt;
*	They are intended to be memorized, and are documented only in menus, tooltips, and Help.&lt;br /&gt;
*	They have effect throughout the entire program, but have no effect if they don't apply.&lt;br /&gt;
*	They must be assigned consistently because they are memorized and not directly documented.&lt;br /&gt;
*	They aren't localized.&lt;br /&gt;
&lt;br /&gt;
Because shortcut keys are intended to be memorized, the most frequently used shortcut keys ideally use letters from the first or most memorable characters within the command's keywords, such as Ctrl+C for Copy and Ctrl+Q for Request.&lt;br /&gt;
Inconsistent meanings for well-known shortcut keys are frustrating and cause errors.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Finally, because they are intended to be memorized, application-specific shortcut keys make sense only for programs and features that are run frequently enough for motivated users to memorize. Infrequently used programs and features don't need shortcut keys. For example, setup programs and most wizards don't need any special shortcut key assignments, nor do infrequently used commands in a productivity application.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
*Confirmation messages provide users to control an aspect of the application&lt;br /&gt;
*Both types of messages should have a consistant look so the type can be easily recognized&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*'''Consistency and standards''' &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*'''Consistency and standards''' &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Scott W. Ambler, Initials. (n.d.). ''The Object primer 3rd edition agile model driven development with uml 2.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Thovtrup , Henrik , &amp;amp; Nielsen, Jakob. (1991). ''Assessing the usability of a user interface standard.'' Retrieved from http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;br /&gt;
[6] MSDN, Initials. (2009). ''User interface standards.'' Retrieved from http://msdn.microsoft.com/en-us/library/aa217660%28office.11%29.aspx&amp;lt;br&amp;gt;&lt;br /&gt;
[7] © Copyright Usernomics, Initials. (2008). ''User interface design.'' Retrieved from http://www.usernomics.com/user-interface-design.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8]Molich, R., and Nielsen, J. (1990). ''Improving a human-computer dialogue, Communications of the ACM 33.'' 3 (March), 338-348.&amp;lt;br&amp;gt; &lt;br /&gt;
[9]Nielsen, J., and Molich, R. (1990). ''Heuristic evaluation of user interfaces.'' Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.&amp;lt;br&amp;gt; &lt;br /&gt;
[10]Nielsen, J. (1994a). ''Enhancing the explanatory power of usability heuristics.'' Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158. &amp;lt;br&amp;gt;&lt;br /&gt;
[11]Nielsen, J. (1994b). ''Heuristic evaluation.'' In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley &amp;amp; Sons, New York, NY. &amp;lt;br&amp;gt;&lt;br /&gt;
[12]Nielsen, Jakob. (2005 ). ''Ten usability heuristics.'' Retrieved from http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*'''Consistency and standards''' &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:23:11Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#'''The structure principle.''' Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*'''Visibility of system status''' &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*Consistency and standards &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:22:46Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are&lt;br /&gt;
#The structure principle. Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture. &lt;br /&gt;
#'''The simplicity principle.''' Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. &lt;br /&gt;
#'''The visibility principle.''' Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. &lt;br /&gt;
#'''The feedback principle.''' Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. &lt;br /&gt;
#'''The tolerance principle.''' Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. &lt;br /&gt;
#'''The reuse principle.''' Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember&lt;br /&gt;
&lt;br /&gt;
There are ten general principles for user interface design. They are called &amp;quot;heuristics&amp;quot; because they are more in the nature of rules of thumb than specific usability guidelines. &lt;br /&gt;
*Visibility of system status &lt;br /&gt;
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. &lt;br /&gt;
&lt;br /&gt;
*'''Match between system and the real world''' &lt;br /&gt;
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. &lt;br /&gt;
&lt;br /&gt;
*'''User control and freedom''' &lt;br /&gt;
Users often choose system functions by mistake and will need a clearly marked &amp;quot;emergency exit&amp;quot; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. &lt;br /&gt;
&lt;br /&gt;
*Consistency and standards &lt;br /&gt;
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. &lt;br /&gt;
&lt;br /&gt;
*'''Error prevention''' &lt;br /&gt;
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. &lt;br /&gt;
&lt;br /&gt;
*'''Recognition rather than recall''' &lt;br /&gt;
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate. &lt;br /&gt;
&lt;br /&gt;
*'''Flexibility and efficiency of use''' &lt;br /&gt;
Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions. &lt;br /&gt;
&lt;br /&gt;
*'''Aesthetic and minimalist design''' &lt;br /&gt;
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility. &lt;br /&gt;
&lt;br /&gt;
*'''Help users recognize, diagnose, and recover from errors''' &lt;br /&gt;
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution. &lt;br /&gt;
&lt;br /&gt;
*'''Help and documentation''' &lt;br /&gt;
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large.&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:11:57Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
A fundamental reality of application development is that the user interface is the system to the users.  What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. &lt;br /&gt;
&lt;br /&gt;
User interface design important for several reasons. First of all the more intuitive the user interface the easier it is to use, and the easier it is to use and the less expensive to use it.  The better the user interface the easier it is to train people to use it, reducing your training costs.  The better your user interface the less help people will need to use it, reducing your support costs.  The better your user interface the more your users will like to use it, increasing their satisfaction with the work that you have done. &lt;br /&gt;
&lt;br /&gt;
A collection of principles for improving the quality of your user interface design. These principles are, structure principle, simplicity principle, visibility principle, feedback principle, tolerance principle, reuse principle.&lt;br /&gt;
&lt;br /&gt;
The most important thing you can possibly do is ensure your user interface works consistently. If you can double-click on items in one list and have something happen, then you should be able to double-click on items in any other list and have the same sort of thing happen. Put your buttons in consistent places on all your windows, use the same wording in labels and messages, and use a consistent color scheme throughout. Consistency in your user interface enables your users to build an accurate mental model of the way it works, and accurate mental models lead to lower training and support costs.&lt;br /&gt;
&lt;br /&gt;
For a user interface standard to increase usability in the resulting products, two conditions have to be met: The standard must specify a usable interface, and the standard must be usable by developers so that they actually build the interface according to the specifications.&lt;br /&gt;
 &lt;br /&gt;
Clearly end users benefit from well-designed interface standards. However, organizations benefit as well. Organizations benefit from reduced production costs and more effective use of resources. Production costs are reduced because standards are essentially reusable, template-based building blocks. Developers identify the task a user seeks to execute on a given page, select the template based on that task, and then customize the page to fit the specific context of that task.&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
(Use http://www.ambysoft.com/essays/userInterfaceDesign.html)&lt;br /&gt;
&lt;br /&gt;
PUT INTERACTIPON STYLES IN HERE&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T03:10:31Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TALK ABOUT TRIAL AND ERROR, SIMPLICITY,ETC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NO INDUSTRY STANDARDS BUT THERE ARE HEURISTICS AS A GENERAL GUIDLINE&lt;br /&gt;
&lt;br /&gt;
EACH COMPANY HAS ITS OWN STANDARD WHICH IT FOLLOWS, THIS WIKI WILL EXPLAIN THE GENERAL, COMMON THINGS AMONG THEM.SDFSDG&lt;br /&gt;
&lt;br /&gt;
The structure principle. &lt;br /&gt;
The simplicity principle. &lt;br /&gt;
The visibility principle. &lt;br /&gt;
The feedback principle. &lt;br /&gt;
The tolerance principle.&lt;br /&gt;
The reuse principle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
APPLES AQUA INTERFACE DESIGN STANDARD&lt;br /&gt;
WINDOWS NEW WINDOWS 7 STANDARD &lt;br /&gt;
&lt;br /&gt;
DIFFERENT TYPES OF USERS&lt;br /&gt;
&lt;br /&gt;
CONSSISTENCY&lt;br /&gt;
&lt;br /&gt;
(Use  http://www.isii.com/ui_design.html)&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
|-&lt;br /&gt;
|If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
|-&lt;br /&gt;
|If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
|-&lt;br /&gt;
|'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
|-&lt;br /&gt;
|If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
|-&lt;br /&gt;
|If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
|-&lt;br /&gt;
|If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
|- &lt;br /&gt;
|If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
|-&lt;br /&gt;
|'''Center top-level utility windows.'''&lt;br /&gt;
|-&lt;br /&gt;
|If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
|-&lt;br /&gt;
|Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
|-&lt;br /&gt;
|Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
•	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in most operating systems. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Tablets and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen.jpg|right|thumbnail|200px| Touch Screen Simulation.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:touch_screen2.gif|right|thumbnail|200px| Touch Screen design for the elderly.]]&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
Generally the same rules as above for errors are followed but there are a few disparities:&lt;br /&gt;
*Notification areas in the application are generally not as eye catching as error messages&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
(Use http://www.ambysoft.com/essays/userInterfaceDesign.html)&lt;br /&gt;
&lt;br /&gt;
PUT INTERACTIPON STYLES IN HERE&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards</id>
		<title>User Interface Standards</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/User_Interface_Standards"/>
				<updated>2009-11-23T02:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;/* &amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User Interface Standards is created by Group 6 for 2009/2010 Software Engineering 4D03 Assignment 5. &lt;br /&gt;
Group Members: Roshan Jesuratnam, Ashan Khan, Arturo Mata, Jaganvir Sandhu &lt;br /&gt;
&lt;br /&gt;
This document specifically looks at Graphical User Interface (GUI) standards, over other [http://en.wikipedia.org/wiki/User_interface#User_interfaces_in_computing/ types of interfaces] which exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TALK ABOUT TRIAL AND ERROR, SIMPLICITY,ETC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NO INDUSTRY STANDARDS BUT THERE ARE HEURISTICS AS A GENERAL GUIDLINE&lt;br /&gt;
&lt;br /&gt;
EACH COMPANY HAS ITS OWN STANDARD WHICH IT FOLLOWS, THIS WIKI WILL EXPLAIN THE GENERAL, COMMON THINGS AMONG THEM.SDFSDG&lt;br /&gt;
&lt;br /&gt;
The structure principle. &lt;br /&gt;
The simplicity principle. &lt;br /&gt;
The visibility principle. &lt;br /&gt;
The feedback principle. &lt;br /&gt;
The tolerance principle.&lt;br /&gt;
The reuse principle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
APPLES AQUA INTERFACE DESIGN STANDARD&lt;br /&gt;
WINDOWS NEW WINDOWS 7 STANDARD &lt;br /&gt;
&lt;br /&gt;
DIFFERENT TYPES OF USERS&lt;br /&gt;
&lt;br /&gt;
CONSSISTENCY&lt;br /&gt;
&lt;br /&gt;
(Use  http://www.isii.com/ui_design.html)&lt;br /&gt;
&lt;br /&gt;
=Standards=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''ADD MORE SHIT ON THIS, NEEDS MORE COWBELL'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TAKE FROM APPLE AND MICROSOFT AND MORE CRAP&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Aqua_(user_interface)&amp;lt;br&amp;gt;&lt;br /&gt;
http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ********************&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.usabilitynet.org/tools/r_international.htm&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beta-research.com/standards.html &amp;lt;---GOOD RESOURCE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Windows&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Window Management=====&lt;br /&gt;
Window management is one of the most fundamental user activities. The main purpose is to require less effort from users to move their mouse across greater distances making window placement more predictable and therefore easier to find.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Dialog Boxes=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Title Bar=====&lt;br /&gt;
&lt;br /&gt;
All windows should have a title bar even if the window doesn’t have a title (which should be a very rare exception). Use the title bar controls as follows:&lt;br /&gt;
•	Close: All primary and secondary windows with a standard window frame should have a Close button on the title bar. Clicking Close has the effect of canceling or closing the window. &lt;br /&gt;
•	Minimize All primary windows and long-running modeless secondary windows (such as progress dialogs) should have a Minimize button. Clicking Minimize reduces the window to its taskbar button. Consequently, windows that can be minimized require a title bar icon.&lt;br /&gt;
•	Maximize/Restore down All resizable windows should have a Maximize/Restore down button. Clicking Maximize displays the window in its largest size, which for most windows is full screen; whereas clicking Restore down displays the window in its previous size. However, some windows don't benefit from using a full screen, so these windows should maximize to their largest useful size.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Windows Title:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A document window should display the name of the document being viewed. Application windows display the application name. Panels display a descriptive title appropriate for that window. If the contents of the window can change, it might be appropriate to change the title to reflect the current context. &lt;br /&gt;
&lt;br /&gt;
For example, if you need to display more than one item in the title, separate the items with a dash (—) with space on either side. For example, the main viewer window of Mail displays the currently selected message mailbox and the selected folder, if any. When a message is viewed in its own window, the message title is displayed.&lt;br /&gt;
Don’t display pathnames in window titles. When displaying document titles, use the display name and show the extension if the user has elected to show extensions.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Size=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_size.png|right|thumbnail|250px| In this example, Windows Media® Player changes its format when the window becomes too small for the standard format.]]&lt;br /&gt;
&lt;br /&gt;
•	Choose a default window size appropriate for its contents. Don't be afraid to use larger initial window sizes if you can use the space effectively.&lt;br /&gt;
&lt;br /&gt;
•	Use resizable windows whenever practical to avoid scroll bars and truncated data. Windows with dynamic content and lists benefit the most from resizable windows.&lt;br /&gt;
&lt;br /&gt;
•	For text documents, consider a maximum line length of 65 characters to make the text easy to read. (Characters include letters, punctuation, and spaces.)&lt;br /&gt;
&lt;br /&gt;
•	Should set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views: &lt;br /&gt;
&lt;br /&gt;
•	Should change the presentation if doing so makes the content usable at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
•	May be optimized for higher resolutions, but sized down as needed at display time to the actual screen resolution.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Location=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location1.png|right|thumbnail|150px| &amp;quot;Centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location2.png|right|thumbnail|150px| Show contextual windows near the object that it was launched from.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location4.png|right|thumbnail|150px| Cascade top-level application or document windows off the upper-left corner of the monitor.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Win_location5.png|right|thumbnail|150px| Center top-level utility windows.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	For the following guidelines, &amp;quot;centering&amp;quot; means to bias vertical placement slightly towards the top of the monitor, instead of placing exactly in the middle. Put 45 percent of the space between the top of the monitor/owner and the window top, and 55 percent between the bottom of the monitor/owner and the window bottom. Do this because the eye is naturally biased towards the top of the screen. &lt;br /&gt;
&lt;br /&gt;
•	If a window is contextual, always display it near the object that it was launched from. Place it out of the way so that the source object isn't covered by the window. &lt;br /&gt;
&lt;br /&gt;
•	If displayed using the mouse, when possible place it offset down and to the right. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''Show contextual windows near the object that it was launched from.'''&lt;br /&gt;
	&lt;br /&gt;
•	If displayed using a pen, when possible place it so as not to be covered by the user's hand. For right-handed users, display to the left; otherwise display to the right. &lt;br /&gt;
&lt;br /&gt;
•	When using a pen, also show contextual windows so that they aren't covered by the user's hand (assuming the user is right handed, the position of the contextual window is at the other side)&lt;br /&gt;
&lt;br /&gt;
•	If a window isn't related to the current context or user action, place it away from the current pointer location. Doing so prevents accidental interaction.&lt;br /&gt;
&lt;br /&gt;
•	If a window is a top-level application or document, always cascade its origin off the upper-left corner of the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''Cascade top-level application or document windows off the upper-left corner of the monitor.'''&lt;br /&gt;
&lt;br /&gt;
•	If a window is a top-level utility, always display it &amp;quot;centered&amp;quot; in the monitor. If created by the active program, use the active monitor; otherwise, use the default monitor. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''Center top-level utility windows.'''&lt;br /&gt;
 &lt;br /&gt;
•	If necessary, adjust the initial location so that the entire window is visible within the target monitor. If a resizable window is larger than the target monitor, reduce it to fit.&lt;br /&gt;
Window order (Z order)&lt;br /&gt;
&lt;br /&gt;
•	Always place owned windows on top of their owner window. Never place owned windows under their owner windows, because most likely users won't see them.&lt;br /&gt;
&lt;br /&gt;
•	Respect users' Z order selection. When users select a window, bring only the windows associated with that instance of the program (the window plus any owner or owned windows) to top of the Z order. Don't change the order of any other windows, such as independent instances of same program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;The Windows Activation=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Respect users' window state selection. If an existing window needs attention, flash the taskbar button three times to draw attention and leave it highlighted, but don't do anything else. Don't restore or activate the window. Don't use any sound effects. Instead, let users activate the window when they are ready. &lt;br /&gt;
&lt;br /&gt;
o	Exception: If the window doesn't appear on the taskbar, bring it to the top of all the other windows and flash its title bar instead.&lt;br /&gt;
&lt;br /&gt;
•	Restoring a primary window should also restore all its secondary windows, even if those secondary windows have their own taskbar button. When restoring, place secondary windows on top of the primary window.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;'''Input focus'''&lt;br /&gt;
&lt;br /&gt;
•	Windows displayed by user-initiated actions should take input focus, but only if the window is rendered immediately (within 5 seconds). Once the window is rendered, it can take input focus once. &lt;br /&gt;
&lt;br /&gt;
o	If a window renders slowly (more than 5 seconds), users are likely to perform another task while they wait. Taking focus at this point would be an annoyance, especially if done more than once.&lt;br /&gt;
&lt;br /&gt;
•	Windows that aren't immediately displayed or displayed by a system-initiated action shouldn't take input focus. Instead, display on top without focus, and let users activate them when they are ready. &lt;br /&gt;
&lt;br /&gt;
o	Exception: Credential Manager.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Persistence=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	When a window is redisplayed, consider displaying it in the same state as last accessed. When closing, save the monitor used, window size, location, and state (maximized vs. restore). When redisplaying, restore the saved window size, location, and state using the appropriate monitor. Also, consider making these attributes persist across program instances on a per-user basis. If the window is larger than the monitor, resize the window as necessary.&lt;br /&gt;
&lt;br /&gt;
•	Move the location toward the upper-left corner to fit within the monitor as necessary.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Scrolling Windows=====&lt;br /&gt;
&lt;br /&gt;
People use scroll bars to view areas of a document or a list that is larger than can fit in the current window. Only active windows can be scrolled. A window can have a horizontal scroll bar, a vertical scroll bar, both, or neither. A window that has one or more scroll bars also has a resize control in the bottom right corner. &lt;br /&gt;
&lt;br /&gt;
The scroller size reflects how much of the content is visible; the smaller the scroller, the less of the content the user can see at that time. The scroller represents the relative location, in the whole document, of the portion that can be seen in the window.&lt;br /&gt;
&lt;br /&gt;
If the entire contents of a document is visible in a window, the scroll bars do not contain scrollers. Scroll bars in inactive windows have an inactive appearance. &lt;br /&gt;
&lt;br /&gt;
For most document windows that contain a single view (scrolling text or tables, for example), do not specify any space between the window edge and scroll bars.&lt;br /&gt;
&lt;br /&gt;
The user can use scroll bars by doing the following:&lt;br /&gt;
&lt;br /&gt;
•	Dragging the scroller. This method is usually the fastest way to move around a document. The window’s contents changes in “real time” as the user drags the scroller.&lt;br /&gt;
&lt;br /&gt;
•	Clicking a scroll arrow. This means, “Show me more of the document that’s hidden in this direction.” The scroller moves in the direction of the arrow. Each scroll arrow click moves the content one unit; your application determines what one unit equals. For example, a word processor would move a line of text per click, a spreadsheet could move one row or column. To ensure smooth scrolling effects, specify units of the same size throughout a document.&lt;br /&gt;
&lt;br /&gt;
•	Clicking or pressing in the scroll track. Clicking advances the document by a windowful (the default) or to the pointer’s hot spot, depending on the user’s choice in Appearance preferences. A “windowful” is the height or width of the window, minus at least one unit of overlap to maintain the user’s context. This unit of overlap should be the same as one scroll arrow unit (for example, a line of text, a row of icons, or part of a picture). The Page Up and Page Down keys also move the document view by a windowful.&lt;br /&gt;
Pressing in the scroll track displays consecutive windowfuls of the document until the location of the scroller catches up to the location of the pointer (or until the user releases the mouse button).&lt;br /&gt;
&lt;br /&gt;
It’s best not to add controls to the scroll-bar area of a window. If you add more than one control to this area, it’s hard for people to distinguish among controls and click the right one. Acceptable additions to the scroll area include a splitter bar and a status bar that shows, for example, the current page. To ensure that window controls are easy to use and understand, it’s best to place the majority of your features in the menus as commands. If you really want to provide additional access to features, consider creating a panel. Only frequently accessed features that significantly benefit users’ productivity should be elevated to the primary interface.&lt;br /&gt;
Panels that coexist with other windows and need to use the least amount of screen space possible may use small or mini scroll bars. If a window has small or mini scroll bars, all other controls within the window content area should also be the smaller version. For more information, see “Using Small and Mini Versions of Controls.”&lt;br /&gt;
&lt;br /&gt;
Make sure you don’t use a scroll bar when you should really use a slider. Use sliders to change settings; use scroll bars only for representing the relative position of the visible portion of a document or list. For information about sliders, see “Slider Controls.”&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Common Dialogs=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Asthetics&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Sizing=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Formatting=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Titles and Icons=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Fonts and Colour=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Interaction&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Mouse=====&lt;br /&gt;
&lt;br /&gt;
The mouse is the primary input device used to interact with objects in Microsoft® Windows®. The term mouse can also refer to other pointing devices, such as trackballs, touchpads and pointing sticks built into notebook computers, pens used with Windows Tablet and Touch Technology, and, on computers with touchscreens, even a user's finger.&lt;br /&gt;
&lt;br /&gt;
Physically moving the mouse moves the graphic pointer (also referred to as the cursor) on the screen. The pointer has a variety of shapes to indicate its current behavior.&lt;br /&gt;
&lt;br /&gt;
Moving the mouse without pressing the mouse button moves the pointer, or cursor. The onscreen pointer can assume different shapes according to the context of the application and the pointer’s position. For example, in a word processor, the pointer takes the I-beam shape while it’s over the text and changes to an arrow when it’s over a tools palette. Change the pointer’s shape only to provide information to the user about changes in the pointer’s function.&lt;br /&gt;
&lt;br /&gt;
Just moving the mouse changes only the pointer’s location, and possibly its shape. Pressing the mouse button indicates the intention to do something, and releasing the mouse button completes the action. &lt;br /&gt;
&lt;br /&gt;
'''Clicking'''&lt;br /&gt;
&lt;br /&gt;
Clicking has two components: pushing down on the mouse button and releasing it without moving the mouse. (If the mouse moves between button down and button up, it’s dragging, not clicking.)&lt;br /&gt;
The effect of a click should be immediate and obvious. If the function of the click is to cause an action (such as clicking a button), the selection is made when the button is pressed, and the action takes place when the button is released. For example, if a user presses down the mouse button while the pointer is over an onscreen button, thereby putting the button in a selected state, and then moves the pointer off the button before releasing the mouse button, the onscreen button is not clicked. If the user presses an onscreen button and rolls over another button before releasing the mouse, neither button is clicked.&lt;br /&gt;
&lt;br /&gt;
'''Double-Clicking'''&lt;br /&gt;
&lt;br /&gt;
Double-clicking involves a second click that follows immediately after the first click. If the two clicks are close enough to each other in terms of time (as set by the user in Keyboard &amp;amp; Mouse preferences) and location (usually within a couple of points), they constitute a double click.&lt;br /&gt;
Double-clicking is most commonly used as a shortcut for other actions, such as pressing Command-O to open a document or dragging to select a word. Because not everyone is physically able to perform a double click, it should never be the only way to perform an action.&lt;br /&gt;
Some applications support triple-clicking. For example, in a word processor, the first click sets the insertion point, the second click selects the whole word, and the third click selects the whole sentence or paragraph. Supporting more than three clicks is inadvisable.&lt;br /&gt;
&lt;br /&gt;
'''Pressing and Holding'''&lt;br /&gt;
&lt;br /&gt;
Pressing means holding down the mouse button while the mouse remains stationary. Pressing by itself should have no more effect than clicking does, except in well-defined areas such as scroll arrows, where it has the same effect as repeated clicking, or in a Dock tile, where it displays a menu. For example, pressing a Finder icon should select the icon but not open it.&lt;br /&gt;
&lt;br /&gt;
'''Dragging'''&lt;br /&gt;
&lt;br /&gt;
Dragging means pressing the mouse button, moving the mouse to a new position, and releasing the mouse button. The uses of dragging include selecting blocks of text, choosing a menu item, selecting a range of objects, moving an icon from one place to another, and shrinking or expanding an object.&lt;br /&gt;
Dragging a graphic object should move the entire object (or a transparent representation of it), not just the object’s outline.&lt;br /&gt;
&lt;br /&gt;
Your application can restrict an object from being moved past certain boundaries, such as the edge of a window. If the user drags an object and releases the mouse button outside the boundary, the object stays in the original location. If the user drags the item out of the boundary and then back in before releasing the mouse button, the object moves to the new location. Your application can also automatically scroll a document if the user moves an object beyond the boundary of a window (see “Automatic Scrolling”).&lt;br /&gt;
&lt;br /&gt;
If the user drags a proxy object to an area that would cause that proxy object to disappear, display the poof to indicate that the proxy object will disappear if dragged to that location.&lt;br /&gt;
If the user selects an item and begins a drag but releases the item after having moved it three or fewer pixels, the item does not move.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Touch=====&lt;br /&gt;
&lt;br /&gt;
Many touch interactions are performed using gestures and flicks. A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing. Some User Interfaces allow multitouch gestures such as pan, zoom, rotate, two-finger tap, and press and tap. One of the quickest and easiest gestures to perform is a flick. A flick is a simple gesture that results in navigation or an editing command. Navigational flicks include drag up, drag down, move back, and move forward, whereas editing flicks include copy, paste, undo, and delete.&lt;br /&gt;
&lt;br /&gt;
A manipulation is a real-time, physical handling of an object. A manipulation differs from a gesture in that the input corresponds directly to how the object would react naturally to the action in the real world. For example, a photo viewing application might allow users to manipulate a photo by moving, zooming, resizing, and rotating the image. Multitouch manipulations use multiple contact points simultaneously.&lt;br /&gt;
&lt;br /&gt;
'''Design concepts:'''&lt;br /&gt;
&lt;br /&gt;
Using touch for input has the following characteristics:&lt;br /&gt;
&lt;br /&gt;
•	Natural and intuitive. Everyone knows how to point with a finger and touch things. Object interactions are designed to correspond to how users interact with objects in the real world in a consistent manner.&lt;br /&gt;
&lt;br /&gt;
•	Less intrusive. Using touch is silent, and consequently much less distracting than typing or clicking, especially in social situations such as meetings. Compared to using a pen, using a finger is particularly convenient because you don't have to locate or pick up a pen.&lt;br /&gt;
&lt;br /&gt;
•	Portable. A computer with touch capability can be more compact because most tasks can be completed without a keyboard, mouse, or touchpad. It can be more flexible because it doesn't require a work surface. It enables new places and scenarios for using a computer.&lt;br /&gt;
&lt;br /&gt;
•	Direct and engaging. Touch makes you feel like you are directly interacting with the objects on the screen, whereas using a mouse or touchpad always requires you to coordinate hand movements with separate on-screen pointer movements—which feels indirect by comparison.&lt;br /&gt;
&lt;br /&gt;
•	Reduced accuracy. Users can't target objects as accurately using touch, compared to a mouse or pen. Consequently, you can't expect users to tap or manipulate small objects.&lt;br /&gt;
&lt;br /&gt;
Touch provides a natural, real-world feel to interaction. Direct manipulation and animation complete this impression, by giving objects a realistic, dynamic motion and feedback. For example, consider a card game. Not only is it convenient and easy to drag cards using a finger, the experience takes on an engaging real-world feel when you can toss the cards and have them glide, spin, and bounce exactly like physical cards. And when you try to move a card that can't be moved, it's a better experience to have the card resist but not prevent movement, and settle back in place when released, to clearly indicate that the action was recognized but can't be done.&lt;br /&gt;
&lt;br /&gt;
'''Basic touch design principles:'''&lt;br /&gt;
&lt;br /&gt;
Each input device has its strengths and weaknesses. The keyboard is best for text input and giving commands with minimal hand movement. The mouse is best for efficient, precise pointing. Touch is best for object manipulation and giving simple commands. A pen is best for freeform expression, as with handwriting and drawing.&lt;br /&gt;
&lt;br /&gt;
'''When thinking about touch support for your program:'''&lt;br /&gt;
&lt;br /&gt;
•	Don't assume that if a UI works well for a mouse, it also works well for touch. While good mouse support is a start, a good touch experience has a few additional requirements.&lt;br /&gt;
&lt;br /&gt;
•	You can assume that if a UI works well for a finger, it also works well for a pen. Making your program touchable goes a long way to providing good pen support. The primary difference is that fingers have a blunter tip, so they need larger targets. And again, hover must be optional.&lt;br /&gt;
&lt;br /&gt;
•	Don't depend on touch pointer to fix touch UI problems. Because the touch pointer isn't as easy to use as direct input, view the touch pointer as a last resort for programs that haven't been designed for touch.&lt;br /&gt;
&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Keyboard=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Messages&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Errors and Warnings=====&lt;br /&gt;
A perfect UI would not need any error messages, but it is accepted that this cannot be achieved so error messages are necessary. Generally standard rules for the presentation of error messages are:&lt;br /&gt;
*Error messages should be straight forward for as many users as possible regardless of culture, age and impairment.&lt;br /&gt;
*It should be easy to understand that an error has occurred.&lt;br /&gt;
*It should be clear what the user has to do to correct the error.&lt;br /&gt;
*It should be clear for the user where the error was found in the application.&lt;br /&gt;
*Make sure the user can see that an error has occurred. Error messages need to stand out from the rest of the layout.&lt;br /&gt;
*Use an error icon if your layout makes it difficult to visually separate errors from the rest of the page. &lt;br /&gt;
*Be consistent when you present errors (the user will expect errors to be displayed at the same location and with the same style on all pages).&lt;br /&gt;
*Do not use complicated words. (tip: check out Ogdens basic english)&lt;br /&gt;
*Describe what the user should do to correct the error, especially if it could be difficult to understand.&lt;br /&gt;
*Make it clear if there were more than one error so that the user can correct all errors at once.&lt;br /&gt;
*For advanced users, adding in the ID number of the error can help a lot in figuring out the source of the error because it has an identity from which the user can search information about.&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Confirmation and Notifications=====&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Text&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;UI Text=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Style and Tone=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Commands&amp;lt;/span&amp;gt;===&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Menus=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Toolbars=====&lt;br /&gt;
=====&amp;amp;nbsp;&amp;amp;nbsp;Ribbons=====&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Controls&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=Principles=&lt;br /&gt;
&lt;br /&gt;
These principles are in nature heuristics of interface design. They are guidelines that &amp;quot;should&amp;quot; be used in the design of interfaces, since there is no one industry standard. These general rules provide a basis to build on for an user interface designer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The similarities between these two sets of guidelines is indicative of the rules interface designers should follow to offer end users efficient ease of use.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Ten Usability Heuristics&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
[http://www.useit.com/jakob/ Jakob Nielsen], a user adovacate and principal of the [http://www.nngroup.com/ Nielsen Norman Group] for enhancing user experience, outlines the following heuristics;&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Visibility of system status'''&amp;lt;br&amp;gt;System should indicate the state/progress it is in through appropriate feedback.&lt;br /&gt;
:*'''Relate system and real world'''&amp;lt;br&amp;gt;System should be 'natural' in order to speak the user's language. Concepts should be similar to real-world conventions.&lt;br /&gt;
:*'''User Control and freedom'''&amp;lt;br&amp;gt;Interface should encourage user to explore features and give them a sense on control over the system. &lt;br /&gt;
:*'''Consistency and standards'''&amp;lt;br&amp;gt;Interface should have same meanings of words as other applications. Other interfaces in the system should be used as a guideline when designing a new one.&lt;br /&gt;
:*'''Error Prevention'''&amp;lt;br&amp;gt;System should be designed to prevent errors from happening. By implementing various error handling mechanisms (autocorrect, messages, etc.), users should be able to fix and continue with workflow.&lt;br /&gt;
:*'''Recognition rather than recall'''&amp;lt;br&amp;gt;Controls of the interface should be easily visible in order to reduce short term memory load. &lt;br /&gt;
:*'''Flexibility and effciency of use'''&amp;lt;br&amp;gt;Allow shortcuts for frequently used features for experienced users to maximize effciency through flexible alternatives.&lt;br /&gt;
:*'''Aesthetic and minimalistic design'''&amp;lt;br&amp;gt;Discard irrelevant information in dialogues to ensure relevant units of information does not lose their relative visibility.&lt;br /&gt;
:*'''Help users recognize, diagnose, and recover from errors'''&amp;lt;br&amp;gt;All error messages should be illustrated in clear, simple language (no codes) where users undoubtedly recognize the problem and follow a constructive solution.  &lt;br /&gt;
:*'''Help and documentation'''&amp;lt;br&amp;gt;Help and documentation should be easy to search focused on the user’s task with a list of clear concrete steps to be carried out. Limit all possible ambiguities.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#191979&amp;quot;&amp;gt;Eight Golden Rules of Interface Design&amp;lt;/span&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
From the book Designing the User Interface, [http://en.wikipedia.org/wiki/Ben_Shneiderman Ben Shneiderman] outlines eight key rules of good interface design;&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Strive for consistency'''&amp;lt;br&amp;gt;Consistency must be implemented within itself and other interfaces. This ensures a &amp;quot;global&amp;quot; understanding of where things are and where one would look for it. See Figure 1 for example.&lt;br /&gt;
:*'''Enable frequent users to use shortcuts'''&amp;lt;br&amp;gt;Expert users should not be bound by interaction styles that may slow progress. Thus, enabling shortcuts through speed keys, hidden commands, marcos, etc. will optimize pace of interaction while reducing the number of interactions.&lt;br /&gt;
:*'''Offer informative feedback'''&amp;lt;br&amp;gt;Major or infrequent actions should make aware the user, with descriptive and clear information of what is occuring.  &lt;br /&gt;
:*'''Design dialog to yield closure'''&amp;lt;br&amp;gt;Sequences of actions should be grouped with a beginning, middle and end. This gives the user a sense of direction and accomplishment of the task. &lt;br /&gt;
:*'''Offer simple error handling'''&amp;lt;br&amp;gt;Design the interface in a manner which the chance of human error is impossible. However, since it is impossible to predict every behaviour, design it in a way such that it offers informative feedback explaining the details of the error and how it could be solved. &lt;br /&gt;
:*'''Permit easy reversal of actions'''&amp;lt;br&amp;gt;Allow users to undo their mistakes. This allows users to have a sense of security in case a mistake occurs. It also allows users to explore without consequences.&lt;br /&gt;
:*'''Support internal locus of control'''&amp;lt;br&amp;gt;Users should be the initiators of actions rather than responders. Actions should respond quickly with delay and offer response.&lt;br /&gt;
:*'''Reduce short-term memory load'''&amp;lt;br&amp;gt;Reducing sequences of events and commands allows the user to be aided in tasks. Keep the display simple so it is intuitive for the user.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
(Use http://www.ambysoft.com/essays/userInterfaceDesign.html)&lt;br /&gt;
&lt;br /&gt;
PUT INTERACTIPON STYLES IN HERE&lt;br /&gt;
&lt;br /&gt;
=Techniques=&lt;br /&gt;
&lt;br /&gt;
In the book, ''The Object Primer'' by Scott Ambler. It outlines the following tips and techniques that one should think about when creating a user interface;&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Consistency'''&amp;lt;br&amp;gt;Ensure interface works in a consistent manner which enables user to build an accurate model of the way it works. &lt;br /&gt;
:*'''Set standards and stick to them'''&amp;lt;br&amp;gt;Use a consistent interface design standard throughout. All aspects of software must follow Agile Modeling (AM)’s Apply Modeling Standards. &lt;br /&gt;
:*'''Be prepared to hold the line'''&amp;lt;br&amp;gt;Be open to stakeholder’s ideas and suggestions. Inform stakeholders when developing the user interface of your corporate UI standards.  &lt;br /&gt;
:*'''Explain the rules'''&amp;lt;br&amp;gt;Explain all rules in a clear consistent manner to avoid problems. &lt;br /&gt;
:*'''Navigation between major user interface items is important'''&amp;lt;br&amp;gt;Be sure the system is flexible enough to support various approaches to ensure your user will make sense of the application. A user interface-flow diagram is optional to further understand the flow of your user interface. &lt;br /&gt;
:*'''Navigation within a screen is important'''&amp;lt;br&amp;gt;Organize navigation between widgets in a consistent manner users will find recognizable.&lt;br /&gt;
:*'''Word your messages and labels effectively'''&amp;lt;br&amp;gt;Illustrate text (messages and labels) through clear, effective language. Avoid inconsistency. &lt;br /&gt;
:*'''Understand the UI widgets'''&amp;lt;br&amp;gt;Adopt an effective UI widget standard in your application. &lt;br /&gt;
:*'''Look at other applications with a grain of salt'''&amp;lt;br&amp;gt;Create authentic application which follows the user interface-standards and guidelines of your organization.&lt;br /&gt;
:*'''Use color appropriately'''&amp;lt;br&amp;gt;Colours should be used sparingly for accessibility reasons. If colours are used, they should be used with a secondary indicator which does not discriminate. Colours should also be consistant throughout the application.&lt;br /&gt;
:*'''Follow the contrast rule'''&amp;lt;br&amp;gt;Background and foreground should contrast enough for the user to easily read contents of the interface. &lt;br /&gt;
:*'''Align fields effectively'''&amp;lt;br&amp;gt;Editable fields (i.e textboxes) should be aligned to be visually appealing and promote efficiency through features such as 'tabbing'.&lt;br /&gt;
:*'''Expect your users to make mistakes'''&amp;lt;br&amp;gt;Allow easy reversal of actions. See [[Principles]]&lt;br /&gt;
:*'''Justify data appropriately'''&amp;lt;br&amp;gt;Left justify string, Right justify numbers, Decimal justify floating point numbers.&lt;br /&gt;
:*'''Your design should be intuitable'''&amp;lt;br&amp;gt;Interfaces should be easy to learn and should encourage the user to explore and become familiar with its elements.&lt;br /&gt;
:*'''Don’t create busy user interfaces'''&amp;lt;br&amp;gt;Interfaces should be simple at best. Clutter causes confusion and stalls efficient workflow.&lt;br /&gt;
:*'''Group things effectively'''&amp;lt;br&amp;gt;Related features should be effectively grouped together, whereas items which are not should be distinctly separated.&lt;br /&gt;
:*'''Take an evolutionary approach'''&amp;lt;br&amp;gt;Methods such as rapid prototyping and [http://www.agilemodeling.com/essays/amdd.htm Agile Model Driven Development] are critical approaches in designing user interfaces.&lt;br /&gt;
&lt;br /&gt;
=Human Factors=&lt;br /&gt;
(Use http://www.beta-research.com/standards.html)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] Nielsen, Jakob. ''Ten Usuability Heuristics''. http://www.useit.com/papers/heuristic/heuristic_list.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Shneiderman, Ben. ''Eight Golden Rules of Interface Design''. http://faculty.washington.edu/jtenenbg/courses/360/f04/sessions/schneidermanGoldenRules.html&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Ambler, Scott. ''The Object Primer''. http://www.ambysoft.com/essays/userInterfaceDesign.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Movement.jpg</id>
		<title>File:Movement.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Movement.jpg"/>
				<updated>2009-10-26T15:30:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;New page: Image:Movement.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Movement.jpg]]&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T06:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
Jaganvir Sandhu, Greg Libera, Sam Chow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
=====Software Environment=====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01 - The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02 - SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03 - All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
=====Hardware Environment=====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04 - This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05 - The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
=====User Interface=====&lt;br /&gt;
:The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06 - The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07 - The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types: [[File:Movement.jpg|Different Movements of Enemies]]&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
=====Game=====&lt;br /&gt;
:*GP01 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP02 - The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
=====Player=====&lt;br /&gt;
:*GP03 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP04 - The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
:*GP05 - The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
:*GP06 - The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
:*GP07 - The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
:*GP08 - The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
:*GP09 - The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
:*GP10 - When the health of a player reaches 0, they shall die.&lt;br /&gt;
:*GP11 - When a player dies the game will end if only one player is playing.&lt;br /&gt;
:*GP12 - If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
:*GP13 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP14 - If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
=====Enemy=====&lt;br /&gt;
:*GP15 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP16 - The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
:*GP17 - The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
:*GP18 - The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
:*GP19 - When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
:*GP20 - Dead enemies shall be removed from the game.&lt;br /&gt;
:*GP21 - Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
:*GP22 - Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
:*GP23 - Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
:*GP24 - Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
=====Players=====&lt;br /&gt;
:*UA01 - Players shall control the characters through mouse and keyboard.&lt;br /&gt;
:*UA02 - Players shall have control of one character at a time.&lt;br /&gt;
:*UA03 - Players will have a interface that makes it fun and easy to play the game while providing all necessary information.&lt;br /&gt;
&lt;br /&gt;
=====World Designers=====&lt;br /&gt;
:*UA04 - The C4 world editor shall be used by world designers to create custom worlds.&lt;br /&gt;
:*UA05 - Scripts/controllers will be available to the world designers within the world editor.&lt;br /&gt;
&lt;br /&gt;
=====Programmers=====&lt;br /&gt;
:*UA06 - Doxygen will be used to create documentation for programmers.&lt;br /&gt;
:*UA07 - A wiki with all the documents relevant to the project will be maintained.&lt;br /&gt;
:*UA08 - Changes in the required project details will be discussed with the group once announced and revised in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
=====Artwork=====&lt;br /&gt;
:*AS01 - The player can pick one character from the list of characters, each of which will have different models.&lt;br /&gt;
:*AS02 - The enemy characters are all animals, these models will be obtained from model repositories.&lt;br /&gt;
:*AS03 - Three different robust worlds will be created, each providing a different environment with unique obstacles.&lt;br /&gt;
:*AS04 - Several different weapons models will be available.&lt;br /&gt;
:*AS05 - The worlds will all be oriented towards typical hunting area themes.&lt;br /&gt;
&lt;br /&gt;
=====Sounds=====&lt;br /&gt;
:*AS06 - The game will have a sound for the following situations:&lt;br /&gt;
::*Start Game - When the game starts, reminds every player&lt;br /&gt;
::*End Game - When a user clicks end game&lt;br /&gt;
::*Shooting - Every player will have a sound appropriate for the gun they are using when shooting&lt;br /&gt;
::*Weapons - Sound effects for different guns&lt;br /&gt;
::*Attacked - When the player is attacked by an animal, remind the player&lt;br /&gt;
::*Death - Player’s death or enemies’ death&lt;br /&gt;
::*Items - When the player picks up an item from the ground&lt;br /&gt;
::*Kill an enemy - If the player kills an enemy, add score and pop up the sound&lt;br /&gt;
::*Score - If the player has certain amount of kills, pop up the sound&lt;br /&gt;
::*Jump - When the player hits jump button&lt;br /&gt;
::*Running - When the player walks or runs in the game&lt;br /&gt;
::*Background - Wind, leaves movement for the tree, water sound for river&lt;br /&gt;
::*Weather - Normal weather, thunderstorm, snow&lt;br /&gt;
::*Enemy approaching - When there is an enemy chasing the player, pop up the sound&lt;br /&gt;
::*Message - Every time when the player enters a message&lt;br /&gt;
::*Win/Lose - Pop up win or lose sound&lt;br /&gt;
&lt;br /&gt;
=====Animation=====&lt;br /&gt;
:*AS07 - Each player model will have animations for walking, running, shooting, dieing.&lt;br /&gt;
:*AS08 - Each animal model will have animations for walking, running, dieing.&lt;br /&gt;
:*AS09 - Weapons will have animations for shooting.&lt;br /&gt;
:*AS10 - There will be several animations within the world for moving objects such as water, trees etc.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Movement.jpg</id>
		<title>File:Movement.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Movement.jpg"/>
				<updated>2009-10-26T06:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T06:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
======Jaganvir Sandhu, Greg Libera, Sam Chow======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
=====Software Environment=====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01 - The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02 - SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03 - All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
=====Hardware Environment=====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04 - This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05 - The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
=====User Interface=====&lt;br /&gt;
:The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06 - The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07 - The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
=====Game=====&lt;br /&gt;
:*GP01 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP02 - The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
=====Player=====&lt;br /&gt;
:*GP03 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP04 - The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
:*GP05 - The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
:*GP06 - The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
:*GP07 - The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
:*GP08 - The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
:*GP09 - The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
:*GP10 - When the health of a player reaches 0, they shall die.&lt;br /&gt;
:*GP11 - When a player dies the game will end if only one player is playing.&lt;br /&gt;
:*GP12 - If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
:*GP13 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP14 - If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
=====Enemy=====&lt;br /&gt;
:*GP15 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP16 - The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
:*GP17 - The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
:*GP18 - The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
:*GP19 - When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
:*GP20 - Dead enemies shall be removed from the game.&lt;br /&gt;
:*GP21 - Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
:*GP22 - Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
:*GP23 - Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
:*GP24 - Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
=====Players=====&lt;br /&gt;
:*UA01 - Players shall control the characters through mouse and keyboard.&lt;br /&gt;
:*UA02 - Players shall have control of one character at a time.&lt;br /&gt;
:*UA03 - Players will have a interface that makes it fun and easy to play the game while providing all necessary information.&lt;br /&gt;
&lt;br /&gt;
=====World Designers=====&lt;br /&gt;
:*UA04 - The C4 world editor shall be used by world designers to create custom worlds.&lt;br /&gt;
:*UA05 - Scripts/controllers will be available to the world designers within the world editor.&lt;br /&gt;
&lt;br /&gt;
=====Programmers=====&lt;br /&gt;
:*UA06 - Doxygen will be used to create documentation for programmers.&lt;br /&gt;
:*UA07 - A wiki with all the documents relevant to the project will be maintained.&lt;br /&gt;
:*UA08 - Changes in the required project details will be discussed with the group once announced and revised in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
=====Artwork=====&lt;br /&gt;
:*AS01 - The player can pick one character from the list of characters, each of which will have different models.&lt;br /&gt;
:*AS02 - The enemy characters are all animals, these models will be obtained from model repositories.&lt;br /&gt;
:*AS03 - Three different robust worlds will be created, each providing a different environment with unique obstacles.&lt;br /&gt;
:*AS04 - Several different weapons models will be available.&lt;br /&gt;
:*AS05 - The worlds will all be oriented towards typical hunting area themes.&lt;br /&gt;
&lt;br /&gt;
=====Sounds=====&lt;br /&gt;
:*AS06 - The game will have a sound for the following situations:&lt;br /&gt;
::*Start Game - When the game starts, reminds every player&lt;br /&gt;
::*End Game - When a user clicks end game&lt;br /&gt;
::*Shooting - Every player will have a sound appropriate for the gun they are using when shooting&lt;br /&gt;
::*Weapons - Sound effects for different guns&lt;br /&gt;
::*Attacked - When the player is attacked by an animal, remind the player&lt;br /&gt;
::*Death - Player’s death or enemies’ death&lt;br /&gt;
::*Items - When the player picks up an item from the ground&lt;br /&gt;
::*Kill an enemy - If the player kills an enemy, add score and pop up the sound&lt;br /&gt;
::*Score - If the player has certain amount of kills, pop up the sound&lt;br /&gt;
::*Jump - When the player hits jump button&lt;br /&gt;
::*Running - When the player walks or runs in the game&lt;br /&gt;
::*Background - Wind, leaves movement for the tree, water sound for river&lt;br /&gt;
::*Weather - Normal weather, thunderstorm, snow&lt;br /&gt;
::*Enemy approaching - When there is an enemy chasing the player, pop up the sound&lt;br /&gt;
::*Message - Every time when the player enters a message&lt;br /&gt;
::*Win/Lose - Pop up win or lose sound&lt;br /&gt;
&lt;br /&gt;
=====Animation=====&lt;br /&gt;
:*AS07 - Each player model will have animations for walking, running, shooting, dieing.&lt;br /&gt;
:*AS08 - Each animal model will have animations for walking, running, dieing.&lt;br /&gt;
:*AS09 - Weapons will have animations for shooting.&lt;br /&gt;
:*AS10 - There will be several animations within the world for moving objects such as water, trees etc.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T06:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
=====Software Environment=====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01 - The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02 - SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03 - All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
=====Hardware Environment=====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04 - This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05 - The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
=====User Interface=====&lt;br /&gt;
:The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06 - The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07 - The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
=====Game=====&lt;br /&gt;
:*GP01 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP02 - The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
=====Player=====&lt;br /&gt;
:*GP03 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP04 - The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
:*GP05 - The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
:*GP06 - The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
:*GP07 - The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
:*GP08 - The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
:*GP09 - The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
:*GP10 - When the health of a player reaches 0, they shall die.&lt;br /&gt;
:*GP11 - When a player dies the game will end if only one player is playing.&lt;br /&gt;
:*GP12 - If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
:*GP13 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP14 - If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
=====Enemy=====&lt;br /&gt;
:*GP15 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP16 - The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
:*GP17 - The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
:*GP18 - The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
:*GP19 - When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
:*GP20 - Dead enemies shall be removed from the game.&lt;br /&gt;
:*GP21 - Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
:*GP22 - Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
:*GP23 - Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
:*GP24 - Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
=====Artwork=====&lt;br /&gt;
:*AS01 - The player can pick one character from the list of characters, each of which will have different models.&lt;br /&gt;
:*AS02 - The enemy characters are all animals, these models will be obtained from model repositories.&lt;br /&gt;
:*AS03 - Three different robust worlds will be created, each providing a different environment with unique obstacles.&lt;br /&gt;
:*AS04 - Several different weapons models will be available.&lt;br /&gt;
:*AS05 - The worlds will all be oriented towards typical hunting area themes.&lt;br /&gt;
&lt;br /&gt;
=====Sounds=====&lt;br /&gt;
:*AS06 - The game will have a sound for the following situations:&lt;br /&gt;
::*Start Game - When the game starts, reminds every player&lt;br /&gt;
::*End Game - When a user clicks end game&lt;br /&gt;
::*Shooting - Every player will have a sound appropriate for the gun they are using when shooting&lt;br /&gt;
::*Weapons - Sound effects for different guns&lt;br /&gt;
::*Attacked - When the player is attacked by an animal, remind the player&lt;br /&gt;
::*Death - Player’s death or enemies’ death&lt;br /&gt;
::*Items - When the player picks up an item from the ground&lt;br /&gt;
::*Kill an enemy - If the player kills an enemy, add score and pop up the sound&lt;br /&gt;
::*Score - If the player has certain amount of kills, pop up the sound&lt;br /&gt;
::*Jump - When the player hits jump button&lt;br /&gt;
::*Running - When the player walks or runs in the game&lt;br /&gt;
::*Background - Wind, leaves movement for the tree, water sound for river&lt;br /&gt;
::*Weather - Normal weather, thunderstorm, snow&lt;br /&gt;
::*Enemy approaching - When there is an enemy chasing the player, pop up the sound&lt;br /&gt;
::*Message - Every time when the player enters a message&lt;br /&gt;
::*Win/Lose - Pop up win or lose sound&lt;br /&gt;
&lt;br /&gt;
=====Animation=====&lt;br /&gt;
:*AS07 - Each player model will have animations for walking, running, shooting, dieing.&lt;br /&gt;
:*AS08 - Each animal model will have animations for walking, running, dieing.&lt;br /&gt;
:*AS09 - Weapons will have animations for shooting.&lt;br /&gt;
:*AS10 - There will be several animations within the world for moving objects such as water, trees etc.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T06:11:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
=====Software Environment=====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01 - The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02 - SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03 - All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
=====Hardware Environment=====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04 - This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05 - The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
=====User Interface=====&lt;br /&gt;
:The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06 - The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07 - The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
=====Game=====&lt;br /&gt;
:*GP01 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP02 - The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
=====Player=====&lt;br /&gt;
:*GP03 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP04 - The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
:*GP05 - The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
:*GP06 - The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
:*GP07 - The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
:*GP08 - The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
:*GP09 - The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
:*GP10 - When the health of a player reaches 0, they shall die.&lt;br /&gt;
:*GP11 - When a player dies the game will end if only one player is playing.&lt;br /&gt;
:*GP12 - If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
:*GP13 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP14 - If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
=====Enemy=====&lt;br /&gt;
:*GP15 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP16 - The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
:*GP17 - The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
:*GP18 - The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
:*GP19 - When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
:*GP20 - Dead enemies shall be removed from the game.&lt;br /&gt;
:*GP21 - Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
:*GP22 - Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
:*GP23 - Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
:*GP24 - Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
=====Artwork=====&lt;br /&gt;
:*AS01 - The player can pick one character from the list of characters, each of which will have different models.&lt;br /&gt;
:*AS02 - The enemy characters are all animals, these models will be obtained from model repositories.&lt;br /&gt;
:*AS03 - Three different robust worlds will be created, each providing a different environment with unique obstacles.&lt;br /&gt;
:*AS04 - Several different weapons models will be available.&lt;br /&gt;
:*AS05 - The worlds will all be oriented towards typical hunting area themes.&lt;br /&gt;
&lt;br /&gt;
=====Sounds=====&lt;br /&gt;
:*AS06 - The game will have a sound for the following situations:&lt;br /&gt;
::Start Game	When the game starts, reminds every player&lt;br /&gt;
::End Game	When a user clicks end game&lt;br /&gt;
::Shooting	Every player will have a sound appropriate for the gun they are using when shooting&lt;br /&gt;
::Weapons	Sound effects for different guns&lt;br /&gt;
::Attacked	When the player is attacked by an animal, remind the player&lt;br /&gt;
::Death	Player’s death or enemies’ death&lt;br /&gt;
::Items	When the player picks up an item from the ground&lt;br /&gt;
::Kill an enemy	If the player kills an enemy, add score and pop up the sound&lt;br /&gt;
::Score	If the player has certain amount of kills, pop up the sound&lt;br /&gt;
::Jump	When the player hits jump button&lt;br /&gt;
::Running	When the player walks or runs in the game&lt;br /&gt;
::Background	Wind, leaves movement for the tree, water sound for river&lt;br /&gt;
::Weather	Normal weather, thunderstorm, snow&lt;br /&gt;
::Enemy approaching	When there is an enemy chasing the player, pop up the sound&lt;br /&gt;
::Message	Every time when the player enters a message&lt;br /&gt;
::Win/Lose	Pop up win or lose sound&lt;br /&gt;
&lt;br /&gt;
=====Animation=====&lt;br /&gt;
:*AS07 - Each player model will have animations for walking, running, shooting, dieing.&lt;br /&gt;
:*AS08 - Each animal model will have animations for walking, running, dieing.&lt;br /&gt;
:*AS09 - Weapons will have animations for shooting.&lt;br /&gt;
:*AS10 - There will be several animations within the world for moving objects such as water, trees etc.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T05:52:57Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
====Software Environment====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01 - The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02 - SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03 - All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
====Hardware Environment====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04 - This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05 - The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
====User Interface====&lt;br /&gt;
The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06 - The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07 - The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
====Game====&lt;br /&gt;
:*GP01 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP02 - The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
====Player====&lt;br /&gt;
:*GP03 - The game shall be created in the style of a first person shooter.&lt;br /&gt;
:*GP04 - The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
:*GP05 - The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
:*GP06 - The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
:*GP07 - The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
:*GP08 - The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
:*GP09 - The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
:*GP10 - When the health of a player reaches 0, they shall die.&lt;br /&gt;
:*GP11 - When a player dies the game will end if only one player is playing.&lt;br /&gt;
:*GP12 - If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
:*GP13 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP14 - If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
=====Enemy====&lt;br /&gt;
:*GP15 - A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
:*GP16 - The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
:*GP17 - The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
:*GP18 - The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
:*GP19 - When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
:*GP20 - Dead enemies shall be removed from the game.&lt;br /&gt;
:*GP21 - Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
:*GP22 - Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
:*GP23 - Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
:*GP24 - Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T05:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
====Software Environment====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01-The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02-SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03-All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
====Hardware Environment====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04-This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05-The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
====User Interface====&lt;br /&gt;
The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR06-The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR07-The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  &lt;br /&gt;
&lt;br /&gt;
Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   &lt;br /&gt;
&lt;br /&gt;
Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction.&lt;br /&gt;
 &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player.&lt;br /&gt;
 &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range.&lt;br /&gt;
 &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
3.1.	Game&lt;br /&gt;
3.1.1.	The game shall be created in the style of a first person shooter.&lt;br /&gt;
3.1.2.	The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
3.2.	Player&lt;br /&gt;
3.2.1.	The game shall be created in the style of a first person shooter.&lt;br /&gt;
3.2.2.	The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
3.2.3.	The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
3.2.4.	The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
3.2.5.	The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
3.2.6.	The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
3.2.7.	The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
3.2.8.	When the health of a player reaches 0, they shall die.&lt;br /&gt;
3.2.9.	When a player dies the game will end if only one player is playing.&lt;br /&gt;
3.2.10.	If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
3.2.11.	A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
3.2.12.	If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
3.3.	Enemy&lt;br /&gt;
3.3.1.	A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
3.3.2.	The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
3.3.3.	The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
3.3.4.	The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
3.3.5.	When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
3.3.6.	Dead enemies shall be removed from the game.&lt;br /&gt;
3.3.7.	Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
3.3.8.	Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
3.3.9.	Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
3.3.10.	Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements</id>
		<title>Dangerous Hunting-Requirements</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Dangerous_Hunting-Requirements"/>
				<updated>2009-10-26T05:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sandhj2:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements for Dangerous Hunting==&lt;br /&gt;
&lt;br /&gt;
===Project Overview===&lt;br /&gt;
The goal of the project is to develop a multi-player game where some enemies attempt to catch and kill the player while the player tries to kill the enemies.  In the game players are running though a 3D environment and trying to kill several types of enemies which move differently.  There are to be enemies which move intelligently and chase the player at varying speeds, enemies which are also intelligent but avoid the player, enemies which are “dumb” and just move randomly in the environment, and enemies which follow a predictable path.  All these enemies and players will be physical so they will have full collision detection within the game.   Being caught by the animals will result in a point penalty or death.  A key part of the project is that it is not only the game that is being developed but rather a framework so that a non-programmer will be able to develop new worlds and scenarios within the theme of the game.  This will be done by adding in scripts for the creator to use and also allowing models to be replaceable.&lt;br /&gt;
&lt;br /&gt;
===Given Requirements ===&lt;br /&gt;
The following requirements were given as required for this project.&lt;br /&gt;
====Software Environment====&lt;br /&gt;
:These are the requirements provided in terms of the software to be used. &lt;br /&gt;
:*GR01-The C4 engine by Terathon must be used as the base of the game.&lt;br /&gt;
:*GR02-SVN shall be used for source control of all code and documentation.&lt;br /&gt;
:*GR03-All software must run on the following Operating Systems:&lt;br /&gt;
:**Windows Vista [Vista 08]/XP [XP 08].&lt;br /&gt;
:**Mac OS X [OS X 10.5].&lt;br /&gt;
&lt;br /&gt;
====Hardware Environment====&lt;br /&gt;
:The hardware environment requirements describe the hardware platforms that must be supported.&lt;br /&gt;
:*GR04-This software shall be developed for personal computers with standard hardware consisting of a monitor, keyboard, and standard 2-button mouse.  &lt;br /&gt;
:*GR05-The minimum base machine that this software must run on will be provided by the minimum requirements for the C4 Engine:&lt;br /&gt;
:**The minimum graphics card expected (which will cause some features to not work) by the C4 Engine: For Nvidia hardware Geforce 5200 or higher, for ATI hardware Radeon 9600 or higher, and for some Intel hardware GMA X3000 and later.&lt;br /&gt;
:**The typical graphics card expected by the C4 Engine: For Nvidia hardware Geforce 6600 or higher, and for ATI hardware Radeon X1300 or higher.&lt;br /&gt;
&lt;br /&gt;
====User Interface====&lt;br /&gt;
The user interface requirements simply describe the intended attributes of the game’s user interface and in section 4.3 more details are outlined.&lt;br /&gt;
:*GR04-The interface to design the worlds will be the C4 Engine world editor.&lt;br /&gt;
:**All scripts and models can be added to the custom world through this world editor.&lt;br /&gt;
:**Non-programmers shall be able to create custom worlds using this interface.&lt;br /&gt;
:*GR05-The interface shall be simple and intuitive with minimal clutter.&lt;br /&gt;
:**The interface must facilitate ease of to use by not including too much information such that game play would be hindered.&lt;br /&gt;
:**Only the most necessary information will be displayed with more important information being more attention drawing.&lt;br /&gt;
&lt;br /&gt;
===Game Play===&lt;br /&gt;
The game is done in the style of a FPS. The camera is placed inside the avatar so the viewing perspective is of the avatar. The player sees what the avatar would see. Movement and orientation is controlled by some combination of the keyboard and mouse. The player is also able to interact with its environment. The player will be able to hit enemies and other players with their weapons. They will be able to cause certain enemies to behave differently based on proximity. The player will be able to activate triggers that cause different events in game, such as picking up a new weapon. The players and enemies will respect collision with the environment and each other.  Specifically the game while have a hunting theme with the objective being to hunt enemies. The enemies will move in different ways according to the individual type they are and should be differentiable from the environment, though this is not necessarily immediately obvious. Animals are the desired type of enemy, however this is pending being able to create appropriate animations for them.   Enemies will follow one of the four different movement types. A player should be able to differentiate which enemy is following which movement type. Enemies following the intelligent evasion movement type will try to run from the player and not allow itself to be shot. Enemies following the intelligent chasing movement type will try to catch the player and deal damage to it. If enough damage is accrued the player will die and points will be deducted. Intelligent chasing enemies can also be killed and should be worth the most points. Both of these movement types will only start to evade or chase the player is the player is within a certain range of them, or a certain location (a den for example), or otherwise detects the player. The following is a diagram showing the movement types:&lt;br /&gt;
&lt;br /&gt;
Each type of enemy will have a certain amount of health which is drained when it is successfully shot by a player. When the health of an enemy reaches 0 it is killed and the player is awarded a certain amount of points based on the enemy. Dead enemies are removed from the game. When a player dies and only one player is playing the game ends, if multiple players are playing that player will be allowed to reenter the game with a significant point reduction. &lt;br /&gt;
The multiplayer for the game will be very similar to the single players. Multiple players will be placed into the same world and will all hunt the same enemies and will compete for points. Enemies moving intelligently will try to avoid all players if possible, but can be herded if players work together. A penalty is given if a player kills or wounds another player. &lt;br /&gt;
The player should have access to different weapons that have different functionality and advantages/disadvantages. For example: a shotgun will have high damage at close range, but low damage at long range. A rifle will have medium damage at close range and long range. &lt;br /&gt;
The player will be given access do different tools to assist him/her. For example: Players should be able to obtain an air horn which will startle nearby enemies causing them to immediately begin moving despite possibly being out of their normal detection range (The bonus requirement for a “force gun”). Players should also be able to obtain special items that allow them move further within the creature's normal detection range without being detected.&lt;br /&gt;
3.1.	Game&lt;br /&gt;
3.1.1.	The game shall be created in the style of a first person shooter.&lt;br /&gt;
3.1.2.	The game shall be able to accommodate multiple players in the same instance of the game.&lt;br /&gt;
&lt;br /&gt;
3.2.	Player&lt;br /&gt;
3.2.1.	The game shall be created in the style of a first person shooter.&lt;br /&gt;
3.2.2.	The player shall control the avatar using some combination of a keyboard and a mouse.&lt;br /&gt;
3.2.3.	The player shall be able to interact with the environment by respecting collision with world objects.&lt;br /&gt;
3.2.4.	The player shall be able to interact with other players and enemies through collision as well as having the ability to damage them with their weapons.&lt;br /&gt;
3.2.5.	The player shall be able to activate triggers which cause different events to occur in the game.&lt;br /&gt;
3.2.6.	The players shall have a certain amount of health. When a player is shot by another player, or successfully attacked by an intelligent chasing enemy it will lose health.&lt;br /&gt;
3.2.7.	The player shall be awarded points for successfully killing an enemy.&lt;br /&gt;
3.2.8.	When the health of a player reaches 0, they shall die.&lt;br /&gt;
3.2.9.	When a player dies the game will end if only one player is playing.&lt;br /&gt;
3.2.10.	If multiple players are playing the player shall be able to reenter the game with a significant point reduction. &lt;br /&gt;
3.2.11.	A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
3.2.12.	If a player attacks another player points will be deducted from the attacker. &lt;br /&gt;
3.3.	Enemy&lt;br /&gt;
3.3.1.	A player should be able to differentiate between enemies according to 	their movement type.&lt;br /&gt;
3.3.2.	The enemies shall be able to move according to one of four different movement types.&lt;br /&gt;
3.3.3.	The enemies shall be differentiable from their environment. Though this does not necessarily have to be immediately obvious.&lt;br /&gt;
3.3.4.	The enemies shall have a certain amount of health. When it is shot by a player it will lose health.&lt;br /&gt;
3.3.5.	When the health of an enemy reaches 0, they shall die.&lt;br /&gt;
3.3.6.	Dead enemies shall be removed from the game.&lt;br /&gt;
3.3.7.	Enemies following intelligent evasion shall attempt to run from the player, and not allow themselves to be shot.&lt;br /&gt;
3.3.8.	Enemies following intelligent chasing shall attempt to catch the player in order to damage it.&lt;br /&gt;
3.3.9.	Enemies following intelligent evasion or intelligent chasing should activate based on a player’s proximity.&lt;br /&gt;
3.3.10.	Enemies following intelligent evasion or intelligent chasing shall move while attempting to account for all players currently in the game.&lt;br /&gt;
&lt;br /&gt;
==Usage Aspects==&lt;br /&gt;
&lt;br /&gt;
==Artwork, Sounds and Animation==&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
*Avatar - The avatar refers to the player's character in the game environment.  &lt;br /&gt;
*Enemy - An enemy is a computer controlled opponent that the player must avoid or defeat in order to be successful.  &lt;br /&gt;
*Environment - Refers to the game world.  &lt;br /&gt;
*First Person Shooter - A first person shooter (FPS) is a genre of video game in which the camera is positioned inside of the avatar's head. The player sees what the avatar would see. The objective of these games is to use weapons that are provided by the game to shoot, or otherwise kill opponents.  &lt;br /&gt;
*Intelligent evasion - An enemy that is intelligently evading the player will utilize some sort of AI to prevent the player from catching it.  &lt;br /&gt;
*Intelligent chasing - An enemy that is intelligently chasing the player will utilize some sort of AI to catch the player.  &lt;br /&gt;
*Movement type - Refers to the four different ways in which enemies move in the game; random movement, predefined path, intelligent evasion, intelligent chasing.  &lt;br /&gt;
*Path - A path is a set of locations in the world editor that an object will move along.  &lt;br /&gt;
*Predefined path - The world designer will create a path in the world editor for which an enemy is attached. The attached enemy will move along this path in a loop.  &lt;br /&gt;
*Random Movement - An enemy under the random movement type will move about the world randomly.  &lt;br /&gt;
*Trigger - A trigger is a region in the game that when something passes through an event to signify this occurs.  &lt;br /&gt;
*World Editor - The world editor is the tool World Designers use to create a world.&lt;/div&gt;</summary>
		<author><name>Sandhj2</name></author>	</entry>

	</feed>