Capítulo 1 — Integridade e métodos avançados de pesquisa
Mapa da aula
Aula 01 publicada. Mapa, exemplo, EX001.
flowchart TD
N0["1.1 A doutoranda e a pergunta"]
N1["1.2 Por que é difícil testar afirmações sobre arquit"]
N2["1.3 Métodos que separam as rivais"]
N3["1.4 Regras de integridade antes dos dados"]
N4["1.5 Codificação com concordância medida"]
N5["Laboratório — Concordância entre codificadores na cl"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX001"]
Desenho lógico
flowchart LR
N0["1.1 A doutoranda e a pergunta"]
N1["1.2 Por que é difícil testar afirmações sobre arquit"]
N2["1.3 Métodos que separam as rivais"]
N3["1.4 Regras de integridade antes dos dados"]
N4["1.5 Codificação com concordância medida"]
N5["Laboratório — Concordância entre codificadores na cl"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX001"]
[1.1 A doutoranda e a pergunta]
|
v
[1.2 Por que é difícil testar afirmações sobre arquit]
|
v
[1.3 Métodos que separam as rivais]
|
v
[1.4 Regras de integridade antes dos dados]
|
v
[1.5 Codificação com concordância medida]
|
v
[Laboratório — Concordância entre codificadores na cl]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX001]
Objetivos de aprendizagem
Você vai (1) formular uma pergunta de pesquisa falseável sobre uma prática de arquitetura; (2) escolher métodos capazes de distinguir a resposta de suas explicações rivais; (3) fixar regras de integridade para dados, parceiros e autoria antes de existir qualquer dado; (4) construir um esquema de codificação com concordância medida.
1.1 A doutoranda e a pergunta
Amara Lind é doutoranda no fictício Halden Institute of Technology, sob orientação do Prof. Rafael Quintero. Sua organização parceira é o fictício Tessaro Insurance Group, que mantém trinta equipes de produto construindo sistemas de sinistros, de apólices e de corretores. Todas as pessoas, organizações e números deste livro são sintéticos. A pergunta de Amara é se uma etapa estruturada de threat modeling na revisão de design, usando STRIDE como descrito por Shostack (2014), reduz a taxa de defeitos de segurança no nível da arquitetura encontrados após o lançamento, em comparação com a revisão de design sem essa etapa. A pergunta é falseável: um estudo bem conduzido poderia mostrar nenhuma redução, e ela se compromete de antemão a relatar esse resultado.
1.2 Por que é difícil testar afirmações sobre arquitetura
Herley e van Oorschot (2017) argumentam que boa parte do que se escreve sobre segurança faz afirmações que não podem ser refutadas, como dizer que uma prática melhora a segurança sem dizer que observação mostraria que ela não melhora. A arquitetura é especialmente exposta a esse problema, porque os resultados chegam tarde, os defeitos são raros e muitas práticas mudam ao mesmo tempo. Amara responde nomeando um desfecho mensurável, defeitos de arquitetura por cem mudanças de design encontrados nos doze meses após o lançamento, e nomeando de antemão as explicações rivais: maturidade da equipe, idade do sistema, regressão à média depois de anos ruins e mudanças na forma de reportar os defeitos.
1.3 Métodos que separam as rivais
Amara compara três desenhos. Uma comparação de antes e depois dentro das equipes que adotam a prática não consegue separar a prática da melhora geral ao longo do tempo. Um ensaio aleatorizado entre equipes seria o mais forte, mas a Tessaro não pode sortear quais equipes adotam, porque a adoção segue os ciclos orçamentários. Ela escolhe um desenho de adoção escalonada com equipes de comparação e uma análise de diferença em diferenças, seguindo a lógica de Wohlin et al. (2012) para experimentos em engenharia de software, e pré-registra o desfecho principal, as covariáveis e as regras de parada. Ela escreve que padrões de resultado apoiariam cada explicação rival, para que a análise possa testá-las, em vez de descartá-las com explicações depois.
1.4 Regras de integridade antes dos dados
Antes de coletar qualquer coisa, Amara acorda regras de integridade com a Tessaro e com seu comitê de ética. Os registros de defeitos são pseudonimizados, para que nenhum engenheiro possa ser identificado ou culpado. A Tessaro pode revisar os rascunhos em busca de detalhes confidenciais, mas não pode vetar os achados. O código, os manuais de codificação e réplicas sintéticas dos dados serão arquivados, enquanto os registros reais ficam com a Tessaro. A autoria segue a contribuição, e o assistente de codificação que classifica os defeitos será reconhecido. Ela registra essas regras com data e um hash do documento no seu caderno de laboratório, para que os leitores possam ver depois que elas não foram ajustadas quando os resultados já eram conhecidos.
1.5 Codificação com concordância medida
Classificar um defeito como de arquitetura ou de implementação é um julgamento, por isso Amara escreve um manual de codificação com definições e exemplos. Um defeito de arquitetura é aquele cuja correção exige mudar uma fronteira de confiança, a responsabilidade de um componente ou um fluxo de dados; um defeito de implementação pode ser corrigido dentro de um único componente. Ela e um segundo codificador classificam de forma independente um conjunto piloto e calculam o kappa de Cohen, interpretando-o com as faixas cautelosas de Landis e Koch (1977). O laboratório abaixo calcula o kappa sobre quarenta defeitos piloto sintéticos. Um valor baixo significaria que a medida de desfecho não é confiável e que o manual precisa de revisão antes que qualquer comparação faça sentido.
Laboratório — Concordância entre codificadores na classe do defeito
# Cohen's kappa for two coders classifying 40 synthetic defects (A=architecture, I=implementation).
c1 = "AAAAAAAAAAAAAAAAIIIIIIIIIIIIIIIIIIIIIIII"
c2 = "AAAAAAAAAAAAAAIIIIAIIIIIIIIIIIIIIIIIIAII"
n = len(c1); po = sum(a == b for a, b in zip(c1, c2)) / n
pe = sum((c1.count(k) / n) * (c2.count(k) / n) for k in "AI")
print(f"items={n} observed agreement={po:.3f} expected={pe:.3f} kappa={(po - pe) / (1 - pe):.2f}")
Execute com python3 lab_kappa.py. Saída verificada:
items=40 observed agreement=0.900 expected=0.520 kappa=0.79
Exemplo resolvido
Amara escreve a pergunta falseável com seu desfecho e quatro rivais, escolhe a adoção escalonada com diferença em diferenças, data e calcula o hash das suas regras de integridade e chega a um kappa de 0,79 na codificação piloto.
Caso sintético. O Halden Institute, o Tessaro Insurance Group, Amara, Rafael e todos os dados são inventados; Shostack (2014), Herley e van Oorschot (2017), Wohlin et al. (2012) e Landis e Koch (1977) são reais.
Erros e limites
O kappa depende da prevalência das classes e pode enganar quando uma classe domina. O pré-registro restringe a análise, mas não garante uma coleta de dados honesta.
Exercícios
-
EX001 — Teste de falseabilidade. Que observação refutaria a hipótese de Amara? Rubrica: 3 = nenhuma redução, ou um aumento, dos defeitos de arquitetura pós-lançamento por cem mudanças de design nas equipes que adotam, em relação às equipes de comparação;; 2 = nomeia o desfecho sem comparação;; 1 = diz que não pode ser refutada;; 0 = nenhuma.
-
EX002 — Crítica de Herley. Que problema Herley e van Oorschot identificam nas afirmações de segurança? Rubrica: 3 = muitas afirmações não podem ser refutadas porque não nomeiam nenhuma observação que as contradiria;; 2 = afirmações não científicas;; 1 = vago;; 0 = nenhuma.
-
EX003 — Rejeição do antes e depois. Por que um desenho simples de antes e depois é fraco aqui? Rubrica: 3 = não separa a prática da melhora geral ou da regressão à média;; 2 = uma rival;; 1 = desenho forte;; 0 = nenhuma.
-
EX004 — Sem aleatorização. Por que a Tessaro não podia aleatorizar a adoção? Rubrica: 3 = a adoção segue ciclos orçamentários que a pesquisadora não controla;; 2 = orçamento;; 1 = só ética;; 0 = nenhuma.
-
EX005 — Veto da empresa. Que direito a Tessaro tem sobre os rascunhos? Rubrica: 3 = revisar só em busca de detalhes confidenciais, sem veto sobre os achados;; 2 = revisão;; 1 = veto total;; 0 = nenhuma.
-
EX006 — Definição de defeito. Como o manual define um defeito de arquitetura? Rubrica: 3 = a correção exige mudar uma fronteira de confiança, a responsabilidade de um componente ou um fluxo de dados;; 2 = parcial;; 1 = qualquer bug;; 0 = nenhuma.
-
EX007 — Kappa do piloto. Que kappa o laboratório relatou e como ele é lido? Rubrica: 3 = 0,79, concordância substancial nas faixas de Landis e Koch;; 2 = só o valor;; 1 = abaixo de 0,4;; 0 = nenhuma.
Síntese
A pesquisa de doutorado em arquitetura começa com uma pergunta falseável, um desenho capaz de separar as explicações rivais, regras de integridade fixadas de antemão e uma medida de resultado confiável.
Continue estudando — aula 01 (capítulo 01 de 08)
← Início do curso · Índice das aulas · Capítulo 02 →
Continue para a próxima aula já escrita.