如何在用例图中描绘可见性

How to portray visibility in Use Case Diagram

上下文

想象一个活动管理网站,活动策划者可以在其中post活动。假设我们有三个 Actor:non-registered userregistered userEvent Planner。活动策划者可以 post 活动,可以是 public(非注册用户可以看到)或私人活动(只有注册用户可以看到)。

问题

如何描述所有用户都可以看到 public 活动而只有注册用户才能看到私人活动?

附加问题:我应该将“查看即将发生的事件”和“查看过去的事件”分成两个不同的用例还是应该有一个“查看事件”用例吗?

我的一些想法

下图是我想到的一些可能的解决方案,但我不确定它们的正确性。

有单独的用例

使用扩展

将“查看事件”作为总括用例

您要么采纳 Geert 的建议并仅使用 See events 个用例,要么继续使用您的第一个用例。是否将 See events 拆分为 private/public 在很大程度上取决于您设计的系统。因此,考虑到需要拆分(因为两个事件的看待方式非常不同),您应该使用第一个草图。这里很清楚谁可以处理哪个UC。只需一个 UC,您就可以附加一个约束,例如 {only registered user can see private events}.

你的第二个似乎没有意义。 «extend» 是多余的,因为参与者已经与用例直接相关。该关系意味着扩展用例是在事件过程中选择性地执行的。因此,在查看私人活动的同时,还可以通过某种方式查看 public 活动。

最后的建议只是功能分解。与参与者没有联系的用例不是用例,因为它不会带来附加值。您可以使用通用用例(private/public 是 See event 的特化),但我始终建议不要使用该构造。 UC 的泛化有点矛盾。 UC 应显示给所考虑系统的参与者带来的独特附加值。但是,如果您可以概括,那么它并不是真正独一无二的。与 class 泛化不同,其中 attribute/operation 覆盖被明确定义,UC 缺乏这样的描述,需要做很多解释。