顺序图和协作图ppt课件.ppt

上传人:牧羊曲112 文档编号:1930228 上传时间:2022-12-26 格式:PPT 页数:74 大小:1.48MB
返回 下载 相关 举报
顺序图和协作图ppt课件.ppt_第1页
第1页 / 共74页
顺序图和协作图ppt课件.ppt_第2页
第2页 / 共74页
顺序图和协作图ppt课件.ppt_第3页
第3页 / 共74页
顺序图和协作图ppt课件.ppt_第4页
第4页 / 共74页
顺序图和协作图ppt课件.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《顺序图和协作图ppt课件.ppt》由会员分享,可在线阅读,更多相关《顺序图和协作图ppt课件.ppt(74页珍藏版)》请在三一办公上搜索。

1、顺序图和协作图,交互图概述,交互图(interaction diagram)是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档.,交互图通常用于描述一个用例的行为, 显示该用例中所涉及的对象及对象之间消息传递情况.,交互图包括:顺序图(sequence diagram), 描述对象按照时间顺序的消息交换;协作图(collaboration diagram), 描述系统成分如何协同工作.,顺序图,1. 顺序图 顺序图也称为时序图,它描述了系统中对象间通过消息进行的交互,它强调了消息在时间轴上的先后顺序。2. 顺序图的作用 顺序图常用来描述用例的实现,它表明了由哪

2、些对象,通过消息相互协作来实现用例的功能,在顺序图中,标识了消息发生交互的先后顺序。,赤壁之战的顺序图,顺序图的组成元素参与者(actor)或者 对象(object)生命线(lifeline)激活期(activation)/ 控制焦点(focus of control)消息(message),参与者或对象,参与者和对象按照从左到右的顺序排列;一般最多两个参与者,他们分列两端。启动这个用例的参与者往往排在最左边,接收消息的参与者则排在最右端;对象从左到右按照重要性排列或按照消息先后顺序排列;将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互

3、的过程中被创建的。,对象的命名方式有三种:包括对象名和类名类名(匿名对象)对象名(不关心类),生命线(Lifeline)每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时间内的存在垂直的虚线如果对象生命期结束,则用注销符号表示,消亡点,激活期(activation)/控制焦点(focus of control)对象在一段时间内获得了焦点,也称激活期对象执行某个动作的时期空心矩形条激活期的长短意味着对象执行某个动作的时间有多长,可以通过约束10ms来限制执行时间的长短。,顺序图中的消息,面向对象方法中,消息是对象间交互信息的主要方式。结构化程序设计中,模块间传递信息的方式主要是过程(或

4、函数)调用。对象A向对象B发送消息,可以简单地理解为对象A调用对象B的一个操作(operation)。,顺序图中,尽力保持消息的顺序是从左到右排列的。一个顺序图的消息流开始于左上方,消息2的位置比消息1低,这意味着消息2的顺序比消息1要迟。顺序图中消息编号可显示,也可不显示。,UML1.4后定义的消息有:调用消息 procedure call异步消息 asynchronous返回消息 returnUML1.3前的消息还有:简单消息 simpleRose扩充的消息阻止消息 balking超时消息 time-out,调用消息:消息的发送者把控制传递给消息的接收者, 等待接收者返回或放弃控制,可以表

5、示同步。实心箭头符号,调用消息必有一个与之配对的返回消息, 但是可以不用画出.,异步消息:消息的发送者把控制传递给消息的接收者, 然后继续自己的工作,不等待接收者返回或放弃控制.,UML1.4及以后,UML1.3及以前,返回消息(Return):表示消息的返回。消息上方放置返回值同步消息的返回可以画出(如果想明确表达返回值),也可以不画出,直接隐含。异步消息可以有返回,也可以没有。(可以响应异步消息,也可以不响应该异步消息。)虚线箭头表示,和依赖关系不要混淆,阻止消息:消息的发送者传递消息给接收者, 如果接收者无法立即接收, 则发送者放弃该消息.超时消息:消息的发送者发出消息给接收者并按指定时

