Software Engineering I Oct. 23, 2013 Users and their tasks Introduce user-centered design How to create and evaluate designs to ensure usability Problem throughout SW history (50+ years) Need user-centered design Focus on - Understanding users - system should match their knowledge level, abilities and preferences - Design SW based on understanding of the users' tasks - Make users involved in decision making process + Keep them involved throughout development - Design UI following good principles of usability + Use researched guidelines - Have users work with and get feedback on prototypes, online help, and draft user manuals Focus on users in important because - Reduces training and support costs - Reduces time for users to learn the system - Greater efficiency of use - Reduces costs by developing only features that are needed - Reduces costs associated with changing the system later - Better prioritizes work for iterative development - Greater attractiveness of system = better sales and use Characteristics of users - Goals for using system, what are they? - Potential patterns of use + Too many steps makes SW cost too much time - Demographics - age, education, language, culture - Knowledge of domain and computers - Physical ability - Psychological traits and emotional feeling Basics of UI design - Used to be simpler - Now an entire research field - Perform with other SW Engineering tasks + need some domain analysis and to define the problem + make 1st attempt at UI + Need use cases - Perform UI design iteratively + Use to refine use cases and UI + Paper prototypes 1st + Then "static" prototypes + Then functional prototypes Analyze usability vs utility Utility - does it provide the right functionality? Usability - can the functionality be learned? Both are necessary Both are measured in context of different types of users Usability includes Learnability - how fast can a user become efficient with the system + Is it intuitive? Efficiency of use - how fast can an expert user do work? Error Handling - abnormal situations + Error prevention + Error detection + Error correction Acceptability - how much users like the system Metrics exist for each of these UI Terminology Dialog - back and forth interaction with computer Ex: Dialog box Control/Widget (a thing) - refer to components of UI Ex: menu, list, textbox, scrollbar Affordance - operations the user can perform at a given time by typing, clicking, or other commands State - UI state (stage of dialog) Mode - restriction on what UI can do Modal Dialog - restrictive mode in which user cannot interact with another window until the dialog has been dismissed. Feedback - response from system Encoding - format used to communicate information Ex: spoken language, text, font, icons, diagrams, photos, etc. Usability Principles - Don't rely only on guidelines + Test with users - Base UI design on users' tasks as expressed in use cases - Ensure sequence of actions to complete a task is as simple as possible - Ensure user always knows what he/she can or should do next and what will happen when he/she does it + Gray out unavailable options + Use explanations + Make things stand out - Ex: bright/contrasting colors - Provide effective feedback and error messages - Progress bar for long operations - Inform user about current location in a series of windows - Ensure user can get out/go back/undo action or give a warning if they cannot do so - Ex: Disk formatting - Ensure response time is adequate (warn on long waits) More Usability Principles - Use understandable labels and other encodings - don't use technical jargon and acronyms unless necessary - use technical writers and graphic designers - use meaningful label names - use popup labels - Ensure UI appearance is neat and uncluttered - Don't give too much to look at at once - Messiness is bad - Only display essential information + provide methods for the user to get more info, if needed - Avoid having large numbers of dialogs - Highlight information that belongs together using boxes, colors, and fonts - Put boxes around related items - Use horizontal lines to separate related items in a menu - Don't use too many different colors, fonts, or graphics - Line up labels and input fields so users can quickly read what needs to be entered - Consider needs of different groups - People from different locales - Persons with disabilities - Beginners vs. Experts - Provide help - Be consistent! UI examples were provided in class, and poor features were pointed out. Next up - Evaluating UIs - Heuristic evaluation - Usability defects - Usability inspections