Элементы структурного анализа агрегативных систем

Агрегативный подход описывает сложную систему как сеть относительно самостоятельных агрегатов. Каждый агрегат скрывает внутреннее устройство и открывает только состояние, входы, выходы и правила изменения.

Формально:

— входы, — выходы, — состояния, — переход состояния, — формирование выхода.

Что анализировать

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

Декомпозиция

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

Хорошая декомпозиция:

  • уменьшает число связей между частями;
  • не дублирует владение состоянием;
  • оставляет проверяемый контракт;
  • локализует изменение и отказ.

Композиция

При сборке агрегатов проверяют свойства целого:

  • совместимость контрактов;
  • отсутствие циклического ожидания;
  • сохранение порядка;
  • распространение ошибки и перегрузки;
  • общий инвариант;
  • достижимость конечного результата.
flowchart LR
    A["Приём"] --> B["Проверка"]
    B --> C["Обработка"]
    C --> D["Результат"]
    C -- "ошибка" --> R["Компенсация"]

Композиция — не простое соединение выходов со входами: появляется поведение уровня системы.

Самопроверка

  • По каким признакам стоит разделить агрегат?
  • Почему скрытое общее состояние разрушает независимость частей?
  • Какие свойства надо повторно проверить после композиции?