Thursday, February 15, 2007

Essential and Real Use Cases

A use case is a sequence of interactions that a user makes with a product to achieve a goal. When your user interaction designer fleshes out use cases, she has a wide range of choices of how specifically she describes the interactions.

If she chooses abstract language that is relatively free of technology and design assumptions and user interface details, then the use case is essential.

If, on the other hand, she specifies concrete steps that assume technology and design commitments and details about the user interface, the use case is real.

Essential and real use cases are on the extreme points of a continuum. No non-trival use case is purely essential (often, the very order of steps in a use case represents a design decision), and no level of detail in a use case can render it purely real (there is always some room for developers to make additional technology choices).


AlanAJ said...

I tend to agree but there are two logical consequences that one needs to assent to if your hypothesis is correct.

1. All purely essential use cases are trivial.

2. All real use cases are ambiguous.

I don't think I agree with either propostition. The first is probably the more interesting, but the second is perhaps easier to address first.

While most people would agree that you should not fully describe the User Interface within the use case, you seem to suggest that you cannot. I believe that it is possible, if perverse, to specify each and every aspect of a UI in a use case, so that the use case fully describes what the UI does, behaviorally, leaving the developers with only the problem of how, technically, to deliver the required systems behavior.

The difficulty with the first proposition, on the other hand, is the lack of a distinction between business process* design and user interaction design. A non-trivial business process might include steps that are optional, redundant, and sequenced-when-not-dependent, for example. Business process re-engineering seeks to identify this sort of "over-real" process step and derive a "more essential" business process. Perhaps you believe that a purely essential business process specification is unattainable, unless it is abstracted to the point of triviality?

In any event, a given business process, how ever real or essential, provides the context for a myriad UI specifications. And, yes, it usually makes sense to iterate between the business process specification and the system requirements specification in search of a better way to achieve the business goals. But... given a defined business process (for the time being) plus general agreement about the scope of automation (how ever premature), is it not possible to characterise the UI simply in terms of the presence of (requirement for) an interaction between actor and system in support of the business process? Is such a characterization inherently trivial? If not, must the elaboration of these points of interaction into steps of a use case inevitably include the addition of technology and/or design?

Of course, if you believe that no use case step can be purely essential, it must follow that no use case can be purely essential. But you suggest that "trivial" use cases may be purely essential, and these must presumably comprise one ore more purely essential step. So the interesting question is: What stops an arbitrarily large number of essential use case steps from being combined into a purely essential, non-trivial use case?

*Since not all systems are intended to operate within a business context, a more general term is required. I use the term "user context" for this.

Roger L. Cauvin said...

Thanks for your considered opinions, AlanAJ.

I actually do accept both of the logical consequences you enumerated.

By "trivial use case", I mean one that contains two steps. The first step states the user's indication of intent to fulfill a functional goal. The second step indicates that the system has satisfied that goal.

The use case is a "black box" in that there are no explicit intervening steps. (There can and should be preconditions and postconditions that contain no design assumptions, however.)

Any intervening steps violate that "black box" and therefore encroach into "real" territory.

I believe the same properties apply to business process specifications. I don't believe a purely essential, non-trivial business process specification is possible.

As for real use cases, I don't see how anyone can possibly (at least in a practical sense) fully specify all of the technology and design assumptions (the definition of "real use case") in a use case.