内容第7章交互图_第1页
内容第7章交互图_第2页
内容第7章交互图_第3页
内容第7章交互图_第4页
内容第7章交互图_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、交互图知识图谱Agenda交互与交互图如何阅读交互图如何绘制交互图交互图应用说明定时图本章小结Agenda交互与交互图如何阅读交互图如何绘制交互图交互图应用说明定时图本章小结交互的概念一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为 描述系统中,对象之间通过消息进行通讯的图就是交互图。交互图包含4种类型,它们是顺序图、通讯图、定时图、交互概述图。UML中的4种交互图顺序图:顺序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的可视化轨迹 通信图:UML 2.0中的通信图实际上就是UML 1中的协作图,它强调的是参加交互的对象的

2、组织,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹 定时图:采用了一种带数字刻度的时间轴来精确地描述消息的顺序交互概述图:是交互图和活动图的混合物 UML提供的交互机制通常为两种情况进行建模:为系统的动态方面进行建模为系统的控制过程进行建模 顺序图在项目开发里的作用顺序图作为一种描述在给定语境中消息是如何在对象间传递的图形化方式,在使用其进行建模时,主要可以将其用途分为以下三个方面: (1)确认和丰富一个使用语境的逻辑表达。一个系统的使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。 (2)细化用

3、例的表达。我们前面已经提到,序列图的主要用途之一,就是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。 (3)有效地描述如何分配各个类的职责以及各类具有相应职责的原因。我们可以根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。例如,“Customer对象向Address对象请求其街道名称”指出Customer对象应该具有“知道其街道名”这个职责。Agenda交互与交互图如何阅读交互图如何绘制交互图交互图应用说明定时图本章小结阅读顺序图从订单生成送货单顺序图的主要元素对象与角色:最顶上一排矩形框。在交互图中,参与交互的对象

4、既可以是具体的事物,又可以是原型化的事物。作为具体的事物,一个对象代表现实世界中的某个东西。例如,aOrder作为类Order的一个实例,可以代表一个特定的订单;而如果作为一个原型化的事件,则aOrder可以代表类Order的任何一个实例。生命线与控制焦点:每个对象都有自己的生命线,对象生命线是一条垂直的虚线,用来表示一个对象在一段时间内存在。消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。当传送一个消息时,它所引起的动用是一个通过对计算过程的抽象而得到的可执行语句。消息分为五种:调用、返回、发送、创建和销毁调用:表示调用某个对象一个操作 顺序图的主要元素71 顺序图(

5、2)返回(return)。表示被调用的对象向调用者返回一个值。在UML的交互图中,将采用如虚线箭头线来表示,在箭头线上应标明返回值。(3)发送(Send)。是指向对象发送一个信号。信号和调用不同,它是一种事件,用来表示各对象间进行通信的异步激发机制。调用是同步的机制,而信号是一种异步的机制。也就是说:当我们说对象A调用对象B时,A发送完消息之后是会等B执行完所调用的方法之后再继续执行;如果说对象A发送了一个信号给对象B,那么A在发送完信号之后,A就会继续执行自己的操作,不会等待B的执行。(4)创建(Create)和销毁(Destroy)。也就是创建和销毁一个对象。创建对象通常是利用构造方法来实

6、现的,对象一创建,生命线就开始;生命终止符号用一个较大的叉形符号表示。顺序图的主要元素顺序编号:整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。除了顺序编号之外,还可以采用嵌套方案:顺序图的主要元素循环与分支读图小结在dispatchForm(分发窗体)中,对于某个已支付的Order进行分发时,就会调用该订单(一个Order类的实例对象aOrder)的dispatch()方法dispatch()方法将逐个调用该Order对应的所有OrderItem对象的getPeddleryId()方法还获取供应商ID(PeddleryId),而Ord

7、erItem对象则是通过其所对应的Product对象来的getPeddleryId()方法来获取供应商ID读图小结当Order的实例对象aOrder得到返回的PeddleryId后,根据该值判断是否已经有相对应的DeliverOrder对象,如果没有就创建它(调用create(PeddleryId)),然后再将对应的Product添加到这个DeliverOrder对象中。否则就直接添加到相应的DeliverOrder对象中交互片断操作符assert交互片断操作符assert是用来表示内容所描述的行为是执行过程中那个时刻唯一的有效行为。如果执行到这个片断的前面,则说明该片断就一定会发生。它通常和

