Blame
|
1 | > **DRAFT** — under teacher review. |
||||||
| 2 | ||||||||
| 3 | # Data Flow Diagram (Level-1) |
|||||||
| 4 | ||||||||
| 5 | Hamilton College · Year 12 · 2026 |
|||||||
| 6 | ||||||||
| 7 | A Level-1 DFD is the **floor-plan view** of your software: the single circle from your context diagram is split open to reveal the major processes inside, the data stores where information lives, and the labelled flows connecting everything. Every entity that appeared on your context diagram must reappear here — and no new ones should suddenly show up. |
|||||||
| 8 | ||||||||
| 9 | > [!TIP] |
|||||||
| 10 | > Your **C2-2 validation** is a rubric ladder: you need a working context diagram to score 3–4, *and* a working Level-1 DFD to reach **5–6**. The DFD is the second rung. Getting the four notation rules right (see below) is what separates a 5–6 from a diagram that costs you that band. |
|||||||
| 11 | ||||||||
| 12 | --- |
|||||||
| 13 | ||||||||
|
14 | ## Watch first (≈10 min total) |
||||||
| 15 | ||||||||
| 16 | {{Video|src=https://www.youtube.com/watch?v=DXjr63VFiik}} |
|||||||
| 17 | ||||||||
| 18 | *Mark O'Meara (Geelong High School) — 1½-min VCE-targeted revision. Watch for: numbered processes, data stores as parallel lines, and the rule that every flow goes *through* a process.* |
|||||||
| 19 | ||||||||
| 20 | {{Video|src=https://www.youtube.com/watch?v=IDJeqOdIbeI}} |
|||||||
| 21 | ||||||||
| 22 | *Mr O'Meara — 8-min purpose and conventions of a DFD (Yourdon-DeMarco notation). The longer companion to the revision clip — work through this one first if DFDs are new.* |
|||||||
| 23 | ||||||||
| 24 | --- |
|||||||
| 25 | ||||||||
|
26 | ## Why a DFD / what it shows |
||||||
| 27 | ||||||||
| 28 | Think of the relationship between your context diagram and your Level-1 DFD as the difference between a **satellite view** and a **floor plan**. |
|||||||
| 29 | ||||||||
| 30 | - The **context diagram** (Level 0) shows the building's outline and everything crossing its boundary — nothing inside. |
|||||||
| 31 | - The **Level-1 DFD** opens the roof and shows the rooms (processes), the filing cabinets (data stores), and the corridors connecting them (data flows). |
|||||||
| 32 | ||||||||
| 33 | It does four jobs: |
|||||||
| 34 | ||||||||
| 35 | - **Decomposes the system** — the single context-diagram circle becomes 3–6 numbered processes |
|||||||
| 36 | - **Reveals data storage** — shows where your system persists data (databases, tables, files) |
|||||||
| 37 | - **Traces data transformations** — every process takes in data and produces *different* data out |
|||||||
| 38 | - **Maintains consistency** — entities and flow names must match your context diagram exactly |
|||||||
| 39 | ||||||||
| 40 | ::: info |
|||||||
| 41 | **Why entities must stay the same.** The VCAA rubric at 9–10 requires *"no errors, inconsistencies or omissions"*. An entity labelled *"User"* on the context diagram but *"Customer"* on the DFD is an inconsistency — even if both diagrams are otherwise perfect. Use the exact same names throughout. |
|||||||
| 42 | ::: |
|||||||
| 43 | ||||||||
| 44 | --- |
|||||||
| 45 | ||||||||
| 46 | ## The four elements |
|||||||
| 47 | ||||||||
| 48 | | Element | Symbol | Rules | |
|||||||
| 49 | |---|---|---| |
|||||||
| 50 | | **Process** | Circle (Yourdon-DeMarco) | Numbered verb-noun phrase (e.g. *"1. Verify Login"*, *"2. Save Order"*). Must have **at least one input and one output** — and the output must differ from the input (the process *transforms* the data). | |
|||||||
| 51 | | **External entity** | Rectangle | Same entities as your context diagram — same names, same roles. They sit outside the logic of the system and can only connect to processes. | |
|||||||
| 52 | | **Data store** | Two parallel horizontal lines (or cylinder) | A named repository where data persists (e.g. *"Orders"*, *"User Accounts"*). Must have at least one flow **in** and one flow **out**. Can only connect to processes. | |
|||||||
| 53 | | **Data flow** | Labelled arrow | Carries the specific data moving between elements. Every arrow must be labelled (not *"data"* or *"info"*). **All flows are unidirectional** — one arrowhead, one direction. | |
|||||||
| 54 | ||||||||
| 55 | ::: warning |
|||||||
| 56 | **Three connections that are never allowed** |
|||||||
| 57 | ||||||||
| 58 | - **Entity ↔ Entity** — two external entities cannot exchange data directly on this diagram |
|||||||
| 59 | - **Data store ↔ Data store** — data cannot move between stores without passing through a process |
|||||||
| 60 | - **Entity ↔ Data store** — an entity cannot read from or write to a store directly; data always flows through a process first |
|||||||
| 61 | ||||||||
| 62 | If data genuinely moves in *both* directions between two elements, draw **two separate arrows**, each with its own label — one for each direction. Never use a double-headed arrow. |
|||||||
| 63 | ::: |
|||||||
| 64 | ||||||||
| 65 | --- |
|||||||
| 66 | ||||||||
| 67 | ## Worked example: Sales Order System |
|||||||
| 68 | ||||||||
| 69 | The same Sales Order System from the context diagram page, now decomposed to Level 1. Three entities (Managers, Employees, Customers), four processes, three data stores. |
|||||||
| 70 | ||||||||
| 71 | ```mermaid |
|||||||
| 72 | flowchart LR |
|||||||
| 73 | M[Managers] |
|||||||
| 74 | E[Employees] |
|||||||
| 75 | C[Customers] |
|||||||
| 76 | ||||||||
| 77 | P1(("1. Manage\nEmployees")) |
|||||||
| 78 | P2(("2. Manage\nProducts")) |
|||||||
| 79 | P3(("3. Process\nOrder")) |
|||||||
| 80 | P4(("4. Generate\nInvoice")) |
|||||||
| 81 | ||||||||
| 82 | DS1[("Employee\nRecords")] |
|||||||
| 83 | DS2[("Product\nCatalogue")] |
|||||||
| 84 | DS3[("Orders")] |
|||||||
| 85 | ||||||||
| 86 | M -->|new employee details| P1 |
|||||||
| 87 | P1 -->|employee record| DS1 |
|||||||
| 88 | DS1 -->|employee list| P1 |
|||||||
| 89 | P1 -->|employee lists| M |
|||||||
| 90 | ||||||||
| 91 | E -->|product & category info| P2 |
|||||||
| 92 | P2 -->|product record| DS2 |
|||||||
| 93 | DS2 -->|product list| P2 |
|||||||
| 94 | ||||||||
| 95 | C -->|customer details & order| P3 |
|||||||
| 96 | P3 -->|order record| DS3 |
|||||||
| 97 | DS3 -->|order data| P4 |
|||||||
| 98 | P2 -->|product pricing| P3 |
|||||||
| 99 | P4 -->|invoice| C |
|||||||
| 100 | ``` |
|||||||
| 101 | ||||||||
| 102 | **Read it like this:** |
|||||||
| 103 | ||||||||
| 104 | - **Processes** (numbered circles): *1. Manage Employees*, *2. Manage Products*, *3. Process Order*, *4. Generate Invoice* |
|||||||
| 105 | - **External entities** (rectangles): *Managers*, *Employees*, *Customers* — identical to the context diagram |
|||||||
| 106 | - **Data stores** (cylinders): *Employee Records*, *Product Catalogue*, *Orders* |
|||||||
| 107 | - **Selected data flows to trace:** |
|||||||
| 108 | - **Managers → P1**: *new employee details* |
|||||||
| 109 | - **P1 → Employee Records**: *employee record* (write) |
|||||||
| 110 | - **Employee Records → P1**: *employee list* (read — a separate arrow back) |
|||||||
| 111 | - **P1 → Managers**: *employee lists* (output back to manager) |
|||||||
| 112 | - **C → P3**: *customer details & order* |
|||||||
| 113 | - **P3 → Orders**: *order record* |
|||||||
| 114 | - **Orders → P4**: *order data* |
|||||||
| 115 | - **P4 → C**: *invoice* |
|||||||
| 116 | ||||||||
| 117 | > [!IMPORTANT] |
|||||||
| 118 | > Notice that **P1 reads back from Employee Records with a separate arrow** — it does not use a double-headed arrow. Every read and every write is its own labelled flow. This is the most-tested notation rule in C2-2. |
|||||||
| 119 | ||||||||
| 120 | --- |
|||||||
| 121 | ||||||||
| 122 | ## How to draw one |
|||||||
| 123 | ||||||||
| 124 | 1. **Start from your context diagram.** Pull in the same external entities and the same flow names. The boundary of your DFD is the same boundary as your context diagram — you're just looking inside it now. |
|||||||
| 125 | ||||||||
| 126 | 2. **Identify 3–6 major processes.** Each is a major function your system performs. Ask: *"What are the key things my system actually does?"* Name each with a verb-noun phrase and number them sequentially (*1. …*, *2. …*, *3. …*). |
|||||||
| 127 | ||||||||
| 128 | 3. **Add data stores.** For every piece of data your system needs to *remember* across sessions or between processes, add a named data store. If your software saves nothing, you have no stores — but most SAT projects have at least one. |
|||||||
| 129 | ||||||||
| 130 | 4. **Map the data flows.** Work systematically: for each process, ask *"what data does this need as input, and what does it produce as output?"* Label every arrow with specific data. Check that every entity flow from the context diagram has made it onto the DFD. |
|||||||
| 131 | ||||||||
| 132 | 5. **Validate against the rules.** See the quality check below before moving on. |
|||||||
| 133 | ||||||||
| 134 | ::: success |
|||||||
| 135 | **Quality check before you move on** |
|||||||
| 136 | ||||||||
| 137 | - Every process has **at least one input *and* one output**? ✓ |
|||||||
| 138 | - Every process label is a **numbered verb-noun phrase**? ✓ |
|||||||
| 139 | - Every data store has at least one flow **in** and one flow **out**? ✓ |
|||||||
| 140 | - **No entity↔entity, no store↔store, no entity↔store** connections? ✓ |
|||||||
| 141 | - Every arrow has a **specific** label (not *"data"* or *"info"*)? ✓ |
|||||||
| 142 | - All arrows are **unidirectional** — two-way data = two separate arrows? ✓ |
|||||||
| 143 | - **Entity names match** your context diagram exactly? ✓ |
|||||||
| 144 | ||||||||
| 145 | Seven ticks → your DFD is ready for the validation. |
|||||||
| 146 | ::: |
|||||||
| 147 | ||||||||
| 148 | --- |
|||||||
| 149 | ||||||||
| 150 | ::: danger |
|||||||
| 151 | **Most common DFD mistakes** |
|||||||
| 152 | ||||||||
| 153 | 1. **One circle only — it's still a context diagram.** A DFD must decompose the system into *multiple* numbered processes. If there's only one circle, you have not drawn a DFD. |
|||||||
| 154 | 2. **Process with no output (or no input).** A process that takes data in but sends nothing out is not transforming anything. Every process needs both sides. |
|||||||
| 155 | 3. **Direct entity-to-data-store connection.** Data must pass through a process first. An arrow from *Customer* directly to *Orders* is a notation error. |
|||||||
| 156 | 4. **Store-to-store flow.** Data cannot travel between two stores without a process in between. |
|||||||
| 157 | 5. **Double-headed arrows.** Each direction of data flow is a separate, labelled, single-headed arrow. |
|||||||
| 158 | 6. **Unlabelled or vague arrows.** *"info"* or *"data"* is not a label. Name the actual data (*"login credentials"*, *"order confirmation"*). |
|||||||
| 159 | 7. **Inconsistent entities.** If your context diagram says *"Year 7 Student"*, your DFD must say *"Year 7 Student"* — not *"Student"* or *"User"*. |
|||||||
| 160 | ::: |
|||||||
| 161 | ||||||||
| 162 | --- |
|||||||
| 163 | ||||||||
| 164 | ## Check Your Understanding |
|||||||
| 165 | ||||||||
| 166 | Answer in your head first, then click the spoiler to check. |
|||||||
| 167 | ||||||||
| 168 | **1.** A Level-1 DFD has a process called *"Save Record"* with one arrow in (*"new record"* from an entity) and nothing going out. What is wrong? |
|||||||
| 169 | ||||||||
| 170 | >! **The process has no output.** Every process must transform data — it takes something in and produces something different out. *"Save Record"* should output *something* (e.g. *"confirmation"* back to the entity, or a *"saved record"* to a data store). A process with only an input arrow is not doing anything by DFD rules. |
|||||||
| 171 | ||||||||
| 172 | **2.** You need to show that a *Customer* can read their past orders *and* add a new order. How do you show both on the DFD? |
|||||||
| 173 | ||||||||
| 174 | *(a) One double-headed arrow between Customer and the Orders data store* |
|||||||
| 175 | *(b) One double-headed arrow between Customer and the relevant process* |
|||||||
| 176 | *(c) Two separate single-headed arrows between Customer and the relevant process, each labelled differently* |
|||||||
| 177 | *(d) A single arrow labelled "orders (in and out)"* |
|||||||
| 178 | ||||||||
| 179 | >! **(c) Two separate single-headed arrows, each labelled.** All data flows are **unidirectional**. If data moves in both directions, you draw two arrows — one for each direction — each with its own specific label (e.g. *"new order"* going in, *"order history"* coming out). Double-headed arrows are never valid in Yourdon-DeMarco notation. |
|||||||
| 180 | ||||||||
| 181 | **3.** Which of these connections is **allowed** on a Level-1 DFD? |
|||||||
| 182 | ||||||||
| 183 | *(a) Customer → Orders (data store)* |
|||||||
| 184 | *(b) Orders (data store) → Product Catalogue (data store)* |
|||||||
| 185 | *(c) Process 2 → Orders (data store)* |
|||||||
| 186 | *(d) Customer → Employee (entity)* |
|||||||
| 187 | ||||||||
| 188 | >! **(c) Process 2 → Orders (data store).** A process can write to (or read from) a data store — that is a valid and normal DFD connection. The other three all break the rules: (a) entity directly to a data store — not allowed; (b) store to store — not allowed; (d) entity to entity — not allowed. |
|||||||
| 189 | ||||||||
| 190 | **4.** Your context diagram shows entities *"Homeroom Teacher"*, *"Student"*, and *"School Admin"*. On your Level-1 DFD you wrote *"Teacher"*, *"Learner"*, and *"Admin"*. What rubric consequence does this have? |
|||||||
| 191 | ||||||||
| 192 | >! **It is an inconsistency — and at 9–10, any inconsistency is disqualifying.** The VCAA descriptor for 9–10 reads *"no errors, inconsistencies or omissions"*. Mismatched entity names between diagrams is an inconsistency even if both diagrams are otherwise perfect. At 5–6 *"some errors or omissions"* are tolerated, so you would still score that band — but you cannot reach 9–10 with mismatched names. Always copy entity names exactly from your context diagram. |
|||||||
| 193 | ||||||||
| 194 | --- |
|||||||
| 195 | ||||||||
| 196 | ## See also |
|||||||
| 197 | ||||||||
| 198 | - [Context Diagram](Context%20Diagram.md) — Level 0; the entities and flows here must be consistent with your DFD |
|||||||
| 199 | - [Context Diagram vs Data Flow Diagram](Context%20Diagram%20vs%20Data%20Flow%20Diagram.md) — side-by-side comparison of what appears on each level |
|||||||
| 200 | - [Use Case Diagram](Use%20Case%20Diagram.md) — the third C2-2 analytical diagram; actors must match entities across all three |
|||||||
| 201 | - [Excalidraw Diagram Starters](Excalidraw%20Diagram%20Starters.md) — pre-framed DFD canvas for rehearsing before the timed validation |
|||||||
| 202 | - [Essential Terms](Essential%20Terms.md) — definitions of *process*, *data store*, *data flow*, *external entity* |
|||||||
| 203 | ||||||||
| 204 | --- |
|||||||
| 205 | ||||||||
| 206 | ← Back to [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub) |
|||||||
