0

我创建了一个序列图,希望将其转换为通信/协作图。我了解转换和编号过程,但我想知道,由于我的序列图在 alt 片段下有循环,它们的编号将如何在通信图中?

这是我的序列图示例,其中包含其中一个循环: 在此处输入图像描述

编辑:我在这里想知道的是,由于循环是一种IF情况,对这些序列进行编号是否仍然可以?我认为如果用户的通信是1.0 Enter registered Username and Password, 2.0 Re-enter registered Username and Password...2.0 这是不合逻辑的,这里是 IF 循环情况

4

1 回答 1

0

通信图和序列图从不同的角度表示相同的交互。但是消息的简化图形表示在涉及组合片段时意味着通信图中的限制。

在通信图中,您可以表示:

  • 简单的消息序列和嵌套消息,通过时间顺序编号,例如:1,23十进制编号,例如2.1, 2.2,2.2.1
  • 循环(loop序列图中的运算符),使用*后面的数字。更具体的循环规范可以在括号之间的开头之后,例如*[1..n]*[element in collection]。您的循环条件在序列图中未指定,因此 a*会这样做。
  • 简单条件(opt序列图中的运算符),在数字后的括号之间使用条件,例如[t>10]

因此,在您的示例中,我们可以想象:`

1: Enters username and passord
2: Check validity
2.1*: Mismatch of name or password    // return message, not usual     
2.2:  Prompt user to re-enter credentials
2.3:  Re-enter username and password
2.4:  Re-check validity               // missing in the SD in the loop
3: Verify user
4: USer verified
5: Display profile  

现在这里有两个问题:首先,在您的序列图check validity中,循环中缺少一个。其次,为了简单起见,我展示了所有消息,但在通信图中,您通常不会返回消息,以使事情更简单。所以我们会有一个稍微简单的模型:

1: Enters username and passord
2: Check validity   //message, return is implicit
3.1*[credentials invalid]: Prompt user to re-enter credentials      
3.2: Re-enter username and password
3.3: Check validity 
4: Read user
5: Display profile  

选择 SD 和 CD 的建议:

  • 如果您有许多相关的生命线,请制作几个较小的 SD 或选择 CD。
  • 如果您有很多消息交换,尤其是在同一条生命线之间,则更喜欢 SD,因为随着消息的增加,跟随 CD 上的数字会呈指数级不直观,并且箭头上方的长消息列表看起来很难看。
  • 如果您有许多组合片段,或者如果您有多个循环和可选项,请继续使用 SD。
于 2021-11-27T16:40:09.940 回答