Представление системы семантической моделью
Семантическая модель фиксирует не расположение компонентов, а смысл понятий и отношений предметной области.
Базовая форма — тройка:
Заказ — содержит → Позиция
Платёж — подтверждает → Заказ
Пользователь — оформляет → Заказflowchart LR U["Пользователь"] -->|"оформляет"| O["Заказ"] O -->|"содержит 1..*"| I["Позиция"] P["Платёж"] -->|"подтверждает 0..1"| O
Что фиксировать
- точное значение термина;
- синонимы и омонимы;
- тип отношения;
- кратность;
- обязательность;
- ограничения и инварианты;
- жизненный цикл понятия.
Если команды называют словом «заказ» и намерение клиента, и запись в БД, и уже оплаченный договор, модель должна развести эти значения.
Семантика и хранение
Семантическая модель не обязана повторять таблицы БД. Один предметный объект может храниться в нескольких таблицах, а таблица может содержать технические поля, которых нет в языке предметной области.
Она служит основой для:
- словаря команды;
- API-контрактов и схем событий;
- модели данных;
- правил валидации;
- согласования границ подсистем.
Проверка модели
Попросить участника прочитать каждую связь как предложение. Затем проверить контрпримеры: может ли платёж существовать без заказа, сколько подтверждений допустимо, меняется ли смысл после отмены.
Связано: Объектно-ориентированный анализ и проектирование, Разработка ТЗ АСУ.
Самопроверка
- Почему ER-диаграмма и семантическая модель не всегда совпадают?
- Как омоним в требованиях превращается в ошибку контракта?
- Что выражает кратность связи?