上一页 | 下一页 |
交互操作员
创建组合碎片时,必须应用适当的交互操作符来表征碎片。该表提供了各种操作员的指导及其相应的描述。
交互操作
操作 |
详情 |
---|---|
ALT |
根据布尔条件划分交互片段。 |
选择 |
附上一个可选的交互片段。 |
平价 |
指示操作数并行运行。 |
循环 |
指示操作数重复多次,如交互约束所指定。 |
危急 |
指示不能被其他处理中断的序列。 |
NEG |
断言片段无效,并暗示所有其他交互都是有效的。 |
断言 |
指定要发生的唯一有效片段。此运算符通常包含在Conside或ignore操作数中。 |
严格 |
指示必须严格按顺序处理操作数的行为。 |
以次 |
表明组合片段的序列很弱。这意味着维护操作数内的排序,但操作数之间的排序是未定义的,只要第一个操作数的事件发生在第二个操作数的事件发生之前,如果事件发生在同一生命线上。 |
忽视 |
指示在执行期间应忽略哪些消息,或者可以出现在执行跟踪中的任何位置。 |
考虑 |
指定应在跟踪中考虑哪些消息。这通常用于使用assert运算符指定结果事件的出现次数。 |
REF |
提供对另一个图表的引用。 不使用“ 创建组合片段”主题中描述的方法创建ref片段。要创建ref片段,只需将现有图表从项目浏览器拖到当前图表上即可。 |
学到更多
OMG UML规范
OMG UML规范(UML上部结构规范,v2.1.1,p.468-471)规定:
'CombinedFragment的语义取决于interactionOperator,如下所述。
备择方案
interactionOperator'alt'指定CombinedFragment表示行为选择。最多将选择一个操作数。所选操作数必须具有显式或隐式保护表达式,在交互中此时计算结果为true。如果操作数没有保护,则隐含真正的保护。
定义选择的跟踪集是操作数的(保护的)跟踪的并集。
由else守卫的操作数指定一个守卫,否定封闭的CombinedFragment中所有其他守卫的分离。
如果没有操作数具有计算结果为true的保护,则不执行任何操作数,并执行封闭的InteractionFragment的其余部分。
选项
interactionOperator'opt'指定CombinedFragment表示行为的选择,其中(唯一)操作数发生或没有发生。一个选项在语义上等同于另一个CombinedFragment,其中有一个操作数具有非空内容而第二个操作数为空。
打破
interactionOperator'break'指定CombinedFragment表示一个突破场景,意思是操作数是执行的场景而不是封闭的InteractionFragment的其余部分。当guard为true并且忽略封闭的Interaction Fragment的其余部分时,选择带有guard的break运算符。当break操作数的保护为false时,将忽略break操作数,并选择封闭的InteractionFragment的其余部分。在没有保护的中断操作数和封闭的InteractionFragment的其余部分之间进行选择是非确定性的。
具有interactionOperator break的CombinedFragment应该覆盖封闭的InteractionFragment的所有Lifelines。
平行
interactionOperator par指定CombinedFragment表示操作数行为之间的并行合并。只要保留由每个操作数强加的排序,就可以以任何方式交织不同操作数的发生规范。
并行合并定义了一组跟踪,这些跟踪描述了操作数的OccurrenceSpecifications可以交错的所有方式,而不会妨碍操作数内的OccurrenceSpecifications的顺序。
弱序列
interactionOperator seq指定CombinedFragment表示操作数行为之间的弱排序。
弱序列由具有以下属性的跟踪集定义:
- 在结果中维护每个操作数内的OccurrenceSpecifications的顺序。
- 出现不同操作数的不同生命线的出现可以按任何顺序排列。
- 对来自不同操作数的相同生命线的出现规范进行排序,使得第一操作数的出现规范在第二操作数的出现之前。
因此,当操作数在参与者的分离集上时,弱排序减少到并行合并。当操作数仅对一个参与者起作用时,弱测序减少到严格的测序。
严格的排序
interactionOperator严格指定CombinedFragment表示操作数行为之间的严格排序。严格排序的语义定义了CombinedIFragment中第一级操作数的严格排序和interactionOperator strict。因此,包含的CombinedFragment中的OccurrenceSpecifications不会直接与封闭的CombinedFragment的其他OccurrenceSpecifications进行比较。
负
interactionOperator neg指定CombinedFragment表示定义为无效的跟踪。
定义具有interactionOperator否定的CombinedFragment的跟踪集等于其(唯一)操作数给出的跟踪集,只是该集是一组无效而非有效的跟踪。与Negative不同的所有InteractionFragments都被认为是积极的,这意味着它们描述了有效且应该可行的跟踪。
关键区域
interactionOperator critical指定CombinedFragment代表一个关键区域。关键区域意味着该区域的痕迹不能被其他OccurrenceSpecifications(在该区域覆盖的那些Lifelines上)交错。这意味着在确定有效迹线集时,通过封闭片段原子地处理该区域。即使封闭CombinedFragments可能意味着某些OccurrenceSpecifications可能会交错到该区域,例如par -operator,这可以通过定义一个区域来防止。
因此,封闭构造的一组痕迹受到关键区域的限制。
忽略/考虑
(p.473)interactionOperator ignore指定某些消息类型未在此组合片段中显示。这些消息类型可以被认为是无关紧要的,如果它们出现在相应的执行中,则会被隐式忽略。或者,可以理解忽略意味着被忽略的消息可以出现在跟踪中的任何位置。
相反,interactionOperator会考虑指定在此CombinedFragment中应考虑哪些消息。这相当于定义要忽略的每个其他消息。
断言
interactionOperator断言指定CombinedFragment表示断言。断言的操作数的序列是唯一有效的延续。所有其他延续会导致无效的跟踪。断言通常与Ignore或Conside结合使用。
循环
interactionOperator循环指定CombinedFragment表示循环。循环操作数将重复多次。
Guard可以包括循环的较低和较高数量的迭代以及布尔表达式。语义是这样的,循环将迭代最小'minint'次数(由guard中的迭代表达式给出)并且最多迭代'maxint'次。在执行了最小迭代次数并且布尔表达式为false之后,循环将终止。循环结构表示seq运算符的递归应用,其中循环操作数在早期迭代的结果之后被排序。
盖茨的语义学
CombinedFragment的大门代表CombinedFragment与其周围环境之间的语法接口,这意味着与其他InteractionFragments的接口。
门的唯一目的是定义消息的来源和目标。