用例关系

时间:2008-11-05 16:15:40

标签: uml use-case

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

7 个答案:

答案 0 :(得分:2)

我很确定答案是“不”。

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

似乎没有,但是如果你足够通用[并且没用]我肯定你可以做到。你有一个具体的例子吗?规则总是有豁免,我很想看到一个。

答案 3 :(得分:0)

下面是业务用例(业务建模)的senario而不是系统用例: 使用案例A:服务车辆 用例B:授权其他修复 使用案例C:修理车辆

在初次修复期间可以识别其他修复。 或修理可在服务期间被识别为新修理, 在这两种情况下,都需要客户授权?

延伸B和 B延伸C (授权和维修期间确定的维修开始)

C扩展B (修复期间发现的额外修复授权)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

给出你发布的例子(fyi你最好编辑问题而不是发布一个不回答原始问题的答案)我会冒险B扩展A和B扩展C,因为在两种情况下A和可以识别C附加修理(案例B)。

交替使用案例A和C可以有条件地包括用例B

随便,我会将其建模为车辆工作,这是由2个用例,获得客户授权和服务车辆组成,后者包括任何类型的服务或维修,并且需要前者的输出开始工作。 “额外维修”的概念只是车上工作的另一个例子。

但我不知道完整的商业环境,因此您的里程可能会有所不同; - )

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

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

答案 6 :(得分:0)

“是” - 检查规格

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

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

在实践中以及尝试将其映射到Java或其他对象语言时,它可能没有意义或变得混乱。