Trilha de aprendizado · Nível 15 · Tutorial 10

Documentar uso, limitações e decisões da aplicação

Preparar a documentação da entrega com instruções verificadas de instalação e uso, limites conhecidos e justificativas das decisões de arquitetura e desempenho.

  • Nível: Intermediário
  • Duração: 20 min
  • 8 passos
Documentar uso, limitações e decisões da aplicação

O que você vai percorrer

  1. Organizar a documentação para quem vai usar a aplicação Crie a base de um README voltado a quem recebe a distribuição, separando-o dos documentos usados para desenvolver e justificar o projeto. 2 min
  2. Escrever um início rápido reproduzível Monte um início rápido que leve da obtenção do artefato à primeira operação útil, sem depender da pasta de desenvolvimento. 3 min
  3. Transformar a configuração em uma referência consultável Converta o contrato de configuração em uma seção de documentação que o usuário possa consultar sem deduzir precedência, caminhos ou tratamento de erros. 3 min
  4. Documentar falhas e orientar a recuperação Organize falhas observáveis em uma referência que informe o que ocorreu, onde apareceu o diagnóstico, qual código foi retornado e como agir em seguida. 2 min
  5. Declarar compatibilidade e limites conhecidos Delimite as evidências da versão entregue para informar o que foi declarado, verificado, limitado e ainda não avaliado. 2 min
  6. Registrar o motivo das decisões de arquitetura Documente uma escolha arquitetural relevante em um ADR curto, com alternativas e consequências claras. 3 min
  7. Justificar desempenho sem prometer além das medições Registre evidências de desempenho de forma rastreável e formule conclusões limitadas ao cenário realmente avaliado. 3 min
  8. Conferir a documentação e fechar a entrega Consolide o README e os registros de decisão, relacione cada afirmação a uma evidência da distribuição e revise divergências antes de declarar a entrega pronta. 3 min

O que você vai aprender

  • Escrever um README que permita instalar e utilizar a distribuição sem depender da pasta de desenvolvimento.
  • Documentar precedência de configuração, mensagens relevantes e códigos de saída.
  • Registrar decisões arquiteturais com alternativas e consequências.
  • Apresentar evidências e limitações de desempenho sem generalizar medições para ambientes não avaliados.
  • Conferir os exemplos da documentação contra o artefato validado.

Antes de começar

  • Definir requisitos verificáveis para uma aplicação de linha de comando
  • Automatizar as verificações do projeto com Nox
  • Comparar desempenho sequencial e concorrente

Passo 1 de 8

Organizar a documentação para quem vai usar a aplicação

Crie a base de um README voltado a quem recebe a distribuição, separando-o dos documentos usados para desenvolver e justificar o projeto.

O README começa pela necessidade de uso

A porta de entrada da distribuição

Quem recebe sua aplicação não deve precisar explorar a pasta de desenvolvimento para descobrir o que ela faz. O README é o ponto de entrada: apresenta a finalidade, orienta o uso, indica onde encontrar limites relevantes e aponta documentos complementares.

Neste tutorial, usaremos um caso didático: uma CLI fictícia chamada csv-resumo, que lê um CSV e mostra um resumo de suas colunas numéricas. Os comandos, arquivos e saídas desse caso são simulados; eles servem para estruturar a documentação e não representam um pacote disponível para instalação.

Documentos para perguntas diferentes

Cada documento atende a uma pergunta e um público principal.

Diagrama com README ao centro ligado a quatro cartões: pessoa usuária da distribuição, pessoa desenvolvedora, código-fonte e registro de decisão. Cada cartão tem uma pergunta diferente.

Use o README para orientar o uso da entrega; deixe detalhes de implementação e desenvolvimento nos documentos apropriados.

Dica

Regra prática

Organize as seções pela jornada de quem usa a distribuição: “O que é?”, “Como obtenho e uso?”, “Quais opções e limites importam?” e “Onde encontro mais detalhes?”. Não transforme o README em um diário do desenvolvimento.

Escreva Markdown legível no arquivo e na tela

Elementos essenciais

Use # e ## para criar uma hierarquia escaneável; listas para requisitos ou observações; links relativos para documentos do próprio repositório; e blocos cercados por crases triplas para separar comandos e resultados da explicação.

O leitor deve distinguir imediatamente o que é texto explicativo, o que deve ser digitado e o que é uma saída esperada.

