版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
顺序图和协作图第一页,共七十四页,2022年,8月28日交互图概述交互图(interactiondiagram)是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档.交互图通常用于描述一个用例的行为,显示该用例中所涉及的对象及对象之间消息传递情况.交互图包括:顺序图(sequencediagram),描述对象按照时间顺序的消息交换;协作图(collaborationdiagram),描述系统成分如何协同工作.第二页,共七十四页,2022年,8月28日顺序图1.顺序图顺序图也称为时序图,它描述了系统中对象间通过消息进行的交互,它强调了消息在时间轴上的先后顺序。2.顺序图的作用顺序图常用来描述用例的实现,它表明了由哪些对象,通过消息相互协作来实现用例的功能,在顺序图中,标识了消息发生交互的先后顺序。第三页,共七十四页,2022年,8月28日赤壁之战的顺序图第四页,共七十四页,2022年,8月28日顺序图的组成元素参与者(actor)或者对象(object)生命线(lifeline)激活期(activation)/控制焦点(focusofcontrol)消息(message)第五页,共七十四页,2022年,8月28日时间维对象维对象/参与者生命线控制焦点消息第六页,共七十四页,2022年,8月28日参与者或对象参与者和对象按照从左到右的顺序排列;一般最多两个参与者,他们分列两端。启动这个用例的参与者往往排在最左边,接收消息的参与者则排在最右端;对象从左到右按照重要性排列或按照消息先后顺序排列;将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。第七页,共七十四页,2022年,8月28日第八页,共七十四页,2022年,8月28日对象的命名方式有三种:包括对象名和类名类名(匿名对象)对象名(不关心类)第九页,共七十四页,2022年,8月28日生命线(Lifeline)每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时间内的存在垂直的虚线如果对象生命期结束,则用注销符号表示消亡点第十页,共七十四页,2022年,8月28日激活期(activation)/控制焦点(focusofcontrol)对象在一段时间内获得了焦点,也称激活期对象执行某个动作的时期空心矩形条激活期的长短意味着对象执行某个动作的时间有多长,可以通过约束{10ms}来限制执行时间的长短。第十一页,共七十四页,2022年,8月28日顺序图中的消息面向对象方法中,消息是对象间交互信息的主要方式。结构化程序设计中,模块间传递信息的方式主要是过程(或函数)调用。对象A向对象B发送消息,可以简单地理解为对象A调用对象B的一个操作(operation)。第十二页,共七十四页,2022年,8月28日顺序图中,尽力保持消息的顺序是从左到右排列的。一个顺序图的消息流开始于左上方,消息2的位置比消息1低,这意味着消息2的顺序比消息1要迟。顺序图中消息编号可显示,也可不显示。第十三页,共七十四页,2022年,8月28日UML1.4后定义的消息有:调用消息procedurecall异步消息asynchronous返回消息returnUML1.3前的消息还有:简单消息simpleRose扩充的消息阻止消息balking超时消息time-out第十四页,共七十四页,2022年,8月28日调用消息:消息的发送者把控制传递给消息的接收者,等待接收者返回或放弃控制,可以表示同步。实心箭头符号调用消息必有一个与之配对的返回消息,但是可以不用画出.第十五页,共七十四页,2022年,8月28日异步消息:消息的发送者把控制传递给消息的接收者,然后继续自己的工作,不等待接收者返回或放弃控制.UML1.4及以后UML1.3及以前第十六页,共七十四页,2022年,8月28日返回消息(Return):表示消息的返回。消息上方放置返回值同步消息的返回可以画出(如果想明确表达返回值),也可以不画出,直接隐含。异步消息可以有返回,也可以没有。(可以响应异步消息,也可以不响应该异步消息。)虚线箭头表示,和依赖关系不要混淆第十七页,共七十四页,2022年,8月28日第十八页,共七十四页,2022年,8月28日阻止消息:消息的发送者传递消息给接收者,如果接收者无法立即接收,则发送者放弃该消息.超时消息:消息的发送者发出消息给接收者并按指定时间等待,若接收者无法在指定时间内接收,则发送者放弃该消息.第十九页,共七十四页,2022年,8月28日自调用(SelfCall)某对象自己调用自己的操作嵌套的矩形条第二十页,共七十四页,2022年,8月28日消息的语法格式[前置消息列表][警戒条件][消息顺序表达式][返回值:=]消息名称([参数列表])第二十一页,共七十四页,2022年,8月28日前置消息列表(predecessor)语法:消息序列号,消息序列号,.../前置消息列表是一个用来同步线程或路径(path)的表达式意思是在发送当前消息之前指定序列号的消息被处理(必须连续执行)消息序列号之间用逗号隔开,用斜杠结束例如1.1a,1.1b/1.2:continue(),在发送消息1.2之前必须已经同时发送并发消息给线程a和b第二十二页,共七十四页,2022年,8月28日警戒条件(guard-condition)语法:[条件短语]条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法例如,[x<0]4:invert(x,color)第二十三页,共七十四页,2022年,8月28日消息顺序表达式(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,等。这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系(当消息是异步消息时消息为嵌套的操作调用及返回)name表示并发控制线程,例如1.2a和1.2b为同时发送的并发消息第二十四页,共七十四页,2022年,8月28日消息编号:按消息产生的先后顺序,给消息编号,有两种编号方案,一种是顺序编号,另一种是嵌套编号.第二十五页,共七十四页,2022年,8月28日(1)顺序编号整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号(按照消息的先后顺序,从1开始对消息编号)来表示其顺序。(2)嵌套编号由于顺序图本身已经充分表现出消息执行的顺序,因此在UML模型中并没有要求对消息进行编号。只是要求在协作图中,对消息进行了编号。但在Rose等建模工具中,为了能够自动实现顺序图与协作图的转换,在顺序图中也默认采取嵌套编号方案。第二十六页,共七十四页,2022年,8月28日嵌套编号第二十七页,共七十四页,2022年,8月28日recurrence表示一个条件或循环的执行,有两种选择*[循环子句]循环子句(iteration-clause)用来指定一个循环(重复执行)例如:一个包括循环的消息
1.1*[x=1..10]:doSomething()[条件子句]
条件子句一般用来表示分支而不是用作警戒条件[x<0],是两个可以用来分支的条件子句,这两个条件只能有一个为真,因而只有一个分支被执行(即发送与分支有关的消息)条件子句和循环子句都可以用伪代码或真正的编程语言来表示消息顺序表达式用冒号结束第二十八页,共七十四页,2022年,8月28日返回值、消息名和参数表返回值表示一个操作调用(即一个消息)的结果第二十九页,共七十四页,2022年,8月28日消息的语法格式[前置消息列表][警戒条件][消息顺序表达式][返回值:=]消息名称([参数列表])第三十页,共七十四页,2022年,8月28日例:2:display()1.3.1:p:=find()[x<0]4:invert(x,color)3.1*[x=1..10]:update()1.1a,1.1b/1.2:continue()第三十一页,共七十四页,2022年,8月28日Rose中的消息第三十二页,共七十四页,2022年,8月28日第三十三页,共七十四页,2022年,8月28日
建立顺序图的步骤确定交互过程的上下文识别参与交互过程的对象为每个对象设置生命线从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息.如果需要嵌套或(和)表示消息发生的时间点,使用控制焦点.如果需要说明时间约束,则在消息旁边加上约束说明.如果需要,可以为每个消息设置前置条件和后置条件.第三十四页,共七十四页,2022年,8月28日下面以饮料自动销售系统为例,来学习怎样绘制顺序图.下面对“买饮料”的一种场景进行建模,绘制其对应的顺序图.买饮料的正常场景下面是买到饮料的一般事件流:(1)顾客从机器的前端钱币口投入钱币,然后选择想要的饮料;(2)钱币到达钱币记录仪,记录仪更新自己的存储;(3)记录仪通知分配器分发饮料到机器前端.第三十五页,共七十四页,2022年,8月28日边界类、控制类和实体类UML中三种主要的类版型边界类,boundaryclass控制类,controlclass实体类,entityclass引入多种类版型帮助分析和设计人员确定系统中的类.第三十六页,共七十四页,2022年,8月28日边界类边界类位于系统与外界的交界处,包括:用户界面类,如:窗口、对话框、报表类等通讯协议类,如:TCP/IP的类直接与外部设备交互的类直接与外部系统交互的类边界类的UML表示方法:第三十七页,共七十四页,2022年,8月28日边界类通过用例图可以确定需要的边界类,每个Actor/Usercase对至少需要一个边界类.边界类一般可以没有属性,只有操作.但并不是每个Actor/Usecase都需要生成惟一边界类,多个actor启动同一usecase可以使用同一边界类.第三十八页,共七十四页,2022年,8月28日实体类实体类保存要放进持久存储体(数据库/文件等)的信息.实体类通过事件流和交互图发现,采用目标领域术语命名.通常实体类对应数据库中的表,其属性对应表的字段,但实体类与数据库中的表不一定是一一对应关系.第三十九页,共七十四页,2022年,8月28日控制类控制类是负责管理或控制其他类工作的类.每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用.控制类较少接收消息,发出较多消息.第四十页,共七十四页,2022年,8月28日实例第四十一页,共七十四页,2022年,8月28日寻找分析类在分析阶段,我们常在用例中寻找三种分析类(边界类、控制类和实体类)。我们通过分析用例描述中的事件流,寻找分析类。1.用例“新增书籍”在分析时,还必须综合考虑基本事件流和扩展事件流两个方面。下面以“新增书籍“为例进行分析。其事件流如下所示:(1)基本事件流①图书管理员向系统发出“新增书籍信息”请求。②系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类。③图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号。④图书管理员输入书籍的相关信息,包括:书名、作者、出版社、ISBN号、开本、页数、定价、是否有CD-ROM。第四十二页,共七十四页,2022年,8月28日寻找分析类⑤系统确定输入的信息中书名没有重复。⑥系统将所输入的信息存储建档。(2)扩展事件流①如果输入的书名有重名现象,则显示出重名的书籍,并要求图书管理员选择修改书名或取消输入。②图书管理员选择取消输入,则结束用例,不做存储建档工作。③图书管理员选择修改书名后,转到5。第四十三页,共七十四页,2022年,8月28日寻找分析类2.寻找边界对象
对这个用例而言,参与者“图书管理员”,因此要寻找边界对象只需以“图书管理员”这个参与者为线索,从用例描述中去寻找分析类:(1)图书管理员向系统发出“新增书籍信息”请求-------图书管理员在什么地方向系统发出“新增书籍信息”的请求呢?通常会设计一个主窗口,并在上面摆放一些按钮来实现,因此在此句描述中间,可以发现两个边界类:主窗口、“新增书籍信息”按钮。(2)系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类------从此句中可以发现一个新的边界类:书籍类别列表框。第四十四页,共七十四页,2022年,8月28日(3)图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号--------此句中可以发现最为关键的一个边界类------“新书信息录入”窗口以及辅助的“提交”按钮。而且,还可以发现新增书籍信息按钮是组成主窗口的一部分。书籍类别列表框、提交按钮则是组成新书信息录入窗口的一部分。根据以上信息,可以先将参与者和边界对象绘制出来,其结果如图所示。第四十五页,共七十四页,2022年,8月28日寻找分析类参与者和边界对象第四十六页,共七十四页,2022年,8月28日3.寻找控制对象和实体对象
实体对象通常来源于领域中的类图,也就是描述业务领域的名词或名词短语,通过阅读整个事件流的详细描述,我们得知,实体对象有书籍、计算机书籍、非计算机书籍以及书籍列表4个。
在这个例子中,根据事件流中的步骤5,以及扩展事件流的描述,可以在上图上增加相应的控制对象,得到更进一步的分析图,如下图所示。第四十七页,共七十四页,2022年,8月28日寻找分析类对基本事件流步骤5分析后,添加控制对象第四十八页,共七十四页,2022年,8月28日另外,还有几个关键的事件没有体现到图中:一是基本事件流中的步骤2、3要求根据用户选择的类别自动获得书号;二是当书名重复性检查没有通过时(有重名),应返回要求其重输。第四十九页,共七十四页,2022年,8月28日构建交互图最后完整的分析图第五十页,共七十四页,2022年,8月28日构建交互图下面是构建顺序图的步骤: 首先,按照从左到右的顺序,依此将参与者、边界对象和实体对象放在最顶部,边界类放在左边,实体类放在右边。注意,在分析模型中可以先不考虑控制类的引用(当然有必要时也可以引入)。第五十一页,共七十四页,2022年,8月28日构建顺序图第五十二页,共七十四页,2022年,8月28日练习1、用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打印,否则把打印文件存储在打印队列中。第五十三页,共七十四页,2022年,8月28日2、网上书店用户需求书店店长:顾客能在网上书店订购图书,提交订单;工作人员能及时看到订单并进行处理,我们接受货到付款或者网银支付。工作人员甲:图书可以按照不同种类放置,图书的信息和种类也要网上书店设置和管理。工作人员乙:能进行促销管理。顾客甲:可以查看图书简介,查找图书,购买图书。顾客乙:结账前可自行管理选购的图书,可以查看以前的购买记录,也可以取消现有订单。顾客丙:实行会员制。平时可以在网上书店查查资料,只在购买图书的时候才使用会员身份。第五十四页,共七十四页,2022年,8月28日用例名称:管理员登录系统基本流:1)用户输入用户名和密码2)用户选择管理员类型3)用户点击“登录”按钮;4)系统验证用户权限;5)管理员进入管理界面;6)用例结束。备选流:3a)“用户名或密码错误”,系统出现用户名或密码错误的提示信息,回到基本流第一步,由用户重新输入;3b)“输入的用户名与类型不符”,系统出现提示信息,回到基本流第一步,由用户重新输入;3c)当用户点击取消按钮时,取消登录。第五十五页,共七十四页,2022年,8月28日协作图描述系统对象(或活动者)如何共同协作实现用例;强调的是参与交互的对象的组织;一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。第五十六页,共七十四页,2022年,8月28日对象object链link消息message协作图中的元素:第五十七页,共七十四页,2022年,8月28日对象协作图与顺序图中的对象的概念是一样的,只不过在协作图中,无法表示对象的创建和撤销,所以对于对象在图中的位置没有限制。第五十八页,共七十四页,2022年,8月28日多对象多对象是多个对象组成的集合,往往是同一个类的对象;如果消息同时发给多个对象,则用多对象表示;在顺序图中仍然显示为单对象一样的图标,rose中multipleinstance协作图中重叠的方框。第五十九页,共七十四页,2022年,8月28日活动对象/主动对象主动对象是一组属性和一组方法的封装体,其中至少有一个方法不需要接收消息就能主动执行(称为主动方法)主动对象是不需接收消息就可自动启动交互的对象除了含有主动方法外,主动对象和被动对象无区别UML标记Rose标记第六十页,共七十四页,2022年,8月28日链:表示对象之间的语义关系,链是关联的一个实例。协作图中链的符号和对象图中链所用的符号是一样的,即一条连接两个对象的实线。第六十一页,共七十四页,2022年,8月28日建立协作图的步骤确定交互过程的上下文识别参与交互过程的对象如果需要,为每个对象设置初始特性确定对象之间的链,及沿着链的消息从引发该交互过程的初始消息开始,将每个消息附到相应的链上如果需要表示消息嵌套,则有Dewey十进制表示.如果需要说明时间约束,则在消息旁边加上约束说明如果需要,可以为每个消息设置前置条件和后置条件第六十二页,共七十四页,2022年,8月28日建模分数记录系统的协作图。具体用例是Teacher查看学生成绩。第六十三页,共七十四页,2022年,8月28日2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来。第六十四页,共七十四页,2022年,8月28日1.确定协作图的元素第六十五页,共七十四页,2022年,8月28日2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来。第六十六页,共七十四页,2022年,8月28日2.确定元素之间的结构关系创建协作图的下一步是确定这些对象之间的连接关系,使用链与角色将这些对象连接起来。第六十七页,共七十四页,2022年,8月28日2.需求分析可以通过更加具体的描述来确定工作流程,基本工作流程如下:张老师希望通过系统查询某名学生的学科成绩。张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生系统平安建设活动方案(3篇)
- 质控小组职责模版(2篇)
- 施工人员管理制度(3篇)
- 二零二五年度建筑工程施工服务外包合同2篇
- 课题申报书:大语言模型驱动三语教学的能动性分析和应用路径研究
- 装饰图案课程设计理念
- 二零二五年度新能源设备技术出口服务协议3篇
- 2024年规范化劳务输出协议模板
- 材料员岗位的具体职责说明范文(2篇)
- 课题申报书:大学生数字化生存境况及优化路向研究
- 中东及非洲注塑成型模具行业现状及发展机遇分析2024-2030
- JGJ276-2012 建筑施工起重吊装安全技术规范 非正式版
- QCT1067.4-2023汽车电线束和电器设备用连接器第4部分:设备连接器(插座)的型式和尺寸
- VDA6.3-2023过程审核检查表
- 一年级数学下册平面图形数个数问题详解+练习
- 锦纶纤维研究报告-中国锦纶纤维行业竞争格局分析及发展前景研究报告2020-2023年
- 浙江省舟山市2023-2024学年高二上学期1月期末检测地理试题(解析版)
- 国家电网有限公司架空输电线路带电作业工作管理规定
- 计算机安全弱口令风险
- 《写字楼招商方案》课件
- 文旅剧本杀项目策划方案
评论
0/150
提交评论