Architecture Decision Record

Active theme: Light

← Шаблоны записей решений

Шаблон записи решения от Джеффа Тайри и Арта Акермана

Это шаблон описания архитектурного решения, опубликованный в статье "Architecture Decisions: Demystifying Architecture" by Jeff Tyree and Art Akerman, Capital One Financial.

  • Проблема (Issue): опишите проблему архитектурного проектирования, которую вы решаете, не оставляя вопросов о том, почему вы решаете её именно сейчас. Следуя минималистичному подходу, рассматривайте и документируйте только те проблемы, которые требуют решения на разных этапах жизненного цикла.

  • Решение (Decision): чётко сформулируйте направление архитектуры, то есть выбранную вами позицию.

  • Состояние (Status): состояние решения, например pending, decided или approved.

  • Группа (Group): можно использовать простую группировку — например, интеграция, представление, данные и т. д. — чтобы упорядочить набор решений. Можно также использовать более сложную архитектурную онтологию, например онтологию Джона Кьяруци и Яна ван Катвейка, включающую более абстрактные категории, такие как событие, календарь и местоположение. Например, при такой онтологии вы сгруппируете решения, касающиеся событий, при которых системе нужна информация, под категорией «событие».

  • Допущения (Assumptions): чётко опишите базовые допущения среды, в которой вы принимаете решение, — затраты, график, технологии и т. д. Обратите внимание, что ограничения среды (например, принятые технологические стандарты, корпоративная архитектура, широко применяемые паттерны и т. д.) могут ограничивать рассматриваемые вами альтернативы.

  • Ограничения (Constraints): зафиксируйте любые дополнительные ограничения среды, которые выбранная альтернатива (решение) может накладывать.

  • Позиции (Positions): перечислите позиции (жизнеспособные варианты или альтернативы), которые вы рассматривали. Часто для них требуются длинные пояснения, иногда даже модели и диаграммы. Это не исчерпывающий список. Однако вы не хотите услышать вопрос «А вы думали о...?» на итоговом рассмотрении; это ведёт к потере доверия и сомнениям в других архитектурных решениях. Этот раздел также помогает убедиться, что вы выслушали мнения других; явное изложение других мнений помогает привлечь их сторонников к вашему решению.

  • Аргументация (Argument): изложите, почему вы выбрали позицию, включая такие пункты, как стоимость реализации, совокупная стоимость владения, время выхода на рынок и доступность необходимых ресурсов разработки. Это, вероятно, так же важно, как и само решение.

  • Следствия (Implications): как показывает метамодель REMAP, у решения много следствий. Например, решение может создать потребность в принятии других решений, породить новые требования или изменить существующие; наложить дополнительные ограничения на среду; потребовать пересмотра объёма или графика с заказчиками; или потребовать дополнительного обучения персонала. Чёткое понимание и изложение следствий вашего решения может быть очень эффективным для получения поддержки и создания дорожной карты реализации архитектуры.

  • Связанные решения (Related decisions): очевидно, что многие решения связаны; вы можете перечислить их здесь. Однако мы обнаружили, что на практике полезнее матрица прослеживаемости, деревья решений или метамодели. Метамодели полезны для диаграммного отображения сложных связей (например, модели Rose).

  • Связанные требования (Related requirements): решения должны определяться бизнесом. Чтобы показать подотчётность, явно сопоставляйте решения с целями или требованиями. Вы можете перечислить эти связанные требования здесь, но нам удобнее ссылаться на матрицу прослеживаемости. Вы можете оценить вклад каждого архитектурного решения в выполнение каждого требования, а затем оценить, насколько хорошо требование выполняется всеми решениями вместе. Если решение не способствует выполнению какого-либо требования, не принимайте это решение.

  • Связанные артефакты (Related artifacts): перечислите связанные архитектурные, проектные документы или документы об объёме, на которые влияет это решение.

  • Связанные принципы (Related principles): если в предприятии есть согласованный набор принципов, убедитесь, что решение соответствует одному или нескольким из них. Это помогает обеспечить согласованность между областями или системами.

  • Примечания (Notes): поскольку процесс принятия решения может занимать недели, мы сочли полезным фиксировать заметки и вопросы, обсуждаемые командой в процессе согласования.