Форум Сообщества Аналитиков
Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: Дмитрий Валерьевич от 02 Июля 2009, 17:38:17
-
UML2. Диаграмма состояний (конечный автомат) -> Составные состояния -> Ортогональное составное состояние:
"Выход из составного состояния" = "Выход из всех областей составного состояния" =? "Завервешение выполнения всех подавтоматов"?
или короче: Выход из области =(влечет) завершение работы находящегося в ней подавтомата ?
-
А что такое ортогональное составное состояние?
-
почти подготовил материал по этой теме для блога. Через пару часиков...
-
Как обещал. Тут (http://blog.it-konsulting.spb.ru/?p=275).
-
;D да я тоже в блоге почти "нарисовал" по этой теме.
Но вопрос чуть уже. При явном выходе из области А (завершении работы подавтомата А) происходит выход из всего составного состояния, т.е. и из области Б тоже (это мы знаем). Означает ли это, что подавтомат Б завершает выполнение? Если да, то где об этом сказано.
-
Подавтомат Б тоже ОБЯЗАН отреагировать на событие, по которому осуществляется выход из области А.
Иначе модель семантически неверна.
-
Что значит "отреагировать"? значит "завершает"?
Где написано, что диаграмма будет неверна?
В книге Арлоу и Нейштадт "UML2 и УП" (правда, в русскоязычной) сказано: "...происходит выход из суперсостояния. Подавтомат А завершается, но подавтомат Б продолжает выполнение" (стр.497). После этого утверждения я и решил разобраться, как же на самом деле.
-
Слишком много слов...Приводите примеры диаграмм. Их и будет обсуждать
-
(http://sysana.wordpress.com/files/2009/07/uml_sm_orthogonal_composite_state.png)
При переходе из А2 в ZA происходит выход из всего суперсостояния АВ. Как понимать "подавтомат В продолжает выполнение"?
-
При переходе из А2 в ZA происходит выход из всего суперсостояния АВ.
Конечно из состояния AB мы должны выйти. Но мы должны выйти и их подавтомата B. Этого на диаграмме не показано (есть неоднозначность в интерпретации).
Вообще на переходе A2 - ZA обязательно должно быть событие, чтобы облегчить понимание того, что хотел сказать автор.
-
Обращаемся к спецификации UML2.2, получаем:
When exiting from an orthogonal state, each of its regions is exited. (При выходе из ортогонального состояния осуществляется выход из всех областей этого состояния.)
Так что вопрос написан ранее: выход из (под)состояния влечет ли завершение работы (под)автомата?
-
Так что вопрос написан ранее: выход из (под)состояния влечет ли завершение работы (под)автомата?
по-моему ответ уже дан
Этого на диаграмме не показано (есть неоднозначность в интерпретации).
По-моему на Вашем примере не влечет, надо указать составной переход чтоб влеклось.
Представил себе AB без внутренностей, мы ушли в ZA а что там в AB осталось неизвестно, потому как не указано и то что книжка пишет по-моему логично - где гарантия что подавтомат остановился? Он себе в паралельной нитке живет. Но возможно это именно неоднозначность, а вот в блоге denis-itk всё понятно.
-
где гарантия что подавтомат остановился? Он себе в паралельной нитке живет. Но возможно это именно неоднозначность
Вот потому и хочется однозначности, и именно на этом примере. Согласно нотации он останавливается или нет?
-
Вот потому и хочется однозначности, и именно на этом примере. Согласно нотации он останавливается или нет?
Напомню, что нотация, это просто правила по которым конструкции языка соединяются между собой и образуют, например, диаграмму.
Приписывание смысла этим конструкциям - это совершенно другое. Называется это семантикой.
Нотация данного примера верна, но семантика НЕОДНОЗНАЧНА.
Другими словами, если это реальная диаграмма из какого-либо проекта, то люди, которые в процессе своей деятельности должны будут использовать эту диаграмму не смогут ее однозначно интерпретировать и должны потребовать от автора диаграммы объяснений по некоторым вопросам.
Один из них может звучать так:
А что будет, если мы находимся в состоянии A2+B1 и в это время приходит сигнал (кстати непонятно какой), который приводит к активации перехода из A2 в ZA.
-
Арлоу и Нейштадт тут просто напутали. Выше на стр. 495 написано (тоже с некоторой путаницей), что нет синхронизации параллельных регионов в смысле, что второй не выходит, пытаясь догнать вышедший первый, и что мы не ждём когда выйдут оба. Остальные "просто прерывают выполнение". Т. е. в них жёсткий останов без совершения действий во выходу и т. п..
Путаницу можно усилить, слив два exit point-а в один. Тогда слитный exit point будет работать как join. Т. е. будет синхронизация. Чудеса, да и только.
IBMшики взяли себе за правило рисовать лишь один переход, ведущий в exit point.