2015-11-15 9 views
0

В диаграммах последовательности UML у вас есть объединенный тип фрагмента Alt для ветвления на основе разных значений параметров. Но предположим, что в середине вашей последовательности вы ожидаете одного из двух разных сообщений от двух разных внешних участников, и вы будете разворачивать код в зависимости от того, какой из них прибывает, что было бы лучшим способом его моделировать? И чтобы сделать вопрос немного более сложным, давайте предположим, что ни одно сообщение не приходит (вызывая таймаут).В диаграммах последовательности UML можно моделировать дополнительные внешние входы

Без лучшего решения я бы разделил диаграмму последовательности на несколько диаграмм последовательностей, каждая из которых начиналась с одного из двух возможных сообщений. Или, возможно, просто перейдите на государственные машины. Но разве это не слишком запутанный способ, который позволил бы мне показать эти разные случаи в одной диаграмме последовательности?

+1

Посмотрите здесь, для аналогичного вопроса: http://programmers.stackexchange.com/questions/153560/how-to-visualize-timer-functionality-in-sequence-diagram – Catweazle

ответ

1

Я бы просто пошел за двумя SD, которые вы можете назвать соответственно. Следует всегда иметь в виду, что SD должен подчеркнуть определенный аспект сложной цепочки действий в системе. Пытаясь поместить все больше и больше информации в один SD, это испортит и затруднит больше, чем помогает.

Также возможно использовать фрагменты диаграммы, которые позволяют перемещаться по двум фрагментам.

enter image description here

Диаграмма времени не будет реально помочь здесь. Вам понадобится большой альт-фрагмент, чтобы показать последовательности, в зависимости от того, какое сообщение было первым.

1

В дополнение к ответу, который я упомянул в комментарии, я сделал небольшой пример с ограничением продолжительности таймаута.

enter image description here

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