Use cases have become an integral part of modeling software requirements, but many software developers are discovering that writing effective use cases is more difficult than they had anticipated. An understanding of the basic principles of use cases is not enough. Software developers need a source of objective criteria by which to judge quality and effectiveness.
Patterns for Effective Use Cases provides a set of objective criteria. Written by experienced use case practitioners, this book fills a critical information gap by presenting a pattern language that contains over thirty patterns, providing simple, elegant, and proven solutions to the most common problems in use case development.
These patterns distill and define the properties and characteristics of quality use cases. As such, they facilitate the development of original use cases and provide a diagnostic tool for evaluating existing ones.
The book opens with a review of use cases and pattern fundamentals, along with a discussion of the requirements-gathering team. These patterns address the use case development process, the internal structure of use cases, and the relationships among use cases within the system as a whole. Examples of patterns include:
Each pattern discussion includes at least one example demonstrating its real-world application, highlighting both the benefits of using the pattern and the consequences of not doing so. In addition, the book presents guidelines for the effective use of UML with relevant patterns.
Anyone involved in use case writing or requirements gathering will find Patterns for Effective Use Cases an indispensable handbook and reference.
Review By: Stephen Long 11/09/2003
This book is part of the Agile Software Development Series and is, specifically, a follow-up to Alistair Cockburn’s Writing Effective Use Cases. It provides a set of patterns aimed at improving use case quality. The patterns also provide strategies for dealing with conflicting pressures.
The presentation is well-written, logical, and well-organized, starting from a high level and drilling down to the internal structure of use cases. The first two sections and the last section are development patterns; the middle four sections are use case structural patterns. The inside back cover contains a visual presentation of the relationships among all the patterns. The inside front cover contains a short synopsis (pattern name and solution) for each pattern discussed in the book.
Don’t expect this book to teach you to write use cases. The authors are very clear that Cockburn’s book is a pre-requisite. Patterns for Effective Use Cases is all about improving the quality of use cases. Each pattern addresses a common problem in use case development through a standard framework: pattern name, a picture to help visualize the problem, a context description, the problem statement, a metaphorical story, forces affecting the problem, the solution, and examples.
Since each pattern is designed to stand alone, there is some repetition in some of the descriptions. The authors and a special contributor discuss in detail the use and abuse of include and extend relationships in use cases. The bottom line is that this book makes you appreciate the thought and effort that goes into a set of well-written use cases!
Up to this point in time, I have not been a big fan of use cases. I had a feeling that they weren’t doing what they were supposed to do. Now I know why: almost all the use cases I’ve had to use would not have passed the quality gates suggested in Patterns for Effective Use Cases. In fact, most of the use cases I’ve used have been CRUDDY or, "actor Create data, actor Read data, actor Update data, actor Delete data." This book explicitly lays out the major problems in use case development and provides solutions for each problem.
As a tester, I will be using the Exhaustive Alternatives pattern to justify better use cases for my needs. This book is easy to read and practical. The authors did a good job in organizing the topics. They have a running example to tie pattern usage together.
Most patterns have a “use case horror” example with a cleaned up version after applying the pattern. I recommend this book for anyone writing use cases; it should sit next to Cockburn’s Writing Effective Use Cases on the shelf. As a tester I intend to use the patterns in this book to request clarification for use cases that don’t pass the quality gate.
Patterns for Effective Use Cases belongs in every user case writer’s toolkit. It presents a catalog of patterns that will improve use case quality by identifying process and structural problems and providing solutions. These patterns can also be used as strategies and as a way to deal with conflicting pressures.