GUI Design 26-Jul-16 HMI design There are entire college courses taught on HMI (Human-Machine Interface) design This is just a very brief presentation on some of the most essential points The goal is (usually) to make the design: “Intuitive”--that is, it behaves as the user expects Simple--not cluttered Complete--that is, it lets the user do everything that the program is capable of doing From CIT591, day one: A program is elegant if it combines power with simplicity 2 Different needs Someone who uses the program only occasionally wants to be able to figure out how to use it Frequent users want to minimize effort Few button clicks, little typing No long sentences that must be read You should know what audience you are designing for Simple controls Clear, descriptive labels Help files Compromises may be necessary, but with care you can design an interface that isn’t too bad for either group Nobody likes an interface that encourages mistakes 3 “Intuitive” design An interface is intuitive if a new user grasps immediately how to use it It is impossible to make a very specialized task intuitive to someone who doesn’t understand the underlying principles For example, 3D animation programs Very few programs are of this nature What is “intuitive” varies from person to person However, most computer users have some common expectations as to how common controls work 4 Principle of Least Surprise The Principle of Least Surprise says that the GUI should do the least surprising (= most expected) thing Users have strong expectations about how GUI elements, such as Buttons, work Users also have strong expectations about how and when files are opened and saved, and a host of other things Anything that we “take for granted” in an interface should not be violated without very good reason 5 Passive GUI elements When text is entered, it just sits there until the user does something more--entering text does not cause something to happen For example, there may be an OK button to use the text Exception: Very simple forms with only a text field may respond to the Enter key (even if an OK button is present) Checkboxes (squares) and radio buttons (circles) accept information from the user but don’t take any actions Selection lists (for example, to choose a language) accept information but don’t themselves do anything with it Exception: Lists that modify the view (such as the font or the alignment) may have an immediate, visible effect 6 Active GUI elements The most common active GUI element is the Button When you click a button, you expect something to happen Buttons that only make settings for future use should not be Buttons Menu items may be either active or passive Menu items that are just settings should have a checkmark in front of them when “turned on” Menu items that change their labels (such as On or Off) are just confusing Does On mean the feature is on, or you have to click it to turn it on? Menu items that open a dialog box to get more information should end in an ellipsis (...), for example, Font... 7 Feedback Everything the user does in a GUI should result in feedback as to whether it worked Example: Checkboxes get checked, radio buttons get “pushed,” typing shows up in text areas, etc. Clicking a button should either show the results, display a message that the action occurred, start a “progress bar” going, or pop up a dialog box that says what went wrong Items that cannot be used at the moment should be made inactive (so that they are visibly “grayed out”) This also solves the problem of what to do if the user clicks on one—it can’t happen Items that cannot be used at the moment should not be removed, which will cause the user to waste time looking for them 8 Minimize effort One common measure of the effort required to do something is “mouse clicks” For example, if the user’s action is successful, provide feedback, but don’t pop up a dialog box with a message such as “Your file has been saved. [OK]” Example: Compiling a program in BlueJ vs. Dr. Java Many editors use an asterisk or dot next to the name of any unsaved file If the user’s action is not successful, make sure that the feedback is highly visible This is a good place to use a dialog box 9 Simple design Windows that do everything are too cluttered to use easily For example, you should not put your preferences and your working elements in the same window One ambulance company used a single window for maintenance information, keeping track of which employees were on duty, and dispatching ambulances Separate concerns—present windows that give the user the right tools for what they are working on now 10 wGetGUI v1.0 11 FileMatrix 12 Progressive disclosure Simple design does not mean less control The Principle of Progressive Disclosure says to hide complexity until it is needed For example, look at the Preferences... menu on almost any large program You don’t see all the possible settings at once Settings are grouped according to what the user is probably trying to do—change the appearance, set security levels, etc. 13 User testing Most important in GUI design, even for experienced designers, is user testing Have a classmate or friend try out your program Watch as they do it Do not tell them how to use it; let them figure it out If your test user cannot figure something out, explain how to do it; but make a note of the problem, and fix it Even a minimal amount of user testing can greatly improve the design 14 The End 15