Форум Сообщества Аналитиков

×


Диаграмма деятельности. Выбор по событию(Прочитано 923 раз)
Если после Действия1 необходимо дождаться События и после этого выполнять Действие2 - см. вложение 1.
Если после Действия1 необходимо пропустить время и после этого выполнять Действие3 - см. вложение 2.
А если после Действия1 необходимо выполнить: если произойдет Событие до истечения времени - Действие2, если время истечет раньше - Действие3. Варианты - вложения 3 и 4.



Или так - вложение (в действии без имени ничего не выполняется, оно нужно только чтобы сделать вход в область прерывания). А как лучше и почему?
P.S. Первый из вариантов встретил в http://www.win.tue.nl/~jschmalt/teaching/2IX20/2IX20_Lecture06_activity_FSM.pdf стр.15-20
« Последнее редактирование: 15 Июня 2018, 14:43:09 от Vadim »



Стилистически вложение3 лучше ложится на исходный текст. Вложение4 лучше бы легло на текст "если время истечёт раньше наступления События - Действие3, иначе - Действие2".
Стилистически вложение5 не годится, т. к. "ничегонеделательная" деятельность -- костыль "модельера", который (костыль, не "модельер") не должен торчать явно из модели.
По стандарту, скорее всего, все 3 варианта прочекаются.
P. S. К делу не относится, но задачка от авторов "UML3" (см. слайды 50-51) сомнительная какая-то. Как видится с моей планеты.
[...и улетело НЛО.]



Стилистически вложение3 лучше ложится на исходный текст. Вложение4 лучше бы легло на текст "если время истечёт раньше наступления События - Действие3, иначе - Действие2".
Согласен. Подходит, если один из вариантов поведения выглядит как основной, а остальные - как дополнительные.
Стилистически вложение5 не годится, т. к. "ничегонеделательная" деятельность -- костыль "модельера", который (костыль, не "модельер") не должен торчать явно из модели.
А как подчеркнуть "равнозначность" вариантов поведения? Может как во вложении?
По стандарту, скорее всего, все 3 варианта прочекаются.
Согласен.
P. S. К делу не относится, но задачка от авторов "UML3" (см. слайды 50-51) сомнительная какая-то. Как видится с моей планеты.
По мне и a) возможно, если A закончится (и C(A) начнется) раньше, чем закончится C(B)! По крайней мере C(A) "starts but is killed". A и B можно поменять местами.
« Последнее редактирование: 19 Июня 2018, 13:44:45 от Vadim »



Введение буфера загромождает модель, как мне кажется, и заставляет действие1 порождать объектный токен.
Прерываемый регион не согласуется с "равнозначностью". Один из двух прерывает другого. Роли не равны.
Прерываемый регион, из которого нет "молнии", сомнителен по стилю. Стандарт в своих ocl-ях зачем-то допускает прерываемые регионы без "молний" и "молнии" без прерываемых регионов. На моей планете не могут взять в толк -- зачем.
[...и улетело НЛО.]



Введение буфера загромождает модель, как мне кажется, и заставляет действие1 порождать объектный токен.
Согласен, загромождает. Согласен, токен от действие1 к буфер - объектный.
Прерываемый регион не согласуется с "равнозначностью". Один из двух прерывает другого. Роли не равны.
Роли равны - ЛЮБОЙ из двух может прервать другого.
Прерываемый регион, из которого нет "молнии", сомнителен по стилю. Стандарт в своих ocl-ях зачем-то допускает прерываемые регионы без "молний" и "молнии" без прерываемых регионов. На моей планете не могут взять в толк -- зачем.
А какая разница "молнией" или "прямой" выходить из региона - в обоих случаях всё, что связано с регионом прерывается.



Ещё вариант:
« Последнее редактирование: 20 Июня 2018, 08:48:20 от Vadim »



По теме
P. S. К делу не относится, но задачка от авторов "UML3" (см. слайды 50-51) сомнительная какая-то. Как видится с моей планеты.
Диаграмма во вложении эквивалентна диаграмме слайдов?



