组合片段,是一种机制,让你可以向交互添加控制逻辑,决定、循环、并发行为。
组合片段的标识法是一个矩形,他会出现在序列图外框内的某处,矩形会放在一个或多个生命线之上,并封装在那些生命线之间传递的一条或多条消息,由内个组合片段定义的控制逻辑所决定的消息。
你会使用在矩形左上角的分隔框中显现的字符串来指定控制逻辑,我们把这个字符串叫做交互操作符。Sys ML定义了十一种交互操作符,每个组合片段由一个或多个交互操作数(简称操作数)组成,操作数在组合片段中以区域的形式显示,区域由虚线分隔,那条线会水平穿过矩形,组合片段中的每个组合数 (每个区域)包含一条或多条消息。他们的出现与否基于该组合片段定义的控制逻辑,可以把组合片那段嵌入到其他组合片段中,以创建任意复杂的控制逻辑。
设置守卫:单击头部的“[守卫条件]”替换其中的提示文字“守卫条件”。
设置组合片段的交互操作类型:打开属性框,选中组合片段节点,在属性框中的交互操作类型一栏,选择相应的操作符。
目录
带有可选操作符的组合片段,代表一系列可选的事件,如果条件(称为守卫)的估值为真,那么就会在交互的执行过程中发生。
可选组合片段中只会拥有一个操作数(也称为区域,即属性框中区域数量为1),所以你不会看到水平穿过矩形的虚线,在那个操作区域中的事件要么发生要么不发生(基于系统操作过程中守卫的估值)。
守卫,是一个布尔表达式,放在一对方括号中,显示在可选组合片段的顶部附近,必须把守卫放在组合片段中第一个事件发生的生命线上。所有出现在布尔表达式中的属性都必须是那个生命线的属性,或者是总体上拥有交互的模块的属性。
带有备选操作符的组合片段,代表两个或多个可替换的系列事件,他们会在交互的一次执行中发生。
备选组合片段必须拥有两个或多个操作数(区域)其中包含那些可替换的系列事件,每个操作数都会由水平穿过矩形的虚线分隔。
备选组合片段中的每个操作数都拥有自己的守卫,只有一个守卫的估值可以是真,在那个守卫下的操作数中的一系列事件会称为执行的一部分,在所有其他操作数中的时间都会被完全跳过,确保备选组合片段中的系列守卫都是互斥的。
你可以为(最多)一个操作数使用预定义的守卫else,只有所有其他守卫都为假的时候,这个守卫才能为真,不一定使用else守卫,也允许没有任何一个守卫为真。
设置
带有循环操作循环符的组合片段,代表一系列事件,他们可以在交互的一次执行过程中发生多次。
和可选组合片段一样,循环组合片段也只有以一个操作数(区域),你可以指定循环的最小循环次数(Minint)和最大(Maxint)迭代次数,把它放在紧挨着循环操作符右侧的括号中,格式为: (<min>, <max>)。如果最小循环次数和最大循环次数相等,你可以只显示一个数字作为简写的格式。这个范围没有指定在交互的依次执行过程中会发生多少次迭代,他只约束能够发生多少次迭代(仍然由交互的有效执行决定),为了指定任意次迭代都是有效的,范围设置为: (0,*),为默认值。
循环组合片段中的操作数可以拥有一个守卫(显示在操作数顶部的方括号中),在循环至少循环迭代了括号中指定的最小循环次之后,才会对守卫进行估值,一旦它拥有了值,循环就会继续,直到守卫估值为假,或者循环迭代了括号中指定的最大循环次数。
带有并行操作并行符的组合片段,代表两个或多个系列的事件,他们回在交互的执行过程中并行进行。
和备选组合片段一样,并行组合片段有两个或多个操作数(区域),其中包含那些并行的系列事件。显示在生命线中较高位置的事件,要在同一生命线较低位置的事件之前发生,
并行组合片段中,如果两个事件发生出现在并行组合片段的不同操作数上,那么其顺序无法判断。那两个事件在交互的执行过程中能够以任意的顺序发生,而得到的执行都都会是有效的。然而为了更清楚地表示,显示在并行组合片段同一操作数钟大哥事件,还是会以从上到下的顺序发生。
可以为并行组合片段的每个操作数指定一个守卫,但很少这样使用。
弱顺序由具备下述性质的轨迹集合定义:
这样弱顺序性就降低了来自不同协作集合操作数的(并行)并发性结合。如果操作数只在一个协作者上发生,那么弱顺序就成为绝对顺序。
交互操作符绝对顺序(strict) 表示操作数行为间的绝对顺序性。绝对顺序操作的语义用操作符strict 在组合交互的第一层定义操作数的严格顺序。因此在组合交互中的事件发生不会直接和此封闭的组合交互中的其他事件发生进行比较。
交互操作符中断(break)表示组合片段代表一个中断情景,操作数可以代表闭合交互片段中剩余部分的执行。因此中断操作符表示一个选择操作符. 该选择操作符中一个操作数是给定的,另一个假定为闭合交互片段的剩余部分。中断组合片段应与闭合的交互片段全局相关。
交互操作符临界区域(critical )指示该组合片段表示一个临界区。临界区意味着该区域中的轨迹不能和其他的事件发生有交叉(在该区域覆盖的生命线上) ,也意味着当判定合法轨迹时,该区域会自动被处理。即使闭合组合片段可能暗示一些事件发生会交叉进入这个区域,例如带有并行(par)操作符,这也是由定义一个区域来防止。
组合交互操作符(neg) 指示组合片段定义的轨迹是非法的。
定义一个否定的组合片段语义集合等价于用它的(单独的)操作数定义的轨迹集合,只是该集合是一个非法轨迹集合,而不是合法轨迹集合。所有不同于否定的交互片段被认为是描述合法和可能的轨迹的方式。
交互操作符断言(assert)表示组合片段代表一个断言。断言是操作数序列惟一合法的延续,所有其他的延续都会产生非法轨迹。
断言经常和忽略(ignore) 或者考虑(consider)组合使用。
交互操作符忽略(ignore)指明一些不会出现在该组合片段中的消息类型。这些消息类型没有相关意义。如果出现在相应的执行中可以被直观的忽略。作为一种理解,可以认为忽略意味着被忽略的消息可以出现轨迹中的任何地方。
和忽略(ignore)操作符相反,考虑(consider)操作符表示了组合片段中应考虑的消息。这等于定义了其他消息都会被忽略。
MBSES用户使用说明书