UML State Machine: диаграмма классов состояния с переходами, триггерами и событиями
TL;DR: как мне представить UML-переход (см. Следующую строку) в диаграмме объектов UML?
событие (event_parameters) [guard_condition] / doStuff()
В моем дипломном проекте бакалавра я работаю с UML StateMachines (поведенческие, без протоколов SM). Помимо представления Диаграммы конечного автомата, мне требуются Диаграммы объектов.
Однако до сих пор мне не удалось точно представить переходы. Я хотел бы иметь возможность показывать переходы, которые имеют триггер (событие), охрану (ограничение) и / или поведение.
Я искал похожие вопросы ( этот вопрос близок, но не дает точной информации, которую я ищу), а также прочитал соответствующие части UML Superstructure, но все еще не могу понять это.
До сих пор я создал диаграмму объектов на основе состояния S1 (и всех переходов), показанного на диаграмме конечного автомата ниже. Я должен отметить, что я только добавил события, так как охрана и поведение вызывают у меня похожие проблемы (и загромождают диаграмму).
Схема конечного автомата, содержащая состояние S1
(неверно) Диаграмма объектов для S1, включая все переходы (я предполагаю, что по крайней мере экземпляры SignalEvent (несколько) неверны.)
3 ответа
Конечные автоматы показывают, как система реагирует на раздражители, в то время как диаграммы объектов представляют определенное состояние системы в определенный момент времени. Поскольку диаграммы объектов являются статическими, вы не можете представить в них переход конечного автомата. Что вы можете сделать, это создать две объектные диаграммы и сказать, что вторая диаграмма является результатом применения указанного перехода состояния к первой диаграмме. Но я не думаю, что есть формальный способ сделать это.
Метамодель UML2 довольно сложна. Если вы хотите, чтобы он был совместим с UML2, я предлагаю следующее: Используйте инструмент с метамоделью org.eclipse.uml, который способен рисовать диаграммы состояний. С открытым исходным кодом будет Topcased. Полный список можно найти здесь (но не все из них поддерживают диаграммы состояний).
После того, как вы нарисовали диаграмму, сохраните ее как файл.uml. Файл содержит XMI и вполне читабелен. Немного проще, если вы откроете его с помощью EMF viewer (установленного в Topcased), просто используйте в нем "Открыть с помощью").
Если вас не интересует соответствие UML2 и вы просто хотите что-то похожее на диаграмму выше, эти решения приведут к более сложной диаграмме объектов, чем необходимо.
Текущая спецификация UML (см. https://www.omg.org/spec/UML/) имеет ответ. Он имеет диаграмму, которая изображает абстрактный синтаксис конечных автоматов. В сочетании с абстрактным синтаксисом триггеров спецификация предоставляет достаточно информации для создания диаграммы объекта.