Элементы структурного анализа агрегативных систем
Агрегативный подход описывает сложную систему как сеть относительно самостоятельных агрегатов. Каждый агрегат скрывает внутреннее устройство и открывает только состояние, входы, выходы и правила изменения.
Формально:
— входы, — выходы, — состояния, — переход состояния, — формирование выхода.
Что анализировать
| Элемент | Вопрос |
|---|---|
| граница агрегата | какая ответственность внутри |
| вход | какие события или ресурсы принимаются |
| выход | какой результат наблюдают другие |
| состояние | что влияет на следующий шаг |
| связь | синхронная она или асинхронная |
| ограничение | ёмкость, время, порядок, надёжность |
Декомпозиция
Агрегат делят, если внутри есть разные темпы изменения, владельцы, модели отказа или масштабирования. Не стоит делить только по техническим слоям, если части всегда изменяются и отказывают вместе.
Хорошая декомпозиция:
- уменьшает число связей между частями;
- не дублирует владение состоянием;
- оставляет проверяемый контракт;
- локализует изменение и отказ.
Композиция
При сборке агрегатов проверяют свойства целого:
- совместимость контрактов;
- отсутствие циклического ожидания;
- сохранение порядка;
- распространение ошибки и перегрузки;
- общий инвариант;
- достижимость конечного результата.
flowchart LR A["Приём"] --> B["Проверка"] B --> C["Обработка"] C --> D["Результат"] C -- "ошибка" --> R["Компенсация"]
Композиция — не простое соединение выходов со входами: появляется поведение уровня системы.
Самопроверка
- По каким признакам стоит разделить агрегат?
- Почему скрытое общее состояние разрушает независимость частей?
- Какие свойства надо повторно проверить после композиции?