If you've ever looked at a use case diagram and felt unsure about what each shape and line actually represents, you're not alone. These diagrams are one of the first things software teams sketch out when planning a system, but the symbols only help if everyone on the team reads them the same way. Knowing what each UML use case diagram symbol means and how they connect keeps your team aligned on who does what in a system, before a single line of code gets written.
What Is a Use Case Diagram, and Why Do Teams Draw Them?
A use case diagram is a type of UML (Unified Modeling Language) diagram that shows how different users called actors interact with a system. It maps out the goals users have and the functions the system provides to meet those goals. Think of it as a high-level map of your system's behavior from the user's point of view.
Teams draw use case diagrams early in a project to agree on scope, identify missing requirements, and communicate with stakeholders who aren't technical. If you've worked with other UML diagrams, like those covering class diagram relationships, you'll notice use case diagrams are less about structure and more about behavior and interaction.
What Are the Core Symbols in a Use Case Diagram?
There are only a handful of symbols in a use case diagram. Each one has a specific job. Here's what they are and what they mean:
1. Actor (Stick Figure)
An actor represents a person or external system that interacts with your system. Actors are always drawn as stick figures placed outside the system boundary. A single actor can participate in multiple use cases.
Example: In an online store, "Customer" and "Payment Gateway" are both actors. One is a human user; the other is an external system.
2. Use Case (Oval or Ellipse)
A use case is an oval shape that describes a specific action or goal the system achieves for an actor. The text inside the oval names the action usually a short verb phrase like "Place Order" or "Reset Password."
Use cases live inside the system boundary. They answer the question: what can the user do with this system?
3. System Boundary (Rectangle)
The system boundary is a rectangle that encloses all the use cases. It defines what's inside the system you're designing and what's outside. The name of the system usually appears at the top of the rectangle.
Actors stay outside the boundary. Use cases stay inside. This simple rule keeps your diagram clean and easy to read.
4. Association Line (Solid Line)
A plain solid line connects an actor to a use case. It means the actor participates in that use case nothing more, nothing less. There's no arrowhead by default, since the relationship is understood to go both ways: the actor initiates the action, and the system responds.
What Do the Relationship Arrows Mean?
Once you have the basic shapes, you need to show how use cases relate to each other. UML uses dashed arrows with stereotypes (text in guillemets) for this. These are the ones that often trip people up.
Include Relationship (<<include>>)
A dashed arrow with the <<include>> label means one use case always incorporates the behavior of another. The arrow points from the base use case to the included one.
Example: "Place Order" always includes "Verify Payment." Every time a customer places an order, the system must verify payment. There's no scenario where it skips this step.
Use <<include>> when a piece of behavior is mandatory and shared across multiple use cases. It's a way to avoid repeating the same steps in different ovals.
Extend Relationship (<<extend>>)
A dashed arrow with <<extend>> means one use case optionally adds behavior to another under certain conditions. The arrow points from the extending use case to the base use case.
Example: "Apply Discount Code" might extend "Place Order." The customer doesn't have to enter a discount code, but if they do, the system handles it. The base use case works fine without it.
This is the most common source of confusion. Many people mix up include and extend. A simple way to remember: include is mandatory (arrow from base to included), extend is optional (arrow from extension to base).
Generalization (Solid Line with Hollow Arrowhead)
Generalization looks like inheritance in object-oriented programming. A solid line with a hollow (empty) triangle arrowhead points from the child to the parent.
For actors, it means one actor is a specialized version of another. For example, "Admin" generalizes to "User" an admin can do everything a regular user can, plus more.
For use cases, it means one use case is a specific version of a more general one. For example, "Pay by Credit Card" and "Pay by PayPal" could both generalize from "Make Payment."
This symbol comes up often when you're modeling systems with different user roles. If you've seen similar inheritance patterns in UML notation for class and component diagrams, the concept works the same way here.
How Do These Symbols Work Together in a Real Diagram?
Let's walk through a practical example: a library management system.
Actors:
- Member (a library patron)
- Librarian (staff who manages the system)
Use cases inside the system boundary ("Library System"):
- Search Catalog
- Borrow Book
- Return Book
- Manage Inventory
- Validate Membership
- Calculate Late Fee
Associations:
- Member connects to: Search Catalog, Borrow Book, Return Book
- Librarian connects to: Manage Inventory, Search Catalog
Include relationships:
- Borrow Book
<<include>>Validate Membership you can't borrow without a valid membership. - Return Book
<<include>>Calculate Late Fee the system always checks for late fees on return.
Extend relationships:
- Calculate Late Fee
<<extend>>Return Book only applies if the book is actually late.
This kind of diagram helps the team spot questions early. For instance: Can a librarian borrow books too? If so, maybe "Librarian" should generalize to "Member," or you need a separate association. These are the discussions that save you from building the wrong thing.
What Are the Most Common Mistakes with Use Case Diagram Symbols?
Even experienced developers get these wrong from time to time:
- Confusing include and extend arrows. The direction of the arrow is the key. Include goes from the base to the included use case. Extend goes from the extending use case to the base. Mixing them up changes the meaning entirely.
- Using use cases that are too detailed. A use case diagram is not a step-by-step process flow. If your oval says "User enters email, clicks submit, system sends token, user enters new password," that's a process not a use case. It should just say "Reset Password."
- Putting actors inside the system boundary. Actors are always external. If you find a stick figure inside your rectangle, something is off.
- Drawing too many use cases in one diagram. A use case diagram with 40 ovals is hard to read. Split complex systems into multiple diagrams organized by feature area.
- Forgetting external systems as actors. Not every actor is a person. If your system talks to a payment processor, email service, or third-party API, those are actors too.
How Are Use Case Diagrams Different from Other UML Diagrams?
Use case diagrams focus on who does what with the system. They don't show how the system does it internally or in what order things happen. That's where other diagrams come in.
Sequence diagrams show the step-by-step message flow between objects over time. Activity diagrams show the workflow and decision logic. If you need to pick between those two for detailed design, this comparison of sequence diagrams and activity diagrams covers when each one fits best.
Use case diagrams sit at the top level. They're the starting point that helps you figure out which detailed diagrams you'll need next.
Do I Need Special Software to Create These Diagrams?
No. You can draw use case diagrams with:
- Paper and whiteboards great for early brainstorming with your team
- General drawing tools like draw.io (free), Lucidchart, or Miro
- UML-specific tools like Visual Paradigm, StarUML, or PlantUML (text-based)
What matters more than the tool is that your team agrees on how to read the symbols. A hand-drawn diagram on a whiteboard that everyone understands beats a polished diagram in a tool nobody checks.
Quick Reference: Use Case Diagram Symbols at a Glance
- Stick figure Actor (person or external system)
- Oval Use case (a goal or action)
- Rectangle System boundary
- Solid line Association between actor and use case
- Dashed arrow +
<<include>>Mandatory shared behavior - Dashed arrow +
<<extend>>Optional conditional behavior - Solid line + hollow triangle Generalization (inheritance)
Practical Checklist Before You Finalize Your Diagram
- Every actor is outside the system boundary
- Every use case is inside the system boundary
- Use case names are short verb phrases (2–5 words)
<<include>>arrows point from the base to the included use case<<extend>>arrows point from the extending to the base use case- No more than 15–20 use cases per diagram (split if needed)
- Generalization arrows use a solid line with a hollow arrowhead
- External systems are modeled as actors, not ignored
- At least one non-technical stakeholder can understand the diagram
- The diagram answers: who uses the system, and what can they do with it?
Next step: Pick one feature of a system you're working on. List the actors, list the goals, sketch the diagram on paper, and review it with a teammate. The fastest way to learn these symbols is to use them on a real problem.
Key Differences Between Sequence and Activity Diagrams
Uml Class Diagram Relationships Explained with Examples
Uml Notation Cheat Sheet for Software Architects: Quick Reference Guide
Flowchart Shapes Explained for Beginners: Complete Symbol Guide
Iso Standard Flowchart Symbol Reference Chart and Meanings
Flowchart Symbols Meaning & Usage Guide