Статьи серии:
Architectural Decision Records (ADR)
Architectural Decision Records (ADR). Y-Statements
Architectural Decision (AD) - Архитектурное решение. Решение (выбор) принятое в процессе разработки архитектуры или проектирования программного обеспечения.
Architectural Decision Records (ADR) - Документ описывающий архитектурное решение.
An Architectural Decision (AD) is a justified software design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software system’s architecture and quality. An Architectural Decision Record (ADR) captures a single AD and its rationale; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM)
Главное из этого описания:
Важно: Архитектурное решение (AD) или ADR - это не решение (solution) для имплементации какой-либо фичи, бизнес требования и т.п. Solution может включать в себя столько ADR сколько выборов необходимо было сделать в процессе разработки solution'а.
Или вот еще одно пояснение, что такое ADR:
An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. This might, for instance, be a technology choice (e.g., Java vs. JavaScript), a choice of the IDE (e.g., IntelliJ vs. Eclipse IDE), a choice between a library (e.g., SLF4J vs java.util.logging), or a decision on features (e.g., infinite undo vs. limited undo).
ADR - это максимально простой документ отвечающий на вопрос, почему было принято то или иное решение.
ADR - это текстовое описание принятого решения, которое позволяет выразить заметно больше чем через диаграммы. Является прекрасным дополнением для различных диаграмм, поясняя почему и как было принято то или иное решение.
ADR - это не только текст. Нет запретов на использование диаграмм в ADR если это уместно и поможет описать мысль яснее.
Подойдет любой инструмент с функциями поиска, версионирования, организации документов. Например, Confluence или Git.
Ниже приведен пример формата записи для хранения в Git.
В статье с хабра есть отличный пример критериев, когда стоит записать принятое решение. Его можно использовать как драфт вашего собственного списка критериев:
Писать нужно просто, понятно, коротко. Чтобы потом не приходилось делать презентации с описанием и интерпретацией написанного в ADR.
Интересная статья о том как писать ADR с хорошими и плохими подходами: How to create Architectural Decision Records (ADRs) — and how not to
И еще пару статей:
Architectural Significance Criteria and Some Core Decisions Required
A Definition of Done for Architectural Decision Making
How to review Architectural Decision Records (ADRs) — and how not to
MADR - "Markdown Any Decision Records" (MADR). Ранее был известен как "Markdown Architectural Decision Records" (MADR). это Architectural Decision Records записанный в формате markdown.
MADR (https://adr.github.io/madr/) is a lean template to capture any decisions in a structured way.
В Short Version выглядит это примерно так:
# Какой фреймворк выбрать для создания нового UI компонента
## Контекст и постановка проблемы
Нужно сделать новый дашборд в существующей системе.
Нужно сделать быстро.
## Рассмотренные варианты
* React
* Angular
* Blazor
## Результат принятия решения
Был выбран React так как для него существует UI компонент Х с хорошей функциональностью из коробки.
Есть еще Long Version, где предлагается довольно подробно описать решение. Выглядит привлекательно.
Markdown удобен тем, что это текст который можно хранить в git, его можно прочитать и без рендеринга, существует много инструментов работы с ним.
ADR Template
adr-template-long.md
adr-template-long-ru.md
И еще немного шаблонов из репозитория joelparkerhenderson/architecture-decision-record:
Для того чтобы сделать работы с коллекцией решений более удобной мы можем использовать такие инструменты как:
Еще несколько инструментов можно найти тут.
The Markdown ADR (MADR) Template Explained and Distilled
Architectural Decision Records (ADRs)
madr-paper9.pdf
История принятых решений в том виде и объеме в котором эти решения доносились до команды - это отличный способ увеличить прозрачность в проекте.