ODMA

Ownership Driven Architecture

← К концепции

Начинаем с владельца ответственности

Перед выбором папки или абстракции определяем три вещи:

  • Owner — модуль, владеющий возможностью системы
  • Responsibility — поведение и инварианты, за которые он отвечает
  • Contract — публичный интерфейс для остальных модулей

Тренировочная программа принадлежит тренировкам. Идентификация — домену identity. Адаптер CMS переводит контракт системы контента, но не становится владельцем бизнес-поведения.

Границы выражают ответственность

Домен может владеть своими моделями, API, UI, административными формами, CMS-плагинами и тестами. Представление домена не становится виджетом только потому, что написано на Vue. Виджеты объединяют возможности, а корень композиции приложения связывает их.

Зависимость оправдывается реальным отношением владельцев. Названия директорий сами по себе не разрешают и не запрещают её. Потребители используют публичный контракт, а не внутренности чужого модуля.

Минимальное целостное изменение

Сначала находим существующее решение, изучаем потребителей и сохраняем намеренные границы. Абстракция должна снижать связанность, локализовать ответственность или устранять существенное дублирование. Работа завершена, когда поведение, типы, тесты и приложение согласованы.