uml 扩展用例可以终止其基本用例的事件流吗?
uml extension use cases can terminate the flow of events of its base use cases?
我正在为基本用例及其扩展用例建模。我一直在阅读,当基本用例满足条件时,将触发并执行扩展用例,并且在执行扩展用例后恢复基本用例。 我怀疑扩展用例是否可以终止基本用例的流程而不是恢复它?
在书 "Writing Effective Use Cases" 中有一个 ATM 示例,其中基本用例是 "use ATM",扩展用例是
"use card from another bank"。在这种情况下,我认为完成扩展用例的流程听起来是正确的(当用户不接受使用外部银行 ATM 的费用时)
嗯,基本上任何异常都可以随时终止用例。所以答案很简单 "yes, it can".
然而,尽管 Cockburn 是用例教皇,但他更像是一名技术人员而不是分析师。用例是关于附加值的。 UC "Use ATM" 非常值得怀疑。它没有说明任何有关使用的信息。你可以用 ATM 把它绑在 Cockburn 的脚上,然后把他淹死在最近的海里。此外,应该简单地避免 extend/include,因为它们不会为用例综合增加良好的价值(原文如此!),而是诱使人们执行功能分解。只有在极少数情况下它们才有意义。即使在那里,你也可以没有它们生活。
我建议宁愿阅读 Bittner/Spence。在我看来,他们做到了。保持 Cockburn 的重点在 "writing",但阅读 Bittner/Spence 到 "understand"。
在多次尝试保持此类扩展准确且易于阅读后,我最终将它们包装到 "System validates that some condition is fulfilled" 中。在书中,这种情况并没有真正给出一个完整的用例(或者我发现了一个错误的用例),所以我将从头开始编写建议方法的示例。
UC_01 用户从 ATM 取款
级别:用户目标
主要成功场景
...
3. User provides amount.
4. User confirms operation.
5. [UC_02 System validates transaction].
6. System performs transaction.
...
9. System returns the card.
失败流程 A
前提条件:第 5 步验证失败。
6. System displays error message to User.
7. The use case continues from step 9.
UC_02 系统验证交易
级别:子功能
...
3. [UC_06 System validates that user agrees with processing fee].
4. [UC_07 System validates that there is enough money on the account].
...
故障流 D
前提条件:第 3 步验证失败。
4. The use case terminates.
P.S。 9 个步骤对于单个用例来说通常太多了,我只是为了强调。
我正在为基本用例及其扩展用例建模。我一直在阅读,当基本用例满足条件时,将触发并执行扩展用例,并且在执行扩展用例后恢复基本用例。 我怀疑扩展用例是否可以终止基本用例的流程而不是恢复它?
在书 "Writing Effective Use Cases" 中有一个 ATM 示例,其中基本用例是 "use ATM",扩展用例是 "use card from another bank"。在这种情况下,我认为完成扩展用例的流程听起来是正确的(当用户不接受使用外部银行 ATM 的费用时)
嗯,基本上任何异常都可以随时终止用例。所以答案很简单 "yes, it can".
然而,尽管 Cockburn 是用例教皇,但他更像是一名技术人员而不是分析师。用例是关于附加值的。 UC "Use ATM" 非常值得怀疑。它没有说明任何有关使用的信息。你可以用 ATM 把它绑在 Cockburn 的脚上,然后把他淹死在最近的海里。此外,应该简单地避免 extend/include,因为它们不会为用例综合增加良好的价值(原文如此!),而是诱使人们执行功能分解。只有在极少数情况下它们才有意义。即使在那里,你也可以没有它们生活。
我建议宁愿阅读 Bittner/Spence。在我看来,他们做到了。保持 Cockburn 的重点在 "writing",但阅读 Bittner/Spence 到 "understand"。
在多次尝试保持此类扩展准确且易于阅读后,我最终将它们包装到 "System validates that some condition is fulfilled" 中。在书中,这种情况并没有真正给出一个完整的用例(或者我发现了一个错误的用例),所以我将从头开始编写建议方法的示例。
UC_01 用户从 ATM 取款
级别:用户目标
主要成功场景
...
3. User provides amount.
4. User confirms operation.
5. [UC_02 System validates transaction].
6. System performs transaction.
...
9. System returns the card.
失败流程 A
前提条件:第 5 步验证失败。
6. System displays error message to User.
7. The use case continues from step 9.
UC_02 系统验证交易
级别:子功能
...
3. [UC_06 System validates that user agrees with processing fee].
4. [UC_07 System validates that there is enough money on the account].
...
故障流 D
前提条件:第 3 步验证失败。
4. The use case terminates.
P.S。 9 个步骤对于单个用例来说通常太多了,我只是为了强调。