code wiki / _hdl_build / nx_ux_study.nx
nx_ux_study.nx
buildroot/runtime/_hdl_build/nx_ux_study.nx
about
nx_ux_study.nx -- the Nielsen Norman Group "Usability Testing 101" method encoded as a sovereign DATA
STRUCTURE + an HONEST scoring engine. This is the anti-navel-gazing spine the operator asked for: it
turns "is the feature PRESENT?" (a sticker) into "can a representative user complete a realistic TASK,
and how SEVERE are the findings?" (rigor). A study cannot grade PASS if any task FAILED or any finding
is major-or-worse -- feature presence is irrelevant to the grade.
GROUNDING (rule 4): the method is NN/g's Usability (User) Testing 101 by Kate Moran
(nngroup.com/articles/usability-testing-101, pub 2019-12-01; title/author/description verbatim-captured
this session). The three components (facilitator, tasks, participant), the quantitative metrics
(task success rate, time-on-task, error rate), the 10 Nielsen heuristics, and the 0..4 severity scale
are the canonical, stable NN/g framework. license_tier: ORIGINAL
dependencies 1 imports · 1 importers
imports: nx_syscalls.nx
imported by: nx_ux_study_gate.nx
structs
| 41 | struct UxTask |
| 51 | struct UxFinding |
| 60 | struct UxStudy |
consts
| 15 | const UX_TASK_BYTES: i64 = 48 // 6 i64/ptr fields |
| 16 | const UX_FINDING_BYTES: i64 = 40 // 5 i64/ptr fields |
| 17 | const UX_STUDY_BYTES: i64 = 72 // 9 i64/ptr fields |
| 20 | const UX_FAIL: i64 = 0 |
| 21 | const UX_PARTIAL: i64 = 1 |
| 22 | const UX_SUCCESS: i64 = 2 |
| 26 | const UX_SEV_MINOR: i64 = 2 |
| 27 | const UX_SEV_MAJOR: i64 = 3 |
| 30 | const UX_GRADE_FAIL: i64 = 0 |
| 31 | const UX_GRADE_COND: i64 = 1 // conditional: usable but defects remain |
| 32 | const UX_GRADE_PASS: i64 = 2 |
| 35 | const UX_SURF_NISHI_DESKTOP: i64 = 0 |
| 36 | const UX_SURF_NISHI_MOBILE: i64 = 1 |
| 37 | const UX_SURF_CHROME_DESKTOP: i64 = 2 |
| 38 | const UX_SURF_CHROME_MOBILE: i64 = 3 |
functions
| 73 | func ux_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } called by 8: ux_heuristic_nameux_print_outcomeux_print_severityux_print_surfaceux_print_gradeux_report+2 calls 1: sys_write |
| 74 | func ux_n(v: i64) -> i64 |
| 89 | func ux_task(s: *UxStudy, i: i64) -> *UxTask |
| 92 | func ux_finding(s: *UxStudy, i: i64) -> *UxFinding |
| 97 | func ux_set_task(s: *UxStudy, i: i64, desc: *u8, crit: *u8, outcome: i64, tf: i64, ne: i64) -> i64 |
| 107 | func ux_set_finding(s: *UxStudy, i: i64, h: i64, sev: i64, desc: *u8, ev: i64, rec: *u8) -> i64 |
| 118 | func ux_heuristic_name(id: i64) -> i64 |
| 135 | func ux_task_success_rate(s: *UxStudy) -> i64 |
| 146 | func ux_any_task_fail(s: *UxStudy) -> i64 |
| 155 | func ux_max_severity(s: *UxStudy) -> i64 |
| 165 | func ux_count_severity(s: *UxStudy, lvl: i64) -> i64 |
| 175 | func ux_total_errors(s: *UxStudy) -> i64 |
| 190 | func ux_grade(s: *UxStudy) -> i64 |
| 199 | func ux_print_outcome(o: i64) -> i64 |
| 204 | func ux_print_severity(sv: i64) -> i64 |
| 211 | func ux_print_surface(sf: i64) -> i64 |
| 218 | func ux_print_grade(g: i64) -> i64 |
| 225 | func ux_report(s: *UxStudy) -> i64 |