Professional Documents
Culture Documents
User-Interface
Development
r Essential UI prototyping;
r Traditional UI prototyping;
r UI flow diagrams;
r Usability;
r UI design strategies; and
r Agile stakeholder documentation.
184
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.1 Essential User-Interface Prototyping 185
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
186 USER-INTERFACE DEVELOPMENT
TIP
Active Stakeholder Participation Is Crucial
Project stakeholders must be available to provide requirements, to prioritize
them, and to make decisions in a timely manner. It is critical that your project
stakeholders understand this concept and are committed to it from the beginning
of any project.
tools are simple, including whiteboards, flip chart paper, and sticky notes. The
minute you introduce electronic technology to your prototyping efforts you
have most likely made a design decision about the implementation technology.
If you use an HTML development tool to build a UI prototype, then you
may immediately narrow your design space to the functionality supported
within browsers. If you choose a Java development environment, then you
may narrow your design space to Java, and if you choose a Windows-based
prototyping tool, you may narrow your design space to whatever is supported
on the Windows platform. Right now, you should be focused on requirements,
not design; therefore, you do not currently want to use technology-based
prototyping tools. Understand the problem first, and then solve it.
So how do you use sticky notes and flip chart paper to create an essential
UI prototype? Let us start by defining several terms. A major UI element
represents a large-grained item, potentially a screen, HTML page, or report. A
minor UI element represents a small-grained item, widgets such as user input
fields, menu items, lists, or static text fields such as labels. When a team is
creating an essential UI prototype, it iterates between the following tasks:
1. Explore system usage. Your team will explore system usage via several
means. First, you will likely work together on a whiteboard to discuss
ideas, work on initial drawing together, and generally take advantage of
the dynamic nature of whiteboards to come to an understanding quickly
of the portion of the system you are discussing. For example, with the
university system, you may gather around a whiteboard to make an initial
drawing of what a university transcript would contain or what a seminar
enrollment submission would contain. Second, as you have seen, essential
use case modeling (Chapter 5) is an effective technique for understanding
the behavioral requirements for your system. You will see in Chapter 8 there
are several effective techniques for understanding the domain concepts
your system must support.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.1 Essential User-Interface Prototyping 187
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
188 USER-INTERFACE DEVELOPMENT
visual reminder to your team that you are building an abstract model of
the user interface and not the real thing. Each sticky note is, effectively, a
placeholder that says you need something there, but you do not yet know
yet the best way to implement it, so for now, you want to leave it open.
4. Explore the usability of your UI. Highly usable systems are learnable,
they enable user productivity, their use is easy to remember, and they are
supportable. Ensuring system usability is discussed in Section 6.4.
Let us examine Fig. 6.1 in greater detail. This prototype was created using
a standard piece of flip chart paper; you should use one piece of flip chart
paper per major UI element. Alternatively you might simply use a whiteboard
instead of the flip chart paper, although this is not as physically portable.
The name, in this case Enroll in Seminar, is typically written across the top.
Notice how there is two containers, which I drew on the paper to help bound
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.1 Essential User-Interface Prototyping 189
different sections of the UI. The pink sticky notes, such as Student Number and
Student Name, represent input fields, whereas the yellow ones are display only.
Student Name is interesting because it is a bit of a cheat, listing four separate
data elements on the one sticky note. I will often do this when I know some
things always come in a group and when I think I will need the room, which,
as you can see in Fig. 6.1, I do. The blue sticky notes, such as Search and Help,
represent action items. Action items are often implemented as push buttons,
function keys, or “hot key” combinations, such as CTRL-SHIFT-S. All of the
lists support selection of the information within them; for lists that do not
support selection, you should indicate this information.
Although Fig. 6.1 represents something that will very likely be implemented
as either a screen or an HTML page you can still use this technique to model UI
elements that could be implemented as reports. For example, Fig. 6.2 shows
how you would model a student transcript, something that could potentially
be implemented as printed output.
I like to ask questions about how your essential UI prototypes would be
used. For example, what should happen if a student really wants to enroll
in a seminar that is currently full? Should she be given the opportunity to
add herself to a waiting list? If so, how does that affect the UI? You likely
need to support the capability to indicate a waiting list of X number of peo-
ple already exists, as well as a way to request being added to, or removed
from, the waiting list. Should obtaining detailed information about the pro-
fessor teaching a seminar be possible? Should obtaining detailed information
about the seminars in the prerequisite list be possible? In Fig. 6.1 you see it
is possible to search for a seminar by inputting its number or name. Should
searching by the department that offers the seminar be possible? Or by day
of the week on which it is offered (when I was a student I had a 1.5-hour
commute, so I tried to enroll in seminars that all were held on the same days)?
Or by the name of the instructor teaching it? These are all interesting ques-
tions, the answers for which could potentially result in new requirements.
TIP
You Will Still Need to Explain the Techniques
Even when you use simple techniques you will still need the time to explain
them to your stakeholders. Because people learn best by doing it is often a good
idea to lead stakeholders through the creation of several examples.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
190 USER-INTERFACE DEVELOPMENT
However, always remember that your project stakeholders are the official
source of requirements, not developers. If you identify some new functional-
ity that you think is required you need to convince your stakeholder that it is
a good idea, have them prioritize it, and add the new requirement to the stack.
When you are following agile modeling’s practice of active stakeholder partici-
pation this is very easy to accomplish because your stakeholder(s) would have
been part of the modeling exercise to begin with.
We have been jumping through hoops not indicating implementation deci-
sions for the major UI elements. The reality is that you know that the seminar
enrollment prototype of Fig. 6.1 is going to be implemented as either a screen
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.2 Traditional User-Interface Prototyping 191
TIP
Create Several Models in Parallel
I perform user-interface modeling in parallel with usage models such as use
cases, user stories, or features. I will iterate back and forth between the various
models and evolve them together. This approach allows me to use each one
for its strengths as well as to avoid analysis paralysis—when I get stuck
describing a use case I will switch to modeling a major UI element that supports
that use case, or better yet I will decide to start coding what I currently understand.
or an HTML page, so why not admit it? Furthermore, you know the student
transcript prototype modeled in Fig. 6.2 will be some sort of report because
all the information is display only. Granted, it could be implemented as a
printed report, as an electronic file, as a browser page, as a screen, or several
of these. When a major UI element contains one or more minor UI elements
that permit editing, then you know it is going to be a screen or a page. When it
contains no editable elements, then it will be a report. If you are going to a lot
of “unnatural” effort to make your major UI elements independent of imple-
mentation technology, then you may want to loosen up a bit and distinguish
between reports and screens/pages. In fact, once the architectural decision
of how we are going to deploy the system has been made (see Chapter 10),
I have a tendency to draw screen sketches on a whiteboard, which enables
me to get a more accurate rendering of what the screen/report may look like.
However, as always my advice is always to choose the most appropriate tools
and techniques for your situation.
r As an analysis artifact that enables you to explore the problem space with
your stakeholders;
r As a design artifact that enables you to explore the solution space of your
system;
r As a vehicle for you to communicate the possible UI design(s) of your
system; and
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
192 USER-INTERFACE DEVELOPMENT
TIP
Good Things to Understand about Prototyping
Constantine and Lockwood (1999) provide valuable insight into the process
of UI prototyping. First, you cannot make everything simple. Sometimes your
software will be difficult to use because the problem it addresses is inherently
difficult. Your goal is to make your UI as easy as possible to use, not simplistic.
Second, they differentiate between the concepts of WYSIWYG, “What You See
Is What You Get,” and WYSIWYN, “What You See Is What You Need.” Their
point is a good UI fulfills the needs of the people who work with it. It is not
loaded with a lot of interesting, but unnecessary, features. Third, consistency
is important in your UI. Inconsistent UIs lead to less usable software, more
programming, and greater support and training costs. Fourth, small details
can make or break your UI. Have you ever used some software, and then
discarded it for the product of a competitor because you did not like the way
it prints, saves files, or some other feature you simply found too annoying to
use? I have. Although the rest of the software may have been great, that ven-
dor lost my business because a portion of its product’s user interface was deficient.
As you see in the activity diagram depicted in Fig. 6.3, there are four high-
level steps in the UI prototyping process. The first step is to analyze the UI
needs of your users. UI modeling moves from requirements definition into
analysis at the point you decide to evolve all or part of your essential user-
interface prototype into a traditional UI prototype. This implies you convert
your hand drawings, flip chart paper, and sticky notes into something a little
more substantial. You begin this process by making platform decisions, which
in effect is an architectural decision (Chapter 10). For example, do you intend
to deploy your system so it runs in an Internet browser, as an application with a
Windows-based GUI, as a cross-platform Java application, or as a mainframe-
based set of “green screens”? Different platforms lead to different prototyping
tools: for a browser-based application, you need to use an HTML-development
tool, whereas a Java-based application would require a Java development tool
and a different approach to the user-interface design.
While you are determining the needs of your stakeholders you may decide
to transform your essential UI prototypes, if you created them to begin with,
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.2 Traditional User-Interface Prototyping 193
Determine Needs
Build Prototype
Evaluate Prototype
[continue]
[finished]
with sketches. Figure 6.4 depicts a sketch of two potential screens or HTML
pages based on the essential UI prototype of Fig. 6.1. Transform really is not
the right word here seeing as I am using a completely different modeling
technology now (a whiteboard instead of paper) so in effect I am replacing
the essential UI prototype with the sketches.
I chose to split the original prototype into two screens for cohesion issues—
I prefer screens that fulfill a single purpose, in this case capturing basic student
information and enrolling a student in seminars, respectively. This is arguably
a design issue (there is a fine line between analysis and design, which you will
cross all the time). The sketches provide a finer level of detail than the paper
prototypes do; for example it is much easier to get a feel for how the screen
will be implemented when you look at Fig. 6.4 than when you look at Fig.
6.1. However, the sketch is not as flexible as the paper prototype: it is hard to
shift widgets from one part of the diagram to another, whereas with the paper
it is very easy.
As you iterate through UI prototyping you will often discover information
better captured by other artifacts. That is okay; you can follow the AM practice
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
194 USER-INTERFACE DEVELOPMENT
TIP
Agile Software Development Is an Evolutionary Process
When you are analysis modeling on an agile project you will typically focus on a
very small subset of the requirements at a time. For example, on an XP project
you and your programming pair may work with a project stakeholder to analyze
a single user story, one of hundreds, and then move on to design and implement
it. This analysis effort often takes several minutes, depending on the nature of
the user story, as does the design effort. Then you will spend several hours or
days implementing the requirement only to start again with a new user story.
Other agile approaches, such as feature-driven development (FDD) (Palmer and
Felsing 2002), may invest a bit more time in analysis and design but they still
work in a similar, evolutionary, manner.
iterate to another artifact and capture that information in the proper place.
It also points to the importance of the AM practice create several models in
parallel—you often need to work on several things at once to get the job done.
Agile software development is an evolutionary process, so this is normal.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.2 Traditional User-Interface Prototyping 195
Once you understand the UI needs of your stakeholders, the next step is to
actually build a prototype. Using a prototyping tool or high-level language,
you develop the screens, pages, and reports needed by your users. With the
UI platform selected, you can begin converting individual aspects of your
essential UI prototype into your traditional UI prototype. You may want to
create sketches such as you see in Fig. 6.4 or go straight to a concrete im-
plementation, such as the HTML page depicted in Fig. 6.5. The sketches are
more inclusive, and your stakeholders can be actively involved in creating
them, although the actual HTML page is much closer to working code (your
primary goal).
It is critical to understand that you do not need to create a prototype for
the entire system. It is very common to prototype a small portion of the UI,
perhaps a single screen or HTML page, before moving onto implementing
it. Remember that agile developers work in an evolutionary manner—they
do not need to define everything up front before moving on. Sometimes you
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
196 USER-INTERFACE DEVELOPMENT
After evaluating the prototype, you may find you need to scrap parts of it,
modify parts, and even add brand-new parts. You want to stop the UI proto-
typing process when you find the evaluation process is no longer generating
any new ideas or it is generating a small number of not-so-important ideas.
Otherwise, return to exploring your stockholder’s UI needs.
I have found the following tips and techniques have worked well for me in
the past while UI prototyping:
1. Work with the real users. The best people to get involved in prototyping
are those who will actually use the application when it is done. These are
the people who have the most to gain from a successful implementation;
these are the people who know their own needs best.
2. Get your stakeholders to work with the prototype. Just as if you want to
take a car for a test drive before you buy it, your users should be able to
take an application for a test drive before it is developed. Furthermore, by
working with the prototype hands-on, they can quickly determine whether
the system will meet their needs. A good approach is to ask them to work
through some use case scenarios using the prototype as if it were the real
system.
3. Understand the underlying business. You need to understand the under-
lying business before you can develop a prototype that will support it. In
other words, you need to base your UI prototype on your requirements.
The more you know about the business, the more likely it is you can build
a prototype that supports it.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.3 User-Interface Flow Diagramming 197
4. You should only prototype features that you can actually build. Christmas
wish lists are for kids. If you cannot possibly deliver the functionality, do
not prototype it.
5. Get an interface expert to help you design it. UI experts understand how
to develop easy-to-use interfaces, whereas you probably do not. A general
rule of thumb is if you have never taken a course in human factors, you
probably should not be leading a UI prototyping effort.
6. Explain what a prototype is. The biggest complaint developers have about
UI prototyping is their users say “That’s great. Install it this afternoon.” This
happens because users do not realize more work is left to do on the system.
The reason this happens is simple: From your user’s point of view, a fully
functional application is a bunch of screens and reports tied together by a
menu. Unfortunately, this is exactly what a prototype looks like. To avoid
this problem, point out that your prototype is like a Styrofoam model that
architects build to describe the design of a house. Nobody would expect
to live in a Styrofoam model, so why would anyone expect to use a system
prototype to get his job done?
7. Avoid implementation decisions as long as possible. Be careful about how
you name these user-interface items. Strive to keep the names generic, so
you do not imply too much about the implementation technology. For
example, the name UI23 Security Log-in Screen implies I intend to use GUI
technology to implement this major UI item. Had I named it UI23 Security
Log-in I would not have implied an implementation technology.
when you are on the Desktop screen, you can use the Students Icon to take you
to the Search for Students screen. Once you are there, you can either go back
to the desktop (going back is always assumed) or go to the Student Profile
screen.
UI flow diagrams are typically used for one of two purposes. First, they are
used to model the interactions that users have with your software, as defined
in a single use case. For example, a system use case will not only refer to several
screens it also provides insight into how those screens are used. Based on this
information, you can develop a UI flow diagram that reflects the behavioral
view of the single use case. Second, as you see in Fig. 6.6, they enable you
to gain a high-level overview of the UI for your application. This overview is
effectively the combination of all the behavioral views derived from your use
cases, the result being called the architectural view of your UI (Constantine
and Lockwood 1999). I prefer to take the high-level overview approach, also
referred to as the architectural approach, because it enables me to understand
the complete UI for a system.
Because UI flow diagrams offer a high-level view of the interface of a system,
you can quickly gain an understanding of how the system is expected to
work. It puts you in a position where you can validate the overall flow of your
application’s user interface. For example, does the flow make sense? I am not
so sure. Why can’t I get from Seminar Details to ProfessorInformation? When
you are viewing the information for a seminar, isn’t it possible you might want
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.4 Usability 199
6.4 USABILITY
TIP
Requirements Change over Time
People often do not know what they want nor do they know how to communicate
it well. Furthermore, people change their minds—it is quite common to hear
stakeholders say, “now that I think about this some more . . . ” or “this really
isn’t what I meant.” Worse yet, the external environment changes: perhaps your
competitors announce a new strategy or the government releases new legislation.
Effective developers accept the fact that change happens and better yet they
embrace change (Beck 2000).
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
200 USER-INTERFACE DEVELOPMENT
As you develop the user interface of your system you should be aware of basic
UI design issues. My experience is that your best strategies are to applying
common UI design principles and techniques in parallel to applying your
organizations chosen UI design standards. UI design is a complex task, one
that requires a wide range of skills to be successful. Although my advice to
most project teams is to hire a UI design expert onto your team, the reality is
few people are available with the appropriate skillset. Most decisions regarding
the design of your system’s UI, or affecting its usability, are made by ordinary
developers. Therefore it is important that all developers have an understanding
of the basics of UI design.
Let us start with the fundamentals of UI design. Constantine and Lockwood
(1999) describe a collection of principles for improving the quality of your
UI design. These principles are
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.5 User-Interface Design Strategies 201
In addition to the principles listed above, the following tips and techniques
that I have learned over the years should prove valuable:
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
202 USER-INTERFACE DEVELOPMENT
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.5 User-Interface Design Strategies 203
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
204 USER-INTERFACE DEVELOPMENT
is easy, but reading blue text on a red background is difficult. The problem
is not enough contrast exists between blue and red to make it easy to read,
whereas there is a lot of contrast between blue and white.
12. Align fields effectively. When a screen has more than one editing field,
you want to organize the fields in a way that is both visually appealing and
efficient. I have always found the best way to do so is to left-justify edit
fields—in other words, make the left-hand side of each edit field line up
in a straight line, one above the other. The corresponding labels should
be right-justified and placed immediately beside the field. This is a clean
and efficient way to organize the fields on a screen.
13. Expect your users to make mistakes. How many times have you acci-
dentally deleted some text in one of your files or in the file itself? Were
you able to recover from these mistakes or were you forced to redo hours,
or even days, of work? The reality is that to err is human, so you should
design your user interface to recover from mistakes made by your users.
14. Justify data appropriately. For columns of data, common practice is
to right-justify integers, decimal align floating-point numbers, and left-
justify strings.
15. Your design should be intuitable. In other words, if your users do not
know how to use your software, they should be able to determine how to
use it by making educated guesses (Raskin 1994). Even when the guesses
are wrong, your system should provide reasonable results from which
your users can readily understand and ideally learn.
16. Do not create busy user interfaces. Crowded screens are difficult to un-
derstand and, hence, are difficult to use. Experimental results (Mayhew
1992) show that the overall density of the screen should not exceed 40
percent, whereas local density within groupings should not exceed 62
percent.
17. Group things effectively. Items logically connected should be grouped
together on the screen to communicate they are connected, whereas items
that have nothing to do with each other should be separated. You can use
white space between collections of items to group them and/or you can
put boxes around them to accomplish the same thing.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.6 Agile Stakeholder Documentation 205
User documentation is part of the user interface for an application and well-
written user documentation is no excuse for a poorly designed user interface
(Mayhew 1992). My experience confirms these beliefs—because modern sys-
tems are complex, your users often require significant documentation that
describes how to use them effectively. Because different types of users have
different needs, you also discover you need to develop several kinds of user
documentation. Don’t worry: it is not as hard as it sounds, particularly if you
have developed the models this book recommends.
Weiss (1991) points out the need for different kinds of manuals to support
the needs of different types of users. The lesson to be learned is one manual
does not fit all. He suggests a tutorial manual for novice users, a user manual
for intermediate users, and a reference manual for expert users. Tourniaire and
Farrell (1997) also recommend you develop a support user’s guide describing
the support services provided to your user community, a document typically
less than a page in length.
When appropriate, your user documentation should include a description
of the skills needed to use your system. For example, your users may require
training in your business domain or in basic computer skills, such as using
a mouse. This information is needed to develop training plans for users and
by support engineers when they are attempting to determine the source of a
problem. Quite often, support engineers will receive support calls where the
solution is to send the user for additional training.
What were you trying to accomplish the last time you looked at a user man-
ual? You were likely trying to determine how to accomplish a task, a task that
probably would be described via a use case or activity diagram in your analysis
model. My experience is the easiest way to write your user documentation is
to start with the models that describe how your users will work with your
system: your use case model and your activity diagrams. Use cases describe
how users will interact with your system and, as you saw in Chapter 5, UML
activity diagrams are often used to describe high-level business logic. This is
exactly the type of information your user documentation should reflect.
Start your user manual with a description of the system itself, probably
several paragraphs, information you likely have in your supplementary spec-
ification. Then add a section describing any high-level business processes,
processes where you should have documented the logic for using a UML ac-
tivity diagram. For large systems, you may find you have a section for each
UML package within your use case model or even a separate user manual.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
206 USER-INTERFACE DEVELOPMENT
Then, for each use case, add an appropriate subsection describing it; the use
case text will drive the body of that section. You will likely want to combine
steps into paragraphs to make your documentation more readable. Wherever
you reference a UI element, you may decide to include a relevant picture of
that portion of your user interface (my suggestion is to wait until you have
baselined your user-interface design before investing the time to generate the
pictures). You may also decide to replace references to business rules with
their descriptions to help increase your user’s understanding of how the sys-
tem actually works. Although many in the industry call this a use case—driven
approach to writing user documentation, it really is a model-driven approach
because your use cases simply are not sufficient for this purpose.
Tutorials are developed in a manner similar to that of user manuals, al-
though a few differences exist. First, tutorials focus on the most critical uses
of the system, whereas a user manual should focus on the entire system. Sec-
ond, tutorials should have a more explicit focus on learning a product, so they
will include more detailed use instructions than a user manual might. The
assumption is anyone using a tutorial likely knows little about the system
and, therefore, needs more help, whereas someone using a user manual is
probably familiar with the system itself, but needs help with a specific aspect
of it.
Your reference manual, because it has a slightly different purpose, is gen-
erally driven by your user-interface model, instead of your use cases and
activity diagrams. I generally include an overview of the system, sections for
each major portion of your system, and subsections describing the major
user-interface elements. The subsections should describe the purpose of the
relevant screen/report/page and how to work with it.
You will often hear advice within the software industry to write your doc-
umentation before you write you code. Although this is a reasonably good
TIP
Hire a Technical Writer
Writing is hard and writing good user documentation is even harder. It takes a
lot of effort and significant skill to do well—the type of skill technical writers
have. If possible, hire a technical writer to work with you to produce your user
documentation. This will improve the quality of your documentation and, hence,
the quality of your overall user interface. Hiring a technical writer will also free
you to focus on other development activities, such as modeling, coding, and
testing.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
6.8 Review Questions 207
practice, why do people give this advice? I believe the motivation is that writ-
ing user documentation first forces you to think about how your system will
be used before you start to build it. My advice is different: invest the time to
understand your system by developing requirements for it, analyzing it, and
designing it, and then allow this understanding to drive the development of
your source code and your user documentation. I have worked on several sys-
tems where we developed the user documentation in parallel with the source
code, not before it, and it worked out well.
In this chapter you learned several techniques to explore the user interface
of a system, including essential user-interface prototyping to explore UI re-
quirements, traditional UI prototyping for the analysis of those requirements
and for the design of the UI, and UI flow diagramming for exploring usability
issues. You also learned the fundamental concepts behind usability as well as
a collection of techniques for creating usable screens and reports.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009
208 USER-INTERFACE DEVELOPMENT
exist between the various approaches and discuss the advantages and dis-
advantages of having different approaches available to you.
7. For the platform you chose in Question 2, search the Web for user-interface
design guidelines applicable to it. How comprehensive are those guidelines?
Identify one potential issue that the guidelines do not address, or you do
not agree with, and contact the original author with your suggestion.
Downloaded from https:/www.cambridge.org/core. New York University Libraries, on 20 Jan 2017 at 17:03:56, subject to the Cambridge Core terms of use, available at
Cambridge Books Online © Cambridge University Press, 2010
https:/www.cambridge.org/core/terms. https://doi.org/10.1017/CBO9780511584077.009