0

两个用例可以同时扩展或包含彼此吗?A 扩展/包含 B 和 B 扩展/包含 A

4

7 回答 7

2

我很确定答案是“不”。

您刚刚描述了鸡和蛋问题的数字等价物。

循环引用 [几乎] 总是坏事 (tm)。我知道它不可怕的唯一地方是在链表的上下文中,其中每个条目都有一个指向另一个自己类型的指针。

于 2008-11-05T16:20:07.857 回答
1

如果(A 包含/扩展 B,B 包含/扩展 A)则A = B

承认如果​​ A 扩展/包含 B 则 A >= B

于 2008-11-05T16:27:31.523 回答
0

这很少见,但在一般情况下,没有什么可以阻止用例相互包含/使用。

于 2008-11-05T16:52:25.950 回答
0

答案是不。extend 和 include 是互斥关系类型。很可能用例被错误地分解/分离,或者您误解了扩展/包含关系定义,或两者兼而有之。

鉴于您发布的示例(仅供参考,您最好编辑问题而不是发布不回答原始问题的答案)我敢冒险 B 扩展 A 和 B 扩展 C,因为在两种情况下 A 和 C 额外维修(案例 B)可能会被识别。

或者,用例 A 和 C 可以有条件地包含用例 B

顺便说一下,我将其建模为 Work On Vehicle,它由 2 个用例、获取客户授权和服务车辆组成,后者包括任何类型的服务或维修,并且在开始工作之前需要前者的输出. “额外维修”的概念只是在车上工作的另一个例子。

但我不知道完整的业务背景,所以你的里程可能会有所不同;-)

编辑:你写了“但在这种情况下:工作正在进行中,在工作过程中需要进一步的授权”,但我不明白这有多重要。

第一步是消除关于包含和扩展的混淆。尝试完全独立地对每个用例进行建模,然后查看常见的内容以查看是否需要包含/扩展

于 2008-11-05T16:55:58.330 回答
0

以下是业务用例(业务建模)而非系统用例的情景: 用例 A:服务车辆 用例 B:授权额外维修 用例 C:维修车辆

在初始维修期间可以确定额外的维修。或者维修可以在服务期间被识别为新的维修,在这两种情况下,都需要客户授权?

A 扩展 B 和B 扩展 C(在服务期间确定的授权和维修开始)

C 扩展 B (维修期间确定的额外维修授权)

于 2008-11-05T16:35:09.323 回答
0

看起来可能不会,但我相信如果你足够通用[和无用],你可以做到。你有具体的例子吗?规则总是有例外的,我很想看到一个。

于 2008-11-05T16:25:47.423 回答
0

“是” - 检查规范。

我刚刚通读了 UML 规范部分的用例: http ://www.omg.org/spec/UML/2.1.2/Superstructure/PDF/ 没有任何规则可以阻止我这样做。许多人可能在概念上对此有疑问,但这没关系,因为您只是本能地尝试在逻辑上客观化或构造用例。用例是一种行为(或集合),不像类/“对象”。我们不是在谈论 Java 对象。

甚至在 Rational Software Modeler (IBM) 中也允许这种“循环引用”。

在实践中以及尝试将其映射到 Java 或其他对象语言时,它可能没有意义或令人困惑。

于 2008-11-09T20:15:33.887 回答