Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uml 如果用例图中的参与者同时是主要参与者和次要参与者(对于不同的用例),该怎么办?_Uml_Use Case_Use Case Diagram - Fatal编程技术网

Uml 如果用例图中的参与者同时是主要参与者和次要参与者(对于不同的用例),该怎么办?

Uml 如果用例图中的参与者同时是主要参与者和次要参与者(对于不同的用例),该怎么办?,uml,use-case,use-case-diagram,Uml,Use Case,Use Case Diagram,我有一个约会计划应用程序的用例图。客户通常是主要参与者(例如,当他们注册、搜索服务、选择日期等)。在2个用例中,客户是次要参与者(例如,当他们收到服务提供商发送的通知时)。我如何在用例图中正确地可视化它?复制演员“customer”并将其放置在左侧和右侧。或者使用箭头?左/右符号是一种惯例,而不是法律。我会将主要参与者放在左边,即使在某些用例中它是次要的。或者,创建多个UC图,其中角色可以按照约定放置。也就是说,在一个UC图中,参与者具有其主要角色和用例,在另一个UC图中,显示了将其用作次要角色

我有一个约会计划应用程序的用例图。客户通常是主要参与者(例如,当他们注册、搜索服务、选择日期等)。在2个用例中,客户是次要参与者(例如,当他们收到服务提供商发送的通知时)。我如何在用例图中正确地可视化它?复制演员“customer”并将其放置在左侧和右侧。或者使用箭头?

左/右符号是一种惯例,而不是法律。我会将主要参与者放在左边,即使在某些用例中它是次要的。或者,创建多个UC图,其中角色可以按照约定放置。也就是说,在一个UC图中,参与者具有其主要角色和用例,在另一个UC图中,显示了将其用作次要角色的UCs

复制一个元素充其量只是一种退步。UML并没有禁止它,但它只在一个地方使用,具有泛化。这里的问题是,您无法在图表上看到某个元素是具有相同名称的其他元素还是同一事物的两个渲染。我不允许这样做。(在我使用的工具中,甚至不可能在图表上两次显示同一元素。)


在过去,我也有一个为次要演员建立“使用”协会的惯例。这一点更为明确,但需要在整个模型中加以实践和记录。

不过,并非所有次要参与者的概念都会将接收通知的用户归类为次要参与者,例如,请参见:@vrsio这是人们在缩写词YMMV下的意思。当然是这样:-@qwerty_当然,你是对的。我只是想指出,OP问题的一个可能解决方案不是将客户视为第二个参与者,至少不是在那些客户除了接收通知之外什么都不做的用例中。此外,还有一些方法,根据这些方法,这实际上是绘制用例图的正确方法。在我之前的评论中链接到的文章最初是在Oracle的网站上(我已将该网站添加为书签,但该书签不再起作用)描述在Oracle统一方法中绘制用例图的正确方法。另一种可能性是使用OP提到的可导航性箭头来区分主要/次要参与者,如这里所述:
表示可导航关联(指向或来自参与者的箭头),甚至可以表示用例的更多语义。。。当一个参与者导航到一个用例时,那么该参与者就是活动方并启动该用例。反之亦然,在从用例到参与者的导航中,参与者是被动的,用例会要求参与者参与。
@vrsio Yes,这里是另一个“YMMV”。没有正确的方法,只是应该在建模领域中谨慎地处理它,这通常证明是足够困难的。许多厨师把汤弄坏了。许多建模者都在使用该模型。