8、ignore或consider一起使用,以断言某种特定种类的消息行为 交互片断操作符break交互片断操作符break和循环语句的break有点类似,通常break用来定义一个含有监护条件的子片断。如果监护条件为“真”则执行子片断,而且不执行包含子片断的图中其它交互;如果监护条件为“假”,那么执行将正常地继续进行 交互片断操作符critical 表示该子片断是“临界区域”,在临界区域中生命线上的事件序列不能够和其它区域中的任何其他事件交错。通常用来表示一个原子性的连续操作,例如事务性操作 交互片断操作符par用来表示“并行”的,也就是用来表示两个或多个并发执行的子片断,并行子片断中单个元素的执

9、行次序可以以任何可能的顺序相互操作 交互片断操作符ref在一个交互图中,我们可以引用其它的交互图,其表示的方法是用一个矩形,加上ref操作符,并写明引用的交互图名称即可 图表示法图表示法类图class对象图object包图package用例图use case顺序图sd通信图comm定时图timing活动图activity交互概观图intover状态机图statemachine构件图component部署图deployment通信图的作用通信图常用来描述业务或软件系统中,每个对象在交互发生时承担的角色,即强调了交互发生时,每个对象承担的职责。使用通信图可以显示对象相互协作时充当的角色。如果需要强

