Семантика Fork и Join в конечных автоматах UML

Может ли кто-нибудь сказать мне, являются ли две приведенные ниже модели (верхняя взята из спецификации надстройки UML) семантически эквивалентными? Разветвление и объединение по сравнению с входом в родительское состояние

Я хочу добавить виды псевдосостояний Fork и Join в свою библиотеку конечного автомата, и это кажется мне полезным способом реализации.


person Mesmo    schedule 09.04.2014    source источник


Ответы (3)


Эти две диаграммы не эквивалентны.

Заменить вилку на два инициала не проблема: в верхнем автомате A1 и B1 становятся активными одновременно, то же самое и в нижнем.

Однако замена соединения двумя конечными состояниями проблематична. В верхнем регистре (Процесс, A2, B2) — это последняя конфигурация состояния перед активацией очистки. В каждом запуске, до того, как активируется Cleanup, активны Process, A2 и B2. В нижнем регистре это (Process, final, final) должно быть активным.

Другими словами, (Процесс, A2, B2) и (Очистка) являются «соседними» конфигурациями состояния в верхнем регистре, но не в нижнем регистре. Между ними есть (Процесс, окончательный, окончательный).

«Семантически эквивалентный» зависит от того, что вы определяете как семантически релевантное. Для меня имеет значение, является ли Очистка следующим шагом после (Процесс, А2, В2) или следующим следующим шагом.

БОЛЬШЕ

в верхнем регистре A2 и B2 должны быть активны одновременно, прежде чем процесс будет оставлен. В нижнем регистре такой необходимости нет. След может быть... (Процесс, конечный, В1), (Процесс, конечный В2), (Процесс, конечный, конечный), тогда остается Процесс.

person gefei    schedule 10.04.2014
comment
Мой вопрос должен был читать семантическую эквивалентность... Я немного заинтригован. «больше возможностей» для выхода из Процесса на нижней диаграмме; чтобы выйти из процесса, конечно, обе области должны быть в конечном состоянии, прежде чем можно будет пройти завершающий переход к очистке? - person Mesmo; 10.04.2014
comment
Спасибо, gefi - понял (и теперь у меня есть план, который сработает и сохранит процесс (A2, B2) как последнее состояние...) - person Mesmo; 10.04.2014
comment
@DMM Более того, в верхнем регистре A2 и B2 должны быть активны одновременно, прежде чем процесс будет оставлен. В нижнем регистре такой необходимости нет. След может быть... (Процесс, конечный, В1), (Процесс, конечный В2), (Процесс, конечный, конечный), тогда остается Процесс. - person gefei; 10.04.2014

Начальное и конечное состояния на нижней диаграмме не существуют на верхней. Они подразумевают дополнительное поведение перед состояниями A1/B1 и после состояний A2/B2, которых нет на верхней диаграмме, поэтому нет, они не являются эквивалентными диаграммами. На верхней диаграмме подразумевается, что состояние SETUP или событие перехода отвечает за разветвление и создание 2 процессов, A и B. Нижняя диаграмма подразумевает, что ПРОЦЕСС отвечает за создание 2 процессов.

person Bruce    schedule 10.04.2014
comment
Поскольку ни псевдосостояния, ни конечные состояния не могут иметь входного или выходного поведения, откуда может исходить «дополнительное поведение»? - person Mesmo; 10.04.2014
comment
Хороший вопрос. Для меня они означают создание и удаление. - person Bruce; 10.04.2014

Я думаю, что с вашей точки зрения реализации они одинаковы. Другие ответы здесь просто спорят о семантике, но это то, что вы задали в вопросе. Что касается вывода, то они одинаковые. Псевдосостояние Initial не может иметь триггеров или охранников, а конечное состояние не может иметь исходящих переходов. И составной процесс не может выйти, пока оба региона не будут завершены. Таким образом, ваш композит Process в основном берет на себя роли псевдосостояний Fork и Join.

person dotnetzen    schedule 16.12.2017