消息(Message)

消息代表发送生命线和接收生命线之间的通信,这种这种通信可能是启动行为、在行为的末尾发送回应、创建生命线、销毁生命线等。

消息的标识法一般是带有箭头的线,连接发送和接收生命线,或者生命线上的执行发生说明。消息的尾端与发送生命线连接,消息的箭头端与接收生命线连接。每种类型的消息都有其特殊的线形和箭头形状。

消息元素的主要属性解释如下:

名称(name):消息元素的名称。如果消息元素有签名元素的话,消息元素的名称和签名元素的名称相同(此时消息元素的名称不能更改,取自签名元素的名称)。

签名(signature):签名是消息调用的操作(Operation,接收生命线的类型元素具有的操作),或者一个信号(Signale)。如果消息的通信类型是同步调用或异步调用,则签名应该是接收生命线的一个操作;如果通信种类是异步信号,则签名应该是模型中定义的一个信号元素。同时,作为接收的生命线的类型元素,也应该有一个对应的“接收”(Reception)。通过消息节点的右键菜单“选择签名元素”设置签名。

参数(argument):在消息中传递的数据,显示在名称后面的括号内,代表对操作或接收调用的实参。如果消息的签名是一个操作,则消息的参数类型应该操作的参数类型匹配(类型相同,或消息参数是操作参数类型的子类);如果消息的签名是一个信号,则消息的参数应该和信号的属性匹配。消息的这些参数,可能是发送生命线的属性、一个常量、交互所属类的属性,也可以是一个通配符(-表示未定义)。

赋值目标(assignment-target):表示回复消息的返回值赋值给调用端生命线的那个属性或某个变量。赋值目标也可以写在返回参数的名称前面,这时候不需要指定整个消息的赋值目标。

连接器(connector):交互所属类(模块)的一个连接器属性,消息在这个具体的连接器上传递。(通过消息连线节点的右键菜单“选择连接器”设置)。

发送事件和接收事件:在消息的两端隐含这两个事件的发生。当消息的端连接到生命线或执行发生说明的时候,这个事件的类型是“消息发生说明”(MessageOccurrenceSpecification);当消息端连到序列图的框,或者交互使用、组合片段的框上的时候,它的类型是“门”(Gate)。门是边框、交互使用或组合片段边界上的点。消息不应该直接跨过这些边界,而是通过边界上的门。一个到达边界上的门,和另一个从边界内部对应点上的门对应。

代表发送事件或接收事件的“消息发生说明”或门可以有名称,名称通过属性框设置。

消息类别(MessageKind):有四种,完整(complete,发送事件和接收事件都有)、丢失(lost,有发送事件无接收事件)、发现(found,无发送事件有接收事件)、未知(unknown,发送和接收事件都没有)。

通信种类(MessageSort):有六种。

目录

  1.  消息(Message)
    1. 同步调用(SyncCall Message)
    2. 异步调用(AsynchCall Message)
    3. 异步信号(AsynchSignal Message)
    4. 回复消息(Reply Message)
    5. 创建消息(CreateMessage)
    6. 丢失消息(LostMessage)
    7. 发现消息(FoundMessage)

同步调用(SyncCall Message)

同步调用消息代表的发送生命线对接收生命线的操作的同步调用,其中发送方会等待接收方完成被触发行为的执行,发送回复消息,然后才能继续自身的执行。

同步调用消息的标识法,是带有实心箭头的实线,从发送生命线画向接收生命线。同步调用的标签:

英文:<message name> (<input argument list>);

中文:消息名称(参数列表)

消息的名称必须与接收生命线所拥有的操作的名称匹配。

输入参数列表是可选的,如果显示参数,每个参数和接收生命线操作的参数对应。参数可以是一个数值,也可以是持有值得属性的名称,当序列图作为图形化测试案例说明的时候,数值会比较合适作为消息参数。当接收生命线执行与被触发的操作相关的行为时,所有在同步消息中传送过来的参数都是可以访问的。

消息的发送方会等待接收方完成被触发行为的执行,然后再继续自身的执行。

异步调用(AsynchCall Message)

异步调用消息代表发送生命线对接收生命线操作的异步调用,发送方会在发送消息之后马上继续执行,发送方不会等待接收方完成被触发的行为,发送方不会等待接收方完成行为的时候发送回应。

异步调用消息的标识法,带有开口箭头的实线,从发送生命线画向接收生命线。线上有一个标签。

英文格式:<message name> : ( <input argument list> );

中文格式:消息名称:(参数列表)

消息名称,必须与接收生命线所拥有的操作的名称匹配。

