我创建了一个序列图,希望将其转换为通信/协作图。我了解转换和编号过程,但我想知道,由于我的序列图在 alt 片段下有循环,它们的编号将如何在通信图中?
编辑:我在这里想知道的是,由于循环是一种IF情况,对这些序列进行编号是否仍然可以?我认为如果用户的通信是1.0 Enter registered Username and Password, 2.0 Re-enter registered Username and Password...2.0 这是不合逻辑的,这里是 IF 循环情况
我创建了一个序列图,希望将其转换为通信/协作图。我了解转换和编号过程,但我想知道,由于我的序列图在 alt 片段下有循环,它们的编号将如何在通信图中?
编辑:我在这里想知道的是,由于循环是一种IF情况,对这些序列进行编号是否仍然可以?我认为如果用户的通信是1.0 Enter registered Username and Password, 2.0 Re-enter registered Username and Password...2.0 这是不合逻辑的,这里是 IF 循环情况
通信图和序列图从不同的角度表示相同的交互。但是消息的简化图形表示在涉及组合片段时意味着通信图中的限制。
在通信图中,您可以表示:
1,2和3十进制编号,例如2.1, 2.2,2.2.1loop序列图中的运算符),使用*后面的数字。更具体的循环规范可以在括号之间的开头之后,例如*[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 的建议: