Thursday, February 17, 2011

Usability Engineering

Overview
Human Computer Interaction and Interaction Design
The goal of usability engineering is to optimize the user experience within your applications. Ideally the customer should be able to interact with your product in a manner that feels most natural to them. This is much easier said than done when considering the diversity of an applications user base, especially as the internet continues to proliferate. In order to maximize the quality of the user experience we will take an in depth look at the various activities that a software engineer should take in order to produce the highest quality application, in terms of user interaction and experience. The diagram on the right shows all of the different disciplines that relate to human computer interaction (HCI). As you can see there are a lot of professionals related to this practice, thus forming a well rounded team with specialists from as many disciplines as possible is a great way to generate good ideas within your team.

Good and Bad Designs
In order to appreciate good designs perhaps it would be helpful to first look at some bad designs. We have all seen bad designs before, the vending machine the scammed you, the remote control that was too complicated to use. Bad designs come along a lot more of then good designs since considerable effort is required to produce a design that is universally praised by a majority of the user base.  Basically a bad design does not lead the user naturally through workflows within the system, causing considerable confusion and frustration. A good design easily allows the user to recognize which actions need to be taken in order to achieve their goals. I would encourage you to see some proof of bad design in everyday life so that you can see for yourself how rampant bad designs are.

Traits of a Good User Interface
- Helps the user quickly build a mental model of the entire system, not just one part.
- Enables the user to easily build a mental model of the application, leading to intuition for the users.
- Feels natural to user making it easy to learn how to use. Removes any surprises that may cause confusion.
- Feels like it's been tailored to the end-user.
- Allows the user to perform tasks efficiently.
- Meets the principal design goals of: usability, catering to different types of users, etc...

The Tangible Benefits of a Good User Interface
- Enhances the users productivity.
- Reduces the learning curve and associated costs.
- Enhances the end-users' satisfaction.
- Improves the quality of the work performed by the users.
- Minimizes the the number of errors related to workflow processes.

Things You Need to Know to be Able to Produce a Good UI Design
Since we are concerned with the performance of the system relative to our end-users, it is only natural that we focus on them. The following list represents traits of our users that can help guide our UI design choices.

- Users profile, behavior, background, skill level, etc...
- The types of tasks that the user needs to perform.
- The context and social environment in which the system will be used.
- The limitations of what is suitable and feasible from a technological perspective.


The Difficulties of Producing a User Interface Design
Diversity amongst the users base as well as plethora of tasks which need to be performed compound to make the job of the UI designer that much more difficult. Additionally, understanding user requirements is not an easy process, as visible through the large number of software project failures. Additionally, when software begins it's lifetime, UI often takes a back seat since it's the last layer on the cake, although this is not recommended from a usability engineering perspective. The final and most decisive hurdle to most companies getting need to overcome in achieving a high quality UI is the cost associated with the process of researching, prototyping and testing.


The Status Quo From a Software Engineers Perspective (Note this is not acceptable)
- Let us design for technology rather than for the end-user needs.
- Flashy graphics and nice colors to make up for bad design.
- Engineers obsess over program logic while users interact with the application visually.
- Users make errors but we don't plan for them.
- Fix UI bugs with documentation
- Lack of time and budget, so improvements get pushed to the next release, perpetually in some cases.

Tips for Understanding Your Users' Needs
- Take into account your users strengths and weaknesses.
- Consider ways to help your users adopt more efficient work flows.
- Take the time to quantify what how to improve the quality of the user experience.
- Ask people what they want, and don't forget to listen to the answers.

"you cannot design the user experience, you can only design for a user experience"

The Interaction Design Process, Briefly
- Identify the needs and requirements for the suer experience.
- Develop alternative designs to meet these goals.
- Build interactive prototypes that can be evaluated.
- Continuously evaluate what is being produced based on the quality of the user experience.

Core Characteristics of Interaction Design
- Users are involved throughout the development process
- Specific usability and user experience goals must be identified, documented and agreed to by all parties.
- The design process occurs iteratively with time alloted for regular prototype evaluations.

Important Terms for Usability Designers
- Visiblity, i.e. making the actions that a user can perform visible to them.
- Affordance, referring to an attribute of an object that allows people know how to use it, i.e. door handles, computer mice, etc...
- Conceptual model, this is a high-level description of how a system is organized and operates.
- Models, a simplification of some aspect of human-computer interaction intended to make it easier for designers to predict and evaluate alternative designs.
- Framework, a set of interrelated concepts and/or a set of specific questions.