6、间等待, 若接收者无法在指定时间内接收, 则发送者放弃该消息.,自调用(Self Call)某对象自己调用自己的操作嵌套的矩形条,消息的语法格式,前置消息列表警戒条件消息顺序表达式返回值:=消息名称(参数列表),前置消息列表(predecessor)语法:消息序列号,消息序列号, . /前置消息列表是一个用来同步线程或路径(path)的表达式意思是在发送当前消息之前指定序列号的消息被处理(必须连续执行)消息序列号之间用逗号隔开,用斜杠结束例如 1.1a, 1.1b/1.2: continue() ,在发送消息1.2之前必须已经同时发送并发消息给线程a和b,警戒条件(guard-conditio

7、n)语法: 条件短语 条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法例如,x0 4: invert(x, color),消息顺序表达式 (sequence-expression)语法 integer | name recurrence :integer为指定消息顺序的序列号,消息1是消息序列的开始消息,1.1是消息1的处理过程中的第一条嵌套的消息,消息1.2是消息1的处理过程中的第二条嵌套的消息,一个消息序列的例子如1, 1.1, 1.2, 1.2.1, 1.2.2, 1.3, 等。这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系(当消息是异步消息时消息为嵌套的操

8、作调用及返回)name表示并发控制线程,例如1.2a和1.2b为同时发送的并发消息,消息编号:按消息产生的先后顺序,给消息编号,有两种编号方案,一种是顺序编号,另一种是嵌套编号,(1)顺序编号 整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号(按照消息的先后顺序,从1开始对消息编号)来表示其顺序。(2) 嵌套编号 由于顺序图本身已经充分表现出消息执行的顺序,因此在UML模型中并没有要求对消息进行编号。只是要求在协作图中,对消息进行了编号。但在Rose等建模工具中,为了能够自动实现顺序图与协作图的转换,在顺序图中也默认采取嵌套编号方案。,嵌套编号,re

9、currence表示一个条件或循环的执行,有两种选择* 循环子句 循环子句(iteration-clause)用来指定一个循环(重复执行)例如:一个包括循环的消息 1.1 *x = 1.10 : doSomething() 条件子句 条件子句一般用来表示分支而不是用作警戒条件x0,是两个可以用来分支的条件子句,这两个条件只能有一个为真,因而只有一个分支被执行(即发送与分支有关的消息)条件子句和循环子句都可以用伪代码或真正的编程语言来表示消息顺序表达式用冒号结束,返回值、消息名和参数表返回值表示一个操作调用(即一个消息)的结果,消息的语法格式,前置消息列表警戒条件消息顺序表达式返回值:=消息名称

10、(参数列表),例:2: display () 1.3.1: p:=find()x0 4: invert(x, color)3.1 *x = 1.10 : update()1.1a, 1.1b/1.2: continue(),Rose中的消息,建立顺序图的步骤,确定交互过程的上下文识别参与交互过程的对象为每个对象设置生命线从引发这个交互过程的初始消息开始, 在生命线之间自顶向下依次画出随后的各个消息.如果需要嵌套或(和)表示消息发生的时间点, 使用控制焦点.如果需要说明时间约束, 则在消息旁边加上约束说明.如果需要, 可以为每个消息设置前置条件和后置条件.,下面以饮料自动销售系统为例,来学习怎样

11、绘制顺序图下面对“买饮料”的一种场景进行建模,绘制其对应的顺序图买饮料的正常场景下面是买到饮料的一般事件流:(1)顾客从机器的前端钱币口投入钱币,然后选择想要的饮料;(2)钱币到达钱币记录仪,记录仪更新自己的存储;(3)记录仪通知分配器分发饮料到机器前端.,边界类、控制类和实体类,UML中三种主要的类版型边界类, boundary class控制类, control class实体类, entity class,引入多种类版型帮助分析和设计人员确定系统中的类.,边界类,边界类位于系统与外界的交界处,包括:,用户界面类, 如: 窗口、对话框、报表类等通讯协议类, 如: TCP/IP的类直接与外部

