4.2 KiB
Правила SLM
Правило SLM задаёт один блокирующий архитектурный инвариант. Точные формулировки правил находятся только в едином реестре; архитектурные главы объясняют модель и ссылаются на соответствующие коды.
Виды утверждений
- Определение задаёт нормативный смысл термина.
- Правило задаёт блокирующее требование.
- Рекомендация помогает принять решение, но не является обязательной.
- Пример показывает один из вариантов реализации и не задаёт каркас проекта.
Определения собраны в терминологии. Определение может быть обязательным для толкования правил, но не получает отдельный код.
Код правила
SLM-{group}-{class}{number}
| Часть | Значение |
|---|---|
SLM |
Принадлежность архитектуре SLM |
group |
Предмет правила |
class |
Способ окончательной проверки: A или R |
number |
Глобально уникальный трёхзначный номер |
Пример: SLM-MODULE-A004.
Способ проверки
Автоматические правила (A)
Всё требование можно однозначно проверить программно по структуре проекта, публичным путям и графу импортов. Нарушение блокирует автоматическую проверку.
Правила для ревью (R)
Для окончательного решения требуется понимание ответственности, владельца, потребителей или области жизни. Инструмент может найти подозрительный код, но не заменяет архитектурное решение.
Разделы правил
| Код | Предмет |
|---|---|
LAYER |
Роль слоя и направление зависимостей |
MODULE |
Ответственность, владение, публичная граница и внутренняя структура модуля |
DEPENDENCY |
Граф зависимостей модулей |
GROUP |
Навигационная группировка модулей |
SEGMENT |
Внутренняя организация модуля |
NESTED_MODULE |
Доступ к вложенному модулю |
LIFECYCLE |
Владение долгоживущими ресурсами |
ENVIRONMENT |
Совместимость публичных фасетов со средами выполнения |
Раздел правила не создаёт одноимённую главу или дополнительный уровень архитектуры. Например, GROUP классифицирует правило о группировке, а сама группа остаётся необязательной частью слоя.
Требования к реестру
- Одно правило защищает один инвариант.
- Точная формулировка не повторяется в тематических документах.
- Название кратко обозначает предмет, а описание полностью формулирует требование.
- Рекомендации, обоснования и примеры не входят в формулировку правила.
- Один инвариант не получает отдельные автоматическую и ручную копии.
- Номер правила не обозначает важность и не переиспользуется после удаления.