Síntese — o algoritmo do UI Quality Score (UQS)
Deriva o índice 0–100 da Koder Stack (UQS) da ciência dos capítulos 01–06: SUM (padroniza→média), SUPR-Q (sub-fatores percentil), ISO 9241-11 (3 pilares) + ISO/IEC 25010 (taxonomia), com tiers AUTO (fórmulas Ngo/WCAG/KLM/Fitts) e JUDGE (heurísticas) e bandas Sauro–Lewis. É a fonte conceitual do stack-RFC-030.
Este capítulo deriva o índice de qualidade de UI da Koder Stack a partir da ciência dos capítulos 01–06. Ele é a ponte entre o conhecimento (compêndio) e a norma (
stack-RFC-030): a RFC ratifica os números; aqui está o porquê de cada escolha estar ancorada em modelos publicados e validados, não em opinião.
1. Princípio de design do índice
Quatro decisões de método, cada uma herdada de um modelo estabelecido (cap. 03–04):
- Padroniza-depois-combina (SUM — Sauro & Kindlund 2005). Cada métrica heterogênea
(segundos, %, Likert, ratio de contraste) é primeiro normalizada a 0–1 contra um *spec limit* (alvo), e só então entra numa média ponderada. É o método publicado de colapsar métricas de usabilidade num escore único — adotamos a mecânica inteira.
- Decompõe em sub-fatores e reporta cada um (SUPR-Q). Nunca colapsar tudo num número
cego: o índice carrega seus sub-escores ao lado do total (a disciplina do SUPR-Q e a correção do defeito do NPS, que joga informação fora). Percentil-norma quando houver base.
- Garante ≥1 canal por pilar ISO 9241-11. Efetividade · Eficiência · Satisfação — mais
um pilar de Qualidade-visualConfiança (ISOIEC 25010 Interaction Capability + *UI aesthetics* + Accessibility). Isso impede gaming de uma dimensão só.
- Dois tiers de medição. AUTO (determinístico, headless — fórmulas dos cap. 010405/06)
e JUDGE (IA contra a spec — heurísticas do cap. 02). Espelha a dupla
architecture-quality.kmd(rubrica) +/k-arch(juízo) que a Stack já usa.
2. Estrutura: pilares → dimensões → tier
Pesos de pilar no perfil base screen (perfis reponderam — §4). Cada dimensão é 0–100.
| Pilar (ISO 9241-11 / 25010) | Dimensão | Tier | Fonte (cap.) | Peso base |
|---|---|---|---|---|
| Efetividade | Sucesso de tarefa (KLM-derivável / telemetria) | AUTO/BEHAV | 05 (GOMS), 03 (ISO) | 0.18 |
| Efetividade | Gulf-of-Execution coverage (ação→controle visível) | AUTO | 05 (Norman) | 0.07 |
| Eficiência | Tempo previsto (KLM) + Fitts/Hick por ação primária | AUTO/predictive | 05, 01 | 0.15 |
| Eficiência | Economia de passos/escolhas (Occam, Hick, Miller) | AUTO | 01 | 0.07 |
| Satisfação | Usabilidade percebida (UMUX-LITE→SUS, ou SUS) | SURVEY | 03 | 0.13 |
| Satisfação | SEQ por tarefa (quando houver) | SURVEY | 03 | 0.05 |
| Visual / 25010 | Estética computacional (Ngo OM + grid 8pt + escala tipográfica) | AUTO | 04 | 0.12 |
| Visual / 25010 | Hierarquia & salience (Von Restorff: 1 CTA isolado) | AUTO | 01, 04 | 0.05 |
| A11y / 25010 | Acessibilidade AUTO (18 checagens WCAG 2.2) | AUTO | 06 | 0.13 |
| Confiança/Heurística | Heurísticas Nielsen/Shneiderman (JUDGE) | JUDGE | 02 | — (gate+modulador, §5) |
Os pesos acima são seed (defaults HCI). A ratificação re-deriva por PCA/factor loadings sobre ~10 surfaces reais — exatamente como o SUM achou que seus 4 inputs contribuem ~igualmente (cap. 03). Até lá, valem os seeds.
3. Fórmula
3.1 Normalização de cada dimensão (0–1)
- Dimensão AUTO contínua (tempo, contraste, densidade): z contra spec-limit → CDF normal,
ou a curva exponencial do Brand score
e^(−k·penalty)quando o sinal é penalty-acumulável.norm = Φ((spec − valor)/σ)(SUM) ounorm = e^(−k·penalty_normalizada)(Brand score). - Dimensão AUTO de taxa (defeitoserros, % checagens a11y passando): `norm = passaaplicável`
(Six-Sigma "proportion-meeting-spec", cap. 03).
- Dimensão SURVEY: já em 0–100 → /100. UMUX-LITE usa a regressão
SUS≈0.65·x+22.9(cap. 03)pra cair na mesma escala do SUS.
- Dimensão JUDGE:
pass=100 · partial=60 · violated=20, média dos critérios aplicáveis(cap. 02), mapeada a severidade Nielsen 0–4 pra ponderar.
3.2 Composição
pilar_p = Σ_d (w_d · dim_d) / Σ_d w_d # média ponderada das dimensões do pilar
UQS_bruto = 100 · Σ_p (W_p · pilar_p) / Σ_p W_p # média ponderada dos pilares (perfil ativo)
UQS = aplica_gates(UQS_bruto) # §53.3 Estética computacional (a dimensão Visual AUTO, detalhe)
O sub-escore visual combina (cap. 04), cada termo 0–1:
Visual = 0.45·Ngo_OM # média das 14 medidas de Ngo (balance, symmetry, density 0.5-ótima, simplicity, economy…)
+ 0.25·disciplina # média de [aderência grid-8pt, aderência escala-tipográfica, ritmo vertical]
+ 0.15·(1 − clutter) # Rosenholtz feature-congestion/subband-entropy normalizado
+ 0.15·colorfulness_fit # Hasler–Süsstrunk com ótimo-médio (penaliza drab E caótico)(O contraste não entra aqui — é gate de A11y, §5, pra não ser "diluído" numa média.)
4. Perfis por tipo de surface (reponderação)
Mesmo motor, pesos de pilar diferentes (cap. 04 §aesthetic-usability justifica peso visual):
| Perfil | Efetiv. | Efic. | Satisf. | Visual | A11y |
|---|---|---|---|---|---|
| screen | 0.25 | 0.22 | 0.18 | 0.17 | 0.18 |
| form | 0.22 | 0.20 | 0.18 | 0.10 | 0.30 |
| icon | 0.05 | 0.05 | 0.05 | 0.75 | 0.10 |
| layout | 0.20 | 0.18 | 0.10 | 0.37 | 0.15 |
| landing | 0.15 | 0.12 | 0.20 | 0.38 | 0.15 |
icon≈ tudo-visual: ali okicon validate(R1–R7) e a estética computacional dominam;formcarrega A11y + estados (cap. 02 H5/H9, cap. 06). Pesos seed — calibrar.
5. Gates duros (capam ou reprovam — não se diluem)
Herdados das normas já vigentes (cap. 06 + Verge R8 + icons):
- G-AA contraste: qualquer par < WCAG 2.1 AA (4.5:1 / 3:1) → dimensão A11y perde o item e
UQS capa em ≤ 59 (Fair). (Verge R8 já é gate CI; o UQS o reflete, não o substitui.)
- G-ICON:
kicon validateFAIL em R1–R7 → Visual perde V5 e UQS ≤ 59. - G-severidade-4: qualquer achado JUDGE com severidade Nielsen 4 (catástrofe) → cap ≤ 59
até resolver (cap. 02, escala de severidade).
- G-Doherty (opcional, quando há telemetria): INP > 1s sustentado → penalty dura em Eficiência
(cap. 01, limiar 400ms1s10s).
6. Bandas de rating (Sauro–Lewis, verbatim)
Reusa a curva A–F do SUS (cap. 03) — familiaridade instantânea, sem inventar escala:
| UQS | Banda | Leitura |
|---|---|---|
| 90–100 | A+/A | top decil |
| 80–89 | A−/B+ | excelente |
| 68–79 | B/C+ | acima da média (68 = média/âncora neutra do SUS) |
| 51–67 | C/D | abaixo da média — priorizar conserto |
| 0–50 | F | reprovado |
7. Por que NÃO um juiz-IA puro, nem um survey puro
- Survey puro (SUS/NPS): precisa de humanos, não escala por-surface-por-release, e o NPS
ainda joga informação fora (cap. 03). Vira só o canal Satisfação, não o todo.
- Juiz-IA puro (
/k-meta-judge): qualitativo, não dá baseline/trend nem comparabilidade.Vira o tier JUDGE, não o índice. (cap. 02)
- Híbrido AUTO+JUDGE+SURVEY é o que a literatura (SUM, HEART, SUPR-Q) faz e o que a Stack
já pratica em arquitetura — daí o UQS.
8. Implementação (resumo — detalhe em stack-RFC-030 §9 + meta#387)
tools/ui-score— motor AUTO headless: contraste (reusaverge-contrast-audit),geometria Ngogridalinhamento, escala tipográfica, KLM/Fitts sobre o task-flow, 18 checagens a11y (axe-core-style). Emite as dimensões AUTO + sub-escores.
- Adapter JUDGE — orquestra
/k-meta-judgeresolvendo surface→spec porspec-triggers.kmd. - Canal SURVEY — UMUX-LITE (2 perguntas) micro-survey por release; opcional.
- Composição + perfis + gates + bandas → o número + relatório JSON.
/k-ui-score <surface>(read-only, irmão do/k-arch).- Validação empírica: pontuar o cockpit do Triage antes/depois do
TRIAGE-026— o índicetem que subir com as fatias de polish. Se não subir, o modelo está errado, não a UI.
9. Fontes-âncora (detalhe e URLs nos capítulos 01–06)
SUM (Sauro & Kindlund 2005) · SUPR-Q (Sauro) · SUS (Brooke; Sauro–Lewis curva) · UMUX-LITE (Lewis et al.) · HEARTGSM (Rodden et al., Google) · ISO 9241-11 · ISOIEC 25010 · Ngo, Teo & Byrne 2003 · WCAG 2.2 (W3C) · APCA (Myndex) · GOMS/KLM (Card, Moran & Newell) · Fitts 1954 · Hick–Hyman · Nielsen 10 heuristics · Norman DOET · Tractinsky (aesthetic-usability).