Роли равны - ЛЮБОЙ из двух может прервать другого.
Как по мне, в любой из двух реализаций придётся указать прерывающего и прерываемого. Симметрии в решениях не вижу. Язык не даёт подходящего средства.

А какая разница "молнией" или "прямой" выходить из региона - в обоих случаях всё, что связано с регионом прерывается.
ДД -- не мой конёк.
В стандарте сказано, что "молния" прерывает, а обычное ребро -- нет. Т. е. не всякое ребро через границу прерывающее. Также там есть Figure 15.73.
Есть подозрение, что на Ваши последние варианты надо добавить "руну Соул".
[...и улетело НЛО.]



Диаграмма во вложении эквивалентна диаграмме слайдов?
Угу.
[...и улетело НЛО.]



Угу.
Тогда есть 6 вариантов развития событий - по количеству возможных перестановок моментов окончания A, B, C(A), C(B):
  • A, C(A), B, C(B) - прерывается B, а до C(B) даже не доходит
  • A, B, C(A), C(B) - прерывается C(B)
  • A, B, C(B), C(A) - прерывается C(А)
  • B, C(B), A, C(A) - прерывается A, а до C(A) даже не доходит
  • B, A, C(B), C(A) - прерывается C(А)
  • B, A, C(A), C(B) - прерывается C(B)



Как по мне, в любой из двух реализаций придётся указать прерывающего и прерываемого. Симметрии в решениях не вижу. Язык не даёт подходящего средства.
Может мы слегка запутались. Симметричными я считаю только решения во вложении. Возможно им надо добавить "руну Соул".
ДД -- не мой конёк.
И не мой - я опрометчиво полагал, несмотря на отсутствие практики использования, что в ДД нет ничего "такого".
В стандарте сказано, что "молния" прерывает, а обычное ребро -- нет. Т. е. не всякое ребро через границу прерывающее. Также там есть Figure 15.73.
Figure 15.73 - 4 случая ребра через границу:
  • от OrderCancelRequest к CancelOrder - ребро с молнией и по смыслу прерывающее
  • от ReceiveOrder к CloseOrder - ребро без молнии, а по смыслу прерывающее
  • от FillOrder к SendInvoice - ребро без молнии и по смыслу прерывания нет
  • от ShipOrder к CloseOrder - опять ребро без молнии, а по смыслу прерывающее
Есть подозрение, что на Ваши последние варианты надо добавить "руну Соул".
Возможно



Может мы слегка запутались.
Авторы стандарта, в частности Бок (мама дорогая, сколько лет тому назад) смотрят на прерываемые регионы с использованием метафоры обработки исключительных ситуаций. Вероятно, Вы используете другую метафору. Это ни плохо, ни хорошо. Я пока толкую, исходя из общей с авторами стандарта метафоры.

Можно вводить собственные термины, такие как "по смыслу прерывающее ребро". Но это оправдано, к. м. к., тогда, когда стандартная терминология неудобна или не применима.
[...и улетело НЛО.]



Авторы стандарта, в частности Бок (мама дорогая, сколько лет тому назад) смотрят на прерываемые регионы с использованием метафоры обработки исключительных ситуаций. Вероятно, Вы используете другую метафору. Это ни плохо, ни хорошо. Я пока толкую, исходя из общей с авторами стандарта метафоры.

Можно вводить собственные термины, такие как "по смыслу прерывающее ребро". Но это оправдано, к. м. к., тогда, когда стандартная терминология неудобна или не применима.
Я тоже хочу использовать общую с авторами стандарта метафору, но пока её не осознал!

У всех виденных мной примеров на прерываемые регионы конструкция на прерывание одна и та же - узел приёма события без входящих ребер и единственное выходящее из него прерывающее ребро. Если есть другие примеры - дайте, пожалуйста, ссылки.



Если есть другие примеры - дайте, пожалуйста, ссылки.
По-моему, их нет. Одна попытка изобразить прерывающим ребром досрочный выход из цикла скорректирована в пользу стандарта.
[...и улетело НЛО.]