包含用例的行为是否应该始终与包含用例的行为一起执行?

问题描述 投票:0回答:1

考虑包含 UC2 和 UC3 的用例 UC1。 UML 2.5.1 规范定义了两个用例之间的

«include»

Include 是两个 UseCase 之间的 DirectedRelationship,表示包含的 UseCase(添加)的行为插入到包含的 UseCase(包含的 Case)的行为中。
(...)
包含的用例的所有行为在包含的用例中的单个位置执行之前恢复包含的用例的执行。

我理解,考虑到包含定义的肯定措辞,UC2和UC3的行为总是与UC1一起执行,这意味着系统性并且没有条件性的余地(“被插入”,“被执行”),而扩展定义明确提到了一种非强制性的可能性(“可以插入”、“应该添加的行为,可能有条件地”,另请参阅规范中有关 CAN 和 MAY 使用的第 5.1 节)。

我想知道我的解释是否太严格了。包含也是如此:

  • 意味着每当执行 UC1 时,UC2 和 UC3 的行为总是被执行,即为参与者或其他利益相关者带来预期的可观察结果?
  • 或者用例之一(例如 UC2)的行为是否可能并不总是被执行?为什么这种理解会符合规范?
language-lawyer uml use-case use-case-diagram
1个回答
0
投票

有两种可能的场景,其中包含的用例的行为未执行:

未满足所包含用例中的前提条件

假设UC1有前提条件用户必须经过身份验证,并且用户尚未经过身份验证。在这种情况下,UC1 将不会执行。

未到达包含执行的单个位置

规范提到了执行所包含用例的单个位置。现在我们都知道,用例不一定遵循单个步骤序列。尽管 UML 规范中没有明确提及用例场景,但通常有一个 main 场景,并且可能有许多 alternateexception 场景。

根据具体情况,用例中的某些或步骤将无法到达,可能是因为遵循了备用场景路径,或者可能是因为包含位置位于未遵循此执行的异常路径中。

在这些情况下,我认为完全符合规范,所包含的用例仅在某些条件下执行(即实际达到该执行点)

在这个场景示例中,用例更新预订表示为活动图,我们看到我们只需要在替代场景取消预订中执行用例更新库存

这可以在 UML 规范中表达得更清楚。

© www.soinside.com 2019 - 2024. All rights reserved.