ErrorFixHub
Other

Use Case Diagram Tutorial: Complete Guide with Examples & Tools

Master use case diagrams with this complete guide. Learn symbols, include vs extend relationships, step-by-step drawing methods, and the best tools for 2026.

CSS

Ever struggled to explain what your software should do to a client or developer? You know the feeling—you've got a clear picture in your head, but the moment you try to articulate it, the conversation dissolves into vague hand-waving and misunderstood assumptions. A use case diagram cuts through that ambiguity. It's a visual tool that shows, at a glance, who does what with your system and why. This guide walks you through everything—from the core symbols to advanced design decisions—and compares the best tools for 2026. By the end, you'll be able to create a use case diagram that actually communicates functional requirements effectively.

A high-angle view of numerous empty brass bullet casings.

What is a Use Case Diagram? Definition & Core Concepts

At its simplest, a use case diagram is a UML behavioral diagram that visualizes the interactions between actors and a system to achieve specific goals. Think of it as a map of your system's functionality from the outside looking in. It doesn't tell you how the system works internally—it tells you what it does and who benefits from it.

The primary purpose is capturing functional requirements and facilitating communication between stakeholders and developers. When I'm brought into projects mid-stream, the first thing I ask for is often the use case diagram. It tells me more about the intended scope in five minutes than reading a 50-page requirements document.

The Role of UML in Use Case Diagrams

A use case diagram is one specific type of UML (Unified Modeling Language) diagram. UML is the broader standard—a visual language for specifying, constructing, and documenting software systems. It's maintained by the Object Management Group (OMG) and has been the industry standard for software modeling since the late 1990s.

UML diagrams fall into two broad categories:

CategoryDiagram TypesPrimary Focus
StructuralClass, Component, Deployment, ObjectStatic structure—what the system is made of
BehavioralUse Case, Sequence, Activity, State MachineDynamic behavior—what the system does
The use case diagram sits firmly in the behavioral camp. While a class diagram shows you the blueprint of your classes and their relationships, and a sequence diagram shows the order of messages exchanged between objects, the use case diagram zooms way out. It shows the system as a black box, focusing on the interactions between external entities and the system itself.

Key Components: Actors, Use Cases, and System Boundary

Every use case diagram has three fundamental building blocks. Get these right, and the rest is detail.

Actors are the external users or systems that interact with your system. They're not part of the system itself—they exist outside its boundary. An actor can be a person (Customer, Admin), another software system (Payment Gateway), or even a hardware device (Card Reader). The key question to identify actors: Who or what triggers an interaction with the system?

Use Cases represent a specific goal or task that an actor wants to achieve. They're always named with a verb phrase—"Place Order," "Process Payment," "Generate Report"—never nouns. This verb-phrase naming is crucial because it emphasizes that a use case is an action, not a thing. A common mistake I see from junior analysts is naming use cases like "Order" or "Payment." That's a data entity, not a use case.

The System Boundary is the rectangle that encloses all use cases. It defines the scope of your system—what's inside is your responsibility, what's outside is the environment. Drawing this box forces you to make explicit decisions about what your system does and doesn't handle.

Here's a simple annotated diagram showing these three components:

┌─────────────────────────────────────────────┐
│              ONLINE SHOPPING SYSTEM         │
│                                             │
│  ┌──────────────┐    ┌──────────────────┐   │
│  │ Browse       │    │ Place Order      │   │
│  │ Products     │    │                  │   │
│  └──────────────┘    └──────────────────┘   │
│                                             │
│  ┌──────────────────────────────────────┐   │
│  │ Process Payment                      │   │
│  └──────────────────────────────────────┘   │
│                                             │
└─────────────────────────────────────────────┘
         ▲                    ▲
         │                    │
    ┌────┴─────┐         ┌────┴─────┐
    │ Customer │         │ Payment  │
    └──────────┘         │ Gateway  │
                         └──────────┘
Detective examines a corkboard with maps and photos to solve a mystery.

Use Case Diagram Symbols and Notation Explained