12、设备交互的类直接与外部系统交互的类,边界类的UML表示方法:,边界类,通过用例图可以确定需要的边界类, 每个Actor/User case对至少需要一个边界类.边界类一般可以没有属性,只有操作.,但并不是每个Actor/Use case都需要生成惟一边界类, 多个actor启动同一use case可以使用同一边界类.,实体类,实体类保存要放进持久存储体(数据库/文件等)的信息.,实体类通过事件流和交互图发现, 采用目标领域术语命名.通常实体类对应数据库中的表, 其属性对应表的字段, 但实体类与数据库中的表不一定是一一对应关系.,控制类,控制类是负责管理或控制其他类工作的类.,每个用例通常有一个

13、控制类, 控制用例中的事件顺序, 控制类也可以在多个用例间共用. 控制类较少接收消息, 发出较多消息.,实例,寻找分析类,在分析阶段,我们常在用例中寻找三种分析类(边界类、控制类和实体类)。我们通过分析用例描述中的事件流,寻找分析类。用例“新增书籍”在分析时,还必须综合考虑基本事件流和扩展事件流两个方面。下面以 “新增书籍“为例进行分析。其事件流如下所示:(1)基本事件流图书管理员向系统发出“新增书籍信息”请求。系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类。图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号。图书管理员输入书籍的相关信息,包括:书

14、名、作者、出版社、ISBN号、开本、页数、定价、是否有CD-ROM。,寻找分析类,系统确定输入的信息中书名没有重复。系统将所输入的信息存储建档。(2)扩展事件流如果输入的书名有重名现象,则显示出重名的书籍,并要求图书管理员选择修改书名或取消输入。图书管理员选择取消输入,则结束用例,不做存储建档工作。图书管理员选择修改书名后,转到5。,寻找分析类,2寻找边界对象对这个用例而言,参与者 “图书管理员”,因此要寻找边界对象只需以“图书管理员”这个参与者为线索,从用例描述中去寻找分析类:(1)图书管理员向系统发出“新增书籍信息”请求-图书管理员在什么地方向系统发出“新增书籍信息”的请求呢?通常会设计一

15、个主窗口,并在上面摆放一些按钮来实现,因此在此句描述中间,可以发现两个边界类:主窗口、“新增书籍信息”按钮。(2 )系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类-从此句中可以发现一个新的边界类:书籍类别列表框。,(3 )图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号-此句中可以发现最为关键的一个边界类-“新书信息录入”窗口以及辅助的“提交”按钮。而且,还可以发现新增书籍信息按钮是组成主窗口的一部分。书籍类别列表框、提交按钮则是组成新书信息录入窗口的一部分。根据以上信息,可以先将参与者和边界对象绘制出来,其结果如图所示。,寻找分析类,参与者和边

16、界对象,3. 寻找控制对象和实体对象实体对象通常来源于领域中的类图,也就是描述业务领域的名词或名词短语,通过阅读整个事件流的详细描述,我们得知,实体对象有书籍、计算机书籍、非计算机书籍以及书籍列表4个。在这个例子中,根据事件流中的步骤5,以及扩展事件流的描述,可以在上图上增加相应的控制对象,得到更进一步的分析图,如下图所示。,寻找分析类,对基本事件流步骤5分析后,添加控制对象,另外,还有几个关键的事件没有体现到图中:一是基本事件流中的步骤2、3要求根据用户选择的类别自动获得书号;二是当书名重复性检查没有通过时(有重名),应返回要求其重输。,构建交互图,最后完整的分析图,构建交互图,下面是构建顺

17、序图的步骤:首先,按照从左到右的顺序,依此将参与者、边界对象和实体对象放在最顶部,边界类放在左边,实体类放在右边。注意,在分析模型中可以先不考虑控制类的引用(当然有必要时也可以引入)。,构建顺序图,练习,1、用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打印,否则把打印文件存储在打印队列中。,2、网上书店用户需求,书店店长:顾客能在网上书店订购图书,提交订单;工作人员能及时看到订单并进行处理,我们接受货到付款或者网银支付。,工作人员甲:图书可以按照不同种类放置,图书的信息和种类也要网上书店设置和管理。,工作人员乙:能进行促销管理。,顾客甲:可以查看图书简介,查找图书,购买

