— подход к организации ПО, при котором система разбивается на компоненты, связанные в виде дерева: от главного модуля к более специализированным подмодулям.
Сложность неструктурированной системы может легко выйти из-под контроля.
Эффективность неструктурированной системы может быть крайне низкой.
Выгода от координации в системе может снижаться, если затраты на её обеспечение в неструктурированных системах слишком высоки.
Каждый уровень имеет родительские и дочерние элементы.
Система проектируется "сверху вниз", начиная с высокоуровневых абстракций.
Каждый модуль скрывает детали реализации, предоставляя интерфейс. При этом модуль может содержать внутри себя сколь угодно сложную логику.
Связи должны быть однонаправленными (от родителей к детям) и без скрытых эффектов.
Модули должны заканчивать работу, а не запускать цепную реакцию скрытых вызовов.
Файловая структура проекта должна строго соответствовать модульной декомпозиции.
- Это основная архитектура, нефункциональные требования (NFRs).
- Это изолированные компоненты, бизнес-логика (модули, Sinks).
- Технический долг в "листьях" — это нормально и управляемо.
- Технический долг в "стволе" или "ветвях" — это катастрофа, которая блокирует развитие.
- Агент "забывает" или теряет понимание системы.
- Агент опирается на несуществующие или неверно понятые концепции.
- Модули перестают стыковаться.
- Быстрое разрастание хаоса, который агент уже не может рефакторить.
- Агент работает в изолированном "контексте".
- Защита критических частей системы.
- Ошибка агента локализована и не разрушает всю систему.
- чётко фиксируют границы ответственности и дозволенного для агента.
- Производительность, безопасность, масштабируемость, архитектура.
- Формирование файловой структуры, контрактов и интерфейсов.
- Контроль ядра и границ системы.
- CRUD, бизнес-логика по спецификации.
- Написание утилитарных функций, валидации и юнит-тестов.
- Работа в изолированных, делегированных компонентах.