Trecho inicial do README.md

Exemplo didático: o conteúdo abaixo documenta a CLI fictícia csv-resumo.

markdown
# csv-resumo

Gera um resumo das colunas numéricas de um arquivo CSV.

## Para quem é

Use esta ferramenta quando precisar inspecionar rapidamente um CSV local
sem abrir uma planilha.

## Uso em resumo

```text
csv-resumo dados/vendas.csv
```

Saída simulada:

```text
linhas: 3
coluna valor: mínimo=12.50 máximo=30.00 média=20.00
```

## Documentação relacionada

- [Decisão sobre leitura em fluxo](docs/decisoes/adr-001-leitura-em-fluxo.md)
- [Instruções para desenvolvimento](CONTRIBUTING.md)

Exemplo

Fonte e apresentação têm papéis diferentes

No arquivo Markdown, as crases e os sinais # definem a estrutura. Na visualização renderizada, o título aparece destacado, os links ficam clicáveis e os blocos preservam a aparência de terminal. Mantenha comandos e saídas em blocos separados: isso evita que uma saída simulada pareça ser algo que a pessoa deve digitar.

Escolha o destino de cada informação

Separe, depois conecte

O README pode apontar para documentos mais específicos, mas não precisa duplicá-los. Docstrings explicam o uso de partes do código; instruções de desenvolvimento ajudam quem altera o projeto; registros de decisão preservam o porquê de escolhas relevantes. A pessoa usuária encontra no README apenas o contexto necessário para usar a entrega.

Destino documental

Associe cada informação ao local mais adequado.

Toque em um item e depois no par correspondente.

Passo 2 de 8

Escrever um início rápido reproduzível

Monte um início rápido que leve da obtenção do artefato à primeira operação útil, sem depender da pasta de desenvolvimento.

O que torna o início rápido reproduzível

Do artefato ao primeiro resultado

Um início rápido responde às primeiras dúvidas de quem recebeu a distribuição: qual artefato e versão estão sendo documentados, onde obtê-lo, quais recursos precisa ter e quais comandos executar para confirmar que a aplicação funciona.

Não suponha que o pacote esteja publicado em um índice público. Se a entrega é uma wheel fornecida pela equipe, declare isso. Também diferencie o uso normal de comandos de desenvolvimento: pip install pacote.whl instala uma distribuição; pip install -e . depende das fontes e não serve como instrução de uso da entrega.

Fluxo mínimo de uso

A sequência deve partir de um ambiente limpo e terminar em um resultado observável.

Diagrama em quatro etapas: artefato wheel identificado, ambiente virtual limpo, consulta à ajuda do comando e execução que lê um CSV e mostra um resumo.

O leitor instala o artefato recebido, não a pasta de desenvolvimento.

Dica

Declare o que foi verificado

Informe o sistema/terminal ao qual os comandos se aplicam, a versão do Python e os caminhos usados no exemplo. Só ofereça uma variante para outro sistema quando ela também tiver sido verificada para aquela entrega.

Modelo de início rápido autocontido

Separe instrução de observação

Em um README, marque claramente o que a pessoa deve digitar e o que deve aparecer depois. Um exemplo útil inclui o conteúdo do arquivo de entrada, para que ninguém precise inventar dados ou procurar arquivos no repositório.

O caso abaixo é didático e simulado. Troque o nome da wheel, o comando e os resultados pelos elementos do seu próprio artefato validado; ele não anuncia um pacote disponível para instalação.

Trecho de README — exemplo didático simulado

Exemplo de Markdown para adaptar ao seu artefato.

markdown
## Início rápido

Este exemplo foi escrito para a distribuição **csv-resumo 1.2.0**,
recebida como o arquivo `csv_resumo-1.2.0-py3-none-any.whl`.
Ele foi verificado no Python 3.12, em um terminal POSIX, fora da pasta
que contém as fontes do projeto.

> Adapte o nome do arquivo, o comando e as saídas à sua própria distribuição.
> `csv-resumo` é apenas um comando simulado deste tutorial.

### 1. Criar um ambiente e instalar a wheel recebida

Digite, em um diretório de trabalho fora das fontes:

```console
$ python3.12 -m venv .venv
$ . .venv/bin/activate
$ python -m pip install /caminho/para/csv_resumo-1.2.0-py3-none-any.whl
```

