В общем, когда мы думаем об архитектуре, нам в голову приходит структурная схема высокого уровня. Но как мы соотносим эту концепцию архитектуры со сферой разработки программного обеспечения? Это может быть интересной отправной точкой для понимания того, что, почему и как вопросы, стоящие за чистой архитектурой, объясняются дядей Бобом в его книге «Чистая архитектура».

План архитектора здания содержит несколько линий границ между комнатами и другими областями или структурами. Он (он) указывает их фактический размер и форму. Собственно, чертеж содержит подробную информацию. Мы даже можем понять места для огней и выключателей. Но в области разработки программного обеспечения мы разрабатываем модули/компоненты или ментальные модели вместо комнат и структур. Однако мы также даем границы между ними. Мы делаем разделение между компонентами с точки зрения доступности и зависимостей. Раздел Ramaining этой статьи объясняет, как мы управляем зависимостями компонентов таким образом, чтобы облегчить возможность оставить возможность для возможных изменений в будущем.

Правило зависимостей

По словам дяди Боба, мы можем расположить приложение в круговых слоях, и каждый слой содержит разные компоненты, как показано на рисунке ниже:

Самый внутренний компонент, называемый «Сущности», должен быть независимым от любых других компонентов. В общем, он содержит корпоративные правила, которые нельзя автоматизировать. Можно понять, что для принятия этих решений, включенных в этот компонент, требуются заседания правления или любые другие собрания.

Чуть выше «Сущностей» есть еще один слой под названием «Случаи использования». Он содержит различные бизнес-варианты использования (уровень приложений), которые можно автоматизировать. Например, принятие решения о том, может ли человек получить членство на основе его / ее текущего статуса и т. д. На рисунке одна стрелка указывает на форму «Сущности» «Случаи использования», которая называется потоком управления. Это означает, что компонент «Случаи использования» вызывает функции «Сущностей», или, другими словами, «Случаи использования» зависят от «Сущностей».