Data flow diagram
Where data comes from, which process changes it and where it is stored.
What it explains and when it is useful
A data flow diagram (DFD) shows how data moves: from external entities, through processes that transform it, into and out of data stores. Level 0 (context) shows the whole system as one process; Level 1 opens it up.
When to use it: Data-heavy solutions: anything that collects, transforms, stores and reports data. Useful for showing that every output can be produced from stored data.
Worked example
Illustrative: PracticePal is a fictional project used throughout this guide.
Level 0: context diagram
Scroll sideways to see the whole diagram.
Level 1
Scroll sideways to see the whole diagram.
Function composition / data transformation diagram
Alternative. In a functional style, the usage report is a pipeline of pure functions; the diagram shows data changing shape at each step.
Scroll sideways to see the whole diagram.
Notation and legend
| Symbol or part | Meaning |
|---|---|
| Square (thick border) | External entity: a source or destination of data outside the system |
| Rounded box with number | Process that transforms data |
| Open-ended box (D1…) | Data store |
| Labelled arrow | Data flow, named by the data it carries |
| ⌒ | Two flows crossing without connecting |
Design decisions it communicates
A diagram earns marks when you explain the decisions it shows. In PracticePal's documentation these would each be one sentence:
- Every data store is both written and read by some process; nothing is stored without a purpose.
- The clock is an external entity, because no-shows are triggered by time, not by a user.
- Offer emails leave the system, which is why the email server appears.
Common mistakes
- Drawing decisions or loops (that is a flowchart).
- Unlabelled flows.
- Data flowing directly between two stores or two entities without a process.
- Processes named as nouns instead of verbs.
Checklist for your own version
Ticks are saved in this browser only, so you can use the list while you draft.