|
As
market demands get greater, traditional software engineering is
marching full force into the web world. Out go the scripting hackers
and in move the systems architects armed with J2EE specification
and CORBA components and distributed transaction monitors and with
all of that their software lifecycle methods such as Rational Unified
Process. RUP is held up by many to be the silver bullet for object
oriented success. Rational are pushing their business into the ".com"
enterprise. However, several authors have expressed concern about
the effect that RUP might have on the User Experience. Here is some
of the latest analysis...
Rational
Unified Process is a software engineering lifecycle method developed
from Ivar Jacobson's Objectory (aka Object Oriented Software Engineering
or OOSE) method from the early 1990s. The cornerstone of the OOSE
and now the RUP is the Use Case. A Use Case is a form of Hierarchical
Task Analysis which has found favor in the software engineering
community.
In
order to examine the effect that RUP might have on the User Experience,
we must first make an examination of Use Cases then we must look
at the detail of the greater Rational Unified Process and its end-to-end
operations.
Use
Cases
Use
Cases have been discussed at length on this site in the past. In
February 1999, this
webzine warned that the widespread adoption of RUP may mean the
"death of UI design". In October
1999 we looked again at how Use Cases might be useful through
the development of Constantine and Lockwood's Essential Use Cases.
Larry has more recently suggested renaming these Task Cases to avoid
confusion with Jacobson-esque, Use Cases. Since then there have
been several threads of letters to this site expressing concern
over Use Cases and Rational Unified Process and how they adversely
affect the User Experience.
Despite
the fact that 2 years have passed since the original editorial,
this webzine remains convinced that the widespread use of Rational
Unified Process and Use Cases continues to adversely affect the
user experience and lead to difficulties in the development process.
Difficulties which practitioners are hacking around and trying to
make-do, but the end result is still code which fails to meet expectations
for usability. Why?
Constantine
and Lockwood write in their 2000 Paper, Structure and Style in Use
Cases for User Interface Design,
"For requirements engineering, use cases provide a concise
medium for modeling user requirements; in the hands of user interface
designers, use cases can become a powerful task model for understanding
users needs"
This
on the whole appears to advocate Use Cases and explains their wide
adoption. However, one of the many problems is the variation in
style recommended by at least the 7 leading authors in the field.
Constantine and Lockwood continue,
"One of the more remarkable aspects of use cases is that
they have achieved such wide currency despite an almost complete
lack of precise definition"
James
Rumbaugh, widely regarded as a stalwart on the Rational staff and
a founding father of OO modeling techniques, defines Use Cases as
follows,
"The specification of sequences of actions, including variant
sequences and error sequences, that a system, subsystem, or class
can perform by interacting with outside actors, that yields an
observable result of a particular value to an actor."
As
Constantine continues,
"the current 'definitions' have moved away from Jacobson's
original emphasis on use and have taken on what may be legitimately
described as a more 'system-centric' viewpoint: The focus is on
what the system performs not what the user does or wants."
This
appears to be a very damning statement about Use Cases as a tool
which will lead to a superior User Experience. If you couple this
to the reality that Use Cases are seldom, if ever, written by someone
skilled in user interface design or interaction design, then it
is easy to see why Use Cases lead to a system specification which
is ill-considered from a user experience perspective.
In
the past, this has not been overly difficult to deal with. Simply
take the Use Cases as a statement of requirement, extract from them
a functional specification as a list of features, then as a separate
exercise develop a UI design which meets the functional specification
and leads to a superior user experience.
This
approach allows for what Constantine has correctly recognized as
one of the great advantages of Use Cases - their wide currency and
broad acceptability as a means for expressing "what a system
should do". Use Cases are reader friendly, whether that reader
is a technical expert or a business leader.
Rational
Unified Process - extending the problem
As
we have moved through 2000, Rational have continued to develop and
elaborate the Unified Process, advocating its use, with the intention
of selling their tools to support it. In order to facilitate sales,
the process has begun to get more and more elaborate and more and
more detailed and consequently more and more proprietary. If the
process were not detailed and elaborate, in a proprietary fashion,
you might be able to follow it without buying Rational tools. That
would be bad for business. Proprietary for these purposes means,
deviates from the open standard. The current version of RUP does
deviate from the version submitted to the OMG. So far Rational seems
to have avoided the loss of mindshare which normally goes with a
proprietary system. It appears that the market has yet to realize
what is happening.
In
the latest book to be published on the RUP, Philippe Kruchten, refers
to it in Chapter 5 as "An Architecture Centric Process".
In Chapter 6, he goes on to refer to RUP as a "Use Case Driven
Process". Remember that Use Cases are a system-centric view
of design. Kruchten goes on to reinforce that which we already have
learned from Jacobson, Rumbaugh and Constantine. He clarifies the
definition of a Use Case as follows, "A use case is a sequence
of actions a system performs that yields an observable result of
value to a particular actor". He later defines a sequence of
actions as, "The sequence of actions referred to in the definition
is a specific flow of events through the system".
Is
anyone noticing a theme here?
The
User is never ever considered important in Rational's thinking about
design. In their own words, it is "an architecture centric
process" which defines "a sequence of actions a system
performs".
In
other words, Rational Unified Process is fundamentally NOT a user
centered design method!
Actors
Rational
Unified Process is anchored around a system-centric view of architecture
but that system is acted upon through those series of actions by
Actors. However, the UML definition of an actor is different from
what the user interface designer might expect. As Larry Constantine
recently observed,
the UML concept of “actors” is neither as rich nor as useful
for model-driven user interface design as the concept of user
roles employed in usage-centered design. Indeed, when speaking
of human actors, the UML term is misleading, because it is the
role not the actor that is most important for user interface design
Boundary,
Control and Entity Classes
Sadly,
it only gets worse!
Those
of you who have been paying attention will by now realize that a
use case is "a sequence of actions a system performs".
In other words, just like any other form of task analysis, a use
case is a "procedure". Design through use cases, leads
to a hierarchical, architecture centric series of procedures performed
by a system.
Those
familiar with UI design will know that "procedures" are
modal. A wizard is a procedure. In other words, a requirement document
written as a set of use cases, is in fact the description for a
set of modal wizards, each of which delivers some "observable
result of value to a particular actor."
Any
UI designer will tell you that a system designed purely from wizards
is not very flexible or highly usable. It might support a few tasks
but it will not scale to hundreds of tasks.
This
leads to Anderson's First Observation on Rational Unified Process
Dogmatic
implementation of the Rational Unified Process does not scale
to significant sized applications.
Rational
will counterclaim on this with case studies. However, at no time
will they produce documentation to prove that the currently advocated
version of RUP was used to produce the UI design, or demonstrate
how changes in the UI design during development were accommodated
in the finished code.
Rational
Consultants working in the field are advocating the adoption of
3 stereotypes for classes in the class model. This technique is
generally attributed to Ivar Jacobson (around 1994) with Grady Booch
responsible for suggesting the adoption of the <<stereotype>>
tags and icons now available in UML. Others have been involved in
the development of this technique.
The
technique is based on the principle that each use case should lead
to the development of a control class. The control class is essentially
a hard coded state machine which monitors the flow of a procedure
from start to finish i.e. it controls the flow of the use case by
processing each action in the sequence.
The
sharp UI people will note that a View is generalized to a Boundary
because a Boundary can be an interface with any Actor, and an Actor
isn't necessarily a user but can be any other system, sub-system
or component. This reinforces the notion that RUP is not a user-centered
method.
|