Вот ответ немного абстрактно, с теоретической точки зрения:
Давайте упростим проблему, посмотрев только на (направленные) графы зависимостей между объектами с состоянием.
Чрезвычайно простой ответ можно проиллюстрировать, рассмотрев два предельных случаев графов зависимостей. :
Первый предельный случай: кластерные графы.
Кластерный граф - это наиболее совершенная реализация графа зависимостей с высокой степенью связанности и низкой связанностью (при заданном наборе размеров кластера).
Зависимость между кластерами максимальная (полносвязная), а межкластерная зависимость минимальная (нулевая).
Это абстрактная иллюстрация ответа в одном из ограничивающих случаев.
2-й предельный случай - это полносвязный граф, где все зависит от всего.
Реальность находится где-то посередине, в моем скромном понимании, чем ближе к графу кластеров, тем лучше.
С другой точки зрения: если смотреть на направленный граф зависимостей, в идеале он должен быть ациклическим, если нет, то циклы образуют самые маленькие кластеры / компоненты.
Один шаг вверх / вниз по иерархии соответствует «одному экземпляру» слабой связи, сильной связности в программном обеспечении, но можно рассматривать этот принцип слабой / сильной связи как повторяющееся явление на разных глубинах ациклического ориентированного графа (или на одно из его остовных деревьев).
Такое разложение системы на иерархию помогает преодолеть экспоненциальную сложность (скажем, каждый кластер состоит из 10 элементов). Тогда на 6 слоях это уже 1 миллион объектов:
10 кластеров образуют 1 сверхскопление, 10 сверхскоплений образуют 1 гиперкластер и так далее ... без концепции тесной связи, слабой связи такая иерархическая архитектура была бы невозможна.
Так что это может быть реальная важность истории, а не просто высокая когезия и низкая связь только в двух слоях. Настоящая важность становится очевидной при рассмотрении абстракций более высокого уровня и их взаимодействий.
person
jhegedus
schedule
22.08.2018