Process for User-centered Development
From Computing and Software Wiki
(→Iterative Design) |
(This space for rent.) |
||
(36 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
- | + | User centered development is a process in which the motivators ('''''end users''''') of a software project play a central role in the development decisions of the project. The end users will normally play a key role in interface design and provide a reliable testing group for evaluating functionality. This differs from traditional software design methods in which requirements are gathered early in the process and then software is built from completed requirements documents with minimal end user input. Correctness is determined by comparison to the requirements which may have been incorrect or incomplete. | |
== Early Focus on Users == | == Early Focus on Users == | ||
+ | === The Need for User Input === | ||
- | + | The objectives of end users must be of paramount importance to software developers, as the purpose of developing software is to accomplish the end user's objectives. User objectives should be ascertained and analyzed in the earliest stages of the software development cycle. From this user-centered perspective, developers can maximize avoiding time wasting diversions that do not provide users with more desired functionality. | |
- | |||
- | |||
- | + | Early user input will bring focus to the project, and keeping users informed of modifications and additions throughout the software development cycle will help retain that focus. Users help developers keep to their original intentions and developers remain focused on the desired feature set. Problems that arise can be solved with the end user's awareness of the state of the project and more awareness of the impact of their decisions on functionality, budgets and timelines. | |
- | + | === Methods of Focus === | |
- | ==== | + | ==== End User Input ==== |
- | + | Users have complex and diverse needs and wants. Focus in interface design should remain on the people who will actually use the product as part of their work. A ''proxy'' user meant to represent the user base should not be used. A proxy user could easily include groups who have an interest in the software project, but do not actually use it. Examples of these people include systems administrators or managers who only need a minimal interaction with the system. | |
+ | Their input rarely contains information relevant to end user experience since they do not have a first hand perspective, even though they might be paying for or distributing the software. | ||
- | ==== | + | ==== User Behaviour Modelling ==== |
- | + | The features provided by a piece of software are important to the customer, and how users interact with these features is important to the design of the interface. It should be modeled as closely as possible on the user's actual work environment, their behavior characteristics and the nature of the user's work. | |
- | |||
- | Co-discovery learning is a modified version of think-aloud, in the sense that the user will still think-aloud, but will be working with another person to accomplish a task, with the aim being to allow the user to more naturally verbalize their thoughts. It is more revealing, but potentially more difficult to conduct. | + | Appropriate models that take these factors into account will provide interface designers with a framework that will allow for intelligent interface prototypes to be constructed. These prototypes can be quickly tested by real users and further refinements will quickly lead to an effective design. |
+ | |||
+ | ==== Systematic Information Gathering and Analysis ==== | ||
+ | |||
+ | Consistency is a desirable attribute in a software design, and a systematic approach should be taken during development to encourage it. When aquiring user input, developers need to take extra care to ensure that the method of extraction is as consistant as possible. This way, comparisons between user input can be directly made, either quantatively or qualitively. This will avoid ambiguity in the analysis and implementation of user feedback. | ||
+ | |||
+ | === Usability Experts === | ||
+ | |||
+ | Experts in the field of usability are important contributors to the user-centred development cycle. They significantly ease the formalization of developer-client communication, and can provide usability training on several tiers of the development hierarchy. Usability experts work with designers, providing feedback as development occurs; they also interact with end users in ways that disambiguate their needs, resulting in feedback that is more useful for developers and designers. This allows team members to remain focused on their particular areas of expertise, preventing inaccurate or redundant usability information or modifications from accruing. | ||
+ | |||
+ | == Empirical Testing == | ||
+ | |||
+ | Empirical testing of the user-centered development consists mainly of usability testing with tests that can be quantitatively measured, which focus primarily on user feedback from interaction with the product. These tests are mainly based on user interaction with the interface as opposed to non-user based tests. Non-user based tests are ''expert review, compliance reviews, heuristic evaluations,'' and ''cognitive walk-throughs''. These tests are based on the review of an ‘expert’ and check if the usability of the product satisfies certain criteria based on well-known principles. Examples of the criteria include Shneiderman’s 8 golden rules or Norman’s 4 principles of usability, but could include legal requirements for example. User-based testing can include surveys, performance metric evaluations, think-aloud protocol, or co-discovery learning among others. Centers such as IBM's User Centered Design Center in Markham, Ontario attempt to formalize this process to derive empirical rules of software interface design. | ||
+ | === User-based Tests === | ||
+ | |||
+ | '''User Survey.''' A user survey will have the user use a prototype and then fill out a survey based on their experience. In this case, the answers the user provides will be restricted to what they are allowed to choose as answers, which allow for quick gathering of data. It can be said that user surveys are easy to conduct remotely, but relies heavily self-reported data. | ||
+ | |||
+ | '''Performance-based.''' Performance-based tests will have the user complete a specific task using a prototype of the interface. The data gathered will be based on the user experience of performing the given task with the prototype. This type of test is good for comparative evaluations, but is not a complete picture of usability and could be misleading. | ||
+ | |||
+ | '''Think-aloud protocol.''' Think-aloud protocol consists of having the user say what is on their mind while they are using the interface and trying to accomplish a task. The idea is to discover the thought processes involved in using the interface. This method can capture the user’s understanding, but cannot be used to evaluate performance, because of its disruptive nature. | ||
+ | |||
+ | '''Co-discovery Learning.''' Co-discovery learning is a modified version of think-aloud, in the sense that the user will still think-aloud, but will be working with another person to accomplish a task, with the aim being to allow the user to more naturally verbalize their thoughts. It is more revealing, but potentially more difficult to conduct. | ||
=== Purpose of Testing === | === Purpose of Testing === | ||
+ | Testing serves two main purposes. According to Galitz(Galitz 1997, p. 592): | ||
+ | *First, it establishes a communication bridge between developers and users. Through testing, the developer learns about the user’s goals, perceptions, questions and problems. Through testing, the user is exposed to the capabilities of the system early on, before design is solidified. | ||
+ | *Second, testing is used to evaluate a product. It can identify potential problems in design at a point in the development process where they can be more easily addressed. Testing also enables comparison of alternative versions of a design element, when a clear direction is not immediately evident. How well the interface and screens meets user needs and expectations can also be assessed. | ||
+ | |||
+ | The second purpose of testing mentions enabling a comparison of alternative versions of design. This is mainly what the empirical method is based on in user-centered design, the ability to gather and compare quantifiable data. | ||
=== Key Reasons to Test === | === Key Reasons to Test === | ||
+ | * Developers and users possess different models | ||
+ | * Developer’s intuitions are not always correct | ||
+ | * There is no average user | ||
+ | * It is impossible to predict usability from appearance | ||
+ | * Design standards and guidelines are not sufficient | ||
+ | * Informal feedback is inadequate | ||
+ | * Products built in pieces almost always have system-level inconsistencies | ||
+ | * Problems found late in the development cycle are more difficult and expensive to fix | ||
+ | * Problems fixed during development mean reduced support costs later | ||
+ | * Advantages over a competitive product can be achieved | ||
+ | |||
+ | While not an exhaustive list to justify testing, it highlights the key points made by Galitz. (Galitz 1997, p.592-593). | ||
=== Analyze and Retest === | === Analyze and Retest === | ||
+ | The testing process should be cyclic. Once the first test has been performed, it is important to analyze the data and establish benchmarks for further testing. Fixing old problems produces new problems. Once problems have been resolved to the satisfaction of the designers, the prototype must be changed to reflect this resolution. When the prototype is ready, it must be tested to gather more data, adjusting benchmarks and the prototype until involved parties are satisfied. This is a main component of iterative design and makes user centered design much simpler to incorporate. | ||
=== Limitations === | === Limitations === | ||
- | Although | + | Although empirical testing can solve many design problems, it has its limitations. Rubin and Chisnell (Handbook of Usability Testing 2008, p.25-26), point out that testing is always an artificial situation in the sense that the very act of conducting a study can itself affect the results. Test results do not prove that a product works, in that it is not a guarantee, but only a probability that results were not due to chance. Participants are rarely fully representative of the target population. Testing is not always the best technique to use, since at different stages it may be unnecessary to bring in many participants to reveal the obvious. Testing only accounts for hours of use, subtle or unusual problems may not be revealed in this environment. Even with these limitations, Rubin and Chisnell (Handbook of Usability Testing 2008, pg. 26) also note that used correctly, testing will almost always bring to light potential problems, when done carefully and correctly. |
== Iterative Design == | == Iterative Design == | ||
- | + | === Introduction === | |
- | * Prepare a prototype design | + | In the design of a user interface, it is not possible to obtain an interface free from usability issues in a single attempt. To solve this problem, the development team can use a method called iterative design. This method is applied in the development of new products in general, and can be applied to software easily. Iterations are used to improve the interface by collecting user feedback from a prototype of the interface. Usability issues raised can be corrected in the creation of a new prototype, which is then evaluated. |
+ | |||
+ | The steps in an iteration should be: | ||
+ | * Prepare a prototype design | ||
* Present this design to a set of potential users | * Present this design to a set of potential users | ||
- | * Collect problems | + | * Collect potential problems, as reported by users |
- | * Refine design based on | + | * Refine design based on user input |
- | Iterative design is about refinement | + | Iterative design is purely about refinement; each iteration brings improvements to the whole project by solving usability issues. This method puts user assessed quality at the centre of the development process. |
- | + | Development of a good user interface is the result of understanding user's needs and behavior. It is hard for an interface designer to obtain a perfect understanding of user's goals and the iterative design method allows them to base their work on user feedback. Thus, usability issues will be minimized. | |
- | + | ||
- | + | ||
=== Benefits === | === Benefits === | ||
- | + | Some advantages of iterative design are: | |
- | + | * Inconsistencies around application design are detected earlier than with a traditional development method. | |
- | * Inconsistencies around application design are detected earlier than with a traditional development method | + | * Most usability issues will be solved: less post release patches and upgrades |
- | * Most | + | |
* Better understanding of users needs | * Better understanding of users needs | ||
* Testing phase is easier to plan as the testing team will proceed by iterations | * Testing phase is easier to plan as the testing team will proceed by iterations | ||
* Better knowledge about the current project status: good visibility of the project advancements | * Better knowledge about the current project status: good visibility of the project advancements | ||
- | * | + | * Provides a history of mistakes made to help with future projects |
=== Disadvantages === | === Disadvantages === | ||
- | One of the problem of iterative design is | + | One of the problem of iterative design is it's cost, if you exaggerate the number of iterations. Indeed, each iteration can be time consuming, and time management is critical in software development. Jakob Nielsen has realized experiences about the number of iterations that should be performed by a user interface designer. According to his opinion, developers should realize three iterations to obtain an interface adapted to users needs without excessively spending a lot of time and money. |
== References == | == References == | ||
- | [http://en.wikipedia.org/wiki/Iterative_design Iterative Design (Wikipedia)] | + | * [http://xml.coverpages.org/NunoWisdomThesis.pdf Object Modelling for User Centered Development and User Interface Design: The Wisdom Approach] |
- | [http://www.useit.com/papers/iterative_design/ Iterative Design by Jakob Nielsen] | + | |
+ | * [http://www.mii.lt/files/InMaDra/5-User-Centered-Design.pdf User Centered Design and Development] | ||
+ | |||
+ | * [http://www.w3.org/WAI/redesign/ucd Notes on User Centered Design Process (UCD)] | ||
+ | |||
+ | * [http://www.sapdesignguild.org/resources/ucd_paper.asp User Centered Design] | ||
+ | |||
+ | * [http://en.wikipedia.org/wiki/Iterative_design Iterative Design (Wikipedia)] | ||
+ | |||
+ | * [http://www.useit.com/papers/iterative_design/ Iterative Design by Jakob Nielsen] | ||
+ | |||
+ | * Galitz, W (1997). ''The Essential Guide to User Interface Design: An Introduction to GUI Design Principles and Techniques'', Wiley Publishing. | ||
+ | |||
+ | * Chisnell and Rubin (2008). ''Handbook of Usability Testing, Second Edition: How to Plan, Design, and Conduct Effective Tests'', Wiley Publishing. | ||
+ | |||
+ | * Hix and Hartson (1993). ''Developing User Interfaces: Ensuring Usability Through Product & Process'', Wiley Publishing. |
Current revision as of 20:48, 23 November 2009
User centered development is a process in which the motivators (end users) of a software project play a central role in the development decisions of the project. The end users will normally play a key role in interface design and provide a reliable testing group for evaluating functionality. This differs from traditional software design methods in which requirements are gathered early in the process and then software is built from completed requirements documents with minimal end user input. Correctness is determined by comparison to the requirements which may have been incorrect or incomplete.
Contents |
Early Focus on Users
The Need for User Input
The objectives of end users must be of paramount importance to software developers, as the purpose of developing software is to accomplish the end user's objectives. User objectives should be ascertained and analyzed in the earliest stages of the software development cycle. From this user-centered perspective, developers can maximize avoiding time wasting diversions that do not provide users with more desired functionality.
Early user input will bring focus to the project, and keeping users informed of modifications and additions throughout the software development cycle will help retain that focus. Users help developers keep to their original intentions and developers remain focused on the desired feature set. Problems that arise can be solved with the end user's awareness of the state of the project and more awareness of the impact of their decisions on functionality, budgets and timelines.
Methods of Focus
End User Input
Users have complex and diverse needs and wants. Focus in interface design should remain on the people who will actually use the product as part of their work. A proxy user meant to represent the user base should not be used. A proxy user could easily include groups who have an interest in the software project, but do not actually use it. Examples of these people include systems administrators or managers who only need a minimal interaction with the system. Their input rarely contains information relevant to end user experience since they do not have a first hand perspective, even though they might be paying for or distributing the software.
User Behaviour Modelling
The features provided by a piece of software are important to the customer, and how users interact with these features is important to the design of the interface. It should be modeled as closely as possible on the user's actual work environment, their behavior characteristics and the nature of the user's work.
Appropriate models that take these factors into account will provide interface designers with a framework that will allow for intelligent interface prototypes to be constructed. These prototypes can be quickly tested by real users and further refinements will quickly lead to an effective design.
Systematic Information Gathering and Analysis
Consistency is a desirable attribute in a software design, and a systematic approach should be taken during development to encourage it. When aquiring user input, developers need to take extra care to ensure that the method of extraction is as consistant as possible. This way, comparisons between user input can be directly made, either quantatively or qualitively. This will avoid ambiguity in the analysis and implementation of user feedback.
Usability Experts
Experts in the field of usability are important contributors to the user-centred development cycle. They significantly ease the formalization of developer-client communication, and can provide usability training on several tiers of the development hierarchy. Usability experts work with designers, providing feedback as development occurs; they also interact with end users in ways that disambiguate their needs, resulting in feedback that is more useful for developers and designers. This allows team members to remain focused on their particular areas of expertise, preventing inaccurate or redundant usability information or modifications from accruing.
Empirical Testing
Empirical testing of the user-centered development consists mainly of usability testing with tests that can be quantitatively measured, which focus primarily on user feedback from interaction with the product. These tests are mainly based on user interaction with the interface as opposed to non-user based tests. Non-user based tests are expert review, compliance reviews, heuristic evaluations, and cognitive walk-throughs. These tests are based on the review of an ‘expert’ and check if the usability of the product satisfies certain criteria based on well-known principles. Examples of the criteria include Shneiderman’s 8 golden rules or Norman’s 4 principles of usability, but could include legal requirements for example. User-based testing can include surveys, performance metric evaluations, think-aloud protocol, or co-discovery learning among others. Centers such as IBM's User Centered Design Center in Markham, Ontario attempt to formalize this process to derive empirical rules of software interface design.
User-based Tests
User Survey. A user survey will have the user use a prototype and then fill out a survey based on their experience. In this case, the answers the user provides will be restricted to what they are allowed to choose as answers, which allow for quick gathering of data. It can be said that user surveys are easy to conduct remotely, but relies heavily self-reported data.
Performance-based. Performance-based tests will have the user complete a specific task using a prototype of the interface. The data gathered will be based on the user experience of performing the given task with the prototype. This type of test is good for comparative evaluations, but is not a complete picture of usability and could be misleading.
Think-aloud protocol. Think-aloud protocol consists of having the user say what is on their mind while they are using the interface and trying to accomplish a task. The idea is to discover the thought processes involved in using the interface. This method can capture the user’s understanding, but cannot be used to evaluate performance, because of its disruptive nature.
Co-discovery Learning. Co-discovery learning is a modified version of think-aloud, in the sense that the user will still think-aloud, but will be working with another person to accomplish a task, with the aim being to allow the user to more naturally verbalize their thoughts. It is more revealing, but potentially more difficult to conduct.
Purpose of Testing
Testing serves two main purposes. According to Galitz(Galitz 1997, p. 592):
- First, it establishes a communication bridge between developers and users. Through testing, the developer learns about the user’s goals, perceptions, questions and problems. Through testing, the user is exposed to the capabilities of the system early on, before design is solidified.
- Second, testing is used to evaluate a product. It can identify potential problems in design at a point in the development process where they can be more easily addressed. Testing also enables comparison of alternative versions of a design element, when a clear direction is not immediately evident. How well the interface and screens meets user needs and expectations can also be assessed.
The second purpose of testing mentions enabling a comparison of alternative versions of design. This is mainly what the empirical method is based on in user-centered design, the ability to gather and compare quantifiable data.
Key Reasons to Test
- Developers and users possess different models
- Developer’s intuitions are not always correct
- There is no average user
- It is impossible to predict usability from appearance
- Design standards and guidelines are not sufficient
- Informal feedback is inadequate
- Products built in pieces almost always have system-level inconsistencies
- Problems found late in the development cycle are more difficult and expensive to fix
- Problems fixed during development mean reduced support costs later
- Advantages over a competitive product can be achieved
While not an exhaustive list to justify testing, it highlights the key points made by Galitz. (Galitz 1997, p.592-593).
Analyze and Retest
The testing process should be cyclic. Once the first test has been performed, it is important to analyze the data and establish benchmarks for further testing. Fixing old problems produces new problems. Once problems have been resolved to the satisfaction of the designers, the prototype must be changed to reflect this resolution. When the prototype is ready, it must be tested to gather more data, adjusting benchmarks and the prototype until involved parties are satisfied. This is a main component of iterative design and makes user centered design much simpler to incorporate.
Limitations
Although empirical testing can solve many design problems, it has its limitations. Rubin and Chisnell (Handbook of Usability Testing 2008, p.25-26), point out that testing is always an artificial situation in the sense that the very act of conducting a study can itself affect the results. Test results do not prove that a product works, in that it is not a guarantee, but only a probability that results were not due to chance. Participants are rarely fully representative of the target population. Testing is not always the best technique to use, since at different stages it may be unnecessary to bring in many participants to reveal the obvious. Testing only accounts for hours of use, subtle or unusual problems may not be revealed in this environment. Even with these limitations, Rubin and Chisnell (Handbook of Usability Testing 2008, pg. 26) also note that used correctly, testing will almost always bring to light potential problems, when done carefully and correctly.
Iterative Design
Introduction
In the design of a user interface, it is not possible to obtain an interface free from usability issues in a single attempt. To solve this problem, the development team can use a method called iterative design. This method is applied in the development of new products in general, and can be applied to software easily. Iterations are used to improve the interface by collecting user feedback from a prototype of the interface. Usability issues raised can be corrected in the creation of a new prototype, which is then evaluated.
The steps in an iteration should be:
- Prepare a prototype design
- Present this design to a set of potential users
- Collect potential problems, as reported by users
- Refine design based on user input
Iterative design is purely about refinement; each iteration brings improvements to the whole project by solving usability issues. This method puts user assessed quality at the centre of the development process.
Development of a good user interface is the result of understanding user's needs and behavior. It is hard for an interface designer to obtain a perfect understanding of user's goals and the iterative design method allows them to base their work on user feedback. Thus, usability issues will be minimized.
Benefits
Some advantages of iterative design are:
- Inconsistencies around application design are detected earlier than with a traditional development method.
- Most usability issues will be solved: less post release patches and upgrades
- Better understanding of users needs
- Testing phase is easier to plan as the testing team will proceed by iterations
- Better knowledge about the current project status: good visibility of the project advancements
- Provides a history of mistakes made to help with future projects
Disadvantages
One of the problem of iterative design is it's cost, if you exaggerate the number of iterations. Indeed, each iteration can be time consuming, and time management is critical in software development. Jakob Nielsen has realized experiences about the number of iterations that should be performed by a user interface designer. According to his opinion, developers should realize three iterations to obtain an interface adapted to users needs without excessively spending a lot of time and money.
References
- Galitz, W (1997). The Essential Guide to User Interface Design: An Introduction to GUI Design Principles and Techniques, Wiley Publishing.
- Chisnell and Rubin (2008). Handbook of Usability Testing, Second Edition: How to Plan, Design, and Conduct Effective Tests, Wiley Publishing.
- Hix and Hartson (1993). Developing User Interfaces: Ensuring Usability Through Product & Process, Wiley Publishing.