用例扩展关系

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 指南:扩展关系
主题

解释 ∙
执行扩展 ∙
记录扩展关系 ∙ 使用示例
1.1.1 解释
扩展关系将扩展用例与基本用例连接了起来。

通过在基本用例中引用扩展点,可以定义在基本用例的哪些位置插入扩展用例(有关扩展点的讨论,请参见指南:用例)。

扩展用例通常是抽象的,但并不必须如此。

您可以出于以下几个目的使用扩展用例:

表明用例的某一部分是可选(或可能可选)的系统行为。

这样,您就可以将模型中的可选行为和必选行为分开。


表明只在特定条件(有时是例外条件)下才执行分支流,如触发警报。

∙ 表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。

所插入的行为段(以及插入的顺序)将取决于在执行基本用例时与主角进行的交互。

扩展是有条件的,它是否执行取决于在执行基本用例时所发生的事件。

基本用例并不控制执行扩展的条件:这些条件在扩展关系中进行说明。

扩展用例可以访问和修改基本用例的属性。

但基本用例看不到扩展用例,也无法访问它们的属性。

扩展用例以隐含的方式修改基本用例。

也可以说,基本用例定义了可以在其中添加扩展用例的模块化框架,但基本用例看不见特定的扩展用例。

基本用例自身应是完整的,即基本用例应该是可理解且有意义的,而不必引用任何扩展用例。

但基本用例并不独立于扩展用例,因为如果无法遵循扩展用例,就不能执行基本用例。

示例:
用例“召开电话会议”和“显示呼叫方身份”是基本用例“打电话”的
两个扩展用例。

在电话系统中,为用户提供的主要服务通过用例“打电话”来表
示。

可选服务的示例包括:
∙能让第三方加入通话(召开电话会议)。

∙允许接收方看到呼叫方的身份(显示呼叫方身份)。

我们可以将这些可选服务所需的行为表示为基本用例“打电话”
的扩展用例。

这是扩展关系的一种正确应用:由于“打电话”本身
就具有意义,您无需阅读扩展用例的说明就可理解基本用例的主要
目的,并且扩展用例具有可选字符。

如果基本用例和“基本加扩展”用例都必须是可以直接实例化的,或者如果您希望通过添加来修改基本用例中的行为,则应使用用例泛化关系(请参见指南:用例泛化关系)。

扩展用例可以包含一个或多个插入段,每个插入段都可以有内置的备选路径。

这些插入段以递增方式修改基本用例的行为。

扩展用例中的每个插入段可以插入到基本用例中的不同位置。

这意味着扩展关系包括一系列对扩展点的引用,引用的数量与扩展用例中插入段的数量相等。

每个扩展点都必须在基本用例中定义。

一个基本用例包含若干扩展关系,这意味着一个用例实例在其生命期内可以遵循多个扩展用例。

一个扩展用例可以扩展到几个基本用例中,但这并不意味着这些基本用例之间存在依赖关系。

同一个扩展用例和同一个基本用例之间甚至可以有多个扩展关系,前提是扩展用例必须在基本用例的不同位置插入。

这意味着不同的扩展关系需要引用基本用例中的不同扩展点。

扩展用例自身可以是扩展、包含或泛化关系中的基本用例。

例如,扩展用例能够以嵌套方式扩展其他的扩展用例。

1.1.2执行扩展
当执行基本用例的用例实例达到基本用例中定义扩展点的位置时,将对相应扩展关系的条件进行评估。

如果条件成立,或者如果没有条件,用例实例将遵循扩展
用例(或者扩展用例中与扩展点相对应的插入段)。

如果扩展关系的条件不成立,就不执行扩展。

就象所有用例一样,扩展用例可以有基本事件流和备选事件流(有关事件流结构的讨论,请参见指南:用例)。

用例实例通过扩展到底会采取哪条路径,这不仅取决于在执行之前发生的事件(用例实例的状态),而且还取决于执行扩展时在与主角的交互中发生的事件。

用例实例一旦执行了扩展,它就会在基本用例的中断点处继续执行基本用例。

遵循一个基本用例及其扩展用例的用例实例。

一个扩展用例可以有多个插入段,每个插入段都与自己在基本用例中的扩展点相关。

在这种情况下,用例实例将继续执行基本用例,并持续到扩展关系中指定的下一个扩展点为止。

在此点上,它将执行扩展用例的下一个插入段。

这会重复进行,直到执行完最后一个插入段为止。

请注意,只在第一个扩展点对扩展关系的条件进行检查;如果条件成立,用例实例就必须执行所有插入段。

遵循一个基本用例和一个扩展用例(后者具有两个插入段)的用例实例。

扩展关系的多重性将约束整个扩展用例可以重复发生的次数。

请注意,所重复(并受多重性限制)的是整个扩展用例,而不仅仅是一个插入段。

1.1.3记录扩展关系
按照基本用例的属性来说明扩展的条件。

另外,您也可以选择省略该条件,在这种情况下,扩展将总会被执行。

每一扩展关系都有一系列对基本用例中扩展点(一个或多个)的引用。

扩展点是按名称引用的。

如果扩展用例具有多个插入段,您就需要指定哪个段与哪个扩展点相对应。

另外,您还需要说明形成各个插入段的扩展用例步骤或分支流。

示例:
在电话系统中,可以由抽象的用例“显示呼叫方身份”来扩展用例
“打电话”。

这是一项可选服务,通常称为“呼叫方ID”,接收
方可能已请求该服务,也可能还未请求。

可能会如下说明从“显示
呼叫方身份”到“打电话”的扩展关系:
条件:接收方必须已经预定“呼叫方ID”服务。

扩展点:显示身份 - 插入整个用例。

您可以向扩展关系赋予多重性,如果省略多重性,则假定多重性为一。

1.1.4使用示例
请考虑下面的一个简单电话系统:
抽象用例“召开电话会议”是用例“打电话”的扩展用例。

在这一模型(对普通电话系统的简单表示)中,基本呼叫服务在用例“打电话”中说明。

对基本事件流的分步概述如下:
1.呼叫方拿起听筒。

2.系统发出拨号音。

3.呼叫方拨打一位数字。

4.系统结束拨号音。

5.呼叫方输入电话号码的其余数字。

6.系统对数字进行分析,确定接收方的网络地址。

7.系统对数字进行分析,确定接收方在网络中所处的位置。

8.然后,系统确定是否可以与接收方建立虚拟通路。

9.如果可以建立虚拟通路,系统就使接收方的电话振铃,并在呼叫方的电话上发出振
铃音。

10.当接收方接听电话时,系统就停止呼叫方电话上的振铃音,并使接收方的电话停止
振铃,这样便建立了虚拟通路。

11.系统开始进行话费记录,记录呼叫的开始时间、呼叫的结束点以及呼叫方的客户信
息。

12.通话继续一段时间。

当呼叫方或接收方断开与呼叫的连接时,系统就会记录呼叫的
结束时间,并释放支持该虚拟通路所需的全部资源。

该用例随即结束。

如果要在此系统中添加一项功能,以允许呼叫方或接收方将第三方连入呼叫中(通常称为“电话会议”),我们就需要向事件流添加行为。

一种可选方法,也是我们应首先考虑的方法是,将差异部分直接放入“打电话”中。

我们可以使用备选事件流建立这些差异部分的模型,如指南:用例中所述。

这种解决方案适用于最简单的添加,因为在这些情况下,所添加的功能不会使用例的原义变得混乱或模糊。

另一种可选方法是将差异部分分散到名为“召开电话会议”的抽象扩展用例中,该用例扩展了基本用例。

相关文档
最新文档