Author: Alistair Cockburn
Publisher: Addison-Wesley, 2001
There is much more to the world of use cases than shiny happy stick people and ellipses. In “Writing Effective Use Cases,” object technology expert Alistair Cockburn eschews graphical techniques
in favor of teaching how to construct well-written text use cases. According to the author, “a use case captures a contract between the stakeholders of a system about its behavior.” In a very
readable 230-pages, Cockburn (pronounced co-burn) shows how use case analysis can be used to define project scope, identify stakeholders and actors, perform various levels of business analysis, and
document the requirements for system behavior. He also shows how to document preconditions, triggers, and essential guarantees that surround a system. The author then moves on to practical advice
on how use cases should be extended to handle system behavior in failure and alternative action scenarios.
“Writing Effective Use Cases” is clearly not an ivory tower treatise. Cockburn provides step-by-step instructions and clear examples of his recommendations in action. He draws upon his own
extensive experience and the experiences of a large network of friends in the field to provide proven advice. Cockburn foresees and warns of many common pitfalls that can lead to bad use cases. He
clearly explains how problems like addressing details of a graphical user interface or truncating the subject out of a sentence can lead to confusion. The book is filled from cover to cover with
useful checklists and reminders that will help any beginner ensure quality.
Cockburn has been an active participant in the agile software development movement. The book facilitates the use of agile techniques by providing several levels of use case formality that can be
applied to a project. He shows and discusses the merits and weaknesses of fully dressed, casual, table, Rational Unified Process, and UML-style use cases. This allows a leader to make intelligent
decisions about the level of formality that is appropriate for his or her organizational culture. The book closes with a wonderful 10-page appendix covering UML use case graphical notations. With
the book providing a solid grounding in the fundamentals of text-based use cases, explanations of graphical UML use case notations become much more meaningful. While his coverage of UML seems fair,
it is hard to argue with the author’s strong arguments for sticking with understandable text-based formats rather than more arcane graphical formats.
While many books on requirements gathering techniques have merely been salvoes in ongoing holy wars between various methodological camps, “Writing Effective Use Cases” devotes considerable space
in discussing how use cases can fit in and coexist with other techniques. The book discusses project management concerns, data concerns, user interface concerns, and test cases. From a data
architecture perspective, it is clear that use case and logical data modeling techniques could be complementary.
Leaders will find this book especially useful if they are looking to strengthen their organization’s requirements gathering capabilities without investing in an expensive tool. With a little
practice (and the book provides plenty of exercises), use cases created with Cockburn’s techniques should be easy to understand and provide a useful way of transmitting requirements from business
experts to technical professionals. Overall, “Writing Effective Use Cases” is an excellent book for anyone who wants to quickly add a practical and understandable requirements analysis technique
to his or her toolkit.