Могу ли я разделить поток действий на диаграмме действий, используя последний узел активности?
У меня есть диаграмма варианта использования, и вот ее часть, часть, необходимая для изображения того, что я хочу сделать:
И я нарисовал диаграммы активности включения с помощью ручки и выключения с помощью ручки следующим образом:
Но я не уверен насчет Финального Узла в ветвях решений обеих диаграмм. То, что я хочу сделать, - это сохранить отдельные диаграммы для диаграмм сценариев использования при включении с помощью KNOB и при выключении с помощью KNOB, но я не уверен, является ли правильное представление, например, размещение конечного узла в решении. поток операций на диаграмме действий для включения с помощью KNOB заканчивается, если в ветви принятия решений получается, что система уже включена, это потому, что если система уже включена, то соответствующая диаграмма действий представляет собой диаграмму действий " ВЫКЛЮЧИТЬ с помощью KNOB".
Но это кажется довольно запутанным, потому что Как я узнаю, какую диаграмму действий выбрать, если оба одинаковы, пока ветвь решения не будет достигнута? Я имею в виду, что это правильно с точки зрения совместимости с UML, например, начать следовать последовательности операций Turn ON с помощью диаграммы активности KNOB, а затем перейти к ветви принятия решений и определить, что система уже включена, и просто "прыгнуть" диаграмме действий соответствуют сценарию использования Turn OFF with KNOB и продолжайте следовать последовательности операций на последней диаграмме из ветви принятия решений? Или я должен строго придерживаться сценария, что Система уже ВЫКЛЮЧЕНА, и выбрать диаграмму действий ВКЛЮЧИТЬ с ЗНАНИЕМ?
Теперь это приводит меня к другому вопросу; Могу ли я представить более одного варианта использования для каждой диаграммы деятельности?
1 ответ
В спецификации UML сказано, что у действия может быть более одного конечного узла действия. Первый достигнутый останавливает все потоки в деятельности. (Таким образом, в вашем примере поток управления останавливается либо потому, что свет уже был включен / выключен, либо после его включения в это состояние). В качестве альтернативы, вы можете сделать так, чтобы оба ребра нацеливались на один и тот же конечный узел *, это эквивалентно, поскольку единственное назначение конечного узла - завершение действия.
По моему мнению, каждый вариант использования должен быть отделен от других (хотя действие может содержать вложенные действия, которые будут моделировать поведение более низкого уровня).
(* Обратите внимание, что это не "конечное состояние", а "конечный узел", поскольку он находится на диаграмме действий. Конечные автоматы имеют конечные состояния.) Кроме того, вы не "разделяете" поток операций (как в узле ветвления), поскольку узел принятия решений выбирает ровно один исходящий фронт.