### 2. Confirmar o comando instalado

```console
$ csv-resumo --help
usage: csv-resumo [-h] ARQUIVO
```

A ajuda é exibida e o comando termina com código de saída 0.

### 3. Executar um resumo

Crie `vendas.csv` no diretório de trabalho com este conteúdo:

```csv
produto,quantidade
caneta,3
caderno,2
```

Depois, digite:

```console
$ csv-resumo vendas.csv
```

Saída esperada:

```text
registros: 2
quantidade total: 5
```

O comando apenas lê `vendas.csv`; nenhum arquivo novo é criado neste exemplo.

Ordem que reduz suposições

Organize o início rápido

Coloque os elementos abaixo na ordem mais reproduzível para um início rápido.

  1. Criar a entrada descrita e executar uma operação útil, registrando saída e efeitos.
  2. Informar versão, origem do artefato, Python, terminal e diretório de trabalho.
  3. Executar o comando de ajuda e mostrar a observação esperada.
  4. Criar/ativar o ambiente e instalar a wheel recebida.

Revise uma lacuna antes de publicar

Elimine uma dependência implícita

Um README diz apenas: “Instale o pacote e execute meu-comando dados.csv”. Escreva uma frase que acrescente uma pré-condição ou um resultado esperado concreto e elimine uma suposição importante.

Escreva pelo menos 20 caracteres (0/20).

Resumo

Checklist do início rápido

  • Identifique a versão e o canal real de obtenção do artefato documentado.
  • Declare interpretador, terminal, ambiente e caminhos contemplados.
  • Instrua a instalar a distribuição para uso normal, não as fontes em modo editável.
  • Mostre ajuda, entrada autocontida, comando completo, saída esperada e efeitos sobre arquivos.
  • Adapte todo nome simulado ao seu artefato validado.

Passo 3 de 8

Transformar a configuração em uma referência consultável

Converta o contrato de configuração em uma seção de documentação que o usuário possa consultar sem deduzir precedência, caminhos ou tratamento de erros.

A ficha que evita adivinhações

Documente uma opção por completo

Uma referência de configuração não deve obrigar o usuário a inferir nomes ou padrões. Para cada opção, registre: finalidade, tipo, padrão, valores aceitos e o nome usado em cada fonte.

Considere este contrato didático de uma CLI de resumo de CSV chamada csv-resumo:

| Opção | Finalidade e tipo | Padrão | CLI | Ambiente | Arquivo TOML |
| --- | --- | --- | --- | --- | --- |
| diretório de dados | Pasta que contém os CSVs; caminho | diretório atual | --dados CAMINHO | CSV_RESUMO_DADOS | dados.dir |
| separador | Delimitador do CSV; texto de 1 caractere | , | --separador CARACTERE | CSV_RESUMO_SEPARADOR | dados.separador |
| máximo de linhas | Limite de linhas lidas; inteiro positivo | 1000 | --max-linhas N | CSV_RESUMO_MAX_LINHAS | processamento.max_linhas |

Liste somente fontes que a aplicação realmente aceita. Não invente uma variável de ambiente, uma chave ou um valor alternativo para tornar a tabela “mais completa”.

As fontes convergem para uma configuração final

A presença de uma fonte e o valor que ela fornece são informações diferentes.

Diagrama mostrando padrões internos, arquivo TOML, variáveis de ambiente e argumentos da CLI convergindo para uma configuração validada. Uma chave ausente aparece como sem valor e um valor zero aparece como valor explícito.

A referência deve mostrar a ordem implementada e preservar valores explícitos, inclusive 0 ou false.

Dica

Use o contrato como fonte

A tabela é uma interface pública: confira nomes, tipos e padrões no contrato e na versão empacotada validada. Ela não é o lugar para justificar por que a aplicação foi desenhada dessa forma.

Precedência, arquivo e caminhos

Explique como escolher e localizar a configuração

Para este contrato didático, a maior prioridade vence: argumento da CLI → variável de ambiente → arquivo TOML → padrão interno. Se uma fonte não informar uma opção, ela apenas cede lugar à próxima; isso não equivale a fornecer um valor.

Declare também onde o arquivo fica e como é selecionado. Exemplo de texto para a referência:

