【UML教程】顺序图和协作图(可编辑)
第4章 顺序图和协作图 (sequence diagram &
collaboration diagram) 1.交互图(interaction diagram) 2.顺序图 顺序图 顺序图 顺序图 3.消息(调用消息、异步消息、返回消息等) 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 3.消息 4.建立顺序图的步骤 5.协作图 5.协作图 6.建立协作图的步骤 7.顺序图与协作图的比较 8.常见问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
8.常见问题分析 8.常见问题分析 8.常见问题分析 8.常见问题分析 8.常见问题分析 8.常见问题分析 8.常见问题分析 时序图 协作图 * * 制作 龙鹏飞 交互图 顺序图 协作图 用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。 通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。 是强调消息的时间次序的交互图。 它显示了一组对象和由这组对象发送和接收的消息。 是强调收发消息的对象的结构组织的交互图。 它显示了一组对象、这组对象间的链以及这组收发的消息。 制作 龙鹏飞 顺序图是一个二维图形。 水平方向为对象维,排列的是对象。对象的排列次序不重要,但一般将主要的对象靠左,参与者排在两端。 垂直方向为时间维,沿垂直向下方向按时间递增顺序列出各对象所发出的和接收的消息。 制作 龙鹏飞 顺序图建模元素: 对象(object) 生命线(life line) 控制焦点(focus of control,激活棒) 消息(message) 制作 龙鹏飞 顺序图建模元素: 对象(object) 生命线(life line) 控制焦点(focus of control,激活棒) 消息(message) 对象 生命线 制作 龙鹏飞 激活棒 消息 制作 龙鹏飞 1、调用消息: 调用(Procedure call)消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或
返回控制。 调用消息可以用来表示同步的( synchronous )意义,在UML
早期版本中,采用“同步消息”这个术语。 制作 龙鹏飞 制作 龙鹏飞 2、异步
消息: 异步(asynchronous)消息的发送者通过消息把信号传递给消息的
接收者,然后继续自己的活动,不等待接收者返回消息或控制。 异步消息
的接收者和发送者并发工作。 制作 龙鹏飞 制作 龙鹏飞 3、返回消息: 返
回(return)消息表示从过程调用返回。 如果是从过程调用返回,则返回
消息是隐含的,所以返回消息可以不用画出来。 对于非过程调用如果有返
回消息,必须明确表示出来。 制作 龙鹏飞 制作 龙鹏飞 4、阻止消息和超时
消息: Rose还对消息类型做了扩充,增加了阻止消息和超时消息。 阻
止消息是指消息发送者发出消息给接收者,如果接收者无法立即接收消息,则发
送者放弃这个消息。 超时消息是指消息发送者发出消息给接收者并按指定
时间等待(如果接收者无法在指定时间内接收消息,则发送者放弃这个消息。 制
作 龙鹏飞 5、消息格式:
[predecessor][guard-condition][squence-expression] [return-value := ]message-name([argument-list]) [predecessor] 必须先发生的消息的列表。 形式:消息号 , ... / 如:1,2,5,A3/ 制
作 龙鹏飞 5、消息格式:
[predecessor][guard-condition][squence-expression] [return-value := ]message-name([argument-list]) [guard-condition]
警戒条件,只有在 条件中布尔表达式为真时,消息才发送。 形式:
[boolean-expression] 如:[x 0] 制作 龙鹏飞 5、消息格式:
[predecessor][guard-condition][squence-expression]
[return-value := ]message-name([argument-list]) [squence-expression] 消息顺序表达式。消息顺序表达式是用句点分隔(以
表示消息的嵌套),以冒号结束的消息顺序项列表。 形式:
sequence-term....: sequence-term的形式: [integer|name][recurrence] integer表示消息序号,name 表示并发的控制线程或消息。如3.1a,3.1b表示
两个消息是并发的。recurrence表示消息是条件执行或循环执行,有几种形式:
1)*[||][[循环子句]] 2)[条件子句] 例(recurrence ): ?
*[i=1 to n] ?*||[i=1 to 3] ?[x y] ?[!x] 例
( sequence-term ): ?3*[i=1 to n] ?3*||[i=1 to 3] ?
3[x y] 例:?0>.: ?.*[i=1 to n]: ?3[x y] ?8 制作 龙鹏飞
5、消息格式: [predecessor][guard-condition][squence-expression] [return-value := ]message-name([argument-list]) [return-value:=]
若消息有返回值,则return-value为保存返回值的变量名。 message-name
为消息的名字。 [argument-list] 消息的参数列表。 如:?v:=op()
?op() ?v=op(x,y) ?v:=op(x,y) 制作 龙鹏飞 5、消息格式:
[predecessor][guard-condition][squence-expression] [return-value := ]message-name([argument-list]) 完整消息例子: ?
2:display(x,y) 简单消息 ? .:p:=find(s) 嵌套消息 ? [x
y]4:invert(x,color) 带警戒条件的消息 ? 3.1*:update() 消
息是循环发送的 ? A3,B4/C2:copy(a,b) 发送线程C的第2个消息前,必
须先 发送线程A的第3
个消息和线程B的第2个 消
息。 制作 龙鹏飞 参考步骤: (1)确定交互过程的上下文(context)。 (2)识别参与交互过程的对象。 (3)为每个对象设置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤销。 (4)从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息。 (5)如果需要表示消息的嵌套,或,和表示消息发生时的时间点,则采用控制焦点。 (6)如果需要说明时间约束规在消息旁边加上约束说明。 (7)如果需要,可以为每个消息附上前置条件和后置条件。 制作 龙鹏飞 协作图是用于描述系统的行为是如何由系统的成分协作实现的图。 协作图中包括的建模元素有对象(包括参与者实例、多对象、主动对象等)、消息、链等。 制作 龙鹏飞 制作 龙鹏飞 参考步骤: (1)确定交互过程的上下文(context)。 (2)识别参与交互过程的对象。 (3)如果需要,为每个对象设置初始特性。 (4)确定对象之间的链(link),以及沿着链的消息。 (5)从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。 (6)如果需要表示消息的嵌套,则用Dewey十进制数表示法。 (7)如果需要说明时间约束,则在消息旁边加上约束说明。 (8)如果需要,可以为每个消息附上前置条件和后置条件。 制作 龙鹏飞 顺序图和协作图都属于交互图,都用于描述系统中对象之间的动态关系(两者可以相互转换,但两者强调的重点不同。 顺序图强调的是消息的时间顺序,而协作图强调的是满交互的对象的组织。 在两个图所使用的建模元素上,两者也有各自的特点。顺序图中有对象生命线和控制焦点,协作图中没有;协作图中有路径,并且协作图中的消息必须有消息顺序号,但顺序图中没有这两个特征。 和协作图相比,顺序图在表示算法、对象的生命期、具有多线程特征的对象等方面相对来说更容易一些,但在表示并发
控制流方面会困难一些。 顺序图和协作图在语义上是等价的,两者之间可以相互转换,但两者并不能完全相互代替。 制作 龙鹏飞 1)如何在顺序图中表示消息的循环发送, 制作 龙鹏飞 2)如何在顺序图中表示消息的条件发送, ?在消息加警戒条件 ?在消息名前加条件子句 ?使用文字说明 ?分成多个顺序图(每分支一图) 制作 龙鹏飞 3)如何在
顺序图中表示时间