2013年6月18日星期二04:36

舞会森林关系的其他用途

撰写者

介绍

范加伦IMG00 6月18日第1条] 概述了舞会森林关系的主要用途,其中将两个或多个现有用例的规范中的一组通用步骤作为新的抽象用例的规范,然后将现有规范中的通用步骤排除在外用例被替换为抽象用例的舞会森林关系。本文探讨了舞会森林关系的辅助用途,其中另一个已经存在的具体用例已舞会森林在另一个用例中。在整个过程中,将比较和对比这两种模式。

舞会森林机制

按照 [1],当一个具体的基本用例包括一个抽象用例时,这意味着在运行时将两个用例的规范合并为一个用例规范,以管理基本用例中每个用例的行为;基本用例已实例化,但舞会森林的用例未实例化。

该机制基于以下事实:舞会森林关系是两个用例规范之间的单一关系;它不代表用例实例之间的一类关系(链接),也不代表两个用例之间的关联。

其他用途

第16.3.5节“语义”下的说明 [2] 给我的印象是,舞会森林关系仅用于“重用公共部分”,即重用抽象的舞会森林用例(实际上是用例片段),如  [1]。由于该部分没有描述其他用途,因此给人的印象很容易。

但是,一位海外同事(请参阅下面的致谢)指出,本节将其描述为“主要”用途,因此至少也必须有“次要”用途。至于该次要用途可能是什么,他指出 [3] 其中指出“具体用例可以[…]舞会森林在基本用例中。”

这让我感到困惑,因为这并不意味着这样一个舞会森林的用例必须同时是具体的(以其自身的权利,能够被实例化)和抽象的(作为舞会森林的用例,而不会实例化)?显然,这是不可能的。

(我也有这种精神障碍,以防其他人也遭受这种精神障碍;补救措施如下。)

记住机制

当我根据上面概述的舞会森林机制(用粗体替换)表达了此次要用途时,决议就来了:

范加伦IMG01 6月18日

换句话说,在基本用例执行期间,既没有实例化抽象舞会森林用例,也没有实例化具体舞会森林用例的事实是舞会森林关系所固有的;它与舞会森林的用例是抽象或具体无关。

(我现在感觉好多了。)

进一步的考虑范加伦IMG02 6月18日

留在系统边界内

文章 [1] 指出舞会森林关系不能跨越系统边界。因此,就像舞会森林的抽象用例一样,舞会森林的具体用例必须属于舞会森林用例所属的系统。

这只是第16.3.6节中语句的反面 [2],“不能将指定同一[系统]的两个用例关联起来,因为它们各自分别描述了[系统]的完整用法。”

  • 给定系统的两个用例可以通过舞会森林关系连接,而不能通过关联连接。
  • 可以通过关联而不是通过舞会森林关系来连接不同系统的两个用例。

换句话说,舞会森林关系只能存在于系统边界之内,而关联只能存在于系统边界之内。

另一种解决方法是通过意识到系统封装(不公开)其用例规范。这些仅供系统内部使用,也就是在系统公共界面之后使用。跨系统边界定义舞会森林关系将等于破坏该封装,因此是不合适的。

有关定义用例适用系统的更多信息,请参见 [4]

包括关系或前提条件?

文章 [5] distinguishes 功能al 和 sequential dependencies between concrete use cases.

  • A 功能al dependency can be represented by an include relationship between two concrete use cases.
  • 顺序依赖可以由一个或多个后置条件(“上游”具体用例)和相应的前提条件(“下游”具体用例)表示,而不是由后者到前者的舞会森林关系表示。

具体的用例可以实例化

可以实例化基本用例中还包括的具体用例(毕竟,这是定义具体用例的内容),但是只有当实例由其发起方的实例启动时,才可以实例化。它包括在内。在这种时候,两者之间的舞会森林关系是无关紧要的。

  • The base use case is 功能ally dependent on the concrete use case, but the concrete use case is not 功能ally dependent on the base use case.
  • 因此,任何具体用例实例都应由具体用例规范来管理,而无需参考基本用例的规范。

Which actor 和 user?

用户(Alex)实例化一个具体的用例(UC1)。在生成的用例实例的上下文中,用例规范中对“参与者”的任何提及都是对该用户(助理,Alex)的引用。当另一个用户(Megan)实例化舞会森林第一个具体用例(UC1)的第二个具体用例(UC2)时,这两个用例的规范将合并为舞会森林具体用例(UC2)的单个运行时规范。在生成的用例实例的上下文中,所舞会森林用例规范中对“参与者”的任何提及现在都是对其他用户(Megan,经理)的引用。请参见下图。

