View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Registro de Decisões de Design

Nem todos os requisitos podem ser capturados no início de um projeto ágil durante uma ou mais sessões de design. O design inicial da arquitetura pode evoluir ou mudar durante o projeto, especialmente se houver várias escolhas tecnológicas possíveis. Acompanhar essas mudanças em um documento extenso geralmente não é o ideal, pois você pode perder a visão geral das mudanças de design feitas em qual ponto no tempo. Ter que percorrer um documento grande para encontrar um conteúdo específico leva tempo e, na maioria dos casos, as consequências de uma decisão não são documentadas.

Por que é importante rastrear decisões de design

Rastrear uma decisão de design de arquitetura pode ter muitas vantagens:

Qual é o formato recomendado para rastrear decisões

Além de incorporar uma decisão de design como uma atualização na documentação de design geral do projeto, as decisões podem ser rastreadas como Registros de Decisões de Arquitetura conforme Michael Nygard propôs em seu blog.

O esforço investido em revisões e discussões de design pode ser diferente ao longo do projeto. Às vezes, decisões são tomadas rapidamente sem a necessidade de fazer uma comparação detalhada entre tecnologias concorrentes. Em alguns casos, é necessário realizar um estudo mais elaborado das vantagens e desvantagens, conforme descrito na documentação dos Estudos de Troca. Em outros casos, pode ser útil realizar Spikes de Viabilidade de Engenharia. Um ADR pode incorporar cada uma dessas abordagens diferentes.

Registro de Decisão de Arquitetura (ADR)

Um registro de decisão de arquitetura tem a estrutura

O contexto resultante após a aplicação da decisão.

Exemplo:

> *A amostragem precisará ser configurada no Application Insights para que ela não fique excessivamente cara ao receber milhões de mensagens, mas também não impeça a captura de informações essenciais. A equipe precisará registrar apenas o que foi acordado como essencial para monitoramento durante as revisões de design, a fim de reduzir o ruído e os níveis desnecessários de amostragem.*

Onde armazenar ADRs

ADRs podem ser armazenados e rastreados em qualquer sistema de controle de versão, como o Git. Como prática recomendada, ADRs podem ser adicionados como pull requests no status proposto para serem discutidos pela equipe até que sejam atualizados para aceitos e mesclados com o ramo principal. Eles geralmente são armazenados em uma estrutura de pasta doc/adr ou doc/arch. Além disso, pode ser útil rastrear ADRs em um decision-log.md para fornecer metadados úteis em um formato óbvio.

Registros de Decisão

Um registro de decisão é um arquivo Markdown que contém uma tabela que fornece resumos executivos das decisões contidas nos ADRs, bem como alguns outros metadados. Você pode ver um modelo de tabela em doc/decision-log.md.

Quando rastrear ADRs

As decisões de design de arquitetura geralmente são rastreadas sempre que decisões significativas são tomadas que afetam a estrutura e as características da solução ou framework que estamos construindo. ADRs também podem ser usados para documentar resultados de spikes ao avaliar diferentes escolhas tecnológicas.

Exemplos de ADRs

O primeiro ADR poderia ser a decisão de usar ADRs para rastrear decisões de design,

seguido por decisões reais no engajamento, como no exemplo usado acima,