Capítulo 5 — Projeto e piloto
Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX027.
flowchart TD
N0["5.1 Finalidade do piloto"]
N1["5.2 O laboratório de duplicatas"]
N2["5.3 Tempos de correção"]
N3["5.4 Refinando o projeto"]
N4["Laboratório — Endereços duplicados antes e depois da"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX027"]
Desenho lógico
flowchart LR
N0["5.1 Finalidade do piloto"]
N1["5.2 O laboratório de duplicatas"]
N2["5.3 Tempos de correção"]
N3["5.4 Refinando o projeto"]
N4["Laboratório — Endereços duplicados antes e depois da"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX027"]
[5.1 Finalidade do piloto]
|
v
[5.2 O laboratório de duplicatas]
|
v
[5.3 Tempos de correção]
|
v
[5.4 Refinando o projeto]
|
v
[Laboratório — Endereços duplicados antes e depois da]
|
v
[Exemplo resolvido] --> [Exercício EX027]
Objetivos de aprendizagem
Você vai (1) testar em piloto a medição de duplicatas e de tempos de correção; (2) normalizar dados de endereço; (3) refinar o projeto com as lições do piloto.
5.1 Finalidade do piloto
Antes da coleta principal, Tomás testa suas medições em uma réplica sintética dos cadastros de endereços. Ele quer saber se as duplicatas podem ser contadas de forma confiável, se os tempos de correção podem ser extraídos dos registros de chamados e quanto tempo leva cada etapa. Um piloto não serve para responder à pergunta de pesquisa; ele testa se os métodos funcionam. A Dra. Solberg lembra que problemas encontrados em um piloto custam pouco, enquanto os mesmos problemas encontrados durante o estudo principal podem custar meses.
5.2 O laboratório de duplicatas
O laboratório do piloto gera 3.305 registros sintéticos de endereço, nos quais um segundo departamento às vezes digita o mesmo endereço com abreviações, espaços extras e letras maiúsculas diferentes. A correspondência exata não encontra nenhuma duplicata, porque não há duas cadeias de texto idênticas. Depois da normalização — que converte o texto para minúsculas, expande abreviações como St e Rd e reduz espaços repetidos —, aparecem 384 duplicatas, 11,6% dos registros. O resultado mostra que qualquer medida de duplicidade depende fortemente das regras de normalização escolhidas, que são, elas mesmas, uma decisão de governança. As regras de abreviação decidem o que conta como o mesmo endereço.
5.3 Tempos de correção
Os registros de chamados indicam quando um erro foi notificado e quando o chamado foi encerrado, mas o encerramento nem sempre significa que o endereço mudou em todos os sistemas. Na réplica, alguns chamados são encerrados quando o departamento que notificou corrige a própria cópia, enquanto os outros departamentos continuam com o dado errado. Tomás redefine o desfecho como os dias até que o endereço corrigido apareça nos cinco sistemas, o que corresponde à experiência dos moradores. A ênfase da ISO 8000-1 em requisitos o ajuda a justificar a mudança: o requisito é um endereço correto em toda parte, não um chamado encerrado.
5.4 Refinando o projeto
Com base no piloto, Tomás atualiza o projeto: a contagem de duplicatas usará regras de normalização documentadas e acordadas com os curadores, o tempo de correção será medido até o último sistema atualizado e a extração de dados levará duas semanas, e não uma. Ele registra as mudanças e seus motivos no diário de decisões antes de coletar os dados reais de desfecho, para que as mudanças não possam ser acusadas de perseguir resultados. A Dra. Solberg aprova e observa que o piloto já produziu um achado sobre como as definições moldam a qualidade medida.
Laboratório — Endereços duplicados antes e depois da normalização
"""Find duplicate address records before and after normalisation in a synthetic council register (stdlib only)."""
import random, re, collections
random.seed(12)
streets = ["High Street", "Mill Lane", "Church Road", "Station Road", "Park Avenue", "Kings Way"]
base = [(random.randint(1, 120), random.choice(streets), f"AR{random.randint(1,9)} {random.randint(1,9)}QX") for _ in range(3000)]
base = list(dict.fromkeys(base))
recs = []
for n, s, p in base:
recs.append(f"{n} {s}, {p}")
if random.random() < 0.12: # a second department keys the same address differently
v = s.replace("Street", "St").replace("Road", "Rd").replace("Avenue", "Ave")
recs.append(f"{n} {v.upper()},{p.lower()}")
def norm(a):
a = a.lower().replace(",", " ")
for k, v in {" st ": " street ", " rd ": " road ", " ave ": " avenue "}.items():
a = (" " + a + " ").replace(k, v).strip()
return re.sub(r"\s+", " ", a)
exact = len(recs) - len(set(recs))
normd = len(recs) - len({norm(r) for r in recs})
print(f"records {len(recs)}; exact duplicates {exact}; duplicates after normalisation {normd} ({100*normd/len(recs):.1f}%)")
Execute com python3 lab_dupes.py. Saída verificada:
records 3305; exact duplicates 0; duplicates after normalisation 384 (11.6%)
Exemplo resolvido
Tomás não encontra duplicatas exatas, mas encontra 384 (11,6%) depois da normalização entre 3.305 registros sintéticos, redefine o tempo de correção até o último sistema atualizado e registra as mudanças no projeto antes da coleta principal.
Caso sintético. Os registros são sintéticos; a ISO 8000-1:2022 é real.
Erros e limites
Uma normalização agressiva pode fundir endereços diferentes; confira uma amostra manualmente.
Exercícios
- EX027 — Objetivo do piloto. O que um piloto deve testar? Rubrica: 3 = se os métodos funcionam;; 2 = parcialmente correto;; 1 = responder à pergunta;; 0 = nenhuma.
- EX028 — Correspondências exatas. Quantas duplicatas exatas foram encontradas? Rubrica: 3 = nenhuma;; 2 = hesitante (poucas ou nenhuma);; 1 = errado;; 0 = sem resposta.
- EX029 — Duplicatas normalizadas. Quantas duplicatas apareceram depois da normalização? Rubrica: 3 = 384, 11,6%;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma.
- EX030 — Etapas da normalização. Cite duas etapas da normalização. Rubrica: 3 = minúsculas, expansão de abreviações, redução de espaços;; 2 = duas;; 1 = uma;; 0 = nenhuma.
- EX031 — Novo desfecho. Como o tempo de correção foi redefinido? Rubrica: 3 = dias até ficar correto nos cinco sistemas;; 2 = parcialmente correto;; 1 = encerramento do chamado;; 0 = nenhuma.
- EX032 — Mudanças registradas. Quando as mudanças no projeto foram registradas? Rubrica: 3 = antes de coletar os dados reais de desfecho;; 2 = parcialmente correto;; 1 = depois;; 0 = nenhuma.
Continue estudando — aula 05 (capítulo 05 de 08)
← Capítulo 04 · Índice das aulas · Capítulo 06 →
Continue para a próxima aula já escrita.