Usability Principles (Nielson 2001)
- Visibility of system status
- Mach between system and the real world
- User control and freedom
- Consistency and standards
- Help users recognize, diagnose and recover from errors
- Error prevention
- Recognition rather than recall
- Flexibility and efficiency of use
- Aesthetic and minimalist design
- Help and documentation


Understanding User Interaction
So far we've highlighted the goals of user interaction design, and have seen what makes a good or bad design. We'll now switch our focus a bit towards understanding how to analyze the problem space (user requirements) so that when we do get to the point of designing out solution we will have a better idea of what problem we are trying to solve.

Analyzing the Problem Space
In order to effectively analyze the problem space we need to keep the following questions in mind.
- What do you want to create?
- What are your assumptions?
-  What are your claims?
- Will your solution effectively aid the user in achieving their goals, and how so?

Analyzing the Problem Space Related to Currently Implemented Solutions?
- Are there problems with an existing solution
- Why do you think there are problems within the existing solution?
- How do you think your proposed design ideas can overcome these issues?
- when designing for a new user experience how will the proposed design extend or change current workflows?

Creating a Conceptual Model
As defined above, the conceptual model is the high level design description of how the system will operate. This is extremely important to do at the beginning of the design process since it will help formulate the overall strategy for the solution to be. By establishing a conceptual model a lot of questions that may arise during the design process can be managed with the overall goal in mind allowing the designers to create a more cohesive solution.

Main Components of a Conceptual Model
- Major metaphors and analogies that are used to convey what the solution has been designed for and how it should be used.
- Concepts that users are exposed to in using the product.
- The relationships between the concepts.
- The mappings between the concepts and the user experience the product is designed to support.

Interface Metaphors
Using a metaphors in your design helps foster intuition amongst users. An effective metaphor allows the uses to grasp the underlying conceptual model with ease. It can also be an innovative way to make your application accessible to more users. A good metaphor is designed to be similar to some familiar physical entity, like a desktop. By likening your virtual solution to some physical entity you can allow the users to build their own intuition quickly about how the product performs.

Difficulties in Creating Interface Metaphors (Nielson, 1990)
- Break conventional and cultural rules (i.e. recycle bins on desktops).
- Can constrain designer in the way which they conceptualize the problem space.
- Conflict with design principles.
- Forces users to only understand the system in terms of the metaphor.
- Designer can inadvertently use bas existing designs and transfer the bad parts over.
- Limits the designers' imagination in creating new conceptual models.

Interaction Types (M.I.C.E.)
The following is a categorization of the various interaction types.
- Instructing: Issuing commands using the keyboard, function keys and selecting options from a menu.
- Conversing: Interacting with the system as if having a conversation with it.
- Manipulating: Interacting with objects in a virtual or physical space by manipulating them.
- Exploring: Moving through a virtual environment or space.

Understanding Users
There are two types of cognition according to Norman (1993), experiential and reflective. Experiential cognition is defined as the type of cognitive exercise where a person is mindlessly interacting with his or her environment. Reflective cognition is when  you deliberately think about an issue and make a decision about it. The reason that it is important to make this distinction is because each type of cognitive process requires different levels of technological support. One thing to keep in mind about all of this is that people have been proven to be much better at recognizing things than recalling them. Additionally, certain types of information are easier to recognize than others, such as pictures. This leads us to the concept of recall-directed memory versus recognition-based scanning. Suppose the user of your system was trying to go to a URL that they were recently at. The first attempt of the user is to remember the URL directly and simply type it in to the navigation bar. When this fails the user resorts to scanning his history for the proper URL since he was there just a few days ago. Although scanning takes longer than remembering something directly the end result was ultimately achieved. This shows us that it is important to provide your users with a couple different ways of locating items of interest in order to provide the most enjoyable user experience. A general strategy when  implementing some of these ideas into a UI is to use recognition rather than recall within menus, icons and consistently placed objects.

Theory of Action (Norman 1996)
The following theory is an approximation of the mental process which occurs in each of us when using software. This theory suggests that software should always provide it's users with meaningful responses in order to inform them whether or not their needs and intentions have been met.

Bridging the gulfs of execution and evaluation, Norman 1986
1) Establish a goal
2) Form an intention
3) Specify an action sequence
4) Execute an action
5) Perceive the system state
6) Interpret the state
7) Evaluate the system state with respect to the goals and intentions





Data Gathering Techniques
1) Interviews
     - Structured
     - Semi-structured
     - Unstructured
2) Focus Groups
3) Questionnaires
4) Observation
     - Field
     - Controlled environment

No comments:

Post a Comment

Online Marketing