◇ OpenCyber Academy
Engenharia · Capítulo 9 · Português

Capítulo 9 — Programação II

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 9 — Programação II

Mapa da aula

Aula 09 publicada. Mapa, exemplo, EX025.

flowchart TD
  N0["9.1 Módulos"]
  N1["9.2 Testes unitários para regras"]
  N2["9.3 Controle de versão"]
  N3["9.4 Revisão de código para regras de dados"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["9.1 Módulos"]
  N1["9.2 Testes unitários para regras"]
  N2["9.3 Controle de versão"]
  N3["9.4 Revisão de código para regras de dados"]
  N0 --> N1 --> N2 --> N3 --> Q["EX025"]
[9.1 Módulos]
    |
    v
[9.2 Testes unitários para regras]
    |
    v
[9.3 Controle de versão]
    |
    v
[9.4 Revisão de código para regras de dados]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem

Você vai (1) estruturar o código de processamento de dados em módulos testados; (2) escrever testes unitários para regras de qualidade; (3) usar controle de versão para mudanças de regras.

9.1 Módulos

Kofi reorganiza seus scripts em módulos: um para ler arquivos, um para as regras de validação e um para os relatórios. Cada módulo tem uma interface clara. O módulo de validação expõe uma lista de regras, cada uma com nome, descrição e função. Essa estrutura permite que os donos dos dados leiam as descrições das regras sem ler código, e que os engenheiros acrescentem ou alterem regras sem mexer no leitor nem no gerador de relatórios. Ele observa que uma separação clara reduz a chance de mudanças acidentais afetarem comportamentos não relacionados. As descrições das regras formam um catálogo.

9.2 Testes unitários para regras

Para cada regra, Kofi escreve testes unitários com casos sintéticos que devem passar e casos que devem falhar. O teste da regra que proíbe leituras menores que a anterior inclui uma troca de medidor, em que as leituras voltam legitimamente a zero. A primeira versão da regra rejeita trocas de forma indevida, e o teste revela isso. Ele acrescenta à regra um indicador de troca de medidor. A Profa. Varga enfatiza que os testes documentam o comportamento pretendido das regras tão claramente quanto qualquer política escrita. O indicador vem do sistema de ordens de serviço.

9.3 Controle de versão

Todas as mudanças de regras passam pelo controle de versão, com uma mensagem explicando o motivo. Quando a exceção para troca de medidor é incluída, a mensagem do commit aponta para o registro de decisão. Kofi consegue mostrar exatamente quando uma regra mudou e comparar os relatórios de qualidade antes e depois. Ele explica que o histórico de versões é evidência para auditores e para donos de dados que notam uma mudança repentina na taxa de rejeição e querem saber se mudaram os dados ou as regras. Toda mudança na lista de regras é revisada por um segundo engenheiro antes de entrar no ramo principal.

9.4 Revisão de código para regras de dados

Kofi pede a um engenheiro de medição, e não só a um programador, que revise as regras. O engenheiro aponta que alguns medidores mais antigos enviam leituras apenas uma vez por dia, de modo que uma regra de completude horária os reprovaria injustamente. Kofi acrescenta o tipo de medidor como parâmetro. Ele aprende que especialistas do domínio encontram erros que revisores de código não veem, e que as regras de governança precisam de correção técnica e de correção de negócio para serem úteis, e não apenas aplicáveis. Os medidores diários passam a ser avaliados por uma regra de completude diária, e sua taxa de rejeição cai ao mesmo nível dos medidores horários.

Exemplo resolvido

Kofi organiza o código em módulos com regras nomeadas, escreve testes que encontram um erro na troca de medidores, liga as mudanças de regras às decisões no controle de versão e obtém uma revisão do domínio que acrescenta o tipo de medidor.

Caso sintético. O código e os dados são sintéticos.

Erros e limites

Os testes cobrem apenas os casos que alguém imaginou; acrescente casos tirados de incidentes reais.

Exercícios

Continue estudando — aula 09 (capítulo 09 de 50)

← Capítulo 08 · Índice das aulas · Capítulo 10 →

Continue para a próxima aula já escrita.