Applying Use Cases: A Practical Guide
Use case analysis is a methodology for defining the outward features of a software system from the user's point of view. Applying Use Cases, Second Edition, offers a clear and practical introduction to this cutting-edge software development technique. Using numerous realistic examples and a detailed case study, you are guided through the application of use case analysis in the development of software systems.
This new edition has been updated and expanded to reflect the Unified Modeling Language (UML) version 1.3. It also includes more complex and precise examples, descriptions of the pros and cons of various use case documentation techniques, and discussions on how other modeling approaches relate to use cases.
Applying Use Cases, Second Edition, walks you through the software development process, demonstrating how use cases apply to project inception, requirements and risk analysis, system architecture, scheduling, review and testing, and documentation. Key topics include:
- Identifying use cases and describing actors
- Writing the flow of events, including basic and alternative paths
- Reviewing use cases for completeness and correctness
- Diagramming use cases with activity diagrams and sequence diagrams
- Incorporating user interface description and data description documents
- Testing architectural patterns and designs with use cases
- Applying use cases to project planning, prototyping, and estimating
- Identifying and diagramming analysis classes from use cases
- Applying use cases to user guides, test cases, and training material
An entire section of the book is devoted to identifying common mistakes and describing their solutions. Also featured is a handy collection of documentation templates and an abbreviated guide to UML notation.
You will come away from this book with a solid understanding of use cases, along with the skills you need to put use case analysis to work.

Review By: Vivek Vaishampayan
06/23/2010Use case analysis is a methodology for defining the features of a software system from the user’s point of view. In Applying Use Cases, Second Edition, Geri Schneider and Jason Winters provide an excellent reference to most parts of this cutting-edge software development technique.
This book provides numerous realistic examples to illustrate the basic concepts of writing use cases. The book also provides a detailed case study, which is very useful, since it walks you through the entire software development process, demonstrating how to apply use cases to various aspects of the software development life cycle at every stage in the project.
The book is very well organized in presenting the idea of applying use cases. The authors have demonstrated how to apply use cases in all 4 phases of RUP, which is gaining wide acceptance. The authors’ writing style is effective and they have presented the difficult concepts of UML and diagramming in easy to understand language. The authors have explained very nicely the contents of a use case, typically a document with use case name, brief description, actors, activity diagram, sequence diagram, main or basic flow, alternate flows, business rules, special requirements, pre-conditions, and post-conditions. The book contains lots of examples of fully described use cases for a real-life software application system. The associated activity diagrams and sequence diagrams are well organized. The authors have explained the advanced use case documentation techniques using object-oriented concepts of inheritance, hierarchy, and interfaces.
The subject matter presentation is excellent in the chapters where the authors describe applying use cases to project planning, prototyping, and estimating the project duration based on use case analysis. A section describing the most common mistakes in applying use cases is very informative.
It would have been ideal if there was more coverage about the techniques used to apply use cases in database design. The QA/Testing community would like to see how the scenarios are developed from use cases and the relationship between use cases and test cases. This is not very well addressed in the book, however, the QA community will gain lots of information about how the use cases are written; how to look for well-documented use cases; and how to apply them in black box testing, system testing, integration testing, and regression testing.
This book contains lots of practical information about applying use cases in real-life software development projects. Use cases are included in the industry standard Unified Modeling Language and are used throughout the Rational Unified Process. UML and RUP are gaining wide acceptance in many different businesses and industries. This book provides a solid foundation for understanding use cases and how to apply those in project management and enterprise-wide applications. It also shows how the use cases play an important role in the areas of project inception, requirements, risk analysis, system architecture, scheduling, review, testing, and documentation.
The contents of this book are relevant to all aspects of software development projects. A special reference to QA and testing needs is worth mentioning. For QA analysts and testers, this book provides the necessary and required information about what a use case is, how to write use cases, and how these use cases are applied. However, this book doesn't provide specific material about how the use cases can be applied in QA. The authors have not explained the benefits of use cases to facilitate reuse of test, documentation, and design. I think another chapter should have been included that explains how to apply use cases in QA/Testing.
The book explains how the system requirements are represented by use cases. Testing based on requirements verifies project success. There is a straightforward way to produce test cases based on use cases, and the authors haven't provided any insight on this relationship between use cases and test cases. A separate section on how to identify all paths in a use case to get a list of "scenarios" is missing. It would have been worth demonstrating with examples how to find meaningful scenarios from possible combinations of main flow and alternate flows in the use case. A good scenario matrix leads to a well formed test matrix, which can provide a clear testing methodology. This link between use case and test case is missing in the book.