The notation for use case diagrams is refreshingly simple—you can learn the core symbols in about ten minutes. But understanding the relationships between elements takes a bit more practice.

Standard UML Shapes for Actors and Use Cases

The classic notation for an actor is the stick figure. It's intuitive and universally recognized. However, UML also allows a rectangle with the keyword «actor» for non-human actors or when you want to include attributes. In practice, I use stick figures for human actors and the rectangle notation for external systems—it makes the diagram more readable at a glance.

Use cases are always represented by ovals or ellipses, with the name written inside. The name should be a short verb phrase that captures the goal. "Submit Claim," "Approve Request," "Track Shipment"—each oval represents one complete, meaningful goal.

Here's a quick visual reference:

ElementSymbolExample
Human ActorStick figureCustomer, Admin
System ActorRectangle with «actor»Payment Gateway
Use CaseOval with verb phrase"Process Payment"
System BoundaryRectangleEncloses all use cases
AssociationSolid lineConnects actor to use case

Relationships: Include, Extend, and Generalization

This is where use case diagrams get interesting. The relationships between use cases carry significant meaning, and getting them wrong leads to confusing diagrams.

Include (dashed arrow pointing to the included use case, labeled «include») represents mandatory, reused behavior. When you have a step that's common across multiple use cases, you extract it into its own use case and include it. For example, in a login system, "Validate User" would be included by "Login," "Change Password," and "Access Account." The included use case is always executed when the base use case runs.

Extend (dashed arrow pointing to the base use case, labeled «extend») represents optional, conditional behavior. The extending use case runs only under certain conditions. For example, "Apply Discount" extends "Checkout"—it only happens if the customer has a promo code. The base use case is complete on its own; the extension adds to it conditionally.

Here's a side-by-side comparison:

INCLUDE (Mandatory)                    EXTEND (Optional)
┌──────────────────────┐              ┌──────────────────────┐
│     Place Order      │              │     Checkout         │
└──────────┬───────────┘              └──────────▲───────────┘
           │ «include»                           │ «extend»
           ▼                                     │
┌──────────────────────┐              ┌──────────────────────┐
│   Process Payment    │              │   Apply Discount     │
└──────────────────────┘              └──────────────────────┘

Generalization (solid line with a hollow arrowhead) is used for inheritance between actors or use cases. For example, you might have a base actor "User" with specialized actors "Customer" and "Admin" that inherit from it. This relationship helps reduce redundancy when multiple actors share common behaviors.

How to Draw a Use Case Diagram: A Step-by-Step Guide

Drawing a use case diagram isn't hard, but doing it well takes practice. Here's the process I've refined over years of workshops and consulting engagements.

Step 1: Identify Your Actors and System Scope

Start by asking the fundamental question: Who or what interacts with the system? Go beyond the obvious human users. Consider:

  • External systems that send or receive data
  • Hardware devices
  • Scheduled processes (like a nightly batch job)
  • Administrative users who maintain the system

Here's a checklist I use with clients:

  • Who initiates actions in the system?
  • Who receives information from the system?
  • What external systems does the system communicate with?
  • Are there automated processes that trigger system behavior?
  • Who maintains and administers the system?

Defining the system boundary clearly at this stage prevents scope creep later. I've seen projects spiral out of control because the boundary was fuzzy—features kept getting added because "it's just a small change." A well-defined boundary makes scope decisions explicit.

Step 2: Define Use Cases and Relationships

List all the goals each actor wants to achieve. Each goal becomes a use case. Then, examine your list for common steps (candidates for include) and optional behaviors (candidates for extend).

Here's a decision tree that helps:

Is the step mandatory for the base use case to complete?
├── YES → Is it reused by multiple use cases?
│        ├── YES → Use «include»
│        └── NO → Keep it inside the base use case
└── NO → Is it optional and conditional?
         ├── YES → Use «extend»
         └── NO → It's a separate use case

The golden rule: don't over-model. If a relationship doesn't add clarity, leave it out. A use case diagram with 30 relationships is harder to read than one with 15 well-chosen ones.

