Mapa da aula
Aula 06 publicada. Mapa, exemplo, EX016.
flowchart TD
N0["6.1 Formatos comuns"]
N1["6.2 Especificações de troca"]
N2["6.3 Validando arquivos"]
N3["6.4 Mudanças de versão"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX016"]
Desenho lógico
flowchart LR
N0["6.1 Formatos comuns"]
N1["6.2 Especificações de troca"]
N2["6.3 Validando arquivos"]
N3["6.4 Mudanças de versão"]
N0 --> N1 --> N2 --> N3 --> Q["EX016"]
[6.1 Formatos comuns]
|
v
[6.2 Especificações de troca]
|
v
[6.3 Validando arquivos]
|
v
[6.4 Mudanças de versão]
|
v
[Exemplo resolvido] --> [Exercício EX016]
Objetivos de aprendizagem
Você vai (1) comparar formatos de dados comuns; (2) definir especificações de troca; (3) validar arquivos recebidos.
6.1 Formatos comuns
Ravi compara os formatos usados na Calder Valley: CSV nas exportações das prestadoras, JSON vindo do portal dos inquilinos, arquivos de largura fixa do antigo sistema de aluguéis e planilhas dos gestores. O CSV é simples, mas não tem tipos; o JSON carrega estrutura, mas pode variar de um registro para outro; os arquivos de largura fixa exigem posições exatas de coluna. Ele usa os módulos csv e json do Python para ler cada um, anotando os problemas típicos de cada formato. Escreve uma nota curta por formato, descrevendo esses problemas e como seus scripts os tratam, para que os colegas reaproveitem a abordagem.
6.2 Especificações de troca
Para reduzir problemas, Ravi ajuda a escrever uma especificação de troca para os arquivos das prestadoras: padrão de nome do arquivo, codificação, delimitador, nomes e ordem das colunas, tipos de dados, datas no formato ano-mês-dia, valores permitidos para situação e prioridade e o que fazer quando uma ordem é cancelada. O curador de reparos a aprova e a envia a todas as prestadoras. Ele observa que uma especificação transforma suposições em acordos e permite rejeitar arquivos que não a cumprem. A especificação é publicada com um arquivo de exemplo contra o qual as prestadoras podem testar.
6.3 Validando arquivos
Ravi escreve um validador que confere cada arquivo recebido de uma prestadora com a especificação antes da carga. Arquivos que passam em todas as verificações são carregados automaticamente; os que falham ficam retidos, e a prestadora recebe por e-mail um relatório com os problemas. No primeiro mês, duas prestadoras enviam arquivos fora da especificação, e as duas os corrigem em poucos dias. Ele observa que a validação automática transfere o trabalho de correção para a origem, onde os erros podem ser corrigidos de verdade. As prestadoras passam a testar seus arquivos antes do envio, e as retenções ficam raras depois dos dois primeiros meses.
6.4 Mudanças de versão
Quando uma prestadora atualiza seu sistema, surge uma coluna nova, e o validador retém o arquivo. Ravi consulta o curador, que conclui que a coluna é inofensiva e atualiza a especificação para a versão dois, permitindo uma coluna extra opcional. A Sra. Moreau observa que as especificações precisam de controle de versão como o código, para que todos saibam qual versão vale e para que as mudanças sejam deliberadas, e não acidentais, com registro de quem aprovou cada uma. O histórico da especificação fica no repositório ao lado do código do validador, de modo que cada versão possa ser associada ao validador que a aplicou.
Exemplo resolvido
Ravi compara os formatos CSV, JSON, largura fixa e planilha, ajuda a escrever uma especificação de troca para as prestadoras, constrói um validador que retém arquivos fora da especificação e conduz uma mudança de versão da especificação.
Caso sintético. Os arquivos e as especificações são sintéticos.
Erros e limites
Aceitar arquivos sem validação leva os erros da origem para os relatórios.
Exercícios
- EX016 — Fraqueza do CSV. Qual é a principal fraqueza do CSV?
Mostrar critérios de avaliação
Rubrica: 3 = não ter tipos de dados;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma. - EX017 — Arquivos reprovados. O que acontece com os arquivos que falham na validação?
Mostrar critérios de avaliação
Rubrica: 3 = ficam retidos e a prestadora recebe um relatório por e-mail;; 2 = parcialmente correto;; 1 = parcial;; 0 = nenhuma. - EX018 — Mudança da versão dois. O que a versão dois da especificação passou a permitir?
Mostrar critérios de avaliação
Rubrica: 3 = uma coluna extra opcional;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.