mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 07:30:16 +03:00
98 lines
6.5 KiB
Markdown
98 lines
6.5 KiB
Markdown
# Правила SLM третьего уровня
|
||
|
||
Проект Level 3 соблюдает правила Level 1 и Level 2, кроме заменённого `SLM-L2-DOMAIN-R001` и расширенного состава групп внутри слоя `domains`, а также дополнительные правила этого реестра.
|
||
|
||
## Граница домена
|
||
|
||
### SLM-L3-DOMAIN-R001
|
||
|
||
> **Предметная граница домена**
|
||
>
|
||
> Каждая самостоятельная предметная область слоя `domains` представлена ровно одним доменом; его модули относятся только к этой области.
|
||
|
||
### SLM-L3-DOMAIN-A002
|
||
|
||
> **Корень домена**
|
||
>
|
||
> Корень домена не содержит файлов реализации, изменяемого состояния, ресурсов жизненного цикла, публичного API или реэкспортов и содержит только допустимые модули домена и группы.
|
||
|
||
## Бизнес-логика и фабрика
|
||
|
||
### SLM-L3-BUSINESS-R003
|
||
|
||
> **Контракт бизнес-логики**
|
||
>
|
||
> Каждый домен содержит ровно один модуль `business`, который определяет публичные предметные сценарии и контракты, ошибки предметной области и модель её состояния.
|
||
|
||
### SLM-L3-BUSINESS-A004
|
||
|
||
> **Независимость бизнес-логики от среды**
|
||
>
|
||
> Граф импортов, достижимый из публичной точки входа `business`, не достигает кода фреймворков, зависимых от среды точек входа, API платформы, технических реализаций, адаптеров, сборок или модулей фреймворков.
|
||
|
||
### SLM-L3-FACTORY-R005
|
||
|
||
> **Контракт фабрики**
|
||
>
|
||
> Фабрика бизнес-логики получает полный набор собственных портов и создаёт API одного и того же контракта независимо от среды выполнения; различия сред не выражаются режимом, необязательным портом или методом, намеренно недоступным в части сред.
|
||
|
||
### SLM-L3-FACTORY-R006
|
||
|
||
> **Создание экземпляра API**
|
||
>
|
||
> Вызов фабрики не выполняет ввод-вывод, не читает скрытое окружение, не запускает ресурс жизненного цикла, не выбирает конкретный адаптер и не выполняет операции жизненного цикла фреймворка.
|
||
|
||
### SLM-L3-PORT-R007
|
||
|
||
> **Порт бизнес-логики**
|
||
>
|
||
> Каждая возможность среды, необходимая бизнес-логике во время выполнения, описывается минимальным портом этой бизнес-логики; публичный контракт порта не раскрывает конкретную реализацию, фреймворк или типы среды.
|
||
|
||
## Сборка
|
||
|
||
### SLM-L3-ADAPTER-R008
|
||
|
||
> **Ответственность адаптера**
|
||
>
|
||
> Адаптер реализует порт бизнес-логики поверх конкретной технической системы и не определяет предметный инвариант, резервное поведение или ошибку предметной области.
|
||
|
||
### SLM-L3-PRESET-R009
|
||
|
||
> **Роль типовой сборки**
|
||
>
|
||
> Модуль группы `presets` собирает API бизнес-логики для одного именованного контекста выполнения, выбирая реализации портов, и не изменяет контракт или предметные сценарии.
|
||
|
||
### SLM-L3-ASSEMBLY-R010
|
||
|
||
> **Жизненный цикл собранного API**
|
||
>
|
||
> Владелец графа удерживает экземпляр API только в области жизни, объявленной модулем-владельцем, и вызывает предоставленные операции жизненного цикла; модуль-владелец определяет создание, область жизни, число экземпляров и очистку ресурса по правилам Level 1.
|
||
|
||
## Междоменные зависимости и среды выполнения
|
||
|
||
### SLM-L3-DEPENDENCY-R011
|
||
|
||
> **Междоменная связь во время выполнения**
|
||
>
|
||
> Модуль `business` одного домена не создаёт и не импортирует исполняемый API другого домена; необходимая возможность описывается собственным портом и передаётся владельцем графа при сборке.
|
||
|
||
### SLM-L3-ENVIRONMENT-A012
|
||
|
||
> **Совместимость графа импортов**
|
||
>
|
||
> Публичная точка входа, обозначенная как клиентская, серверная или общая для обеих сред, не импортирует и не реэкспортирует код несовместимой среды выполнения.
|
||
|
||
## Фреймворки и тестирование
|
||
|
||
### SLM-L3-FRAMEWORK-R013
|
||
|
||
> **Модуль фреймворка домена**
|
||
>
|
||
> Зависящий от конкретного фреймворка код находится в модуле домена, названном именем фреймворка, получает готовый API бизнес-логики и не реализует предметные решения или технические адаптеры.
|
||
|
||
### SLM-L3-TEST-R014
|
||
|
||
> **Проверка контракта бизнес-логики**
|
||
>
|
||
> Каждый публичный предметный сценарий проверяется через фабрику с управляемыми тестовыми реализациями портов; основные тесты адаптера, сборки и модуля фреймворка проверяют собственные границы и не повторяют набор предметных сценариев.
|