Step 3: Structure the Diagram and Validate

Now the layout work begins. Place the system boundary rectangle in the center. Put actors outside the boundary—human actors typically on the left, external systems on the right. Arrange use cases inside the boundary, grouping related ones together.

Connect actors to their relevant use cases with solid lines. Then add the include and extend relationships between use cases.

Here's a poorly structured diagram vs. a well-structured one:

Poorly structured: Actors scattered randomly, use cases placed without logical grouping, crossing lines everywhere, no visual hierarchy.

Well-structured: Actors neatly arranged on the sides, related use cases clustered together, minimal line crossings, clear visual flow from actors to use cases.

Finally, validate with stakeholders. Walk through each actor and ask: "Can this actor achieve this goal with the system?" Walk through each use case and ask: "Is this goal complete and meaningful?" This review step catches missing requirements and misunderstandings early—when they're cheap to fix.

Use Case Diagram Examples for Common Systems

Theory is useful, but examples make it concrete. Here are two common scenarios that illustrate the concepts in action.

Example 1: Use Case Diagram for an Online Shopping System

This is the classic e-commerce example, and it demonstrates both include and extend relationships naturally.

Actors: Customer, Admin, Payment Gateway (external system)

Use Cases:

  • Browse Products
  • Place Order
  • Process Payment (included by Place Order)
  • Track Shipment
  • Manage Inventory (Admin only)
  • Apply Discount (extends Place Order)

The include relationship between "Place Order" and "Process Payment" shows that payment processing is a mandatory step in placing an order. The extend relationship from "Apply Discount" to "Place Order" shows that applying a discount is optional—it only happens when the customer has a valid promo code.

┌─────────────────────────────────────────────────────┐
│              ONLINE SHOPPING SYSTEM                 │
│                                                     │
│  ┌──────────────┐    ┌──────────────────────────┐   │
│  │ Browse       │    │ Place Order             │   │
│  │ Products     │    │                         │   │
│  └──────────────┘    └──────────┬───────────────┘   │
│                                │ «include»          │
│  ┌──────────────┐    ┌─────────▼───────────────┐   │
│  │ Track        │    │ Process Payment        │   │
│  │ Shipment     │    └────────────────────────┘   │
│  └──────────────┘                                 │
│                                                     │
│  ┌──────────────┐    ┌──────────────────────────┐   │
│  │ Manage       │    │ Apply Discount          │   │
│  │ Inventory    │    │ (extends Place Order)   │   │
│  └──────────────┘    └────────────────────────┘   │
│                                                     │
└─────────────────────────────────────────────────────┘
      ▲            ▲            ▲            ▲
      │            │            │            │
┌─────┴─────┐ ┌────┴─────┐ ┌───┴─────┐ ┌────┴─────────┐
│ Customer  │ │  Admin   │ │ Payment │ │  Customer    │
└───────────┘ └──────────┘ │ Gateway │ └──────────────┘
                           └──────────┘

Example 2: Use Case Diagram for a Hospital Management System

Healthcare systems have complex workflows, making them excellent candidates for use case modeling.

Actors: Patient, Doctor, Receptionist, Insurance System (external)

Use Cases:

  • Schedule Appointment
  • Send Reminder (extends Schedule Appointment)
  • View Medical Records
  • Generate Bill
  • Process Insurance Claim (included by Generate Bill)

The extend relationship here is particularly illustrative: "Send Reminder" extends "Schedule Appointment" because it's an optional behavior that only triggers if the patient opts into reminders. The base use case—scheduling an appointment—is complete without it.

Use Case Diagram vs. Class Diagram: Key Differences

One of the most common points of confusion I encounter is the difference between use case diagrams and class diagrams. They're both UML, but they serve fundamentally different purposes.

Purpose and Perspective: Behavior vs. Structure

A use case diagram focuses on external behavior and user goals. It answers the question: What should the system do for its users? It's about the "what," not the "how."