输入参数列表,可选可选。如果你选择不显示它,那么就可以在消息名称之后显示一组空括号,或者什么不显示。如果你选择显示参数,那么就要以逗号分隔的列表形式显示,列表中的每个参数都会遵循:

英文格式:<input parameter name> = <value specification>;

中文格式:参数名称=值

输入参数名称是可选的,如果显示的话,那么它必须与被触发的操作的输入参数名称匹配,通常建模者会忽略这条信息,只显示一个值,可能是一个数值,或者是持有一个值的属性名称。所传递的值必须与相关输入参数的类型相匹配。

当创建序列图作为图形化测试案例说明,这时,数值比较适合作为消息参数,属性名称就不太适合。

异步消息的发送方不会等待接收方完成被触发行为的执行,发送方会立刻继续执行。

异步信号(AsynchSignal Message)

异步信号消息代表发送生命线对接收生命线的接收(Reception)的异步调用,发送方会在发送消息之后马上继续执行,发送方不会等待接收方完成被触发的行为,发送方不会等待接收方完成行为的时候发送回应。

异步信号消息的标识法,带有开口箭头的实线,从发送生命线画向接收生命线。线上有一个标签。

英文格式:<message name> : ( <input argument list> );

中文格式:消息名称:(参数列表)

消息名称,必须与接收生命线所拥有的接收的名称匹配,而这个接收的名称和接收的信号名称也是相同的。当选择消息的签名为一个信号后,就表示这个消息是对接收生命线上和信号对应接收的调用。接收是模块可以拥有的一种行为特征,一种总会被异步触发的行为特性。

输入参数列表是可选的,如果你选择不显示它,那么就可以在消息名称之后显示一组空括号,或者什么不显示。如果你选择显示参数,那么就要以逗号分隔的列表形式显示,列表中的参数都会遵循:

英文格式:<input parameter name> = <value specification>;

中文格式:参数名称=值;

输入参数名称是可选的,如果显示的话,那么它必须与被触发的接收的输入参数名称匹配,通常建模者会忽略这条信息,只显示一个值,可能是一个数值,或者是持有一个值的属性名称。所传递的值必须与相关输入参数的类型相匹配。

异步信号消息的发送方不会等待接收方完成被触发行为的执行,发送方会立刻继续执行。

 

回复消息(Reply Message)

回复消息,代表一种标记同步调用行为结束的通信,他总是(通过交互中早期的同步消息)从执行行为的生命线发送到触发行为的生命线。

恢复消息的标识法,带有开口箭头的虚线,你可以选择在回复消息上显示一个标签,英文格式:<assignment target> = <message name> (<output argument list>) : <value specification>;

中文格式:赋值目标=消息名称(输出参数):类型;

消息名称,必须与相应同步调用消息的名称匹配(那也是同步调用消息所触发的操作的名称)。冒号后面的值说明代表刚刚完成执行的行为的返回值,但是只有在被触发的操作真的拥有声明的返回类型时,这段字符串才会出现。

赋值目标是可选的信息,如果显示的话,他表示捕获返回值的属性名称,触发操作的生命线拥有的属性,也就是接收回复消息的那个生命线。一般会忽略这个信息。

输出参数的名称是可选的,如果显示的话,它必须与被触发操作的输出参数名匹配,SysML还可以选择性地为列表中的每个输出参数显示赋值目标,但是会让回复消息标签更加复杂。一般会忽略这个信息,只显示发送回调用者的值说明,作为被触发操作的输出。

回复消息显示本身是可选的,通常会忽略回复消息,以节省序列图中的空间,为了更加清晰,回复消息仍然会发送回调用方。当它不显示的时候只是被隐藏了,发送同步消息的生命线在完成被触发行为的时候,总会接收一条回复消息,即便那条回复消息并没有显示在序列图上。

创建消息(CreateMessage)

创建消息,代表在系统中创建新实例的通信,之后会参与到交互中的一个实例。

创建消息的标识法,带有开口箭头的虚线,消息的尾端与发送生命线连接(和平常一样),消息的箭头端会和被创建的生命线头部相连。

生命线创建事件,生命线创建事件会存在于创建消息与生命线头部的交点处,也会存在消息接收事件,因此,他和创建生命线事件是同时发生的。

丢失消息(LostMessage)

丢失消息是发送事件已知、但没有接收事件的消息。这种消息元素的应用是丢失消息的目标超出了描述的范围,无法描述或无需描述。

丢失消息无需(不能)连接到生命线或执行说明。

发现消息(FoundMessage)

发现消息是接收事件已知、但没有发送事件的消息。这种消息元素的应用是因为消息的来源超出了描述的范围。例如,这可能是噪音或其他我们不想详细描述的活动。

发现消息的发送端无需(不能)连接到生命线或执行说明。

 

MBSES用户使用说明书