Generate UML use case diagrams with actors, use cases, and relationships. Part of the DevTools Surf developer suite. Browse more tools in the Diagrams & Workflows collection.
Use Cases
Capture functional requirements for a new system at a scope level useful for both business and technical stakeholders.
Identify all system actors and their relationships to use cases before beginning detailed design.
Communicate system boundaries and scope to project stakeholders in a non-technical format.
Derive test cases from use case scenarios to ensure requirements coverage.
Tips
Keep actors to system-boundary roles (external user types, systems), not individual people or internal implementation components.
Use include relationships for mandatory steps that are part of another use case (authentication is always included by any protected action).
Use extend for optional steps that can conditionally extend a use case — not every path needs a separate main use case.
Fun Facts
Use case diagrams were formalized by Ivar Jacobson in his 1992 book 'Object-Oriented Software Engineering: A Use Case Driven Approach.' Jacobson is one of the three authors of UML (with Booch and Rumbaugh).
Use cases as a requirements technique predate the diagram form — Jacobson first described the use case concept in a 1987 Ericsson internal technical report while designing the AXE telephone switching system.
A 2010 survey found that use case diagrams are the most commonly used UML diagram in requirements analysis phases of software projects, despite criticism that the diagram adds little information beyond a use case table.
FAQ
When should I use a use case diagram vs. a user story?
Use case diagrams show scope and actor relationships visually — useful at project inception. User stories describe individual behaviors with acceptance criteria — useful for sprint planning. They complement rather than replace each other.
What's the include vs. extend relationship?
Include: always performed as part of the base use case (login always includes authenticate). Extend: conditionally adds behavior to a base case without modifying it (checkout may extend with apply coupon). Extend is commonly misused for mandatory behavior — use include instead.