Skip to content

Commit 4508c1a

Browse files
committed
docs: align evaluation docs and curate report figures for v0.3.2 evidence
1 parent 2c61cf7 commit 4508c1a

49 files changed

Lines changed: 1137 additions & 138 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

eval/nielsen_checklist.md

Lines changed: 131 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,167 +1,233 @@
11
# Nielsen Heuristic Evaluation Checklist — Distributed Mutual Exclusion Explorer
22

33
**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+
---
810

911
## 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)
1317
- Per-process actions (request/release; crash/recover)
14-
- Trace panel and safety indicator
18+
- Trace panel and safety indicator (mutual exclusion invariant)
1519
- 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+
---
1728

1829
## 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.
2460

2561
---
2662

2763
## (1) Visibility of system status
28-
**What to check:** Users can quickly see current state and what happened.
2964

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`.
3572

3673
**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).
3976

4077
**Evidence:** (add screenshot references)
4178

4279
---
4380

4481
## (2) Match between system and the real world
45-
**What to check:** Terminology and behaviour match the mental model of mutual exclusion.
4682

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.
4888

4989
**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).
5292

5393
**Evidence:** (add screenshot references)
5494

5595
---
5696

5797
## (3) User control and freedom
58-
**What to check:** Users can undo or recover from unwanted actions.
5998

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).
62104

63105
**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).
66108

67109
**Evidence:** (add screenshot references)
68110

69111
---
70112

71113
## (4) Consistency and standards
72-
**What to check:** Consistent labels, button placement, interaction patterns.
73114

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).
76120

77121
**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.
80124

81125
**Evidence:** (add screenshot references)
82126

83127
---
84128

85129
## (5) Error prevention
86-
**What to check:** Prevent invalid operations instead of only reporting errors.
87130

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).
89137

90138
**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.
93141

94142
**Evidence:** (add screenshot references)
95143

96144
---
97145

98146
## (6) Recognition rather than recall
99-
**What to check:** Users should not have to remember state between screens.
100147

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.
103154

104155
**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.
106158

107159
**Evidence:** (add screenshot references)
108160

109161
---
110162

111163
## (7) Flexibility and efficiency of use
112-
**What to check:** Efficient for repeated use and demos.
113164

165+
**What to check:** Efficient for repeated demos and fast iteration.
166+
167+
**Findings (v0.3.2):**
114168
- 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).
116170

117171
**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.
120174

121175
**Evidence:** (add screenshot references)
122176

123177
---
124178

125179
## (8) Aesthetic and minimalist design
126-
**What to check:** Not cluttered; information is relevant.
127180

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.
130186

131187
**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.
134190

135191
**Evidence:** (add screenshot references)
136192

137193
---
138194

139195
## (9) Help users recognize, diagnose, and recover from errors
140-
**What to check:** Warnings are clear and recovery is obvious.
141196

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).
144202

145203
**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.
148206

149207
**Evidence:** (add screenshot references)
150208

151209
---
152210

153211
## (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).
155217

156218
**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.
159221

160222
**Evidence:** (add screenshot references)
161223

162224
---
163225

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+

eval/test_plan.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ It is designed to support:
1414

1515
- Browser: Chrome / Edge latest (desktop).
1616
- Local server: `python -m http.server 5500` (or VS Code Live Server).
17-
- URL: `http://localhost:5500/ds-mutex/index.html`
17+
- URL: `http://localhost:5500/`
1818
- Run speed: 350ms (default) unless stated.
1919

2020
---

0 commit comments

Comments
 (0)