16. Модель взаимодействия объектов (МВО).

Диаграмма взаимодействия объектов в подсистеме. Типы событий. Схемы управления. Имитирование. Каналы управления.

Модель взаимодействие объектов (МВО).

На основе выделенных аксессоров строится МВО.

Есть объект A, объект B, рисуем стрелку A -> B, что говорит о том, что A использует аксессор объекта B, на стрелке помечаем идентификатор процесса, где взаимодействие синхронное (Модель доступа)

МВО - модель взаимодействия объектов. Мы рассматриваем только нашу подсистему или домен. Что ВОВНЕ нас не интересует, но ИЗВНЕ могут приходить события.

МВО строится таким образом, что вверху располагаются модели состояний объектов, которые боле осведомлены о нашей подсистеме. Идея - свести так, чтобы главный был один.

Все события разделяем на две группы:

  • Внешние события, которые приходят извне.

  • Внутренние события, которые происходят внутри нашей подсистемы.

На МВО мы ограничиваем нашу подсистему сверху и снизу. Ограничения сверху и снизу называют терминаторами. Соответственно, могут быть терминаторы верхнего уровня и терминаторы нижнего уровня (прямоугольничек).

Все модели состояний, чтобы как-то их отделить от сущности, рисуются в овалах (вытянутых овальчиках). Внутри записывается номер и указывается, какой сущности соответствует этот объект.

Приходит событие извне и объект наш может менять состояние. Мы должны четко проанализировать, какие события принимает наша модель состояния, и какие события она может порождать для других объектов. Причем эти события могут быть как вверх, так вниз. События могут уходить к терминатору.

Внешние события разделяем на две группы:

  • Незапрашиваемые - не являются следствием предыдущего действия нашей подсистемы.

  • Запрашиваемые - являются результатом действия нашей подсистемы.

В зависимости от того, откуда пришло не запрашиваемое событие, рассматриваем схемы:

  • Схема верхнего управления - не запрашиваемое событие пришло от терминатора верхнего уровня.

  • Схема нижнего управления - не запрашиваемое событие пришло от терминатора нижнего уровня.

Мы нарисовали модель взаимодействия объектов в нашей подсистеме, но хотелось бы проследить, как изменяются состояния объектов нашей подсистемы с приходом какого-либо не запрашиваемого события извне. Это важный момент! Для того чтобы проверить корректность нашей модели, мы должны перебрать все возможные варианты. Здесь необходимо так называемое моделирование: мы генерим всевозможные начальные состояния объектов нашей подсистемы, и для каждого набора начальных состояний анализируем, как в этом начальном состоянии система реагирует на все не запрашиваемые события. И так для каждой генерации.

Каналы Управления (КУ)

Для удобства моделирования строятся каналы управления. В предыдущем примере мы рисовали иерархию, выстраивал её из объектов. В отличие от него, в каналах управления каждая модель состояния - это вертикальная линия.

При этом здорово отметить, что МДО - взаимодействие синхронное, а в МВО - асинхронное. Но здесь не все так просто, выделили модели состояний, модель взаимодействия, но нам надо проверить все же нормально, для этого проводится процесс проектирования результатов, строятся КУ, как у нас происходит процесс при незапрашиваемое событие, причем для каждого событие строится свои каналы управления. Дело в том что у нас может быть несколько начальных состояний нашей подсистемы. Первым делом, что мы должны сделать - выделить в каких начальных состояний могут находится наши подсистемы, далее смотрим какие незапрашиваемые событие могут приходить, неважно от каких терминаторов и смотрим как система реагирует на эти событие.

Также могут быть и запрашиваемые событие, они также включаются в КУ.

Правила построения КУ:

  • КУ должны иметь конец.

  • Как правило при построении выделяют сначала главную модель состояний, и затем уже остальные. Тут также неважно будут реагировать или изменять модель состояний, которые мы просматриваем на данном этапе, все равно выделяем все состояния нашей подсистемы.

  • Название состояний, берется с ДПС.

  • Всегда помечаем, какое незапрашиваемое событие пришло, в результате которого модель состояния может перейти в другое

  • При моделировании, тут будет важно время, временная школа сверху вниз

  • Для каждого состояния выделяются два времени (не указываем, если несущественное):

    • Время выполнения действия - время, которое переводит объект в это состояние. Это время записывается внутри прямоугольника.

    • Время задержки - это то время, которое объект должен находиться в этом состоянии. Например, для дверей есть состояние "двери закрываются". Закрытие дверей не происходит мгновенно, это происходит за какое то время. Это время записывается вне прямоугольника.

Процесс имитирования каналов управления:

  • Сгенерировать все начальные состояния.

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

  • Мы должны прийти в какие то окончательные состояния.

Last updated