какой способ UML описать взаимодействие между главным и подчиненным автоматом - PullRequest
0 голосов
/ 08 мая 2019

В моей системе два конечных автомата, один ведущий, один ведомый. И состояния между хозяином и рабом не один в один. Возможны следующие взаимодействия.

  • Если ведущее устройство переходит в определенное главное состояние, оно уведомляет подчиненное устройство о переходе в определенное подчиненное состояние

  • Подчиненный может запросить ведущее устройство для входа в определенное главное состояние; если мастер успешен, мастер уведомит подчиненное устройство о переходе в определенное подчиненное состояние.

  • Ведомый может запросить определенные данные у ведущего

Какая диаграмма UML подходит для описания этих взаимодействий? Диаграмма диаграммы состояний ограничена только переходом состояния и не может описать запрос от подчиненного устройства (либо переход состояния, либо данные); Диаграмма взаимодействия ограничена классом / объектом и не может применяться к состоянию.

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

То, что вы описываете, - это взаимодействие между ведущим и ведомым.

Единого решения для этого не существует, и действительно трудно иметь на одном изображении все возможные состояния и логику транзакции.(на самом деле я не думаю, что это вообще возможно).

Основными диаграммами, которые здесь будут рассмотрены, будут:

  1. Диаграмма последовательности, изображающая процесс запроса / изменения состояний (у вас может быть несколько отображающих различные триггеры для изменения и используйте alt / opt, чтобы показать дальнейшее поведение)
  2. Диаграмма действий, показывающая, как обрабатывается процесс изменения состояния
  3. Обзорная диаграмма взаимодействия с изменениями состоянияпоказано на уровне «активность» и согласование между ведущим и ведомым в «последовательных» частях.

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

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

Если неясно, не стесняйтесь комментировать этот ответ с просьбой предоставить более подробную информацию.Затем я постараюсь создать пример каждой из этих диаграмм (пример диаграммы активности, который вы уже нашли в ответе www.admiraalit.nl).

0 голосов
/ 08 мая 2019

Вы можете описать эти взаимодействия, используя две диаграммы конечного автомата UML, одну для ведущего и одну для ведомого. Например, чтобы указать, что переход из состояния Idle в состояние Busy ведомого происходит после получения сигнала Req от ведущего устройства, вы рисуете переход из режима ожидания в состояние Busy с меткой перехода Req на диаграмме состояния ведомого устройства. Чтобы указать, что мастер отправляет сигнал Req, когда он входит в состояние X, вы пишете entry/Req внутри символа состояния X на диаграмме конечного автомата мастера.

В качестве альтернативы, вы можете рисовать элементы для отправки и приема сигналов (см. Разделы 14.2.4.8.2–14.2.4.8.5 спецификации UML 2.5.1):

signal-symbols

Например, чтобы перейти из режима ожидания в состояние занятости при получении сигнала Req с параметром id:

signal-receipt

Вы также описали ситуацию, когда ведомое устройство запрашивает определенные данные у мастера. Для этого вам понадобится третья схема (или текстовая спецификация) интерфейса, предоставленного ведущим и требуемого ведомым, например:

interface

На диаграмме конечного автомата ведомого вы можете вызвать операцию, определенную в интерфейсе. Например, чтобы вызвать операцию read для master, когда ведомое устройство входит в состояние Busy, и сохранить его в локальной переменной x, введите entry/x:=master.read() в символе состояния X.

Для ознакомления с диаграммой конечного автомата UML см. wikipedia

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...