Sem --config, csv-resumo procura opcionalmente config.toml no diretório atual. Para usar outro arquivo, informe --config CAMINHO. Caminhos relativos nas chaves dados.dir são resolvidos a partir da pasta que contém o próprio arquivo TOML. Já caminhos passados em --dados são resolvidos a partir do diretório atual do terminal.

Assim, o usuário sabe tanto qual fonte vence quanto qual pasta serve de base para cada caminho.

Exemplo

Ausência não substitui um valor explícito

Com config.toml contendo max_linhas = 500, a ausência de CSV_RESUMO_MAX_LINHAS mantém 500. Se o ambiente fornecer CSV_RESUMO_MAX_LINHAS=0, esse 0 é um valor explícito; a aplicação deve então validá-lo conforme seu contrato, em vez de tratá-lo como ausência ou voltar ao padrão.

Exemplo mínimo de arquivo de configuração

Salve este conteúdo como config.toml fora do pacote instalado, por exemplo em uma pasta de trabalho do usuário. Se ele não estiver no diretório atual, selecione-o com --config.

toml
[dados]
dir = "entrada"
separador = ";"

[processamento]
max_linhas = 500

Uso do arquivo selecionado

Neste exemplo, entrada é interpretado em relação à pasta que contém config.toml. O caminho do arquivo de dados não é uma pasta interna da instalação.

bash
csv-resumo --config ./config.toml vendas.csv

Políticas de validação verificáveis

Registre condições, sem prometer comportamento novo

A referência deve cobrir as situações previstas pelo contrato, com linguagem objetiva:

  • Arquivo padrão opcional ausente: a aplicação continua usando ambiente e padrões internos.
  • Arquivo indicado por --config inexistente: a execução não continua; informe o caminho solicitado e oriente o usuário a corrigir o caminho ou criar o arquivo.
  • Valor inválido: a execução não inicia a operação. Por exemplo, max_linhas = 0 viola o requisito de inteiro positivo; informe a opção e o valor esperado.

Não inclua credenciais, tokens ou caminhos pessoais nos exemplos. Use valores fictícios e caminhos relativos. A tabela detalhada de mensagens e códigos de saída será tratada em outra seção da documentação.

Confira a precedência

Complete com a fonte de maior prioridade: arquivo TOML → variável de ambiente → ____.

Passo 4 de 8

Documentar falhas e orientar a recuperação

Organize falhas observáveis em uma referência que informe o que ocorreu, onde apareceu o diagnóstico, qual código foi retornado e como agir em seguida.

Cada falha precisa levar a uma ação

Uma referência orientada ao usuário

Documente falhas pela situação que a pessoa consegue observar, e não pela exceção interna. Para cada situação, registre:

  • condição: quando ocorre;
  • mensagem relevante: o texto ou trecho que ajuda a reconhecer o problema;
  • canal: stdout ou stderr;
  • código de saída: o valor definido pelo contrato da aplicação;
  • ação recomendada: o próximo passo concreto.

Códigos não zero não têm significado universal. Por isso, descreva somente os códigos que a sua aplicação definiu.

Estrutura de uma entrada de falha

A referência conecta o resultado técnico observável a uma recuperação segura.

Diagrama mostrando uma condição de falha ligada a mensagem, stderr, código de saída e ação recomendada.

A ação recomendada completa o diagnóstico: ela transforma uma falha em um próximo passo utilizável.

Dica

Seja específico sem vazar detalhes

Oriente a pessoa a corrigir o caminho, criar ou selecionar um arquivo válido, ou revisar uma opção. Evite incluir rastreamentos internos, valores sensíveis de configuração ou dados do arquivo do usuário.

Transcrições deixam os canais visíveis

Separe o que foi digitado do que foi emitido

Em exemplos de terminal, identifique visualmente o comando, o resultado normal em stdout e o diagnóstico em stderr. Isso evita que o usuário copie uma mensagem de erro como se fosse parte do comando ou espere uma falha no canal errado.

Exemplo

Exemplo didático — arquivo de entrada ausente

A transcrição abaixo é simulada para uma CLI de resumo de CSV; adapte nomes, mensagens e códigos ao contrato do seu artefato.

Comando digitado

$ resumo-csv vendas.csv

stdout

stderr

Erro: não foi possível abrir o arquivo de entrada: vendas.csv

Código de saída: 3

Recuperação: confirme o nome e o diretório do arquivo; depois execute novamente com um caminho acessível.