范加伦IMG03 6月18日

写作技巧

由于上述原因,在编写用例规范时,请使用“参与者”作为引用案例的发起者(*)的标准方法。就以上示例而言:

  • 不要在UC1规范中写“助手”,而在UC2规范中写“经理”,因为这可能暗示经理在UC2中包括的UC1步骤期间暂时切换到助手的角色。当然不是。
  • 给定用户可以扮演哪些角色,即给定用户可以属于哪些演员,仅是建模和定义这些演员的一部分。

(*)最好用名字来指称辅助演员,以区别于发起演员(“演员”)和彼此(如果有几个)。

舞会森林用例种类

文章 [1] 指出抽象舞会森林用例有两种。这些也适用于具体舞会森林的用例,如下所示(请参阅 [4] 对于以下使用的原型(*)。

  • 一个舞会森林<<function>>用例最终是一个舞会森林在文本上的具体用例,因为它代表了“参与者”与“系统”之间的来回交互,在此过程中提供了输入数据,检索了系统数据,都可以进行转换,返回输出数据并逐步存储系统数据(即,有关步骤以及最终结果)。
  • 一个舞会森林<<service>>用例最终成为舞会森林参数的具体用例,因为它接受一个或多个输入参数,返回一个或多个输出参数,并封装(隐藏)将前者转换为后者的步骤(即,关于最终结果) ,而不是导致它的步骤)。

(*)即使<<process>>用例是一个具体的用例,我无法想象为什么它会被舞会森林在另一个用例中。

其他要点

文章 [1] 提出了与抽象舞会森林用例同样适用于具体舞会森林用例的其他观点,如下所示:

  • 具体舞会森林的用例可能是可选的。由于[1]中概述的原因。
  • Concrete included use cases are not intended for 功能al decomposition. Including a use case, whether abstract or concrete, amounts to partial 功能al decomposition of the base use case, but the point is that the included use case wasn’t created for 功能al decomposition (see table above).

实现舞会森林关系

文章 [1] 本文讨论了如何理解和使用UML中反映的舞会森林关系,其中类和实例之间的区别以及关联,链接和关系之间的区别是基础。将舞会森林关系转换为实现环境中的构造取决于这些环境的特性,并且不在本文的讨论范围之内。

结论

根据定义,具体用例可以由其所属系统外部的用户(角色实例)启动(实例化)。另一方面,包括具体用例代表了其规范直接或间接舞会森林在它们各自所属的系统内的另一个具体用例的规范中,因此实例化了包括的具体用例(由于由用户发起),但舞会森林的具体用例却没有(因为它仅将其规范借给了舞会森林的具体用例)。

This pattern can be used, for example, when modeling a component with a number of 服务 use cases, so that a smaller 服务 use case, representing a reusable public 服务 in its own right (e.g., validate credit card), may be included in a larger 服务 use case (e.g., place order).

提交本文是希望对全面理解舞会森林关系有所帮助。

不要忘记在下面留下您的评论。

致谢

我感谢Piermarco Burrafato将这种辅助用途引起我的注意。

参考文献
[1] 威廉·范·加伦(Willem Van Galen), 以包容性用例为重点, 2012年8月21日.

[2] 对象管理组(OMG),OMG统一建模语言TM(OMG UML),上层结构,版本2.4.1。

[3] 伊瓦·雅各布森(Ivar Jacobson), 用例:昨天,今天和明天,2003年11月20日。

[4] 威廉·范·加伦(Willem Van Galen), 系统:没有它,就不会为用例建模!,2012年9月11日.

[5] 威廉·范·加伦(Willem Van Galen), 用例前提条件:保留最佳秘密?,2012年10月15日。

威廉·范·加伦

威廉·范·加伦(Willem Van Galen)是退休的高级系统分析师,之前曾在加拿大安大略省伦敦的一家大型金融服务公司任职。 从2008年至2016年,他的职责之一是设计,提供和加强用例建模培训,实践和标准。 在2011年,他增强了这些功能,以反映面向服务的架构和事件驱动的架构。

©BA Times.com 2020

麦格雷戈徽标白色网站