Use cases have become a very popular requirements-gathering technique, yet many developers struggle when faced with writing them. They grasp the basic concepts, but find that writing effective use cases turns out to be more difficult than they expected. One factor contributing to this difficulty is that the community lacks objective criteria for judging the quality of use cases. This new book articulates the qualities of effective use cases by applying the proven patterns concept of development to this requirements-gathering technique. The authors present a catalog of thirty-six patterns that help the reader become proficient at judging the quality of their (and other's) patterns. These patterns represent solutions to recurring problems that application developers have faced in writing use cases. Each pattern is presented with examples that help the reader understand the benefit of the pattern, and just as importantly, the consequences of ignoring its proper use.