- 该行为绝不能促进基本用例的目标。
- 该行为一定不需要访问基本用例的私有数据。
文章 [2] 引入了选项流程概念来表示不满足上述条件的不必要的行为。
下表总结了这些初始方面。
额外的细微差别
当不必要的行为以某种方式对用例的目标有所贡献时,将其表示为选项流(*)的主要原因是确保用例的后置条件说明其结果,如果该行为是表示为扩展用例(请参阅 [2] for details).
(*)将其表示为选项流的第二个原因是当它访问用例的私有数据时,扩展用例无法访问(请参阅 [2] for details).
本文通过识别两种这样的行为,加深了对非必要行为的理解,该行为在某种程度上有助于用例的目标:
- “陈述性贡献”类型,其中行为的贡献是用例的后置条件的一部分,后者定义了如何衡量用例的目标是否实现。
- “未说明的贡献”类型,即行为的贡献不作为用例的后置条件的一部分进行陈述,因此在衡量用例的目标是否实现方面没有作用。
优惠券期权流入 [2] 是“定额供款”行为的一个示例,其中使用有效的优惠券会导致订单折扣。
- 这必须在用例的后置条件中说明,以便成为衡量用例的目标是否实现的一部分。
“未注明的贡献”行为的示例包括“检查拼写”,“更改模板”和“查找同义词”扩展名中的用例, [3] 作为“编辑文档”基本用例的扩展用例。
- “编辑文档”用例的用户是否纠正了拼写,以及是否纠正了拼写,是否使用了“拼写检查”行为,还是自己发现并纠正了错误,因此不太可能在“编辑文档”用例的后置条件中说明。其他示例也是如此。
- 因此,假定编辑后的文档被视为公共数据,则可以将“拼写检查”,“更改模板”和“查找同义词”行为表示为扩展用例,因为尽管它们有助于实现“编辑文档”用例的目标,但其结果在如何使用方面没有任何作用。衡量该目标的实现。
下表显示了将这一考虑因素与前面提到的方面结合在一起的结果。
注意:如果您想完全避免使用扩展用例,则可以针对情况1和5使用选项流。
检查UML
即使扩展用例对基本用例的目标没有做出贡献,也仍然支持第16.3.3节中的声明。 [4] “ [基础]用例是独立于[扩展名]用例定义的,并且与[扩展]用例无关地有意义。”换句话说,根据用例的后置条件如何定义目标的实现,基本用例决不取决于扩展用例的目标。
结论
我们多久会遇到不必要的“未述贡献”行为还有待观察。这可能取决于要建模的应用程序的类型(例如,上面的示例与文字处理应用程序有关)。在面向交易的应用程序(例如网络商店应用程序)中,这种行为的流行程度可能较低, [2].
无论如何,我希望本文和所引用的文章将有助于区分基本行为和非必要行为,并以清晰,一致和符合UML的方式在用例模型中表示每个行为。
注意
术语“基本用例”仅在用例关系的上下文中适用(例如,在扩展关系的上下文中,它指扩展用例)。为了便于参考,我在这里也使用了术语“候选”的基本用例,即使经过进一步考虑,它最终并没有成为扩展用例。
参考文献
[1] 威廉·范·加伦 ,挖掘扩展用例, 2012年7月10日,(第1部分) 和 2012年7月24日,(第2部分).
[2] 威廉·范·加伦 , 用例目标,场景和流程,2012年11月13日.
[3] Alistair Cockburn,《编写有效的用例》,第12版,2004年11月。
[4]对象管理组(OMG),OMG统一建模语言TM(OMG UML),上层结构,版本2.4.1。
不要忘记在下面留下您的评论。