如果一个用例图中的参与者既是主参与者又是次参与者(用于不同的用例),那么会发生什么?

4

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


并非所有辅助角色的概念化都将接收通知的用户归类为辅助角色,例如请参见:https://thetelepathic.wordpress.com/2015/11/26/use-case-actors-primary-versus-secondary/。 - vrsio
@vrsio 这就是人们在缩写 YMMV 下放置的内容。当然,它确实如此 :-) - qwerty_so
1
@qwerty_so 当然,你是正确的。我只想指出OP问题的一个可能解决方案,并不把客户视为次要角色,至少在那些客户除了接收通知之外什么也不做的用例中不这样做。此外,有些方法学根据这种方式绘制用例图实际上是正确的。我之前评论中链接的文章最初是在Oracle网站上发布的(我收藏了它,但现在该收藏夹不再起作用),描述了在Oracle统一方法中绘制用例图的正确方式。 - vrsio
1个回答

3

左/右表示法只是一种惯例,而不是法律。即使在某些用例中它是一个次要的角色,我也会始终将主要角色放在左边。或者创建多个UC图,在其中可以按照惯例放置角色。也就是说,一个UC图中包含了演员及其主要角色和用例,另一个UC图则显示了使用它作为次要角色的UC。

复制元素最多只能作为后备措施。UML并不禁止使用,但仅在一种情况下与一般化一起使用。问题在于您无法在图表上看到某个元素是具有相同名称的其他东西还是仅仅是同一个事物的两个渲染。我建议禁止它。(在我使用的工具中,在一个图表上甚至不可能有两个相同的元素。)

过去我还有一种惯例,即为次要演员添加“使用”关联。这更加清晰,但需要在整个模型中进行实践和文档化。


2
另一种可能性是使用OP提到的可导航箭头来区分主要/次要参与者,如此处所述:https://www.sparxsystems.eu/resources/project-development-with-uml-and-ea/use-case-diagram/ “通过指示可导航关联(从Actor到或从Actor出发的箭头),可以表达更多用例语义...当参与者导航到用例时,参与者是主动方并启动了用例。反之,在从用例到参与者的导航中,参与者是被动的,并且将被用例要求和请求参与。” - vrsio
1
@vrsio 是的,这里又是一个“因人而异”的情况。没有正确的方法,只要在建模领域中保持一致即可,这通常已经足够困难了。众口难调,众模型师难和成一致的模型。 - qwerty_so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接