17 交互

17.1 概要

17.1.1 概述

Interactions(交互)可以应用于许多不同的场景。它可以用于在详细设计阶段按照正式的协议对过程内的通信进行精确的表示。当执行测试时,系统的轨迹可以由交互来描述并与之前阶段的交互相比较。

本章我们使用术语trace(轨迹,“事件出现序列”),它是一种描述交互语义的更好方式。我们可以使用来表示它。我们注意到UML语言定义的其它部分也使用术语“trace”用于其它目的。

交互规范在允许和不允许的轨迹上设置偏序(partial ordering)约束。偏序限制了在任意给定的系统轨迹中事件允许(或不允许)出现的次序。

Interaction包描述了用于表达Interactions所需的概念。一个交互可以在多个不同类型的图中显示:Sequence Diagrams、Interaction Overview Diagrams和Communication Diagrams,以及Timing Diagrams和Interaction Tables。每种图都提供了一些不同的表达能力,以使它更适于特定的场景。

交互是描述系统的一种通常的机制,可以使得系统在不同的抽象程度上被计算机系统设计专家、系统的最终用户和受众所理解和创建。

通常当交互是由设计者或运行的系统产生时,它并不会告诉我们整个完整的交互过程。通常还会有其它可能的轨迹没有包含在所描述的交互当中。然而,一些项目可能要求系统的所有可能轨迹都要通过交互以序列图或类似图示的形式记录下来。

交互的最可视方面是生命线(lifelines)之间的消息。消息序列对于理解场景很重要。消息表达和生命线存储的数据也很重要,但是交互并不关注对数据的操纵,尽管数据可以用于对模型图进行修饰。

交错(interleaving)指的是合并两个或多个轨迹,从而使得在结果轨迹中来自不同轨迹的事件可以以任意次序出现,但相同轨迹中的事件仍然维持原有次序。交错语义与两个事件被认为可能是同时发生的语义是不同的。为了解释交互,我们应用ygie交错语义。

17.1.2 基本轨迹模型

第13章的公共行为描述了行为执行的一般化语义。按照13.1所定义的,交互是对自然而然发生的行为进行建模的一种行为。按照13.2.3中所定义的,一个行为的执行会产生一个执行轨迹。这样的一条轨迹是一个事件出现的序列,本章中,它被表示为<e1, e2, ..., en>。每一个事件出现还可能包括它出现时所有相关对象的值信息。

交互的语义按照二元组[P, I]来表达,其中P是有效轨迹集合,I是无效轨迹集合。P!I不必是整个轨迹空间。如果两个交互的轨迹集合对相等,那么它们是等价的。交互中每个构造(例如各种CombinedFragments)的语义按照它们是如何与交互二元组进行关联来表达的。为了简洁,我们通常只引用有效轨迹集合,因为这些轨迹是大部分情况下建模所使用的。

17.1.3 有效和无效轨迹上的偏序约束

有效轨迹集合被这个轨迹上的事件出现的一个偏序所约束。类似的,无效集合也被其中事件出现的一个偏序所约束。

在交互图中每条竖线都描述一个过程的时间性,其中时间随页面向下增加。时间线上两个时间的间隔不代表任何时间度量,只意味着过了某段时间。

交互中的实例原则上彼此独立操作。没有全局时间的概念。实例间关于时间上唯一的依赖来自于消息接收之前必须被发送的限制。

随着实例轴从上到下时间不断流逝,然而,不能假定一个适当的时间标尺。如果没有引入共同区域(coregion)或并行操作符,沿每个实例可认为一个全时间序的事件流。

不同实例的事件通过消息,或者通过泛化的排序机制来排序。消息必须先发送再被消费。利用泛化的排序机制不同实例上(甚至是不同的交互中)的“可排序事件”可以被显式地排序。没有规定其它的排序。因此,一个交互规约对其所包含的事件集合施加了一个偏序约束。一个传递的、反对称的和非自反的二元关系称为偏序。

【译者注:传递的、反对称的和自反的二元关系也称为偏序】

17.1.4 交互图变体 交换图有不同的变体。对于下面的每种交互图变体都有一个独立的小节来定义它的表示:

  • 17.8 序列图——最普通的变体,关注于一组生命线之间的消息交换。
  • 17.9 通信图——通过一个架构的视角来展示交换,其中通信生命线之间的弧由传输的消息的描述和它们的次序来修饰。
  • 17.10 交互概览图——以概览形式体现交互之间的控制流。概览图和活动图中使用的某些元素(流线,forks,joins等)在表现上很类似;然而,尽管这些元素在表现和一般性目的上在这两者中都是相同的,但是它们的详细语义很不一样,建模者不应该把概览图解释为活动图。
  • 17.11 时间图——用于展示交互中对时间的推理。遵循UML2.5的工具不必实现时间图。

除了本章中的交互图变体,还有一种使用交互表的可选表示(附录D)。

results matching ""

    No results matching ""