|
1 | 1 | # Nielsen Heuristic Evaluation Checklist — Distributed Mutual Exclusion Explorer |
2 | 2 |
|
3 | 3 | **Artefact:** Distributed Mutual Exclusion Explorer |
4 | | -**Version:** v0.2 (Token Ring + token loss + crash/recovery) |
5 | | -**Evaluator:** (self) |
6 | | -**Date:** (fill in) |
7 | | -**Environment:** (browser/OS/device, fill in) |
| 4 | +**Version:** v0.3.2 (Token Ring + Ricart–Agrawala; faults: token loss, crash/recover, message loss; evidence export) |
| 5 | +**Evaluator:** Self (developer) |
| 6 | +**Date:** 2026-02-06 |
| 7 | +**Environment:** Browser/OS/device (fill in) |
| 8 | + |
| 9 | +--- |
8 | 10 |
|
9 | 11 | ## Scope |
10 | | -This checklist covers the Token Ring explorer UI: |
11 | | -- Configuration (algorithm, process count) |
12 | | -- Controls (step/run/pause/reset; token loss/regeneration) |
| 12 | + |
| 13 | +This checklist covers the **end-to-end UI** for the Distributed Mutual Exclusion Explorer, including: |
| 14 | + |
| 15 | +- Configuration (algorithm selection, process count, apply/reset) |
| 16 | +- Core controls (step/run/pause/reset; speed) |
13 | 17 | - Per-process actions (request/release; crash/recover) |
14 | | -- Trace panel and safety indicator |
| 18 | +- Trace panel and safety indicator (mutual exclusion invariant) |
15 | 19 | - Preview canvas and PNG export |
16 | | -- JSON export/import and scripted scenario loading |
| 20 | +- Evidence export (state JSON + trace TXT + preview PNG) |
| 21 | +- JSON import/export and scripted scenario loading (Token Ring + RA demos) |
| 22 | +- **Ricart–Agrawala (RA)** network/message UI: |
| 23 | + - Message queue table |
| 24 | + - Message-fault controls (drop-next-send; drop-next-in-flight message) |
| 25 | + - Stalled-state explanation in trace (“waiting for REPLY from …”) |
| 26 | + |
| 27 | +--- |
17 | 28 |
|
18 | 29 | ## Evidence |
19 | | -Add screenshots to `report/figures/` and reference them here: |
20 | | -- `report/figures/mutex_v0.2_overview.png` (main UI) |
21 | | -- `report/figures/mutex_v0.2_crash.png` (crash state) |
22 | | -- `report/figures/mutex_v0.2_token_lost.png` (token lost warning) |
23 | | -- `report/figures/mutex_v0.2_script_mode.png` (script replay) |
| 30 | + |
| 31 | +Add screenshots to `report/figures/` and reference them here. |
| 32 | + |
| 33 | +Recommended set for v0.3.2 (curated report figures): |
| 34 | +- `report/figures/fig_tr_token_lost.png` (Token Ring: token lost / recovery context) |
| 35 | +- `report/figures/fig_tr_crash_recover.png` (Token Ring: crash/recover state) |
| 36 | +- `report/figures/fig_ra_tiebreak.png` (RA: tie-break example, scripted) |
| 37 | +- `report/figures/fig_ra_drop_inflight_stall.png` (RA: drop next in-flight message → stall) |
| 38 | +- `report/figures/fig_ra_drop_next_send_stall.png` (RA: drop-next-send → stall) |
| 39 | +- `report/figures/fig_ui_overview.png` |
| 40 | + |
| 41 | +--- |
| 42 | + |
| 43 | +## Severity scale (Nielsen-style) |
| 44 | + |
| 45 | +Use the following optional severity scale to prioritise changes: |
| 46 | + |
| 47 | +- **0 — Cosmetic:** does not need fixing unless time permits |
| 48 | +- **1 — Minor:** low priority; small improvement |
| 49 | +- **2 — Moderate:** important; should be fixed |
| 50 | +- **3 — Major:** high priority; significantly impacts usability |
| 51 | +- **4 — Critical:** usability catastrophe; must fix |
| 52 | + |
| 53 | +--- |
| 54 | + |
| 55 | +## Notes on evaluation method (limitations) |
| 56 | + |
| 57 | +- Single evaluator and also the developer; potential bias. |
| 58 | +- Focus is on **teaching clarity and demo repeatability**, not production-grade UX. |
| 59 | +- If time permits, a short peer review (1–2 students) would strengthen validity. |
24 | 60 |
|
25 | 61 | --- |
26 | 62 |
|
27 | 63 | ## (1) Visibility of system status |
28 | | -**What to check:** Users can quickly see current state and what happened. |
29 | 64 |
|
30 | | -- Current status indicators: |
31 | | - - Trace panel shows step-by-step events |
32 | | - - “Safety” label shows invariant status |
33 | | - - Preview labels show token holder and current CS owner |
34 | | - - Mode pill shows interactive vs script |
| 65 | +**What to check:** Users can quickly see the current state and understand what just happened. |
| 66 | + |
| 67 | +**Findings (v0.3.2):** |
| 68 | +- Trace panel provides step-by-step events and warnings. |
| 69 | +- Safety label indicates whether the mutual exclusion invariant holds. |
| 70 | +- Preview canvas labels critical section owner; Token Ring also shows token holder. |
| 71 | +- Mode pill indicates `interactive` vs `script`. |
35 | 72 |
|
36 | 73 | **Issues / actions:** |
37 | | -- (If needed) Make script mode more obvious (e.g., disable manual actions already done; ensure the mode pill is prominent). |
38 | | -- (If needed) Add a compact “Outstanding requests” summary near the controls. |
| 74 | +- **Issue (S1):** During stalls, the primary indicator is in the trace; some users may miss it. |
| 75 | + - **Action:** Consider a small “Status” line near controls that mirrors the latest stall reason (optional post-freeze improvement). |
39 | 76 |
|
40 | 77 | **Evidence:** (add screenshot references) |
41 | 78 |
|
42 | 79 | --- |
43 | 80 |
|
44 | 81 | ## (2) Match between system and the real world |
45 | | -**What to check:** Terminology and behaviour match the mental model of mutual exclusion. |
46 | 82 |
|
47 | | -- Uses domain terms: token, critical section, request/release, crash/recover. |
| 83 | +**What to check:** Terminology and behaviours match mutual exclusion concepts used in lectures/books. |
| 84 | + |
| 85 | +**Findings (v0.3.2):** |
| 86 | +- Uses domain terms: token, critical section, request/release, crash/recover, message loss. |
| 87 | +- RA fault demos naturally illustrate “safety vs liveness” trade-off. |
48 | 88 |
|
49 | 89 | **Issues / actions:** |
50 | | -- Add a short help text or tooltip describing Token Ring at a high level (one paragraph). |
51 | | -- Ensure fault controls use clear language (e.g., “Drop token” vs “Token lost”). |
| 90 | +- **Issue (S2):** New learners may not know the difference between Token Ring and RA at first glance. |
| 91 | + - **Action:** Add a short algorithm description panel (1 paragraph each) and “What to observe” bullets (optional post-freeze). |
52 | 92 |
|
53 | 93 | **Evidence:** (add screenshot references) |
54 | 94 |
|
55 | 95 | --- |
56 | 96 |
|
57 | 97 | ## (3) User control and freedom |
58 | | -**What to check:** Users can undo or recover from unwanted actions. |
59 | 98 |
|
60 | | -- Reset, Clear trace, Exit script mode are available. |
61 | | -- Crash has a corresponding Recover; token loss has Regenerate token. |
| 99 | +**What to check:** Users can recover from mistakes and stop unwanted actions. |
| 100 | + |
| 101 | +**Findings (v0.3.2):** |
| 102 | +- Reset, Clear trace, and Exit script mode are available. |
| 103 | +- Fault recovery actions exist (Regenerate token; Recover process). |
62 | 104 |
|
63 | 105 | **Issues / actions:** |
64 | | -- Consider adding a confirmation for Reset if it is easy to click accidentally. |
65 | | -- Optional: add simple Undo for interactive actions (nice-to-have). |
| 106 | +- **Issue (S1):** Reset can discard state without confirmation. |
| 107 | + - **Action:** Optional confirmation dialog (“Reset simulation?”) or an “Are you sure?” for destructive actions (post-freeze). |
66 | 108 |
|
67 | 109 | **Evidence:** (add screenshot references) |
68 | 110 |
|
69 | 111 | --- |
70 | 112 |
|
71 | 113 | ## (4) Consistency and standards |
72 | | -**What to check:** Consistent labels, button placement, interaction patterns. |
73 | 114 |
|
74 | | -- Buttons use consistent verb phrases (“Request CS”, “Release CS”, “Crash”, “Recover”). |
75 | | -- Similar controls grouped in fieldsets. |
| 115 | +**What to check:** Consistent naming, layout, and interaction patterns. |
| 116 | + |
| 117 | +**Findings (v0.3.2):** |
| 118 | +- Per-process action verbs are consistent (Request CS, Release CS, Crash, Recover). |
| 119 | +- Controls are grouped logically (configuration, run controls, fault controls, export controls). |
76 | 120 |
|
77 | 121 | **Issues / actions:** |
78 | | -- Ensure naming is consistent across UI and trace (e.g., “critical section” vs “CS”). |
79 | | -- Ensure scripted/interactive buttons are clearly labelled. |
| 122 | +- **Issue (S1):** Terminology may vary between “CS” and “critical section” across UI/trace. |
| 123 | + - **Action:** Standardise wording across trace/UI and documentation. |
80 | 124 |
|
81 | 125 | **Evidence:** (add screenshot references) |
82 | 126 |
|
83 | 127 | --- |
84 | 128 |
|
85 | 129 | ## (5) Error prevention |
86 | | -**What to check:** Prevent invalid operations instead of only reporting errors. |
87 | 130 |
|
88 | | -- Disables actions when not applicable (e.g., Release disabled unless in CS; Crash disabled if already crashed). |
| 131 | +**What to check:** Invalid operations are prevented rather than only reported. |
| 132 | + |
| 133 | +**Findings (v0.3.2):** |
| 134 | +- Buttons are disabled when actions do not apply (e.g., Release only when in CS; Recover only when crashed). |
| 135 | +- RA “Drop next in-flight message” should be disabled when the queue is empty. |
| 136 | +- Script mode limits manual interference (exit script mode returns to interactive). |
89 | 137 |
|
90 | 138 | **Issues / actions:** |
91 | | -- Ensure actions are disabled in script mode to avoid mixed semantics (already covered by logic). |
92 | | -- Consider preventing “Regenerate token” when no processes are alive (edge case). |
| 139 | +- **Issue (S1):** Some edge cases may still allow confusing sequences (e.g., repeated exports without clearing trace). |
| 140 | + - **Action:** Optional small UI hints (e.g., toast “Exported evidence snapshot”)—post-freeze. |
93 | 141 |
|
94 | 142 | **Evidence:** (add screenshot references) |
95 | 143 |
|
96 | 144 | --- |
97 | 145 |
|
98 | 146 | ## (6) Recognition rather than recall |
99 | | -**What to check:** Users should not have to remember state between screens. |
100 | 147 |
|
101 | | -- Per-process table shows status and token presence. |
102 | | -- Preview shows token marker and CS owner. |
| 148 | +**What to check:** Users can read state directly; do not need to remember it. |
| 149 | + |
| 150 | +**Findings (v0.3.2):** |
| 151 | +- Process table shows per-process status and token presence (Token Ring). |
| 152 | +- Message queue table shows message IDs/type/from/to/ts (RA). |
| 153 | +- Preview provides a compact summary for quick demos. |
103 | 154 |
|
104 | 155 | **Issues / actions:** |
105 | | -- Consider adding a small “legend” (e.g., R marker, token dot, CS double-circle, crash X). |
| 156 | +- **Issue (S1):** Symbol meanings (token dot / request marker / crash cross / CS double circle) may require explanation. |
| 157 | + - **Action:** Add a small legend (3–5 lines) near the preview or below it. |
106 | 158 |
|
107 | 159 | **Evidence:** (add screenshot references) |
108 | 160 |
|
109 | 161 | --- |
110 | 162 |
|
111 | 163 | ## (7) Flexibility and efficiency of use |
112 | | -**What to check:** Efficient for repeated use and demos. |
113 | 164 |
|
| 165 | +**What to check:** Efficient for repeated demos and fast iteration. |
| 166 | + |
| 167 | +**Findings (v0.3.2):** |
114 | 168 | - Run mode supports automatic playback with adjustable speed. |
115 | | -- Scripted demos support repeatable teaching examples. |
| 169 | +- Scripted demos support repeatable scenarios (Token Ring crash demo; RA tie-break demo). |
116 | 170 |
|
117 | 171 | **Issues / actions:** |
118 | | -- Add keyboard shortcuts for Step/Run/Reset (optional). |
119 | | -- Add a one-click “Load crash demo” button (implemented in v0.2 update if included). |
| 172 | +- **Issue (S1):** No keyboard shortcuts; step-through demos rely on mouse clicks. |
| 173 | + - **Action:** Optional shortcuts (Step/Run/Reset; Ctrl+Enter etc.) post-freeze. |
120 | 174 |
|
121 | 175 | **Evidence:** (add screenshot references) |
122 | 176 |
|
123 | 177 | --- |
124 | 178 |
|
125 | 179 | ## (8) Aesthetic and minimalist design |
126 | | -**What to check:** Not cluttered; information is relevant. |
127 | 180 |
|
128 | | -- Layout is clean and grouped. |
129 | | -- Trace is contained in a scrollable panel. |
| 181 | +**What to check:** Interface is not cluttered; information is relevant. |
| 182 | + |
| 183 | +**Findings (v0.3.2):** |
| 184 | +- Clear grouping of panels: controls, tables, trace, preview. |
| 185 | +- Trace is contained and scrollable. |
130 | 186 |
|
131 | 187 | **Issues / actions:** |
132 | | -- If the process count is high, the table and preview may feel crowded; consider soft limits or UI scaling. |
133 | | -- Consider collapsing advanced controls (faults/export) behind a toggle (optional). |
| 188 | +- **Issue (S1):** With many controls (especially RA faults + exports), the control area can feel dense. |
| 189 | + - **Action:** Optional “Advanced” toggle for fault/export controls post-freeze. |
134 | 190 |
|
135 | 191 | **Evidence:** (add screenshot references) |
136 | 192 |
|
137 | 193 | --- |
138 | 194 |
|
139 | 195 | ## (9) Help users recognize, diagnose, and recover from errors |
140 | | -**What to check:** Warnings are clear and recovery is obvious. |
141 | 196 |
|
142 | | -- Warnings appear in trace (token lost; crash). |
143 | | -- Recovery actions exist (Recover; Regenerate token). |
| 197 | +**What to check:** When things go wrong (fault injection), the UI explains what happened and what recovery is possible. |
| 198 | + |
| 199 | +**Findings (v0.3.2):** |
| 200 | +- Token Ring: token loss produces “no progress” trace lines and recovery via “Regenerate token”. |
| 201 | +- RA: stall states can be explained with explicit trace messages (e.g., waiting for a missing REPLY due to message loss). |
144 | 202 |
|
145 | 203 | **Issues / actions:** |
146 | | -- When stalled (e.g., token lost), consider a more prominent UI prompt such as “No progress: token lost — regenerate token”. |
147 | | -- Consider highlighting the crashed token holder in the table when token is lost due to crash. |
| 204 | +- **Issue (S1):** Recovery hints are primarily in the trace. |
| 205 | + - **Action:** Optional UI prompt banner (“No progress — token lost. Use Regenerate token.”) post-freeze. |
148 | 206 |
|
149 | 207 | **Evidence:** (add screenshot references) |
150 | 208 |
|
151 | 209 | --- |
152 | 210 |
|
153 | 211 | ## (10) Help and documentation |
154 | | -**What to check:** Minimal, focused help is available. |
| 212 | + |
| 213 | +**What to check:** Minimal help is available without leaving the tool. |
| 214 | + |
| 215 | +**Findings (v0.3.2):** |
| 216 | +- README provides setup and usage instructions (outside the UI). |
155 | 217 |
|
156 | 218 | **Issues / actions:** |
157 | | -- Add a short “How to use” section (3–6 bullets) and a brief Token Ring explanation. |
158 | | -- Add a small “What to observe” section (mutual exclusion safety, progress, effect of faults). |
| 219 | +- **Issue (S2):** In-app help is minimal. |
| 220 | + - **Action:** Add a short “How to use” panel (3–6 bullets) and “What to observe” section (safety vs liveness) post-freeze. |
159 | 221 |
|
160 | 222 | **Evidence:** (add screenshot references) |
161 | 223 |
|
162 | 224 | --- |
163 | 225 |
|
164 | | -## Summary of key actions for next iteration |
165 | | -- Add concise help text/legend for symbols and concepts. |
166 | | -- Improve stalled-state guidance (token lost / crash in CS). |
167 | | -- Extend evaluation evidence with updated screenshots and scripted crash demo trace captures. |
| 226 | +## Summary of key actions (post-v0.3.2 improvements) |
| 227 | + |
| 228 | +- Add a small legend for preview symbols (token, request, crash, CS). |
| 229 | +- Add concise algorithm help text (Token Ring vs RA) and “what to observe” guidance. |
| 230 | +- Optional: make stall reasons visible beyond the trace (status line / banner). |
| 231 | +- Optional: keyboard shortcuts for Step/Run/Reset. |
| 232 | +- Refresh evidence links in this checklist and keep curated figures in `report/figures/`. |
| 233 | + |
0 commit comments