Семантика на Fork и Join в UML State машини

Може ли някой да ми каже дали двата модела по-долу (горният, взет от UML Superstructure Specification) са семантично еквивалентни? Разклоняване и присъединяване спрямо влизане в родителско състояние

Търся да добавя типове псевдо състояния на Fork и Join към библиотеката на моята машина и това изглежда е полезен начин за прилагане.


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


Отговори (3)


Тези две диаграми не са еквивалентни.

Замяната на вилицата с два инициала не е проблем: в горния автомат A1 и B1 стават активни едновременно, както и в долния.

Замяната на Join с две крайни състояния обаче е проблематична. В горния случай (Процес, A2, B2) е последната конфигурация на състоянието, преди почистването да стане активно. При всяко изпълнение, преди почистването да е активно, процесът, A2 и B2 са активни. В малките букви (Процес, финал, финал) трябва да е активен.

С други думи, (Процес, A2, B2) и (Почистване) са конфигурации на състояние на „съсед“ в главния регистър, но не са в малкия регистър. Между тях има (Процес, финал, финал).

„Семантично еквивалентно“ зависи от това какво определяте като семантично релевантно. За мен има значение дали Почистването е следващата стъпка след (Процес, A2, B2) или е следващата следваща стъпка.

ОЩЕ ОЩЕ

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

person gefei    schedule 10.04.2014
comment
Въпросът ми трябваше да гласи семантична еквивалентност... Малко съм заинтригуван re. „повече възможности“ за излизане от процеса в долната диаграма; за да излезете от процеса, със сигурност и двата региона трябва да са във финално състояние, преди да може да се премине преходът за завършване към почистване? - person Mesmo; 10.04.2014
comment
Благодаря gefi - разбрах (и сега имам план, който ще работи и ще запази Процес (A2, B2) като последно състояние...) - person Mesmo; 10.04.2014
comment
@DMM Освен това, в горния случай A2 и B2 трябва да бъдат едновременно активни, преди процесът да бъде напуснат. В малките букви няма такава нужда. Следа може да бъде ... (Процес, окончателен, B1), (Процес, краен B2), (Процес, краен, краен), след това процесът остава. - 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

Мисля, че от вашата гледна точка на изпълнение те са еднакви. Другите отговори тук просто спорят за семантиката, но това е, което попитахте във въпроса. Що се отнася до продукцията, те са еднакви. Първоначалното псевдосъстояние не може да има тригери или предпазители, а крайното състояние не може да има изходящи преходи. И съставният процес не може да излезе, освен ако и двата региона не са финализирани. И така, вашият композитен процес основно поема ролите на псевдосъстоянията Fork и Join.

person dotnetzen    schedule 16.12.2017