Blame
|
1 | > **DRAFT** — under teacher review. |
||||||
| 2 | ||||||||
| 3 | # IPO Charts — Process Means Steps, Not the Answer |
|||||||
| 4 | ||||||||
| 5 | The Hamilton and Alexandra College · Year 12 · 2026 |
|||||||
| 6 | ||||||||
|
7 | An IPO chart has three columns — **Input**, **Process**, **Output** — and you write one chart per process. The big idea in C05: **your DFD tells you what the charts are.** Every process in your data flow diagram becomes one IPO chart, and the data flowing in and out of it becomes the Input and Output columns. |
||||||
|
8 | |||||||
|
9 | The trap that caps students at the 5–6 band is writing the Process column as an *outcome* instead of as *steps*. This page shows what that looks like, how your DFD feeds your charts, and a full worked example. |
||||||
|
10 | |||||||
| 11 | --- |
|||||||
| 12 | ||||||||
| 13 | ## The core rule |
|||||||
| 14 | ||||||||
| 15 | > [!TIP] |
|||||||
|
16 | > **Process = the steps that turn input into output.** |
||||||
| 17 | > If your Process cell could just as easily be your Output cell, it is wrong. |
|||||||
|
18 | |||||||
| 19 | The three columns do different jobs: |
|||||||
| 20 | ||||||||
|
21 | - **Input** — the data entering the process. Read these straight off your DFD. |
||||||
| 22 | - **Process** — the steps or calculations performed on those inputs: in general terms, *how* the input becomes the output. |
|||||||
| 23 | - **Output** — the data the process produces. Also read off your DFD. |
|||||||
|
24 | |||||||
| 25 | --- |
|||||||
| 26 | ||||||||
|
27 | ## Video 1 — What is an IPO chart? |
||||||
|
28 | |||||||
|
29 | **🎯 Watch for:** how every row pairs a piece of input with the processing that acts on it — and how the Process column always describes an *action*, never just a result. |
||||||
|
30 | |||||||
|
31 | {{Video|src=https://www.youtube.com/watch?v=a10a11oxjrA}} |
||||||
| 32 | ||||||||
| 33 | > [!NOTE] |
|||||||
| 34 | > This video is from an AU teacher pitched at NSW HSC Software Design & Development. The IPO concept is identical to VCE — just note the course name is different. |
|||||||
|
35 | |||||||
|
36 | ### Check Your Understanding |
||||||
|
37 | |||||||
|
38 | A login screen has an IPO chart. For each item, decide which column it belongs in — **Input**, **Process**, or **Output**: |
||||||
|
39 | |||||||
|
40 | 1. The username and password typed in by the user. |
||||||
| 41 | >| **Input** — data entering the process. |
|||||||
| 42 | ||||||||
| 43 | 2. Compare the entered password with the stored password and set a valid/invalid flag. |
|||||||
| 44 | >| **Process** — a step performed on the input. |
|||||||
| 45 | ||||||||
| 46 | 3. An "Access granted" or "Access denied" message on the screen. |
|||||||
| 47 | >| **Output** — the result the process produces. |
|||||||
|
48 | |||||||
| 49 | --- |
|||||||
| 50 | ||||||||
|
51 | ## The big idea: from DFD to IPO |
||||||
| 52 | ||||||||
| 53 | Your data flow diagram already did the hard part. **Each process in the DFD becomes its own IPO chart:** |
|||||||
| 54 | ||||||||
| 55 | - the **arrows flowing in** → the Input column |
|||||||
| 56 | - the **process** itself → the Process column (the steps) |
|||||||
| 57 | - the **arrows flowing out** → the Output column |
|||||||
| 58 | ||||||||
| 59 | **🎯 Watch for:** how a single process from a DFD is turned into one IPO chart, with the data flows becoming the Input and Output rows. |
|||||||
| 60 | ||||||||
| 61 | {{Video|src=https://www.youtube.com/watch?v=YMOP0GlWXOY}} |
|||||||
| 62 | ||||||||
| 63 | Here is a DFD for a simple login system: |
|||||||
| 64 | ||||||||
| 65 |  |
|||||||
| 66 | ||||||||
| 67 | Each process in that diagram becomes one IPO chart. Start with the general shape: |
|||||||
| 68 | ||||||||
| 69 | ### (template) Name of the process |
|||||||
|
70 | |||||||
|
71 | | Input | Process | Output | |
||||||
| 72 | | :--- | :--- | :--- | |
|||||||
| 73 | | List the inputs as per the DFD | Explain, in general terms, how the processing/calculations convert the input to the output | List the outputs as per the DFD | |
|||||||
|
74 | |||||||
|
75 | Now the three real processes from the DFD above. |
||||||
| 76 | ||||||||
| 77 | ### DFD process: Get Input |
|||||||
| 78 | ||||||||
| 79 | | Input | Process | Output | |
|||||||
| 80 | | :--- | :--- | :--- | |
|||||||
| 81 | | Two separate strings keyed in by the user. | Prompt the user for their username, then store the response in the `UserName` variable.<br><br>Prompt the user for their password, then store the response in the `UserPassword` variable. | Entered string written to `UserName`.<br><br>Entered string written to `UserPassword`. | |
|||||||
| 82 | ||||||||
| 83 | ### DFD process: Initialise Stored Credentials |
|||||||
| 84 | ||||||||
| 85 | | Input | Process | Output | |
|||||||
| 86 | | :--- | :--- | :--- | |
|||||||
| 87 | | *(none — the values are hardcoded)* | Write the hardcoded value into the `StoredUN` variable.<br><br>Write the hardcoded value into the `StoredPW` variable. | `StoredUN`<br><br>`StoredPW` | |
|||||||
| 88 | ||||||||
| 89 | ### DFD process: Validate User |
|||||||
| 90 | ||||||||
| 91 | | Input | Process | Output | |
|||||||
| 92 | | :--- | :--- | :--- | |
|||||||
| 93 | | `UserName`<br><br>`StoredUN`<br><br>`UserPassword`<br><br>`StoredPW` | Set a `bValid` boolean to False.<br><br>Compare `UserName` with `StoredUN`.<br><br>IF `UserName` = `StoredUN` THEN compare `UserPassword` with `StoredPW`.<br><br>IF those ALSO match THEN set `bValid` to True. | `bValid` | |
|||||||
| 94 | ||||||||
| 95 | The Process column for *Validate User* lists the actual decision steps — not just "check the login". **That** is what scores in the upper bands. |
|||||||
|
96 | |||||||
| 97 | --- |
|||||||
| 98 | ||||||||
|
99 | ## Wrong vs Right |
||||||
|
100 | |||||||
|
101 | The same process, written two ways: |
||||||
| 102 | ||||||||
| 103 | | | Input | Process | Output | |
|||||||
| 104 | |---|---|---|---| |
|||||||
| 105 | | **❌ Wrong** | `UserName`, `StoredUN`, `UserPassword`, `StoredPW` | Check the login | `bValid` | |
|||||||
| 106 | | **✅ Right** | `UserName`, `StoredUN`, `UserPassword`, `StoredPW` | 1. Set `bValid` = False. 2. Compare `UserName` with `StoredUN`. 3. If equal, compare `UserPassword` with `StoredPW`. 4. If both match, set `bValid` = True. | `bValid` | |
|||||||
|
107 | |||||||
|
108 | - "Check the login" just restates the goal — it shows none of the logic. |
||||||
| 109 | - The Right version shows each comparison and decision. A marker can only credit logic that is visible. |
|||||||
|
110 | |||||||
| 111 | --- |
|||||||
| 112 | ||||||||
| 113 | ## Common mistakes |
|||||||
| 114 | ||||||||
| 115 | ### Mistake 1: Process that copies the Output |
|||||||
| 116 | ||||||||
|
117 | > ~~"Work out whether the login is valid."~~ |
||||||
|
118 | |||||||
|
119 | That is the Output column repeated. Replace it with the numbered decision steps. |
||||||
|
120 | |||||||
| 121 | ### Mistake 2: Missing the decision branches |
|||||||
| 122 | ||||||||
|
123 | > ~~"Compare the username and password."~~ |
||||||
|
124 | |||||||
|
125 | If there is an IF in the logic, the steps must show what happens on each branch — set the flag True only when *both* match. |
||||||
|
126 | |||||||
|
127 | ### Mistake 3: Inputs not traced to the DFD |
||||||
|
128 | |||||||
|
129 | Every input in an IPO chart should be a data flow you already drew in your DFD. An input that appears from nowhere is a consistency error the marker will notice. |
||||||
|
130 | |||||||
| 131 | ### Mistake 4: One IPO chart for everything |
|||||||
| 132 | ||||||||
|
133 | Write one chart per process. Each DFD process has its own inputs, logic and outputs — cramming them together makes the Process column vague by design. |
||||||
|
134 | |||||||
| 135 | --- |
|||||||
| 136 | ||||||||
| 137 | ## Check Your Understanding |
|||||||
| 138 | ||||||||
|
139 | 1. Where do the Input and Output columns of an IPO chart come from? |
||||||
| 140 | ||||||||
| 141 | >| From your **DFD** — the data flowing into a process becomes the Input column, and the data flowing out becomes the Output column. The IPO chart details the process in between. |
|||||||
|
142 | |||||||
|
143 | 2. A student writes Process = "display the total price". What is wrong, and how should they fix it? |
||||||
|
144 | |||||||
|
145 | >| "Display the total price" names the output, not the steps. Replace it with the operations: e.g. 1. Retrieve unit price and quantity. 2. Multiply them for the subtotal. 3. Add GST. 4. Display the result. The Process column must show the *how*. |
||||||
|
146 | |||||||
|
147 | --- |
||||||
|
148 | |||||||
|
149 | ## Credits |
||||||
|
150 | |||||||
|
151 | - Login-system DFD — supplied for The Hamilton and Alexandra College SD course. |
||||||
|
152 | |||||||
| 153 | --- |
|||||||
| 154 | ||||||||
| 155 | ## See also |
|||||||
| 156 | ||||||||
|
157 | - [VCAA Pseudocode — Not Python](/sd/C05/VCAA%20Pseudocode%20Not%20Python) — turn each IPO Process column into formal pseudocode |
||||||
|
158 | - [Data Dictionary](/sd/C05/Data%20Dictionary) |
||||||
|
159 | - [Sketch vs Mock-up](/sd/C05/Sketch%20vs%20Mock-up) |
||||||
|
160 | |||||||
| 161 | ← Back to [C05 Home](/sd/C05/C05-home) · [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub) |
|||||||