10、调时间和序列,最好选择顺序图建模;如果需要强调上下文相关,最好选择通信图建模。通信图用于显示对象之间如何进行交互,以实现特定用例或用例中特定部分的行为。设计员使用通信图和顺序图确定并阐明对象的角色,这些对象执行用例的特定事件流。这些图提供的信息主要用来确定类的职责和接口。通信图的表示UML中,表示一个通信图,主要是标识系统中的对象、对象间交互的消息、对象间的链。如下图所示,是系统管理员添加书籍的通信图。第一个消息(Additem()表示,管理员要求维护窗口添加书籍;第二个消息(find(String)表示,维护窗口要求:Title对象根据书名获得书的目录;第三个消息(update()表示修改书

11、目下书的数量。阅读通信图通信图主要元素链:连接器,是用来表示对象之间的语义连接,一般而言,链是关联的一个实例(包括association、self、global、local等)。不过在UML 2中已经开始弱化它们的使用,因此除非必要,无需过多地考虑它们消息编号:消息的编号有两种,一种是无层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含关系迭代标记:用*号表示,表示循环,通常还有迭代表达式,用来说明循环规则迭代表达式语义i:=1.n迭代n次i:=1.8迭代8次while (布尔表达式)当布尔表达式的值为true时,执行迭代until (布尔表达式)迭代到布尔表达式的值为true时

12、为止for each (计算结果为对象集合的表达式)在对象集合上迭代(适用于集合对象,如NET中的数据集)通信图主要元素监护条件:通常是用来表示分支的,也就是表示“如果条件为true,才发送消息” 在通信图中使用监护条件一定要有所限制,通常应只列出主要的监护条件,否则会影响其阅读。如果需要,尽可能还是通过顺序图来表示 监护表达式及消息 说明s&c 1.3: register(s)当s和c都不是空对象时,才执行register方法(!s)&c1:studentNotFound如果s是空对象,则说明没有找到指定学生,返回“未找到学生”s&(!c)1:courseNotFound如果c是空对象,则说

13、明没有找到指定课程,返回“未找到课程”(!s)&(!c)1:allNotFound如果s和c都是空对象,说明都没有找到,返回“所有的都未找到”s&c1:OK如果s和c都不是空对象,则返回“注册成功”Agenda交互与交互图如何阅读交互图如何绘制交互图交互图应用说明定时图本章小结准备工作首先根据自己的喜好和实际的表现需要来选择顺序图或通信图。不过由于它们在语义上是等价的,因此可以绘制出一种,再通过建模工具来自动转换成另一种图 分析模型中的交互图彻重于分析类的职责分配和交互流程,而设计模型中的交互图则彻重于设计类的引入和实际方法的调用与流程控制 先确定参与交互的对象、对象之间的关系(通信图),然后

14、确定对象间的消息交互流程(用同步调用、异步消息、返回消息表示),并利用交互片断(顺序图)或迭代标记及监护条件来表示循环和分支结构鲁棒分析Robustness分析不是UML模型的一部分,它是一个强大的草图工具,是介于分析和设计之间的一种有效工具在Robustness分析中,将应用边界类、控制类和实体类从一个用例中抽取三类对象的方法: 鲁棒分析从事件流开始鲁棒分析寻找边界对象图书管理员向系统发出“新增书籍信息”请求主窗口、“新增书籍信息”按钮系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类书籍类别列表框。图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号

15、“新书信息录入”窗口及辅助的“提交”按钮鲁棒分析寻找控制对象和实体对象根据事件流中的步骤5,以及扩展路径的描述,就可以在原图上增加相应的控制对象,得到更进一步的Robustness分析图 鲁棒分析寻找控制对象和实体对象新添两个逻辑:一是基本事件流中的步骤2、3要求根据用户选择的类别,自动获得书号;二是当书名重复性检查没有通过(有重名),则应返回要求其重输 构建交互模型转换成通信图绘制顺序图下面以饮料自动销售系统为例,看我们是怎样绘制顺序图的下面对“买饮料”的种场景进行建模,对每一个场景,我们绘制其对应的顺序图()买饮料的正常场景下面是买到饮料的一般事件流:、顾客从机器的前端钱币口投入钱币,然后

16、选择想要的饮料;、钱币到达钱币记录仪,记录仪更新自己的存储;、记录仪通知分配器分发饮料到机器前端;下面是买到饮料的场景对应的顺序图,如图所示(2). 饮料“已售完”的场景(3). 机器没有合适的零钱顾客买饮料时,机器没有合适的零钱“找不开”的场景(4). 带有临时对象的顺序图该顺序图表示了发送消息2后,创建一个临时对象c, 其生命线的尾部的叉号,表示销毁对象c.顺序图中的项目相关概念-Rose1. 创建与销毁对象创建一个对象指的是发送者发送一个实例化消息后实例化对象的结果。销毁对象指的是将对象销毁并回收其拥有的资源,它通常是一个明确的动作,也可以是其它动作、约束或垃圾回收机制的结果。在顺序图中

17、,创建对象操作的执行使用消息的箭头表示,箭头指向被创建对象的框。在顺序图中,对象被销毁是使用在对象的生命线上画大表示,在销毁新创建的对象,或者序列图中的任何其他对象时,都可以使用。它的位置是在导致对象被销毁的信息上,或者在对象自我终结的地方。顺序图中的项目相关概念2. 分支与从属流在UML中,存在两种方式可以来修改顺序图中消息的控制流,分别是:分支和从属流。分支是指的是从同一点发出多个消息的并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。由于顺序图只表示某一个活动按照时间顺序的经历过程,所以在Rational Rose 2003中,对顺序图的分支画法没有明显的支持。 从属流指的是

18、从同一点发出多个消息指向同一个对象的不同生命线。Rational Rose 2003中不支持,因为添加从属流以后会明显增加顺序图的复杂度。 使用Rose创建序列图1. 创建对象创建一个新的顺序图,可以通过以下方式进行。 ()右键单击浏览器中的Use Case View(用例视图)、Logical View(逻辑视图)或者位于这两种视图下的包。 ()在弹出的菜单中,选中“New”(新建)下的“Sequence Diagram”选项。 ()输入新的顺序图名称。 ()双击打开浏览器中的顺序图。使用Rose创建序列图2. 创建生命线当对象被创建后,生命线便存在。当对象被激活后,生命线的一部分虚线变成细

19、长的矩形框。在Rational Rose 2003中,是否将虚线变成矩形框是可选的,我们可以通过菜单栏设置是否显示对象生命线被激活时的矩形框。设置是否显示对象生命线被激活的矩形框步骤为:在菜单栏中选择“Tools”(工具)下的“Options”(选项)选项,在弹出的对话框中选择“Diagram”(图)选项卡,选择或取消“Focus of control”选项。使用Rose创建顺序图3. 创建消息在顺序图中添加对象与对象之间的简单消息的步骤如下: (1)选择顺序图的图形编辑工具栏中的图标,或者选择菜单栏“Tools”(工具)中“Create”(新建)下的“Object Message”选项,此时

20、的光标变为“”符号。 (2)单击需要发送消息的对象。 (3)将消息的线段拖动到接收消息的对象中。 (4)在线段中输入消息的文本内容。 (5)双击消息的线段,弹出设置消息规范的对话框,在弹出的对话框中,在“General”选项卡中可以设置消息的名称等,消息的名称也可以是消息接收对象的一个执行操作,我们在名称的下列菜单中选择一个或重新创建一个即可,我们称之为消息的绑定操作。 (6)如果需要设置消息的同步信息,也就是说设置消息成为简单消息、同步消息、异步消息、返回消息、过程调用、阻止消息和超时消息等,可以在“Detail”选项卡中进行设置,还可以设置以消息的频率。使用Rose创建序列图4. 创建对象

21、与销毁对象由于创建对象操作也是消息的一种,我们仍然可以通过发送消息的方式创建对象。在图形表示中,和其它对象不一样的是,其它对象通常位于图的顶部,被创建的对象通常位于图的中间部位。使用Rose创建序列图销毁对象表示对象生命线的结束,在对象生命线中使用一个“X”来进行标识。给对象生命线中添加销毁标记的步骤如下: (1)在序列图的图形编辑工具栏中选择 按钮,此时的光标变为“+”符号。 (2)单击欲销毁对象的生命线,此时该标记在对象生命线中标识。该对象生命线自销毁标记以下的部分消失。使用Rose创建序列图案例分析1. 需求分析我们可以通过更加具体的描述来确定工作流程,基本工作流程如下: (1)李老师希

22、望通过系统查询某名学生的学科成绩。 (2)李老师通过用户界面录入学生的学号以及学科科目请求学生信息。 (3)用户界面根据学生的学号向数据库访问层请求学生信息。 (4)数据库访问层根据学生的学号加载学生信息。 (5)数据库访问层根据学生信息和学科科目获取该名学生的分数信息。 (6)数据库访问层将学生信息和分数信息提供给用户界面。 (7)用户界面将学生信息和分数信息显示出来。使用Rose创建顺序图案例分析2. 确定对象建模顺序图的下一步是从左到右布置在该工作流程中所有的参与者和对象,同时也包含要添加消息的对象生命线。 使用Rose创建顺序图案例分析3. 创建顺序图Agenda交互与交互图如何阅读交

23、互图如何绘制交互图交互图应用说明定时图本章小结交互模型的类型与演变只有在所有的用例为所有事件进程建立了交互模型之后,才可以确定已经发现系统所需的每个对象所扮演的角色,以及它们的责任。分析阶段的交互模型工作方法:针对用例图中的每个用例,并结合领域模型中的类,寻找分析类,并通过Robustness分析来理清业务逻辑流程,再用交互模型将其确定下来 注意:主要关注于区分出边界对象、实体对象和控制对象,暂时不要考虑其具体的实现类 说明:对于较复杂的用例,可以按上述的流程逐渐地进行分析、设计、实施;但对于比较简单的用例而言,也是可以直接从用例描述中导出设计阶段交互模型 分析阶段的交互模型之后:引入基础类、

24、质量评审、优化引入基础类:包括基础框架、程序库等(1)如果需要进行数据库操作时,将可能使用ODBC、JDBC、ADO、BDE等数据库访问引擎的一种(2)如果需要分布式处理,则可能要从 、CORBA、EJB、WEB SERVICEs中选择一种合适的技术(3)当需要进行网络操作时,可以从MFC中选择一个Socket的实现,也可能是从SUN提供的网络包中选择相应的类(4)当需要进行用户界面设计时,可能使用MFC中提供的相关类,也可能使用JAVA中的AWT或Swing包来实现。需要将这些包中将要使用的类引入,然后从中派生应用系统所需要的类。质量评审:- 低耦合:耦合性是指两个类之间的连接强度- 高内聚

25、:内聚性是指一个类的属性与方法高度集成- 效率:解决方案的执行效率是否满足系统的需求- 完整性:是指在任何环境下都可以重复使用- 简单性:类越简单,出错的可能性越小,系统的灵活性和可维护性也越好 优化类设计:设计模式与重构设计阶段的交互模型 & 交互建模要点在分析模型的基础上引入基础类、优化类设计之后,必然会获得新的类模型(设计模型),因此就可能需要基于新引入的“设计类”来更新交互模型,以获得与实际代码相吻合的模型给出一个能表达其目的的名称;通过修改元素的布局,尽量避免交叉线的存在;可以通过注解和颜色作为可视化提示,以突出图形中的重要特性;尽量少用分支,对于分支很多的场景,可以考虑用活动图来补充 Agenda交互与交互图如何阅读交互图如何绘制交互图交互图应用说明定时图本章小结定时图与顺序图的区别坐标轴交换了位置,改为从左到右来表示时间的推移用生命线的“凹下凸起”来表示状态的变化,每个水平位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论