Practice: Use Case Driven Development |
This practice describes how to capture requirements with a combination of use cases and system-wide requirements, and then drive development and testing from those use cases.
Purpose
Many organizations document requirements as a list of declarative statements (or "shall" statements) that lead the team to focus on developing atomic functions and fine-grained assertions of need. Moreover, applications developed from such requirements are often difficult to use and require more time for integration and testing than applications developed using user-focused requirements. A second, more serious organizational anti-pattern is no focus on requirements at all. Many organizations simply fail to document requirements, leaving it to developers to discern from a perhaps vague vision document, or even nothing more than a meeting or conversation, what the application or system to be developed must do. This practice shows how to avoid these pitfalls by using use cases and scenarios to capture functional requirements. That approach provides development scenarios that clearly express behavior (or the interaction between users and the system under development). Use cases categorize valuable and useful end-to-end, testable and collaborative behavior in which the system is involved. Non-functional requirements (such as performance, stability, usability, and so on) can still be captured using traditional techniques. This practice also explains how use cases and scenarios are best developed in conjunction with (and used to drive) other development activities, including design and testing. This practice also describes essential use cases and use case granularity, which focuses a team on creating the right amount of detail for their use cases. This reduces development time by detailing only those sections of use cases that need to have significant thought and collaboration applied to them.
How to read this practice
The best way to review a practice is to familiarize yourself with the enablement materials, and then review key concepts, work products, tasks, and the more detailed guidance, either by reviewing the guidance category directly, or by navigating from tasks and work products to their related guidance. You might first want to become familiar with general requirements concepts: Requirements Then become familiar with use cases: Use Case Actor Use-Case Model This practice focuses on the following work products: Use Case System-Wide Requirements Both work products go through similar states: they are identified and outlined, which allows them to be prioritized, and then detailed. However, in general, a use case is detailed a scenario at a time. (This is particularly important when following an iterative approach, where a scenario is detailed "just in time" to be implemented, as opposed to the approach of detailing all or most requirements up front). The tasks that drive these states are listed here: Tasks. In addition, guidelines and tool mentors associated with each task provide details of how to perform the task. Templates and checklists associated with the work products guide you in their completion and evaluation. Measurements can guide you on assessing how well you are following this practice.
Additional Information
### Books and Articles
Kurt Bittner and Ian Spence 2003. Use Case Modeling. Addison Wesley Longman.
| Comprehensive coverage of use case techniques and practices, including useful examples showing how use-case specifications evolve over time.
Alistair Cockburn 2001. Writing Effective Use Cases. Addison Wesley Longman.
| Excellent guidance for those who need to write use cases. Multiple styles and techniques contrasted with insight in an unbiased way. Many helpful tips to improve your use cases.
For more information on this practice, see the practice resource page on IBM® DeveloperWorks®.
Relationships
Content References | How to Adopt the Use-Case Driven Development Practice Key Concepts Requirements Use Case Actor Use-Case Model Functional Decomposition Use Case Granularity Storyboarding Work Products Use Case Use-Case Model System-Wide Requirements Actor Storyboard Tasks Identify and Outline Requirements Detail Use-Case Scenarios Detail System-Wide Requirements Structure the Use-Case Model Guidance Templates Vision (formal) Use-Case Specification (formal) Actors (formal) Tool Mentors Create a Low Fidelity Storyboard Using IBM Rational Requirements Composer Identify and Outline Requirements using IBM Rational Requirements Composer Detailing Use Case Scenarios with IBM Rational Requirements Composer Managing Use Cases Using RequisitePro Guidelines Detail Use Cases and Scenarios Identify and Outline Actors and Use Cases Developing System-Wide Requirements Specification Use-Cases Realizations Using Actor Generalization Defining Extend Relationships Defining Include Relationships Activity Diagram in the Use-Case Model Discover and Clarify Requirements with Storyboarding Packaging Use Cases Strategies to Avoid Functional Decomposition
Inputs | [Technical Specification]
This program and the accompanying materials are made available under the Eclipse Public License V1.0, which accompanies this distribution. OpenUP Copyright © Copyright IBM Corp. 1987, 2009. All Rights Reserved.