领测软件测试网
一个状态可以进一步地细化为多个子状态,我们将可以进一步细化的状态称作复合状 态。子状态之间有"或关系"和"与关系"两种关系。
或关系(如 图4)说明在某一时刻仅可 到达一个子状态。
例如,一个处于行驶状态的汽车,在"行驶"这个复合状态中有向前和向 后两个不同的子状态,在某一时刻汽车要么向前,要么向后。与关系( 如图5)说明复合状 态中在某一时刻可同时到达多个子状态(称为并发子状态)。具有并发子状态的状态图称 为并发状态图。
(2) 转移 状态图中状态之间带箭头的连线被称为转移。状态的变迁通常是由事件 触发的,此时应在转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在 源状态的内部活动执行完毕后自动触发转移。
3. 顺序图 顺序图(Sequence Diagram)用来描述对象之间动态的交互关系,着重体现对象间消息 传递的时间顺序。
顺序图存在两个轴:水平轴表示不同的对象,垂直轴表示时间。
顺序图 中的对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生 命线,用于表示在某段时间内对象是存在的。对象间的通信通过在对象的生命线间画消息 来表示。消息的箭头指明消息的类型。
顺序图中的消息可以是信号(Signal)、操作调用或类似于C++中的RPC(RemoteProce dure Calls)和
Java中的R
MI(Remote Method Invocation)。当收到消息时,接收对象立即 开始执行活动,即对象被激活了。
通过在对象生命线上显示一个细长矩形框来表示激活。 消息可以用消息名及参数来标识。
消息也可带有顺序号,但较少使用。消息还可带有 条件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥 的,即在某一时刻仅可发送分支中的一个消息。
在顺序图的左边可以有说明信息,用于说明消息发送的时刻、描述动作的执行情况以 及约束信息等。一个典型的例子就是用于说明一个消息是重复发送的。
另外,可以定义两 个消息间的时间限制。
一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该 对象用"X"标识。
另外,在很多算法中,递归是一种很重要的技术。当一个操作直接或间接调用自身时 ,即发生了递归。
产生递归的消息总是同步消息,返回消息应是一个简单消息。
4. 合作图 合作图(Collaboration Diagram)用于描述相互合作的对象间的交互关系和链接关系 。
虽然顺序图和合作图都用来描述对象间的交互关系,但侧重点不一样。顺序图着重体现 交互的时间顺序,合作图则着重体现交互对象间的静态链接关系。
合作图中对象的外观与顺序图中的一样。如果一个对象在消息的交互中被创建,则可 在对象名称之后标以{new}。
类似地,如果一个对象在交互期间被删除,则可在对象名称之 后标以{destroy}。对象间的链接关系类似于类图中的联系(但无多重性标志)。通过在对 象间的链接上标志带有消息串的消息(简单、异步或同步消息)来表达对象间的消息传递 。
(1) 链接 链接用于表示对象间的各种关系,包括组成关系的链接(Composition Li nk)、聚集关系的链接(Aggregation Link)、限定关系的链接(Qualified Link)以及导航 链接(Navigation Link)。
各种链接关系与类图中的定义相同,在链接的端点位置可以显 示对象的角色名和模板信息。
(2) 消息流 在合作图的链接线上,可以用带有消息串的消息来描述对象间的交互。 消息的箭头指明消息的流动方向。
消息串说明要发送的消息、消息的参数、消息的返回 值以及消息的序列号等信息。