Представление системы семантической моделью

Семантическая модель фиксирует не расположение компонентов, а смысл понятий и отношений предметной области.

Базовая форма — тройка:

Заказ — содержит → Позиция
Платёж — подтверждает → Заказ
Пользователь — оформляет → Заказ
flowchart LR
    U["Пользователь"] -->|"оформляет"| O["Заказ"]
    O -->|"содержит 1..*"| I["Позиция"]
    P["Платёж"] -->|"подтверждает 0..1"| O

Что фиксировать

  • точное значение термина;
  • синонимы и омонимы;
  • тип отношения;
  • кратность;
  • обязательность;
  • ограничения и инварианты;
  • жизненный цикл понятия.

Если команды называют словом «заказ» и намерение клиента, и запись в БД, и уже оплаченный договор, модель должна развести эти значения.

Семантика и хранение

Семантическая модель не обязана повторять таблицы БД. Один предметный объект может храниться в нескольких таблицах, а таблица может содержать технические поля, которых нет в языке предметной области.

Она служит основой для:

  • словаря команды;
  • API-контрактов и схем событий;
  • модели данных;
  • правил валидации;
  • согласования границ подсистем.

Проверка модели

Попросить участника прочитать каждую связь как предложение. Затем проверить контрпримеры: может ли платёж существовать без заказа, сколько подтверждений допустимо, меняется ли смысл после отмены.

Связано: Объектно-ориентированный анализ и проектирование, Разработка ТЗ АСУ.

Самопроверка

  • Почему ER-диаграмма и семантическая модель не всегда совпадают?
  • Как омоним в требованиях превращается в ошибку контракта?
  • Что выражает кратность связи?