两个用例可以同时扩展或包含吗? 扩展/包括B和B扩展/包括A
答案 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或其他对象语言时,它可能没有意义或变得混乱。