【问题标题】:Simple Use Case Diagram - UML简单用例图 - UML
【发布时间】:2021-10-09 00:32:24
【问题描述】:

我有一个网页,里面有一个由许多节点组成的图表。用户显然可以查看图表(用例:preview the graph)。它还可以根据参数和难度过滤图的节点,在这种情况下,图会自行更新以突出显示感兴趣的节点(用例:filter nodes)。

我的问题是:像图中那样插入«include» 有意义吗?我想是的,因为当图表更新时,用户会显示再次更新的图表的预览。

编辑:这是图表;右侧有FILTER 面板,可以按难度和主题进行过滤。

【问题讨论】:

  • 正如 Christophe 在他的回答中指出的那样,您陷入了功能分解。另外在这里搜索有关包含/扩展(有很多)的答案。一如既往,我建议阅读 Bittner/Spence 关于用例(及其综合!)。

标签: uml use-case-diagram


【解决方案1】:

UML 语义

«include» 表示一个用例总是包含在另一个用例中。

因此,我们从您的图表中了解到Preview graph 是一组独立的行为,但它也可以包含在Filter node 中。因此过滤总是意味着预览。

形式上是正确的,意思似乎与您的叙述相符。此外,它强调了一组行为的重用。

用例逻辑

但是,用例原则上是用户目标,而不是分解得更详细的特性或功能。而且您的叙述似乎更多地描述了功能和用户界面,而不是目标。

此外,«include» 不代表序列。如果Filter node 包含Preview graph 这并不意味着过滤导致预览,也不意味着过滤发生在预览之前。

从用户角度出发

虽然我们可以争辩说预览或过滤可能是用户目标,但很明显预览不是过滤的子目标。

那么这里用户的真正目标是什么?会不会是Navigate in the graph?它是如何完成的,是用户界面细节:我们只是浏览一张图片吗?我们是否提供过滤以方便导航?我们是否使用着色来突出某些部分?我们放大看更多吗?所有这些都是(有趣的)功能,但不是独立的用例。

编辑后编辑

您的屏幕截图强化了我之前所说的:过滤只是在预览中更轻松地导航的一种手段。我建议不要将其视为用例。

如果不顾我的建议,您想在图表上显示过滤,那么您应该使用 来显示过滤行为可能会丰富导航行为:

                                               <<extend>>
actor --------- Previsualize/Navigate graph <-------------- Filter interests   

【讨论】:

  • 没错,用户的目标是导航图表,然后通过点击从图表中选择一个节点。过滤器由一个复选框表示,因此用户通过选中各个框可以仅突出显示(通过着色)感兴趣的节点。第二个用例我认为它是过滤的>,因为如果用户选中某些框,则通过对感兴趣的节点着色来更新图形,但也许它有点牵强,而且很明显。也许将“过滤节点”和“查看图表”作为单独的简单用例离开会更正常?
  • @MaxyCar 如果我们以 ATM 的经典例子为例,原则上有一个用例“现金提取”,但没有一个用例“插入卡”(因为它不是目标,而只是实现目标的平均值/约束)也不是用例“选择钞票”,(因为它不是目标,它只是关于如何实现目标的细节)。在您的情况下,问题是过滤是用户的单独目标、约束还是实现细节。用户会为了过滤而使用您的应用程序吗?或者过滤只是一个可以帮助用户实现主要目标的功能?
  • @MaxyCar 太棒了!查看您的编辑,我明确确认我的建议:从用例的角度来看,只有一个用例。过滤不是一个单独的目标,而是一个有助于导航的功能。通常,您会在用例描述中记录这一点。顺便说一句,我会推荐“基本用例”样式,它列出了参与者的意图,而不是顺序流程。
  • @MaxyCar 现在,如果不顾我的建议,您真的想在图表上显示过滤器(您的图表,您的决定),那么您应该只将参与者与预览/导航用例关联起来,并具有对主要用例的 > 依赖项的过滤。扩展意味着它可以丰富行为但不一定。
  • 谢谢,你是最棒的!
猜你喜欢
  • 2020-03-23
  • 2023-03-04
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
相关资源
最近更新 更多