Neste caso, a frase mostrada é um exemplo de mensagem. Só declare um texto como estável — por exemplo, para automação — se essa estabilidade fizer parte do contrato aprovado.

Associe o campo à sua função

Campos de uma referência de falha

Relacione cada campo ao que ele deve informar na documentação.

Toque em um item e depois no par correspondente.

Complete uma orientação de recuperação

Falha de configuração solicitada

Considere o comportamento documentado: quando o usuário fornece --config caminho.toml e o arquivo não existe, a aplicação escreve um diagnóstico em stderr e encerra com o código definido para configuração inválida. Redija a ação recomendada para a referência de falhas. Inclua ao menos duas verificações ou alternativas seguras.

Escreva pelo menos 80 caracteres (0/80).

Passo 5 de 8

Declarar compatibilidade e limites conhecidos

Delimite as evidências da versão entregue para informar o que foi declarado, verificado, limitado e ainda não avaliado.

Quatro afirmações, quatro alcances

Evite transformar evidência local em promessa geral

Na documentação da versão entregue, separe afirmações que parecem semelhantes, mas respondem a perguntas diferentes:

  • Compatibilidade declarada: o intervalo aceito pelos metadados da distribuição, como requires-python.
  • Combinações verificadas: versões de Python e plataformas nas quais o artefato foi realmente testado.
  • Limite imposto: uma restrição aplicada pela própria aplicação, por exemplo, recusar um arquivo acima de um tamanho definido.
  • Volume observado: o maior caso usado em uma avaliação; ele não vira limite nem garantia automaticamente.

Ambientes não avaliados devem permanecer como não avaliados. A falta de teste não prova incompatibilidade, mas também não prova funcionamento.

Como delimitar cada afirmação

Use uma matriz para tornar visível a diferença entre metadado, teste e ausência de evidência.

Diagrama com três faixas separadas: compatibilidade declarada nos metadados, células específicas verificadas em uma matriz de Python por sistemas operacionais e uma área neutra identificando combinações não avaliadas; abaixo, uma linha separa limite aplicado de volume apenas observado.

A documentação deve manter o alcance de cada afirmação visível, sem preencher lacunas com suposições.

Matriz de compatibilidade da versão

Exemplo

Exemplo didático de seção no README

Compatibilidade — versão 1.4.0

Declarada nos metadados: Python 3.11 ou superior.

Verificada com o artefato resumocsv-1.4.0-py3-none-any.whl:

| Python | Plataforma | Situação |
|---|---|---|
| 3.11 | Ubuntu 24.04 | verificado |
| 3.12 | Windows 11 | verificado |

Outras combinações compatíveis com os metadados não foram avaliadas nesta entrega.

A tabela vincula os testes a uma versão e a um artefato específicos. Ela não sugere que apenas as combinações listadas funcionem, nem afirma que as demais foram aprovadas.

Dica

Escreva estados observáveis

Prefira termos como declarada, verificada, não avaliada, recusada pela aplicação e observada na avaliação. Eles são mais úteis e honestos do que “suporta tudo” ou “funciona em qualquer ambiente”.

Limites, restrições e escopo

Descreva a condição e o efeito

Para cada item, registre a condição em que ocorre, o impacto para o usuário e uma alternativa quando ela existir.

  • Limite imposto pela aplicação: é aplicado de forma consistente pelo programa. Documente o valor, a condição e a mensagem ou efeito esperado.
  • Restrição conhecida: comportamento ou cenário reconhecido que afeta o uso, mas não necessariamente é bloqueado pelo programa.
  • Maior volume observado: descreve somente o caso avaliado; não é capacidade máxima garantida.
  • Exclusão de escopo: deixa claro o que a aplicação não se propõe a fazer e quais garantias não oferece.

Exemplo

Formulações proporcionais

  • Limite aplicado: “A versão 1.4.0 recusa arquivos de entrada maiores que 100 MB antes do processamento. Divida o arquivo ou processe partes separadamente.”
  • Restrição conhecida: “Arquivos CSV com campos que usam simultaneamente vírgula e ponto e vírgula como separadores não são interpretados automaticamente. Informe o separador compatível com o arquivo.”
  • Volume observado: “Na avaliação desta versão, um CSV de 80 MB foi processado em Ubuntu 24.04 com Python 3.11. Esse resultado não estabelece tempo nem capacidade para outras máquinas ou arquivos.”
  • Exclusão de escopo: “A aplicação resume arquivos CSV locais; ela não busca arquivos em serviços remotos nem garante recuperação após interrupção durante a leitura.”