18、图书。,顾客乙:结账前可自行管理选购的图书,可以查看以前的购买记录,也可以取消现有订单。,顾客丙:实行会员制。平时可以在网上书店查查资料,只在购买图书的时候才使用会员身份。,用例名称:管理员登录系统基本流:1)用户输入用户名和密码2)用户选择管理员类型3)用户点击“登录”按钮;4)系统验证用户权限;5)管理员进入管理界面;6)用例结束。,备选流:3a)“用户名或密码错误”,系统出现用户名或密码错误的提示信息,回到基本流第一步,由用户重新输入;3b)“输入的用户名与类型不符”,系统出现提示信息,回到基本流第一步,由用户重新输入;3c)当用户点击取消按钮时,取消登录。,协作图,描述系统对象(或活动

19、者)如何共同协作实现用例;强调的是参与交互的对象的组织;一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。,对象object,链 link,消息 message,协作图中的元素:,对象,协作图与顺序图中的对象的概念是一样的,只不过在协作图中,无法表示对象的创建和撤销,所以对于对象在图中的位置没有限制。,多对象,多对象是多个对象组成的集合,往往是同一个类的对象;如果消息同时发给多个对象,则用多对象表示;在顺序图中仍然显示为单对象一样的图标, rose中multiple instance协作图中重叠的方框。,活动对象/主动对象,主动对象是一组属性和一组方法的封装体,其中

20、至少有一个方法不需要接收消息就能主动执行(称为主动方法)主动对象是不需接收消息就可自动启动交互的对象除了含有主动方法外,主动对象和被动对象无区别UML标记 Rose标记,链: 表示对象之间的语义关系,链是关联的一个实例。协作图中链的符号和对象图中链所用的符号是一样的,即一条连接两个对象的实线。,建立协作图的步骤,确定交互过程的上下文识别参与交互过程的对象如果需要, 为每个对象设置初始特性确定对象之间的链, 及沿着链的消息从引发该交互过程的初始消息开始, 将每个消息附到相应的链上如果需要表示消息嵌套, 则有Dewey十进制表示.如果需要说明时间约束, 则在消息旁边加上约束说明如果需要, 可以为每

21、个消息设置前置条件和后置条件,建模分数记录系统的协作图。具体用例是Teacher查看学生成绩。,2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来。,1.确定协作图的元素,2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查

22、询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来。,2.确定元素之间的结构关系 创建协作图的下一步是确定这些对象之间的连接关系,使用链与角色将这些对象连接起来。,2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的

23、学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来。,3.细化协作图创建协作图的最后一步就是将早期的协作图进行细化。,顺序图与协作图的比较,顺序图和协作图都属于交互图,用于描述系统中对象之间的动态关系。顺序图和协作图在语义上是等价的,两者可以相互转换。协作图强调参与交互的对象的组织结构; 顺序图强调消息的时间顺序.顺序图可以反映对象的创建/激活/撤消; 协作图不能.协作图能反映动作路径, 消息必须有顺序号; 顺序图没有.,组成元素,顺序图的

24、组成元素参与者(actor)或者 对象(object)生命线(lifeline)激活期(activation)/ 控制焦点(focus of control)消息(message)协作图的组成元素对象链消息,消息编号在交互图中可以选择显示消息编号。在顺序图中,消息可以按两种方式编号:Top-Level(顶级编号)方式,或者Hierarchical(嵌套编号)方式。在协作图中,消息只能采用顶级编号,但如果协作图是由顺序图转换而来,图中也可以使用嵌套编号。,顺序图与协作图的转换,1.从顺序图转换成协作图打开要转换的顺序图选择Browse-Create collaboration Diagram;或者直接按下F5键浏览协作图并调整图中模型元素的位置。2.从协作图转换成顺序图打开要转换的协作图选择Browse-Create sequence Diagram;或者直接按下F5键浏览顺序图并调整图中模型元素的位置。,作业,1、简述消息的5种类型。2、简述创建顺序图的步骤。3、分析顺序图与协作图的异同点。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号