# Common Sequence Diagram Mistake

**In short:** Many sequence diagram errors come from arrow styles. Replies, asynchronous messages, and lost or found messages are the usual trouble spots. Knowing what each arrowhead and line style means helps you catch them.

## Explanation

A sequence diagram shows how parts of a system exchange messages over time (see UML Sequence Diagram). Most mistakes come from mixing up arrow styles.

**Lifelines.** Each object sits on a vertical dashed line. The object's rectangle plus that line form the lifeline.

**Synchronous calls and replies.**
- A synchronous call uses a filled arrowhead. The caller waits.
- The reply is a dashed line with an open arrowhead.
- Each filled call arrow has a matching dashed reply before the caller continues.

**Asynchronous messages.**
- An asynchronous caller does not wait. It continues right away.
- So an asynchronous message has no reply arrow. Drawing one is a mistake.
- The open arrowhead marks a message as asynchronous. The dashed stroke does not.
- Some informal diagrams use dashes to mean "delayed" or "background". In UML, dashes mean a reply, so a dashed "async" arrow is wrong.

**Found and lost messages.**
- A found message starts at a filled circle. Its sender is unknown or external.
- A lost message points to a filled circle. Its sender is known, but its recipient is not.

**Parallel fragments.** In a `par` fragment, events in different operands may happen in any interleaved order. This shows concurrency. Do not read the operands as a fixed sequence.

For message types in more depth, see Message Types in Sequence Diagrams.

## Example

A web shop diagram shows an order service calling a payment service. The call "charge card" is a filled arrow, so the order service waits. The payment service answers with a dashed arrow with an open head. Later, the order service sends "notify warehouse" as an asynchronous message with an open arrowhead. It does not wait, so the diagram draws no reply. A reviewer who sees a dashed arrow back from the warehouse should flag it.

A synchronous call with a dashed reply, and an asynchronous message with no reply.

```plantuml
@startuml
participant "order:OrderService" as O
participant "pay:PaymentService" as P
participant "wh:Warehouse" as W
O -> P : chargeCard
P --> O : chargeCard
O ->> W : notifyWarehouse
@enduml
```

## Checks

- Every synchronous call (filled arrowhead) has a dashed reply arrow with an open arrowhead.
- Asynchronous messages have no reply arrow.
- Asynchronous messages are marked by an open arrowhead, not by a dashed line.
- Found messages start at a filled circle, and lost messages end at one.

## Related

- [UML Sequence Diagram](https://arc.fuet.ch/concepts/modeling-uml/sequence-diagram.md)
- [Message Types in Sequence Diagrams](https://arc.fuet.ch/concepts/modeling-uml/message-types-in-sequence-diagrams.md)
- [Synchronous vs. Asynchronous Communication](https://arc.fuet.ch/concepts/integration/synchronous-vs-asynchronous-communication.md)
- [Runtime View](https://arc.fuet.ch/concepts/documentation/runtime-view.md)
- [UML Modeling Anti-Pattern](https://arc.fuet.ch/concepts/modeling-uml/uml-modeling-anti-patterns.md)
- [Common Class Diagram Modeling Mistakes](https://arc.fuet.ch/concepts/modeling-uml/common-class-diagram-modeling-mistakes.md)
- [UML Modeling Best Practice](https://arc.fuet.ch/concepts/modeling-uml/uml-modeling-best-practice.md)

## Sources

- [UML Sequence Diagram: chronological sequence](https://www.sparxsystems.eu/languages/uml/diagrams/sequencediagram/) — sparxsystems.eu, accessed 2026-11-09
- [UML synchronous vs asynchronous messages: a 202 Accepted worked sequence | Schematex Research](https://schematex.js.org/research/uml-synchronous-vs-asynchronous-message-arrows) — schematex.js.org, accessed 2026-11-09
- [Mastering UML Sequence Diagrams: A Comprehensive Guide from Basic Notation to Advanced Decomposition](https://www.visual-paradigm.com/guide/mastering-uml-sequence-diagrams-a-comprehensive-guide-from-basic-notation-to-advanced-decomposition/) — visual-paradigm.com, accessed 2026-11-09
