Как правильно определить границы между компонентами

В некоторых случаях такая постановка вопроса может быть некорректной. Нередко разработчик, задавая его, предполагает, что границы компонентов определяются Bounded Context’ами. Однако Bounded Context является лишь одним из факторов и нередко может вовсе не учитываться.

В общем случае определение границ компонентов сводится к разбиению одной большой задачи на подзадачи. Очевидно, разбивка носит во многом творческий характер и в первую очередь зависит от видения авторов системы. Кто-то выделяет три подзадачи, кто-то — десять, а кто-то — пятьдесят. Несмотря на эту свободу, в декомпозиции можно выделить несколько правил, вытекающих из причин создания компонента.

Последний пункт опирается не на логику, а на ощущения программиста. Так, один наш коллега, когда мы разбили большой проект на несколько, отмечал, что стал лучше понимать структуру кода, быстрее находил нужные места для правок и меньше путался — компонент стал для него обозримым.