“用例”图中用例之间的未知关联

时间:2018-08-28 03:30:07

标签: uml use-case

在项目中,有一个用例“ sync”用于同步文件。自然,有时“同步”用例需要“下载文件”,这是另一个用例。因此,“同步”和“下载文件”之间存在关联;但是“下载文件”不会extend“同步”,因为它是同步的一部分,有时如果没有同步,同步就无法完成。尽管“同步”不会include“正在下载文件”;但是因为在某些情况下,同步不需要进行下载。

如何在用例图中描述这种situatin?

2 个答案:

答案 0 :(得分:2)

在此类情况下,使用可以使用include

常见的误解是,必须始终执行包含的用例,而可选是扩展用例。

实际上,include和extend之间的主要区别更多是依赖关系,而不是执行频率。

根据UML 2.5规范:

  

Include是两个UseCases之间的DirectedRelationship,指示   插入包含的UseCase(添加项)的行为   进入包含UseCase(包括includeCase)的行为。
  [...]
  包含的UseCase可能取决于执行时产生的更改   随附的UseCase。随附的UseCase必须可用于   包含UseCase的行为将得到完整描述。
  [...]
  包含关系旨在在以下情况下使用:   两个或更多UseCases的行为。然后提取该公共部分   到一个单独的UseCase中,包括在所有具有   这部分是共同的。由于Include关系的主要用途是   为了重用公共部分,通常在基本UseCase中剩下的是   本身并不完整,但取决于要包含的部分   有意义的。这反映在关系的方向上,   表示基本UseCase取决于添加项,而不取决于   反之亦然。

但是要小心包含和扩展。在不知不觉中,您将把系统的每个功能描述为一个用例,这违反了其用途。

答案 1 :(得分:-1)

如果下载部分始终是 sync 的一部分(即只能从 sync 调用,而不能从其他UC或as中调用)一个独立的UC),那么 sync 的一部分就是 download ,因此不应分解为单独的UC 。不会发生的事实始终不会改变这里的情况(这只是替代流程)。

如果下载部分是一个单独的UC(即可以独立运行,或者-仍然不鼓励将其作为单独的UC-可以从其他一些UC调用),但是它只能在 sync ,则它是 extend 类型的关系(从下载部分指向 sync 的箭头)

如果下载部分是一个单独的UC(如上),但每次运行 sync 时都将运行(即,它是 sync < / em>),则为 include 关系类型(从 sync 指向下载部分的箭头)。

据我了解,它根本不是一个单独的UC,或者它是扩展。事实:

  

因为这是同步的一部分,有时没有同步就无法完成。

建议它不是单独的UC(因此只需将其从图表中删除)。

如果它可以是一个单独的UC,则在这一部分:

  

尽管“同步”不包括“下载文件”;因为在某些情况下,同步不需要进行下载。

您是对的-不能被 include 保留,而只能使用 extend 选项(对)。就像您所说的那样,它只是 sync 的一部分(这意味着它是由 sync 触发并为其提供结果)的事实,正是它所需要的扩展