Как идентифицировать действия, созданные из одной и той же панели активации, не произошло одновременно?(Последовательность биграмм) - PullRequest
0 голосов
/ 06 июля 2019

UML

Я смотрю на диаграмму последовательности, аналогичную прикрепленному снимку, объект A создал 3 действия на одной панели активации и получил объект B с такой же панелью активации.

Так могу ли я сказать, что 3 функции выполняются одна за другой? Так как они - твердые стрелки, я не уверен, что мое понимание верно.

Пожалуйста, сообщите, спасибо.

1 Ответ

1 голос
/ 07 июля 2019

Могу ли я сказать, что 3 функции выполняются одна за другой?Поскольку они представляют собой сплошную стрелку

Стрелки указывают синхронные сообщения, поэтому второе сообщение не может быть отправлено до окончания выполнения функции A , первое не может быть отправлено доконец выполнения функции B и ExecutionSpecification на линии жизни Объект A не может быть завершен до окончания выполнения функции C ,

объект Созданные 3 действия на одной панели активации

Все эти три сообщения могут начинаться с одной и той же ExecutionSpecification на линии жизни Объект A

3 действия ... полученный объектом B с той же строкой активации

Это недопустимо, ExecutionSpecification представляетвыполнение одного и только действия / поведения, поэтому вам нужно три ExecutionSpecification на линии жизни объекта B , вы не можете иметь только одно.

Действительная диаграмма можетбыть:

enter image description here

или также показывать возврат:

enter image description here

(для них function_c вызывается не сразу, когда возвращается function_b, выполнение на объекте делает «что-то» до введения задержки, а также «что-то» после)


из вашего замечания:

Из требований, согласно которым эти 3 функции должны быть выполненыредактируется объектом B одновременно.Это означает, что я должен использовать линейную стрелку вместо твердой стрелки?И могу ли я использовать ту же спецификацию ExecutionSpecification для objectB, если функции выполняются одновременно?

Если вы используете асинхронные вызовы (открытая стрелка), ответного сообщения нет, поэтому object a не можетзнать, когда выполнение заканчивается, и он может немедленно отправить следующее сообщение.

Тот факт, что 3 функции должны выполняться объектом b одновременно является чем-то другим, асинхронные вызовы могут выполняться последовательно получателем, а тот факт, что получатель выполняет параллельные выполнения, не подразумевают асинхронные вызовы, но да, вы можете использовать асинхронные вызовы.

Вам все еще нужно использовать 3 ExecutionSpecification для объекта b , чтобы показать одновременное выполнение, просто используйте объединенный фрагмент "par" .

Так, например:

enter image description here

...