Building an ATM Use Case Diagram Without Losing Your Mind
Most people rush through ATM diagrams and get stuck because they treat every button press as a separate use case. That's wrong, and it makes the diagram unreadable within twenty minutes. I've seen it happen on projects more times than I care to count.The trick is thinking about actors first, not features. An ATM has three main actors: the customer, the bank teller, and the bank's backend system. That's it. Everything else is a variation or a side effect. Start with the customer. Their use cases are straightforward: withdraw cash, check balance, transfer funds, and change PIN. But here's where people mess up — they draw "deposit cash" as a separate use case. It isn't, not really. The hardware differs, but from a modeling perspective it's the same flow as a withdrawal. The account is credited instead of debited. Combine them or explicitly note the dependency. I learned this the hard way on a project for a regional credit union back in 2019. Our client insisted that "deposit checks" and "deposit cash" needed separate use cases because their deposit machines handled both. The diagram grew to forty-three use cases and nobody could read it. What I ended up doing was creating a single "make deposits" use case with two include relationships to "verify deposit amount" and "update account records." The check vs cash distinction lived in the textual description, not the diagram. It took three minutes and everyone stopped arguing.
Actor Relationships and Including
The bank teller actor is easy to overlook. They're not just someone who refills cash. Tellers handle card issuance, dispute resolution, and machine malfunctions. Draw a <
Generalization Patterns
Generalization is useful here but underused. A standard customer and a premium customer have different withdrawal limits and fee structures. Instead of duplicating every use case, draw a generalization arrow from "premium customer" to "customer" and note the differences in constraints. Same goes for the machine itself — some ATMs offer balance transfers, others don't. A <
Get the Full Details

Common Mistakes That Waste Time
Here are the mistakes I see constantly. First, drawing login as a standalone use case. It's not. Authentication is a precondition for every other use case in the diagram. Put it in the notes section as a constraint, or use an <
For tooling, I use Lucidchart for quick drafts and draw.io when I need something free and exportable. The actual software doesn't matter much. What matters is keeping the abstraction level consistent. Every stakeholder on that project should be reading the same diagram and seeing the same scope boundaries.