A class diagram focuses on the internal static structure. It answers the question: What classes exist, what attributes do they have, and how do they relate? It's about the "how" at the structural level.

AspectUse Case DiagramClass Diagram
PerspectiveExternal (black box)Internal (white box)
FocusUser goals and interactionsClasses, attributes, methods
AudienceStakeholders, product ownersDevelopers, architects
TimingRequirements gatheringDesign and implementation
AbstractionHigh-levelDetailed

When to Use Which Diagram in Your Project

In a typical project timeline, you'll create use case diagrams first, during requirements gathering. They help you define scope and align stakeholders on what the system needs to do. Class diagrams come later, during the design phase, when you're planning the technical implementation.

They're complementary, not competing. A use case diagram tells you what to build; a class diagram tells you how to structure it. In my experience, projects that skip the use case diagram often struggle with scope creep and misaligned expectations. Projects that skip the class diagram often end up with tangled, hard-to-maintain code.

Best Use Case Diagram Tools and Software in 2026

The tool landscape has evolved significantly. Here's my honest assessment of the top options, based on years of hands-on use.

Top 5 Tools Compared: Lucidchart, Draw.io, Miro, Figma, Visual Paradigm

ToolBest ForFree TierReal-time CollaborationUML TemplatesEase of Use
LucidchartProfessional diagramsLimited (up to 3 docs)YesExcellentVery easy
Draw.ioQuick, free diagramsFullYes (with integrations)GoodEasy
MiroTeam collaborationUnlimited boardsExcellentGoodVery easy
FigmaDesign-integrated workflowsLimitedExcellentBasicModerate
Visual ParadigmEnterprise modelingLimitedYesComprehensiveSteeper learning curve
Lucidchart is my go-to for client-facing work. The templates are polished, and the drag-and-drop interface is intuitive. The free tier is limited, but the paid plans are reasonable for professional use.

Draw.io (now diagrams.net) is the best free option, period. It's open-source, runs in your browser, and integrates with Google Drive, Confluence, and GitHub. The UML shapes are comprehensive, and you can export to multiple formats. I use it for quick sketches and internal documentation.

Miro shines when you need real-time collaboration. Its infinite canvas and sticky notes make it ideal for workshops where you're iterating on the diagram with stakeholders. The UML shape pack is decent, though not as comprehensive as Lucidchart's.

Figma is interesting if your team already uses it for design work. The diagramming capabilities have improved, but it's not purpose-built for UML. I'd only recommend it if you want to keep everything in one design tool.

Visual Paradigm is the heavyweight option. It supports the full UML 2.5 specification and integrates with database design, business process modeling, and more. It's overkill for simple projects, but for enterprise-scale work, it's powerful. The learning curve is real, though.

How to Create a Use Case Diagram in Visio

Microsoft Visio remains popular in corporate environments. Here's a quick walkthrough:

  1. Open Visio and select NewCategoriesSoftware and DatabaseUML Use Case.
  2. Drag the System Boundary shape onto the canvas. Resize it to fit your use cases.
  3. Drag Use Case ovals inside the boundary. Double-click each to add a name.
  4. Drag Actor stick figures outside the boundary.
  5. Use Connector tools to link actors to use cases. For include/extend relationships, use the Dashed Line connector and add the «include» or «extend» stereotype label.

Visio's UML template is functional but dated. The shapes are there, but the experience feels clunky compared to modern tools. If you have Visio through your organization, it works—but I'd personally choose Draw.io or Lucidchart for a better experience.

Common Use Case Diagram Mistakes and Best Practices

After reviewing hundreds of use case diagrams in my career, I've seen the same mistakes repeated. Here's what to watch out for.

Mistake 1: Too Much Detail or Too Little Granularity

The "goldilocks" problem of use case granularity is real. Too detailed, and your diagram becomes an unreadable mess. Too vague, and it's useless for communication.

Too detailed: "Enter Username," "Enter Password," "Click Login Button," "Verify Credentials"—these are steps, not use cases. They don't represent complete goals.

