ооп 7. Модель взаимодействия объектов (МВО). Диаграмма взаимодействия объектов в подсистеме. Типы событий. Схемы управления. Имитирование. Каналы управления. - keykranz/oop_ex GitHub Wiki
Модель взаимодействия объектов (МВО).
Модель взаимодействия объектов (МВО) – графическое представление взаимодействия между моделями состояний и внешними сущностями. (Строится для каждой подсистемы или домена. Что ВОВНЕ нас не интересует, но ИЗВНЕ могут приходить события.)
Домен - отдельный мир (реальный, гипотетический, абстрактный), населенный определенным набором объектов, которые ведут себя в соответствии с определенным доменом правилами.
Каждая модель состояний – овал. Сущность – прямоугольник(называется терминатором). События, которые порождаются одной моделью состояний для другой или терминатором, рисуются стрелкой. События могут быть направлены к терминаторам.
Диаграмма взаимодействия объектов в подсистеме. Типы событий. Схемы управления.
МВО формируется иерархически – объекты, наиболее осведомленные о всей системе (активные) располагаются вверху диаграммы. Если событие приходит извне к МВО, находящимся вверху, терминаторы рисуются вверху – терминаторы верхнего уровня. Если события уходят или приходят к МВО нижнего уровня, терминаторы рисуются снизу. Может быть схема верхнего и нижнего управления –система ограничена терминаторами сверху или снизу.
- Схема верхнего управления (Эти события приходят от верхних терминаторов)
- Схема нижнего управления (Эти события приходят от нижних терминаторов
Надо стремиться к тому, чтобы на верхнем уровне взаимодействие терминатора сводилось к одной модели. С нижним этого ограничения нет – может быть сколько угодно МВО, взаимодействующих с терминаторами нижнего уровня.
Типы событий
- Внешние события (приходят от терминатора или уходят к нему)
- Незапрашиваемые события (не являются результатом предыдущих действий подсистемы, то есть это события управляющие, при этом не переводят объект в новое состояние)
- Запрашиваемые события(являются результатом действий, переводят объект в новое состояние)
- Внутренние (соединяют одну модель состояний с другой)
Имитирование.
После построения МВО надо выполнить процесс имитирования (тесты) – понять, насколько правильно была выбрана модель, нет ли ошибок. Необходимо рассмотреть всевозможные начальные состояния объектов подсистемы. Далее, в любом состоянии надо проверить, как подсистема будет реагировать на все незапрашиваемые события, и построить соответствующие каналы управления.
Имитирование - задание некоторых начальных состояний и генерация события. Наблюдение за работой системы. Оценка конечного результата.
Мы генерируем некоторое начальное состояние. Принимает незапрашиваемое состояние, смотрим какое состояние приняли все объекты в нашей системе.
2 времени имитирования:
- Время выполнения действия
- Время задержки – время, на протяжении которого объект должен находиться в состоянии (невозможен резкий переход из одного состояния в другое, мы должны учитывать время задержки)
Этапы имитирования (тесты)
- Установить начальное состояние системы
- В любом состоянии проверить, как подсистема будет реагировать на все незапрашиваемые события, и построить соответствующие каналы управления.
- Оценить конечный результат
Каналы управления.
Канал управления – последовательность действий и событий, которые происходят в ответ на поступление некоторого незапрашиваемого состояния, когда система находится в определённом состоянии. Если возникло событие к терминатору, и эти события приводят к дальнейшим событиям от терминатора, то мы их тоже включаем в канал управления.
Пример в с++ экз Андрея и Димы