Pratique a delimitação

Compatibilidade não é cobertura total

Se os metadados declaram requires-python = ">=3.11", a documentação pode afirmar que todas as versões futuras do Python e todos os sistemas operacionais foram testados.

Reescreva sem prometer demais

Reescreva esta afirmação para que ela informe corretamente o alcance da evidência: “O programa funciona em qualquer sistema e processa arquivos CSV de qualquer tamanho.”

Escreva pelo menos 80 caracteres (0/80).

Passo 6 de 8

Registrar o motivo das decisões de arquitetura

Documente uma escolha arquitetural relevante em um ADR curto, com alternativas e consequências claras.

ADR: a decisão, não o inventário

Por que registrar a decisão?

Um ADR (Architecture Decision Record, ou registro de decisão arquitetural) explica por que uma escolha relevante foi feita. Ele não substitui docstrings, não lista todas as classes e não descreve o código linha a linha.

Use um ADR quando a escolha cria uma fronteira, impõe uma dependência, descarta alternativas plausíveis ou terá consequências para mudanças futuras. No caso da CLI de resumo de CSV, separar a leitura de CSV das regras de resumo é uma decisão digna de registro.

A fronteira que o ADR esclarece

O diagrama mostra uma decisão de fronteira: a interface de linha de comando e o leitor de CSV ficam fora das regras de negócio.

Diagrama com quatro blocos separados: interface de linha de comando chama a camada de aplicação; ela chama o domínio e um adaptador CSV; setas indicam que detalhes externos ficam nas bordas.

Um ADR pode incluir um diagrama simples quando ele torna a fronteira escolhida mais fácil de entender.

Dica

Mantenha o escopo curto

O README aponta para o ADR quando o leitor precisar entender a razão de uma escolha. O ADR, por sua vez, não repete comandos de instalação ou uso: ele pode criar um link relativo para a seção apropriada do README.

Estrutura e exemplo de um ADR

Seções que preservam o raciocínio

Um registro enxuto costuma conter:

  • Título, data e status — por exemplo, Aceito ou Substituído.
  • Contexto — problema, requisito e restrições que motivaram a escolha.
  • Alternativas consideradas — opções viáveis comparadas pelos critérios do projeto.
  • Decisão — a escolha feita e seu limite.
  • Consequências — benefícios, custos e riscos aceitos.

Se a decisão mudar, preserve o ADR anterior e altere seu status para Substituído por ADR-00X, explicando brevemente a razão. Não reescreva o passado como se a escolha anterior nunca tivesse existido.

Exemplo

Exemplo: ADR-003 — Isolar a leitura de CSV

ADR-003 — Isolar a leitura de CSV das regras de resumo

Data: 2025-03-08
Status: Aceito

Contexto

A aplicação recebe um arquivo CSV e produz resumos definidos pelos requisitos R-02 e R-04. A CLI, o formato CSV e os caminhos de arquivo são detalhes externos; as regras de cálculo não devem depender deles.

Alternativas consideradas

  1. Ler o CSV diretamente na função da CLI: menos arquivos inicialmente, mas mistura interpretação de argumentos, acesso a arquivo e regras de resumo.
  2. Fazer o domínio abrir e interpretar CSV: centraliza o fluxo, mas acopla regras de negócio ao formato de persistência.
  3. Usar um adaptador de CSV chamado pela camada de aplicação: mantém o formato externo na borda e permite testar as regras com dados já convertidos.

Decisão

Adotar a alternativa 3. O adaptador converte registros CSV para os dados usados pela aplicação; a CLI apenas interpreta argumentos e apresenta resultados.

Consequências

Benefícios: regras de resumo independentes de csv e testes mais diretos para a lógica central.
Custos e riscos aceitos: há conversão entre registros externos e dados internos, além de mais uma fronteira a manter. Alterações no formato CSV exigem atualização no adaptador.

