业务用例的备用流程中的INCLUDE语句

时间:2017-01-03 19:52:11

标签: uml use-case requirements

我正在对系统进行需求分析,目前我尝试编写业务用例(BUC)并制作业务用例图。我目前使用以下准则:

  • 当我为BUC提供可选的额外步骤时,我使用EXTEND语句指向可以找到这些可选步骤的BUC。扩展的BUC和扩展的BUC都可以存在于其自身。

  • 当我在多个BUC中有重复功能时,我尝试将其提取并将其放入单独的BUC中。然后我在BUC中使用INCLUDE语句来解析功能,指向可以找到此功能的BUC。使用INCLUDE语句指向外部BUC的BUC无法在其上运行。

这一切都很好,直到我到达以下情况:

  • 在BUC的备用流程中(让我们称之为A),我已经在另一个BUC中指定了重复的功能(让我们称之为B)。
  • 当然,我想使用INCLUDE语句指向B。
  • 如果我这样做,我还必须在我的业务用例图中显示。
  • 如果我在图表中绘制INCLUDE箭头(从A到B),看起来A如果没有B就不能存在。
  • 然而事实并非如此,因为A在备用流程中只需要B。

我考虑了以下选项:

  1. 我将所有功能保留在备用流程中,但这会使备用流程过长并产生重复的功能。
  2. 我使用extend代替,但是这意味着B是可选的,而如果你处于A的备用流程中,你必须通过B。
  3. 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

include在运行主UC时始终运行所包含的UC时使用。

如果可以在不运行扩展UC的情况下完成主UC,则使用

extend,但在某些备用流程中,也会运行扩展UC。

因此,在您的情况下,您应该使用extend

可以显示扩展点。您可以使用它来解释逻辑(澄清扩展UC在进入备用流时始终运行)。如果逻辑更复杂,您也可以将其放在注释中。

我不在这里讨论你的分解是否是一种正确的方法(但是期待其他人的讨论)。

答案 1 :(得分:0)

根据您的描述,您不是在进行用例合成,而是进行功能分解。这是完全错误的。用例合成中的重点是关注用例为其actor提供的附加值,而不是分解任何功能。

我强烈建议您阅读Bittner / Spence并了解基本知识,然后再继续前进 - 分别走回去寻找正确的目标。