Too vague: "Manage System"—what does that even mean? It's not a specific, meaningful goal.

Just right: "Login to System," "Place Order," "Generate Report"—each represents a complete, meaningful goal for an actor.

A good rule of thumb: if a use case takes more than a few sentences to describe, it's probably too granular. If you can't describe it in one sentence, it's probably too vague.

Mistake 2: Misusing Include and Extend Relationships

This is the most common technical error I see. Let me clarify with a concrete example.

Wrong: Using extend for mandatory behavior. "Process Payment" extends "Place Order"—this is wrong because payment processing is mandatory for placing an order.

Right: Using include for mandatory behavior. "Place Order" includes "Process Payment"—this correctly shows that payment processing is always executed.

Wrong: Using include for optional behavior. "Place Order" includes "Apply Discount"—this is wrong because applying a discount is optional.

Right: Using extend for optional behavior. "Apply Discount" extends "Place Order"—this correctly shows that the discount is applied only under certain conditions.

The distinction comes down to: Is this behavior always executed? If yes, use include. If it's conditional, use extend.

Best Practices for Agile and Microservices Design

Use case diagrams aren't just for waterfall projects. They fit naturally into Agile workflows and microservices architecture.

In Scrum, use case diagrams are valuable during sprint planning. They help the team understand the scope of user stories and identify dependencies between features. I've worked with teams that maintain a living use case diagram on their team wall—it gets updated each sprint as new functionality is added.

For microservices, use case diagrams help map interactions between services. Each service can have its own use case diagram showing its external interactions. This is particularly useful for identifying service boundaries and understanding how services collaborate to fulfill user goals.

Here's a real-world example: a fintech client of mine was struggling with their microservices architecture. Services had grown organically, and no one had a clear picture of how they interacted. We created use case diagrams for each service, which immediately revealed several services that were doing too much—they were handling multiple unrelated use cases. This led to a refactoring that split those services along use case boundaries, dramatically improving maintainability.

FAQ

What is the difference between include and extend in a use case diagram?

Include and extend are both relationships between use cases, but they serve opposite purposes:

AspectIncludeExtend
Mandatory?Yes—always executedNo—conditional
DirectionBase → IncludedExtension → Base
PurposeExtract common, reused stepsAdd optional behavior
Example"Place Order" includes "Process Payment""Apply Discount" extends "Checkout"
Think of include as "always does" and extend as "sometimes does."

Is a use case diagram the same as a UML diagram?

No. A use case diagram is one type of UML diagram. UML (Unified Modeling Language) is the broader standard that includes 14 different diagram types, divided into structural (class, component, deployment) and behavioral (use case, sequence, activity, state machine) categories. The use case diagram is specifically a behavioral diagram that focuses on external interactions.

What tools can I use to create a use case diagram?

Popular options include Lucidchart (best for professional diagrams), Draw.io (best free option), Miro (best for collaboration), Figma (best if you're already using it for design), and Visual Paradigm (best for enterprise modeling). All except Visual Paradigm have free tiers, and all support UML notation.

Why are use case diagrams important in software development?

Use case diagrams capture functional requirements in a visual format that both technical and non-technical stakeholders can understand. They define system scope, facilitate communication between stakeholders and developers, and serve as a foundation for more detailed design work. They're particularly valuable early in the development lifecycle when misunderstandings are cheapest to fix.

Conclusion

Use case diagrams are one of the most accessible tools in the software development toolkit. They bridge the gap between what stakeholders want and what developers build, providing a shared visual language for discussing system functionality.

The key takeaways: understand the core components (actors, use cases, system boundary), master the relationships (include vs. extend), follow a structured drawing process, and avoid the common pitfalls we've discussed. Choose a tool that fits your workflow—whether that's a free option like Draw.io or a professional platform like Lucidchart.

Ready to create your own use case diagram? Try a free tool like Draw.io or Lucidchart and start mapping your system's requirements today. For more advanced tips, check out our guide on UML best practices.

Related Posts