|
So on to another heavyweight book to
appear this year advocating a complete lifecycle methodology for
UI Design. As I stated in July, I would be reviewing this book and
here it is. It takes a different approach from the Mayhew book.
The background of the authors is different. Larry Constantine
already enshrined his place in the software hall-of-fame when he
co-authored the seminal text Functional Design in 1978 which
represents a milestone in the software engineering discipline. 7
years in the making would this new book be setting another such
milestone? I had to find out!
Software for Use
a practical guide to the models and
methods of usage-centered design
by Larry Constantine & Lucy Lockwood, Addison Wesley,
1999
Before I got around to reading this book, one
of my colleagues - a big fan of Alistair Cockburn's Goal Oriented
Use Cases, borrowed it over a weekend. He came back with a glowing
review, "Must have for all software engineers. The first book
to persuade me that UI Design is important." I knew that we
must be on to something but my first glance through wasn't
encouraging. 532 pages with not as many diagrams as I might like.
Quite a lot of Use Case Diagrams and with the authors background,
I expected that I was in for a weary read about system plumbing
and a slightly Interaction glazed version of OOSE/RUP/UDP.
My expectation was to prove wrong. This really
is a book about Requirements Modeling and Interaction Design
coupled with the engineering lifecycle and its a good book too.
Usage-centered Design
You immediately realise that this is an unusual
book when you see the acknowledged list of reviewers. It includes
top names from both the OO and UI worlds such as Meilir Page-Jones
and Rebecca Wirfs-Brock from OO and Hugh Beyer, Ian Graham and
Karen Holtzblatt from UI.
The theme of the book is to document the
process used by the authors in their consulting practice. This
process known as Usage-centered Design has evolved over the last
10 years or so. The first 60 pages sell the business case for the
process and good Interaction Design in general, along with an
overview of the technique. The rest of the book then goes into the
detail. It was this first section which my colleague found so
compelling.
Models and more Models
As the preface suggested, I skipped to section
2 and started to read about the real detail. The first impression
is that there is a lot of modeling going on and several new terms
for different models. The User Role Model, the User Role Map, then
classification and structuring of them. This is basically Actor
analysis for those familiar with Use Cases. We then move on to
Task Modeling, using Essential Use Cases. This is key leading edge
stuff. The authors recognise, as I did in my
February IMHO that
conventional Use Cases lead to premature Interaction Design. They
have solved this problem by developing an abstract style of Use
Case called an Essential Use Case. They demonstrate that it is
possible to define the requirements for a system in an Interaction
neutral fashion by iterating through Scenario description, to Use
Case to the abstract Essential Use Case. Groundbreaking stuff!
However, I am not totally convinced. The
problems of rigorous design and specification are not addressed
and there is no attempt to link Essential Use Cases with
Functional specification. It is unclear how a rigourous and
complete UI Design can be built from a set of Essential Use Cases.
There is still no attempt to document exception cases for example.
This is followed by a section on Use Case
Analysis which looks at inheritance, composition and affinity
within Use Cases. This is really pre-Interaction Design analysis
which is aimed at picking out the requirements (from Use Cases)
which must be grouped together on the screen. A useful interim
stage, if you have time. If I had a criticism of this section, its
that it is all over too soon. Not enough time is spend explaining
and teaching how to do all of this. There are few clues on how to
pick out the initial Use Cases and insufficient examples on how to
perform the subsequent analysis. That's it for the Requirements
and its perhaps just a little disappointing. Now onto the
Interaction Design.
Another two models are introduced. The Content
Model and the Context Model. These lead to a Interaction Design
which can be used to present to the client and for early usability
testing but they aren't quite suitable for coding. Later, we here
about Implementation Model which is the final link to coding. I
really struggled with the terms Content Model and Context Model
and I found myself reading this section slowly several times. Then
it clicked! Content Model is similar to my UI Analysis stage, and
Context Model is what Laura Arlov calls Navigation Model. How you
get from one to another is poorly explained but my tip is, UI
Patterns might make the ideal link.
In total section 2 covered 80 pages. It
contains the foundations of the technique for Usage-centered
Design. Be warned this is dry, dry material that will need intense
concentration, and a vivid ability to develop the correct mental
model of the authors abstract models. Its hard but worth it, if
you can make the breakthrough.
Interaction Design, Graphic Design and Guidelines
Section 3 is a pretty straightforward look at
Interaction Design. You will recognise much of it from other
sources. Its all fairly good though specialist books are better in
places. For example, Mullet
& Sano will give you more on Graphic Design but there
was much to savour here. Chapter 7 had a good argument for text
and against icons in amongst some other weaker advice on visual
communication. Chapter 8 took a brush through widget libraries and
looked at usage of each in turn. This is similar sort of fair to
that which I wrote for the Swing book and on the whole its very
good. The authors use the opportunity to take a swipe at existing
"Guidelines" publications. This has been long overdue.
This website is no friend of these books e.g. The Essential Guide
to User Interface Design by William Galitz.
Chapter 9 takes a look at innovation in
Interaction Design and continues the digs at guidelines books.
This is truly a remarkable chapter. I have never seen anyone try
to discuss the process of innovation and what makes good and bad
innovation, before. One or two claims about experimental
interfaces were rather surprising. The ViewFinder example which
they claim to have devised circa 1992, is something which I
recognised from games circa 1984 ( and I wasn't the first guy to
program one of these ). However, that should not detract from what
was really an excellent opening discussion on this topic. The UI
community needs to discuss innovation a lot lot more.
Completing the Design
Section 4 takes us to the Implementation Model
where we learn how to turn our prototype Context Model into
something that can be coded. I found some of the argument a little
cluttered and I felt that Laura Arlov said it better in GUI Design
for Dummies. Chapter 11 offers us 34 pages on writing, specifying
and incorporating usable help. This was the first thorough stuff
I've seen on writing help requirements and it uses Use Cases too.
Chapter 12 is a long a thorough discussion on skill levels and
dealing with the issue that most users are perpetual
intermediates. Again there is a lot of new stuff here. Chapter 14
looks at applying all that we have learned so far, first to Web
Site design and then Embedded System design (e.g. kiosks). This
chapter goes a long way to dispelling a lot of myths and many
points are well made. Not least that Web Site design is still
software engineering, however you want to dress it up. Chapter 15
finally gives us a worked example. This is a relief because the
running example, an extended character set selector, throughout
the early part of the book is obscure and hard to follow.
Section 5 looks at continuous improvement and
quality assurance by introducing the idea of inspections
throughout the design process. This will be nothing new to
programmers. The concept is that as each of the many models
evolves, they are reviewed by a diverse team of peers from each of
the areas of expertise. Then there is a section on metrics which
includes Constantine introducing a measure on Interaction
Cohesion, just as David
Ruble did.
Most of the remaining 80 pages or so looks at
Usability and testing and writing test plans. With a final
discussion on integrating it all into the culture of the business
you are working within.
Summary
This is a book about Interaction Design and the
Engineering Lifecycle. Surprisingly, it really doesn't attempt to
bridge the gap to existing software engineering methodologies.
There is no content about hooking UI to Problem Domain or Business
Objects. There is nothing about business modeling from the
Essential Use Cases and nothing about delivering functionality and
functional testing. Much more could be added in these areas.
There is however a wealth of new material and
astute observations. Essential Use Cases are interesting if not
completely compelling, as is all the analysis and modeling around
the topic. This significantly advances the art of requirements
engineering but is by no means a final solution to problems in
this area. There is some great stuff on help systems and a lot of
good well made points about web design and how many misconceptions
currently exist about it. This book dispells many myths including
those on guidelines.
I also like the material on inspections which
is thorough and the metrics such as Cohesion.
Be warned, this is a tough book, its wordy and
it talks to a technical audience. That is a double edged sword.
The technical audience, Alan Cooper's "homo logicus" are
indeed the people who need to read and buy-in to this material. If
they do then software systems will get better. Others (Interaction
Designers, Usability professionals) may find it too heavy going.
Its a book which had a profound effect to the
better, on one of my colleagues, whilst another one finds its
disappointing and not recommendable. I believe that it should be
given a chance.
Recommendation
5/5 - perseverence is required. There are too many
leading edge ideas to score it other than full marks. Advances the
state-of-the-art in systems engineering by promoting Interaction
Design as an integrated part of the lifecycle.
Order
this book...
|