1、目录目录7.1 顺序图顺序图7.2 通信图通信图7.3 绘制交互图绘制交互图7.4 顺序图与通信图的关系顺序图与通信图的关系7.5 定时图定时图71 顺序图顺序图一顺序图的概念一顺序图的概念n也称时序图,也称时序图,Sequence Diagramn描述了系统中对象之间传送消息的时间顺序。描述了系统中对象之间传送消息的时间顺序。二顺序图的作用二顺序图的作用n用来描述用例的实现用来描述用例的实现71 顺序图顺序图图:即时通信系统中对象图:即时通信系统中对象server和对象和对象Database的交互的交互 UML2.0 可以可以帧化帧化顺序图,即用一个边框包围他并在左上顺序图,即用一个边框包围
2、他并在左上角添加一个间隔区,间隔区中包含了识别该顺序图的信息。角添加一个间隔区,间隔区中包含了识别该顺序图的信息。(例,(例,sd:表示该图是顺序图;表示该图是顺序图;login:顺序图名)顺序图名)71 顺序图顺序图顺序图的表示顺序图的表示三组成元素三组成元素n对象对象-Objectn生命线生命线-Lifelinen消息消息-Messagen控制焦点(激活)控制焦点(激活)-Activation71 顺序图顺序图顺序图的表示顺序图的表示1、对象、对象n参与者实例也是对象;参与者实例也是对象;n顺序图中水平方向为对象维顺序图中水平方向为对象维;n一般参与者和对象按从左到右顺序排列在顺序一般参与
3、者和对象按从左到右顺序排列在顺序图的顶部;图的顶部;71 顺序图顺序图顺序图的表示顺序图的表示1、对象、对象n对象的命名方式有三种:对象的命名方式有三种:n显示对象名和类名显示对象名和类名n只显示类名(匿名对象)只显示类名(匿名对象)n只显示对象名(不关心类)只显示对象名(不关心类)71 顺序图顺序图顺序图的表示顺序图的表示2、生命线、生命线n表示对象存在的时间。表示对象存在的时间。n如果对象生命期结束,则用注销符号表示。如果对象生命期结束,则用注销符号表示。71 顺序图顺序图顺序图的表示顺序图的表示3、控制焦点(激活期)、控制焦点(激活期)n对象执行某个动作的时期。对象执行某个动作的时期。7
4、1 顺序图顺序图顺序图的表示顺序图的表示4、消息、消息n对象间交互信息的方式对象间交互信息的方式nUML中中5种消息:种消息:n调用(同步消息)调用(同步消息)n发送(异步消息)发送(异步消息)n返回返回n创建创建n销毁销毁71 顺序图顺序图顺序图的表示顺序图的表示(1)调用消息)调用消息n发送者把消息发送后,等待,直到接收者返回发送者把消息发送后,等待,直到接收者返回控制。控制。n可表示同步。可表示同步。图:同步消息图:同步消息71 顺序图顺序图顺序图的表示顺序图的表示(2)发送消息)发送消息n消息发送后,发送者继续操作,不等待。消息发送后,发送者继续操作,不等待。n常用于表示并发。常用于表
5、示并发。图:异步消息图:异步消息71 顺序图顺序图顺序图的表示顺序图的表示(3)返回消息)返回消息n表示消息的返回。一般同步的返回不需画出,表示消息的返回。一般同步的返回不需画出,直接隐含,而异步返回则可用它。直接隐含,而异步返回则可用它。71 顺序图顺序图顺序图的表示顺序图的表示n 自调用自调用例:例:表示某对象调用自己的操作。表示某对象调用自己的操作。UML标记标记 ROSE标记标记71 顺序图顺序图顺序图的表示顺序图的表示(4)创建)创建 通常利用构造方法来实现,对象一创建,通常利用构造方法来实现,对象一创建,生命线就开始了。生命线就开始了。图:创建消息示例图:创建消息示例71 顺序图顺
6、序图顺序图的表示顺序图的表示(5)销毁)销毁 生命终止符号用一个较大的叉形符号表示。生命终止符号用一个较大的叉形符号表示。client:ClientsystemMenu:SystemMenuserver:Server1:logOut2:logOut3:delete图:销毁消息示例图:销毁消息示例71 顺序图顺序图顺序图的表示顺序图的表示5、消息的格式、消息的格式nUML中规定的消息语法格式如下:中规定的消息语法格式如下:n举例举例:display(x,y)简单消息简单消息1.3.1:p:=find(specs)嵌套消息嵌套消息 x0 4:invert(x,color)条件消息条件消息 3.1*
7、:update()循环消息循环消息71 顺序图顺序图顺序图的表示顺序图的表示(1)消息编号)消息编号顺序编号顺序编号 在每个消息的前面加上一个用冒号隔在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。开的顺序号来表示其顺序。71 顺序图顺序图顺序图的表示顺序图的表示图图7-4 将订单生成送货单将订单生成送货单71 顺序图顺序图顺序图的表示顺序图的表示(2)消息编号)消息编号嵌套编号嵌套编号 把属于同一个对象发送和接收的消息把属于同一个对象发送和接收的消息放在同一层进行编号。放在同一层进行编号。71 顺序图顺序图顺序图的表示顺序图的表示图图7-5 嵌套编号嵌套编号Rose中的消息中的消息7
8、1 顺序图顺序图顺序图的深入顺序图的深入n顺序图中,对象的行为有循环和分支两顺序图中,对象的行为有循环和分支两种方式,为了表示这两种行为,引入了种方式,为了表示这两种行为,引入了交互片段交互片段、区域区域和和操作符操作符的概念。的概念。71 顺序图顺序图顺序图的深入顺序图的深入n每个交互片段都有一个操作符,每个交互片段都有一个操作符,操作符操作符决定了交互片段的执行方式决定了交互片段的执行方式。1、表示分支的操作符、表示分支的操作符palt:支持多条件支持多条件popt:支持单条件支持单条件71 顺序图顺序图顺序图的深入顺序图的深入图图7-5 顺序图中的分支表示(顺序图中的分支表示(1)71
9、顺序图顺序图顺序图的深入顺序图的深入图图7-7 顺序图中的分支表示(顺序图中的分支表示(2)71 顺序图顺序图顺序图的深入顺序图的深入2、表示循环的操作符:、表示循环的操作符:loop 说明该片段将可以执行多次,而具体说明该片段将可以执行多次,而具体的次数由循环次数和监护条件表达式来的次数由循环次数和监护条件表达式来说明。说明。71 顺序图顺序图顺序图的深入顺序图的深入图图7-7 顺序图中的循环表示顺序图中的循环表示71 顺序图顺序图顺序图的深入顺序图的深入3、break 用用break定义一个含有监护条件的子片段。定义一个含有监护条件的子片段。l 如果监护条件为如果监护条件为“真真”则执行子
10、片段,而且则执行子片段,而且不执行子片段后面的其他交互;不执行子片段后面的其他交互;l 如果监护条件为如果监护条件为“假假”,那么就按正常流程,那么就按正常流程执行。执行。71 顺序图顺序图顺序图的深入顺序图的深入图图7-10 break操作符操作符71 顺序图顺序图顺序图的深入顺序图的深入4、assert、consider、ignore passert是用来表示执行过程中,那个时刻的行为是唯是用来表示执行过程中,那个时刻的行为是唯一有效的。一有效的。pconsider包含一个子片段和一个消息类型列表。只有包含一个子片段和一个消息类型列表。只有列表中的消息类型可以出现在子片段中,其他类型可列表
11、中的消息类型可以出现在子片段中,其他类型可以出现在实际的系统中,但是交互会忽略它们。以出现在实际的系统中,但是交互会忽略它们。pingore也包含一个子片段和一个消息类型列表。列表也包含一个子片段和一个消息类型列表。列表中的消息类型可以出现在子片段中,但交互会忽略它中的消息类型可以出现在子片段中,但交互会忽略它们。它的含义与们。它的含义与consider刚好相反。刚好相反。71 顺序图顺序图顺序图的深入顺序图的深入图图7-9 consider和和assert操作符操作符71 顺序图顺序图顺序图的深入顺序图的深入5、critical crtical表示子片段是表示子片段是“临界区域临界区域”,在
12、临界,在临界区域中,生命线上的事件序列不能和其他区域区域中,生命线上的事件序列不能和其他区域中的任何其他事件交错。中的任何其他事件交错。71 顺序图顺序图顺序图的深入顺序图的深入图图7-11 操作符操作符crtical71 顺序图顺序图顺序图的深入顺序图的深入6、par par是用来表示是用来表示“并行并行”的,也就是用来表的,也就是用来表示两个或多个并发执行的子片段。示两个或多个并发执行的子片段。71 顺序图顺序图顺序图的深入顺序图的深入图图7-12 par操作符操作符par71 顺序图顺序图顺序图的深入顺序图的深入7、ref ref用来在一个交互图中,引用其他的交互用来在一个交互图中,引用
13、其他的交互图。图。在一个矩形框的左上角标识在一个矩形框的左上角标识ref操作符,操作符,并在方框中写明被引用的交互图名称。并在方框中写明被引用的交互图名称。图图7-13 ref操作符操作符71 顺序图顺序图顺序图的深入顺序图的深入顺序图中使用其它的技术:顺序图中使用其它的技术:1、使用注释、使用注释2、使用约束、使用约束3、使用状态、使用状态71 顺序图顺序图顺序图建模顺序图建模1.为每一个用例编写事件流,包括一个基本事件为每一个用例编写事件流,包括一个基本事件流和若干可选事件流或异常流;流和若干可选事件流或异常流;2.识别事件流中参与交互的对象;识别事件流中参与交互的对象;3.为每个事件流绘
14、制顺序图,包括为每个对象设为每个事件流绘制顺序图,包括为每个对象设置生命线,即确定哪些对象存在于整个交互过置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤销;程中,哪些对象在交互过程中被创建和撤销;4.从引发这个交互过程的初始消息开始,在生命从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息;线之间自顶向下依次画出随后的各个消息;5.如果需要,可以画上交互片段、交互引用和约如果需要,可以画上交互片段、交互引用和约束等。束等。71 顺序图顺序图绘制顺序图绘制顺序图 以饮料自动销售系统为例,对以饮料自动销售系统为例,对“买饮料买饮料”的的种场景
15、进行建模,对每一个场景,我们绘制其种场景进行建模,对每一个场景,我们绘制其对应的顺序图。对应的顺序图。下面是买到饮料的一般事件流:下面是买到饮料的一般事件流:(1)顾客从机器的前端钱币口投入钱币,然后)顾客从机器的前端钱币口投入钱币,然后选择想要的饮料;选择想要的饮料;(2)钱币到达钱币记录仪,记录仪更新自己的)钱币到达钱币记录仪,记录仪更新自己的存储;存储;(3)记录仪通知分配器分发饮料到机器前端;)记录仪通知分配器分发饮料到机器前端;71 顺序图顺序图绘制顺序图绘制顺序图1、买到饮料的场景对应的顺序图,如图、买到饮料的场景对应的顺序图,如图7-14所示。所示。图7-14买到饮料的场景71
16、顺序图顺序图绘制顺序图绘制顺序图图图7-15 饮料已售完的场景饮料已售完的场景 2.饮料饮料“已售完已售完”的场景的场景71 顺序图顺序图绘制顺序图绘制顺序图3.机器没有合适的零钱机器没有合适的零钱图图7-16零钱零钱“找不开找不开”的场景的场景练习一练习一 例:为即时通信系统中的例:为即时通信系统中的“用户登录用户登录”用例建用例建立顺序图:立顺序图:第一步:确定事件流第一步:确定事件流第二步:识别对象第二步:识别对象第三步:添加消息第三步:添加消息练习一练习一第一步:确定事件流第一步:确定事件流“用户登录用户登录”用例的用例的基本事件流基本事件流:(1)打开登录对话框;)打开登录对话框;(
17、2)输入用户信息;)输入用户信息;(3)将用户信息发给服务器;)将用户信息发给服务器;(4)服务器访问数据库,验证账号合法性;)服务器访问数据库,验证账号合法性;(5)数据库返回账号合法信息以及用户的离线)数据库返回账号合法信息以及用户的离线消息(如果有);消息(如果有);(6)服务器更新在线用户列表;)服务器更新在线用户列表;(7)客户端更新好友列表的状态信息,显示离)客户端更新好友列表的状态信息,显示离线消息。线消息。练习一练习一第一步:确定事件流第一步:确定事件流“用户登录用户登录”用例的用例的异常事件流异常事件流:用户输入的信息与数据库的信息不匹配,数用户输入的信息与数据库的信息不匹配
18、,数据库验证不通过,弹出错误消息;据库验证不通过,弹出错误消息;练习一练习一第二步:识别对象第二步:识别对象(1)客户()客户(client););(2)登录对话框()登录对话框(entryDialogue););(3)服务器()服务器(server););(4)数据库()数据库(database););(5)好友列表()好友列表(friendList););练习一练习一第三步:添加消息第三步:添加消息例:建模例:建模“成绩系统成绩系统”的的“浏览成绩(浏览成绩(view grades)”用例,需要至少表示出用例,需要至少表示出3个要建个要建模的工作流:模的工作流:教师成功的检查学生的分数;教
19、师成功的检查学生的分数;教师试图检查某个学生的分数,但是该学教师试图检查某个学生的分数,但是该学生在系统中不存在;生在系统中不存在;教师试图检查某个学生的分数,但是该学教师试图检查某个学生的分数,但是该学生的分数在系统中不存在。生的分数在系统中不存在。练习二练习二teahcerteahcerteahcer练习三练习三1、用户打印文件,计算机向打印服务器发、用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打送打印命令,打印机如果空闲,则直接打印;否则把打印文件存储在打印队列中。印;否则把打印文件存储在打印队列中。2、管理员通过课程管理器打印课程、管理员通过课程管理器打印课程U
20、ML的的信息。信息。a管理员通过课程管理器打印全部课程信息。管理员通过课程管理器打印全部课程信息。72 通信图通信图一、通信图的概念一、通信图的概念n通信图也称通信图也称协作图协作图(collaboration diagram);n描述系统中对象(或活动者)如何共同协作实描述系统中对象(或活动者)如何共同协作实现用例;现用例;n强调的是参与交互的对象的组织;强调的是参与交互的对象的组织;n一般,顺序图和协作图之间可相互转换;一般,顺序图和协作图之间可相互转换;二、通信图的作用二、通信图的作用n描述用例或用例中特定部分的行为。描述用例或用例中特定部分的行为。72 通信图通信图三、组成元素三、组成
21、元素n对象(参与者实例、多对象、主动对象)对象(参与者实例、多对象、主动对象)n消息消息n链链72 通信图通信图三、组成元素三、组成元素1、对象、对象(1)多对象)多对象n多个对象的集合,往往是同类的对象。多个对象的集合,往往是同类的对象。n如果消息同时发送给多个对象,则用多重对象如果消息同时发送给多个对象,则用多重对象表示。表示。n在顺序图中仍然显示为同单对象一样的图标。在顺序图中仍然显示为同单对象一样的图标。72 通信图通信图三、组成元素三、组成元素1、对象、对象(2)主动对象(活动对象)主动对象(活动对象)n一组属性和一组方法的封装体,其中至少有一一组属性和一组方法的封装体,其中至少有一
22、个方法不需要接收消息就能主动执行(称作主个方法不需要接收消息就能主动执行(称作主动方法)。动方法)。UML中中Rose中中72 通信图通信图三、组成元素三、组成元素2、链、链n用来连接对象,消息显示在链的旁边,一个链用来连接对象,消息显示在链的旁边,一个链上可以有多个消息。上可以有多个消息。n在顺序图中不使用链,只有协作图中才使用链在顺序图中不使用链,只有协作图中才使用链的概念。的概念。72 通信图通信图三、组成元素三、组成元素3、消息、消息n通信图中的消息类型与顺序图中的相同。通信图中的消息类型与顺序图中的相同。n为了说明交互过程中消息的时间顺序,需要给为了说明交互过程中消息的时间顺序,需要
23、给消息添加顺序号。顺序号是在消息的前面加一消息添加顺序号。顺序号是在消息的前面加一个整数。个整数。每个消息都必须有唯一的顺序号每个消息都必须有唯一的顺序号。n编号方式:编号方式:无层次编号无层次编号和和嵌套编号嵌套编号。72 通信图通信图三、组成元素三、组成元素4、迭代标记、迭代标记n在顺序编号前加上一个迭代符在顺序编号前加上一个迭代符“*”和一个可和一个可选的迭代表达式来表示,用来说明循环规则。选的迭代表达式来表示,用来说明循环规则。表表7-2常用迭代表达式常用迭代表达式迭代表达式迭代表达式语义语义i:=1.n迭代迭代n次次I=1.10I迭代迭代10次次while(表达式表达式)表达式为表达
24、式为true时才进行迭代时才进行迭代until(表达式表达式)迭代到表达识为迭代到表达识为true时,才停止迭代时,才停止迭代for each(对象集合对象集合)在对象集合上迭代在对象集合上迭代72 通信图通信图三、组成元素三、组成元素5、监护条件、监护条件n监护条件通常是用来表示分支监护条件通常是用来表示分支n在在UML中,监护条件是以中,监护条件是以“条件表达式条件表达式”的的格式表示的。格式表示的。如何读懂通信图如何读懂通信图例:例:图图7-18从订单生成订货单的通信图从订单生成订货单的通信图:Administrator:Maintenance Window:Item:Title1:ad
25、d item()3:update()2:find(String)图图7-19 通信图通信图例:例::Registrar:RegistrationManager:CourseList:StudentList1:register(name,course)1.1:findStudent(name)1.2:findCourse(course)1.1.1:s=find(name)1.2.1:c=find(course)c:Course1.3:register(s)s&c(!s)&c1:studentNotFounds&(!c)1:courseNotFound(!s)&(!c)1:allNotFounds
26、&c1:OK图图7-20 注册课程注册课程例:例:练习练习1练习练习2建立通信图的步骤建立通信图的步骤1.确定交互过程的上下文。确定交互过程的上下文。2.识别参与交互过程的对象。识别参与交互过程的对象。3.如果需要,为每个对象设置初始特性。如果需要,为每个对象设置初始特性。4.确定对象之间的链,以及沿着链的消息。确定对象之间的链,以及沿着链的消息。5.从引发这个交互过程的初始消息开始,将随后的从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。每个消息附到相应的链上。6.如果需要表示消息的嵌套,则用如果需要表示消息的嵌套,则用Dewey十进制十进制数表示法。数表示法。7.如果需要
27、说明时间约束,则在消息旁边加上约束如果需要说明时间约束,则在消息旁边加上约束说明。说明。8.如果需要,可以为每个消息附上前置条件和后置如果需要,可以为每个消息附上前置条件和后置条件。条件。73 顺序图与通信图比较顺序图与通信图比较n顺序图和协作图都属于交互图,都用于描述系顺序图和协作图都属于交互图,都用于描述系统中对象之间的动态关系。统中对象之间的动态关系。n二者在语义上是等价的,可以互换,但侧重点二者在语义上是等价的,可以互换,但侧重点不同。不同。(1)顺序图强调的是消息的时间顺序,而协作)顺序图强调的是消息的时间顺序,而协作图强调的是参与交互的对象的组织。图强调的是参与交互的对象的组织。(
28、2)顺序图中有对象生命线和控制焦点,协作)顺序图中有对象生命线和控制焦点,协作图中没有;协作图中有路径,并且协作图中的图中没有;协作图中有路径,并且协作图中的消息必须有消息编号。消息必须有消息编号。74 绘制交互图绘制交互图绘制交互图的绘制交互图的4个步骤:个步骤:n第一,找出交互对象及其关系(仅对于通信图第一,找出交互对象及其关系(仅对于通信图而言);而言);n第二,确定对象之间交互的具体消息格式和流第二,确定对象之间交互的具体消息格式和流程,并用同步调用、异步消息、返回消息来表程,并用同步调用、异步消息、返回消息来表示;示;n第三,并利用交互片段(顺序图)或迭代标志第三,并利用交互片段(顺
29、序图)或迭代标志及监护条件来表示循环和分支结构;及监护条件来表示循环和分支结构;n第四,通过一些构造型来完善整个交互图。第四,通过一些构造型来完善整个交互图。74 绘制交互图绘制交互图例:为用例例:为用例“新增书籍新增书籍”绘制交互图:绘制交互图:1、寻找分析类(边界类、控制类和实体类);、寻找分析类(边界类、控制类和实体类);n确定确定“新增书籍新增书籍”用例的基本事件流和扩展事用例的基本事件流和扩展事件流;件流;n寻找边界对象;寻找边界对象;n寻找控制对象和实体对象;寻找控制对象和实体对象;2、构建交互图、构建交互图74 绘制交互图绘制交互图例:为用例例:为用例“新增书籍新增书籍”绘制交互
30、图:绘制交互图:(1)基本事件流)基本事件流图书管理员向系统发出图书管理员向系统发出“新增书籍信息新增书籍信息“请求。请求。系统要求图书管理员选择要新增的书籍是计算机类还是系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类。非计算机类。图书管理员做出选择后,显示相应界面,让图书管理员图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号。输入信息,并自动根据书号规则生成书号。图书管理员输入书籍的相关信息,包括:书名、作者、图书管理员输入书籍的相关信息,包括:书名、作者、出版社、出版社、ISBN号、开本、页数、定价、是否有号、开本、页数、定价、是否有CD-R
31、OM。系统确定输入的信息中书名没有重复。系统确定输入的信息中书名没有重复。系统将所输入的信息存储建档。系统将所输入的信息存储建档。74 绘制交互图绘制交互图例:为用例例:为用例“新增书籍新增书籍”绘制交互图:绘制交互图:(2)扩展事件流)扩展事件流如果输入的书名有重名现象,则显示出重名的书籍,并如果输入的书名有重名现象,则显示出重名的书籍,并要求图书管理员选择修改书名或取消输入。要求图书管理员选择修改书名或取消输入。图书管理员选择取消输入,则结束用例,不做存储建档图书管理员选择取消输入,则结束用例,不做存储建档工作。工作。图书管理员选择修改书名后,转到图书管理员选择修改书名后,转到5。74 绘制交互图绘制交互图图图7-25 顺序图顺序图74 绘制交互图绘制交互图图图7-26 实现新增书籍的协作图实现新增书籍的协作图7.5 定时图nTiming Diagramn着重表示定时约束。当表示的交互具有很强的时间特性时,最好用定时图建模,如实时控制系统。1.定时图与顺序图的区别2.用定时图表示电子门禁系统的控制逻辑3.理解定时图