在用例图中扩展。

4
我读到过一篇文章,指出将超过一个的主要参与者连接到用例不正确,因此类似下面图片所示的情况是错误的。 enter image description here 所以我使用了继承来代替,如下图所示。 enter image description here 但是该用例有一个仅适用于一个参与者的扩展用例(第二个参与者没有该扩展用例)。 因此,在我的示例中,经理和HR都可以浏览用户,但只有经理能够封锁用户。 enter image description here 那么我该如何在图中表示它呢?
3个回答

3

一个用例连接两个或更多的参与者表示所有的参与者都涉及到这个用例。如果您想表明多个参与者中的任意一个都可以参与其中,那么一般化是一个不错的选择。

UML中没有规定“主要”参与者的概念。因此,我谈到了与用例相关的参与者。当然,在用例描述中,您需要明确哪个参与者发起了使用。这将是主要参与者。

所有与“扩展”相关的问题都可以通过简单省略它来解决。在我看来,“扩展”并没有为模型做出更好的贡献。如果想表明几个用例描述存在重叠部分,您可以使用“包含”。但实际上,您不应该过于担心这些关系。毕竟,您想描述的是哪些参与者在使用系统。每个参与者的目标都是自己的用例。


实际上,extend: 可选性是有用的。不幸的是,这往往被误解为功能分解。我猜测 OP 正确地使用了它。但一般来说,正如你所说,应该避免使用它。 - qwerty_so
“两个(或更多)与一个用例相关的参与者意味着所有参与者都参与其中”:你确定吗?难道不应该至少是“可以参与其中”吗? - Christophe
规范说明:“当UseCase与Actor具有大于一个的多重性时,表示使用案例涉及多个Actor实例。”它没有提及对多个Actor的多个关联,但由于这也意味着链接了多个Actor实例,我认为它同样适用。 - Axel Scheithauer
这是否意味着将不同角色与用例相关联的多个UCD是错误的?换句话说,未指定的多重性是否必须具有下限为1? - Christophe
@christophe:就像我说的那样,有一个派生属性lower,如果lowerValue=null,则其值为1。它被定义为_“/ lower:多重性区间的下限。”_我不知道,但对我来说,这意味着默认值是1。他们本可以将其定义为默认值,但由于某种未知原因,他们选择了更复杂的方式。 - Axel Scheithauer
显示剩余4条评论

2
我同意Axel的观点:除非你知道它的用途,否则请远离“extend”。我猜在你的情况下它是合法的。所以你可以向扩展关系或演员之一添加约束来解释限制。只需将其显示为带有约束 {在花括号中} 的注释即可。
否则,有一个惯例,将主要演员(触发UC的演员)放在左侧,涉及演员放在右侧。您的泛化方法很好。演员代表角色(就像在剧本中一样)。在UC综合期间确定这些角色是必不可少的部分。
像往常一样,我建议阅读Bittner / Spence关于用例建模的内容。

0

“Primary”演员的概念不在UML规范的最新版本(2.5.1)中。您只需将正确的演员(经理,人力资源或两者都有)与每个用例关联,而无需使用一般化(继承)。


1
一个演员是一个行为分类器,因此可以被泛化。你为什么说 OP 的方法是错误的? - qwerty_so
主要演员是否曾在UML规范中出现?难道这个区分只是一些作者提出的实际观点,被社区广泛接受(因为它确实很实用)吗?您能否引用UML规范中关于用例多个演员的内容来完善您的回答?;-) - Christophe
我同意Actor可以被泛化,因为它们甚至是可分类的。我只是想说在这里这并不是必要的。 我不知道最初的演员是否在规范中出现过。我见过它们被使用,并且发现这是一个与当前规范兼容的有用概念。我知道在OCUP 2认证指南中教授它,因为我正在为基础级别证书做准备。 - Jean FEX
@Christophe Neiter 1.5和2.0都没有提到主要参与者(可能使用了不同的术语,但我在附近搜索了“_primary_”寻找“_actor_”)。我没有比1.5更旧的规范。 - qwerty_so
我再次仔细查看了演员的规范。嗯,目前可能还有更多的描述(或者曾经有过)。肯定需要表达主要演员(触发UC)和次要演员(被触发者)之间的区别。我过去引入了自己的符号表示法,并提供了建模指南。希望看到UML更加详细,但在我看来,OMG更多地受到技术人员而非业务人员的控制。 - qwerty_so
在OCUP 2认证指南的第12.1.2节中,建议在Actor-Use Case关联上使用开放箭头头部,如下所示: 用例侧的箭头头部表示“演员启动用例”。 用例侧的箭头头部表示“此用例联系演员以启动行为”。 由于这些是关联,“它们”的端点与类之间的关联相同。因此,可以使用多重性和方向。 - Jean FEX

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