Конечный автомат UML: диаграмма классов состояния с переходами, триггерами и событиями

TL; DR: Как мне представить переход UML (см. Следующую строку) на диаграмме объектов UML?

событие (параметры_события) [условие_охранения] / doStuff ()

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

Однако до сих пор мне не удалось точно представить переходы. Я хотел бы иметь возможность показывать переходы, которые имеют триггер (событие), охрану (ограничение) и / или поведение.

Я искал похожие вопросы (приходит этот close, но не предоставляет точную информацию, которую я ищу), а также прочитал соответствующие части надстройки UML, но все еще не могу понять это.

До сих пор я создал диаграмму объектов на основе состояния S1 (и всех переходов), показанного на диаграмме конечного автомата ниже. Следует отметить, что я добавил только события, поскольку защита и поведение вызывают у меня похожие проблемы (и могут загромождать диаграмму).

Диаграмма конечного автомата, содержащая состояние S1

Диаграмма конечного автомата, содержащая состояние S1

(неверная) диаграмма объектов для S1, включая все переходы (я предполагаю, что по крайней мере экземпляры SignalEvent (в некоторой степени) неверны.)

(неверная) Диаграмма объектов для S1, включая все переходы (я предполагаю, что по крайней мере экземпляры SignalEvent (отчасти)  неверно.)


person tjalling    schedule 26.09.2012    source источник
comment
Я не мог напрямую публиковать фотографии, потому что у меня нет 10 представителей. пока что поменял их на ссылки.   -  person tjalling    schedule 26.09.2012
comment
@David Спасибо, что поменяли ссылки обратно на картинки   -  person tjalling    schedule 27.09.2012


Ответы (3)


Конечные автоматы показывают, как система реагирует на стимулы, а диаграммы объектов представляют конкретное состояние системы в определенный момент времени. Поскольку диаграммы объектов статичны, вы не можете представить в них переход конечного автомата. Что вы можете сделать, так это создать две диаграммы объектов и сообщить, что вторая диаграмма является результатом применения указанного перехода между состояниями к первой диаграмме. Но я не думаю, что есть формальный способ сделать это.

person vainolo    schedule 27.09.2012
comment
Я думаю, вы неправильно поняли его вопрос (или я понял ^^). Вопрос заключался в том, как представить абстрактный синтаксис диаграммы на диаграмме объектов, и это полностью верно. - person Christian; 27.09.2012
comment
@Christian прав. Я предполагаю, что, пока существует объект StateMachine (или, скорее, область, содержащая S1, S2 и S3), все четыре перехода также существуют и, как таковые, могут быть представлены в диаграмме объектов . Однако я не уверен в сроке жизни экземпляров SignalEvent. - person tjalling; 27.09.2012

Мета-модель UML2 довольно сложна. Если вы хотите, чтобы он был совместим с UML2, я предлагаю следующее: Используйте инструмент с метамоделью org.eclipse.uml, который способен рисовать диаграммы состояний. Один с открытым исходным кодом будет Topcased. Полный список можно найти здесь (но не все из них поддерживают диаграммы состояний) .

После того, как вы нарисовали диаграмму, сохраните ее как файл .uml. Файл содержит XMI и вполне удобен для чтения человеком. Будет немного проще, если вы откроете его с помощью программы просмотра EMF (установленной в Topcased), просто используйте в ней «Открыть с помощью»).

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

person Christian    schedule 27.09.2012
comment
Я попробую и опубликую результаты, спасибо. На самом деле, соответствие UML2 очень важно. - person tjalling; 27.09.2012
comment
Topcased очень помог, направив меня в правильном направлении и предоставив средства проверки. В сочетании с надстройкой UML и двумя сообщениями на форумах сообщества Eclipse я смог понять это. В конце концов, моя диаграмма объектов верна. Я обновлю вопрос позже, сейчас я слишком занят написанием диссертации. - person tjalling; 04.10.2012

Текущая спецификация UML (см. https://www.omg.org/spec/UML/) есть ответ. На ней есть диаграмма, изображающая абстрактный синтаксис конечных автоматов. В сочетании с абстрактным синтаксисом триггеров спецификация предоставляет достаточно информации для создания диаграммы объектов.

person tjalling    schedule 16.11.2018
comment
К сожалению, я не могу скопировать изображения синтаксиса abstraxt из-за авторских прав. Я могу добавить диаграмму объектов позже, если это кому-то поможет. - person tjalling; 16.11.2018