我有一个设备,我代表一个班级,有两个演员,一个远程和本地操作员,可以打开或关闭设备。两个演员都将使用设备的功能。但是我现在如何使用序列图表示它们,因为如果我从本地和远程绘制一个事件,它将在设备上显示一个发生在另一个之后,但实际上两个actor正在使用相同的函数并且可以调用它时间。那么我如何在下面的序列图中表示两个演员。
P.S。 RAN40L是设备,CMS是远程操作员,模拟器操作员是本地操作员。
答案 0 :(得分:1)
碰巧我从国防工业获得了丰富的经验,包括海军CMS,所以我熟悉这个领域。
关键问题是,与UML一样,您希望在图表中显示什么,当然这与您在其他图表中显示的内容相关联。没有图表可以单独读取,您永远不会在单个序列图中捕获整个雷达功能。
请记住,序列图旨在以严格的顺序显示事件。可以使用适当的片段显示一些基本的并发性,但是如果你想表明两个actor完全相同的事情,那么序列在两种情况下实际上是同一个,那么序列图是错误的地方表明。
假设此序列旨在作为用例的详细说明,那么解决方案是用单个actor替换两个actor,例如" Radar Controller"。然后,这个角色可以专门用于CMS和模拟器,如果雷达不知道或不关心谁在某些(使用)情况下与其进行交互而在其他情况下没有,则这是有道理的。
如果雷达从不作出区分,那么根本不应该是两个演员。演员必须对他们与之交互的系统有意义,否则你的演员模型会出现问题。
因此,一种解决方案是构建如下用例。
答案 1 :(得分:0)
http://sdedit.sourceforge.net/images/webserver.png 这是一个使用两个演员的好例子。默认情况下将一个actor放在另一个actor的另一端(在示例中没有这样做)。
答案 2 :(得分:0)
Actor被认为是序列图中的另一个对象。你可以任意选择很多演员,并像其他任何对象一样使用它们,在这个意义上没有任何限制。
虽然有一些风格指南,但最重要的是关于Actors在图上的定位。通常的做法是在图表的边框上显示actores,将内部系统对象保留在内部。此外,人类演员通常显示在左侧,而系统演员则保持在右侧。参与者不应与系统对象“混合”。这是一个简单的例子:
答案 3 :(得分:0)
行为图中的所有内容都是在图表定义的行为开始后执行的。 如果参与者单独进行交互,并且他们的交互不会在单次执行中mo,则必须为每个案例绘制图表。 我想说你需要两个图表,每个图表都有一个演员。