Consulte [uso e formato de entrada](../../README.md#formato-de-entrada).

Reconheça uma justificativa arquitetural

Qual trecho expressa melhor uma justificativa adequada para escolher um adaptador de CSV separado?

Escreva um ADR curto

Registre a decisão do caso

Redija um ADR curto para a decisão de manter a leitura de CSV em um adaptador separado das regras de resumo. Considere a separação entre domínio, aplicação, interface e persistência já definida no projeto. Inclua ao menos uma alternativa e uma consequência desfavorável aceita.

Escreva pelo menos 350 caracteres (0/350).

Passo 7 de 8

Justificar desempenho sem prometer além das medições

Registre evidências de desempenho de forma rastreável e formule conclusões limitadas ao cenário realmente avaliado.

O que torna uma medição rastreável

Evidência antes de conclusão

Uma nota de desempenho precisa permitir que outra pessoa entenda o que foi comparado e até onde a conclusão vale. Registre: versão ou artefato, carga de trabalho, máquina e sistema, versão do Python, configuração de concorrência, procedimento e fronteira medida.

A fronteira é especialmente importante: informe se o tempo inclui leitura, criação de processos ou threads, processamento, consumo dos resultados e gravação da saída. Compare execuções que realizam o mesmo trabalho e produzem resultado equivalente.

Componentes de uma evidência de desempenho

Use este mapa como checklist para a seção de desempenho ou para uma decisão registrada.

Diagrama mostrando uma medição de desempenho no centro ligada a artefato, carga, ambiente, configuração, procedimento, fronteira medida e resultados.

Sem carga, ambiente e fronteira de medição, um número de tempo não é interpretável.

Dica

Não transforme observação em promessa

Uma medição em uma máquina e uma carga específicas é um fato daquele cenário. Ela não prova desempenho igual em outras versões, máquinas, volumes ou tipos de arquivo.

Como escrever uma conclusão limitada

Exemplo

Exemplo didático — medição simulada

Dados simulados; não são evidência da sua aplicação.

Artefato: csv-resumo 1.4.0, wheel validada.
Carga: um CSV local com 100.000 linhas; ambas as versões produziram o mesmo arquivo de resumo.
Ambiente: Ubuntu 24.04, Python 3.12.3, notebook com 4 núcleos lógicos.
Procedimento: 5 execuções por variante; tempo decorrido da abertura do CSV até o resumo gravado.

| Variante | Configuração | Mediana | Intervalo observado |
| --- | --- | ---: | ---: |
| Sequencial | 1 processo | 1,82 s | 1,79–1,88 s |
| Concorrente | 4 processos | 2,11 s | 2,03–2,25 s |

Decisão: manter a execução sequencial nesta versão. Na carga e no ambiente avaliados, a variante concorrente foi mais lenta e acrescenta criação e coordenação de processos.

Não é garantia: este resultado não afirma que a versão sequencial será mais rápida em todo hardware, arquivo ou versão do Python.

Reavaliar se: houver cargas maiores, transformação por linha mais custosa, outro ambiente-alvo relevante ou mudança na implementação.

Três frases, três níveis de certeza

Use rótulos claros na redação:

  • Fato medido: “Nas cinco execuções descritas, a mediana foi 1,82 s.”
  • Expectativa: “Esperamos que a opção sequencial continue adequada para arquivos semelhantes.”
  • Garantia não oferecida: “Não garantimos tempo máximo nem vantagem em máquinas ou cargas não avaliadas.”

A decisão pode apontar para um ADR quando ela afetar a arquitetura; não é necessário duplicar no README todos os detalhes do experimento.

Escolha a conclusão sustentada

Interprete os dados simulados

Com base exclusivamente no exemplo didático anterior, qual conclusão é adequada para documentar?

Pratique uma nota de decisão

Escreva uma conclusão responsável

Usando os dados simulados do exemplo, redija uma nota de decisão. Inclua: uma evidência numérica, o motivo para manter ou rejeitar a concorrência e um limite de validade da conclusão.

Escreva pelo menos 180 caracteres (0/180).

Passo 8 de 8

Conferir a documentação e fechar a entrega

Consolide o README e os registros de decisão, relacione cada afirmação a uma evidência da distribuição e revise divergências antes de declarar a entrega pronta.

Monte a trilha de evidências

Do requisito ao resultado observado

Antes de fechar a entrega, transforme cada afirmação importante em uma trilha verificável: critério de aceitação → seção do documento → comando reproduzível → evidência observada.

A evidência deve identificar a versão e o artefato testado, por exemplo dist/resumo_csv-1.2.0-py3-none-any.whl. Executar a árvore de fontes, usar instalação editável ou importar módulos locais não substitui a verificação da distribuição empacotada.

Rastreabilidade da documentação

Use uma tabela ou mapa simples para impedir que o README prometa algo que não foi conferido.

Diagrama mostrando a sequência critério de aceitação, seção do README, comando executado e evidência do artefato empacotado.

Cada declaração operacional relevante deve chegar a um comando e a um resultado registrados.

Exemplo

Registro mínimo de rastreabilidade

| Critério | Seção | Comando reproduzível | Evidência |
|---|---|---|---|
| A ajuda é exibida sem erro | Início rápido | resumo-csv --help | wheel resumo_csv-1.2.0-py3-none-any.whl, ambiente limpo, saída 0; uso exibido em stdout |
| CSV inválido é informado | Falhas e recuperação | resumo-csv dados.csv | mesma wheel, saída 3; diagnóstico em stderr; nenhum arquivo de saída criado |

Inclua o caminho ou identificador do artefato, a versão e a data da execução onde sua equipe puder consultá-los. Não invente uma execução que não ocorreu.

Audite transcrições e divergências

Compare os quatro cenários essenciais

Confira no artefato validado os exemplos de ajuda, sucesso, configuração inválida e falha de acesso aos dados. Em cada transcrição, separe claramente o comando digitado, o conteúdo de stdout, o conteúdo de stderr, o código de saída e os efeitos em arquivos.

Uma transcrição didática marcada como simulada só ilustra formato: ela não é evidência da sua aplicação. Se a execução real divergir, registre a divergência e corrija o documento ou o comportamento, conforme o contrato aprovado.

Exemplo

Divergência encontrada no caso didático (simulado)

README afirma: configuração inválida retorna código 2.

Evidência simulada:

$ resumo-csv --config ausente.toml dados.csv
stderr: erro: arquivo de configuração não encontrado: ausente.toml
código de saída: 4

A transcrição acima é apenas um exemplo de auditoria, não o resultado de um comando disponível neste tutorial. Se o contrato aprovado define 4 para arquivo solicitado inexistente, corrija o README para 4. Se define 2, corrija a aplicação e gere uma nova distribuição antes de atualizar a evidência.

Decida a correção

No exemplo simulado, explique como você decide entre corrigir o README e corrigir a aplicação. Inclua o que precisa ser revalidado depois.

Escreva pelo menos 80 caracteres (0/80).

Aplique ao seu artefato e declare prontidão

Faça a revisão final no seu computador

Com sua wheel ou sdist validada, execute os comandos que você documentou em um ambiente limpo e fora da pasta do projeto. Use arquivos de entrada próprios, criando-os a partir do conteúdo textual descrito no README quando necessário.

Para cada cenário, anote: artefato e versão, comando, stdout, stderr, código de saída e arquivos criados ou preservados. Este tutorial não recebe arquivos nem verifica sua execução automaticamente; o objetivo é você confrontar o documento com o que observou localmente.

Resumo

Critérios de prontidão

A documentação está pronta quando uma pessoa consegue usar a distribuição sem depender das fontes de desenvolvimento.

  • O README explica finalidade, instalação, primeira execução, configuração, falhas e limites relevantes.
  • Cada exemplo operacional aponta para uma evidência da versão e do artefato empacotado verificados.
  • As transcrições distinguem comando, stdout, stderr, código de saída e efeitos em arquivos.
  • Cenários não verificados permanecem identificados como não avaliados; divergências são registradas e tratadas.
  • Os ADRs preservam contexto, alternativa, decisão e consequências sem duplicar o guia de uso.
  • Uma mudança na entrega, inclusive em documentação incorporada ao pacote, exige construir novamente e atualizar as evidências correspondentes.

Sua trilha de auditoria

Escolha um critério de aceitação da sua aplicação e registre uma trilha de auditoria. Se ainda não tiver executado o cenário, declare isso explicitamente e diga qual comando pretende conferir.

Escreva pelo menos 120 caracteres (0/120).

Entrega documental concluída

Parabéns! Você concluiu: Documentar uso, limitações e decisões da aplicação

Pronto! Antes de publicar ou entregar, mantenha juntos o README, os registros de decisão e as evidências da versão empacotada. Documentação confiável distingue o que foi medido, o que foi verificado e o que continua sem avaliação.

Você concluiu a trilha

Parabéns! Você passou por todos os tutoriais desta trilha.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso