时序图-协作图-详解
- 格式:doc
- 大小:1.02 MB
- 文档页数:21
动态图概念:从静态图中抽取瞬间值的变化描述系统随时间变化的行为,动态图包括交互图活动图状态图,这篇博客研究交互图包括时序图和协作图;-- 时序图:显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互;--协作图:描述对象之间的交互关系;~一.时序图(Sequenee Diagram)1. 时序图的概念时序图定义:描述了对象之间传递消息的时间顺序,用来表示用例中的行为顺序,是强调消息时间顺序的交互图;时序图描述的事物:时序图描述系统中类和类之间的交互,将这些交互建模成消息交换,时序图描述了类以及类之间的交换以完成的期望行为的消息,时序图中每条消息都代表了类的一个操作或者引起状态机改变的触发事件;时序图表示:参与交互的对象在时序图顶端水平排列,每个对象的底端绘制了一条垂直虚线,对象A像对象B发送消息,用一条带箭头的实线表示,该实线起始于对象A底部的虚线,终止于对象B底部的虚线;实线箭头水平放置,越靠近顶端越早被发送时序图轨迹:时序图提供了随时间推移的,清晰的可视化的轨迹;2. 时序图组成时序图组成:时序图包括四个元素对象(Object),生命线(Lifeline) ,激活(Activation) ,消息(Message)(1)对象(Object)对象:时序图中的对象在交互中扮演的角色就是对象;对象的符号:时序图中的对象与对象图中的表示方法一样,使用矩形将对象名称包含起来,并且对象名称下有下划线对象创建时机:对象可以在交互开始的时候创建,也可以在交互过程中进行创建;--处于顶部:如果对象的位置在时序图顶部,说明在交互开始的时候对象就已经存在了;--不在顶部:如果对象的位置不在顶部,那么对象在交互过程中创建的;(2)生命线(Lifeli ne)生命线:生命线是一条垂直的虚线,这条虚线表示对象的存在,在时序图中,每个对象的底部都有生命线生命线作用:生命线是一个时间线,从时序图顶部一直到底部都存在,其长度取决于交互的时间;对象的生命线:对象与生命线结合在一起就是对象的生命线,这个概念包含对象图标以及对象下面的生命线图标如上图;⑶激活(Activati on)LilIii激活(Activation) :代表时序图中对象执行一项操作的时期,激活期可以理解为语义中{}中的内容,表示该对象被占用以完成某个任务去激活(Deactivation) :指对象处于空闲状态,在等待消息激活这个对象;激活的表示:当对象处于激活时期,生命线可以拓宽为矩形,这个矩形条成为激活条;激活去激活的时机:--激活:对象激活是在激活条的顶部激活;--去激活:激活条的底部去激活,通常发生在一个消息离开对象生命线;⑷消息消息概念:定义交互和协作中交换信息的类,对对象之间的通信内容建模;消息动作:--动作种类:消息允许在实体间传递信息(传递参数),允许实体请求其它服务,对象之间通过发送和接收消息进行通信;--产生结果:消息可以触发操作,唤起信号,或使目标对象创建或销毁;消息的异步和同步通信:--异步通信:消息是信号的时候,发送信号之后,等待对方触发相应方法,这是明确的命名的对象间的异步通信;--同步通信:直接调用对象的方法,执行方法返回结果,这种具有返回控制机制的操作是同步通信;时序图和协作图中消息的区别:时序图中的消息强调顺序,协作图中的消息强调交换消息的对象间的关系;消息类型:两个对象间绘制消息3. 时序图示例示例简介:--使用场景:汽车租赁公司;-- 使用的对象:Customer ( 客户),Worker ( 工作人员),Order ( 请求),Record ( 记录),Car ( 汽车); --工作流程:①客户 向工人 提出租车要求,②工人 检查 请求,③客户 付款,④工人 填写 记录,⑤工人 取车;时序图:4.对象的创建和撤销对象位置:--顶部:时序图中对象的默认位置是在时序图顶部,这表明对象在交互开始之间就已经存在 --中间:如果对象在时序图中间部分,说明对象时在交互过程中创建的; 交互过程中创建对象的方法:--消息指向对象:消息是构造方法,箭头指向对象所代表的的矩形;过程调用中返回的消息E)两个对象之间的过程调用两个对象之间的异步消息绘制反身消息d!:□3 ok.. ...... ->I ... .....U .....5 wrrteReGQird()6 gfllCenf)CUSM men Gustomer--消息指向激活条:消息是构造方法,箭头指向对象下面的激活条撤销对象:如果想要在时序图中撤销一个对象,因为如果同时有几个对象,如果不进行特殊操作其生命周期将会一样长--效果图:下图中将Customer 和Order对象撤消了,因为它们基本没有参与后期的交互口njgr 砒record Record[]~ru■: 2 chackO,― __________-> 1 i: a■•'il J'n •>a »■a aii 11a Ha *!tl "a *■a »J "3: nkA\*y[)u 5 writeRacorci:]X■;£ g机盹* :• ■iu1 日(hew: OrdBr(J5.时序图建模技术时序图使用时机:对动态行为建模,强调时间展开信息的次序的时候,使用时序图;时序图管理策略单一控制流:一个单独的时序图只能显示一个控制流--多个时序图:完整的控制流很复杂,可以绘制多个时序图,一个主干时序图,多个分支时序图,使用包对这些时序图进行管理 时序图建模策略:--设置交互语境:交互所在的环境,包括哪些对象,属于什么系统,子系统,相关的操作类用例等; --对象排列顺序:根据对象重要性,从左到右排列在时序图中;--对象生命线:对象通常存在于交互的整个过程,也可以在交互过程中被创建和撤销;--消息排列:引发交互信息之后,消息按照时间顺序从上向下画出,先发出的消息 在后发出的消息上面; --激活期设置:可以将实际操作发生的时间点 消息 明确的显示出来;--时间空间约束:每个消息都可以附加合适的时间 和空间约束;--前置后置条件:每条消息可以附加前置 或 后置 条件;(1) 创建时序图新建时序图:在 视图浏览器 中 右键点击 Logical View (逻辑视图),选择New (新建)-> Sequence Diagram (6. Ratio nal Rose时序图操作时序图);添加对象:时序图中有两种对象,一种是参与者Actor, 一种是普通的对象;--参与者对象:在类图中创建一个对象,将其Stereotype 修改为Actor, 就变成了参与者,然后在视图浏览器中将这个元素拖到时序图中即可;(luiiti tied)三 口 Use Cast Vi 關Main 三AsEociati&ns竝血J B帼 $¥.*■rj艮發 UnitsAs 5 0 亡IMIEI帼 HerD i agr SJB 3 Component View €Jl Main Il^ploymeJit Vi &w Modal FropsrtiesCl BS EClass ytility tfse Case [nt trftce :F&cktg«CI BSS Ci agrw Use Case Dxa ■耳raai Ih 电虽Ssq.uftnc« Di Mchart Vi agramActivi t^- DiagramFilfeBL(2)添加对象鞍务人员设置对象属性:双击对象,在弹岀的General 对话框中修改对象属性--Name :对象名称,不输入也可以; --Document : 描述对象的文档;載务人员-- 普通对象 直接在时序图中点击按钮,在界面中创建对象--两种对象效果 学位管理nu ....null:对象保存在数据库或其它形式的永久存储体中 对象保存在内存中知道程序终止; :短时间内保存在内存中;⑶添加消息消息作用:消息用两个对象生命线之间的箭头表示,一个对象可以通过消息请求另一个对象执行某个操作 增加消息:--发送消息:将从发送消息对象的生命线拖到接收消息对象的生命线上;-- 显示取消编号和激活条:菜单栏Tools -> Options -> Diagram 选项卡,Sequence numbering 是消消息编号 of control 显示激活条;设置对象持续性--持续(Persistent) --静态(Static) --临时仃 ransient)Focus协作图(Collaboration Diagram)1. 协作图概念协作图:协作图是一种类图,包含类元角色和关联角色,不仅仅是类元和关联;--强调:强调参与交互的各个对象的结构信息和组织;协作图建模对象:对有交互的对象和这些对象之间的关系建模,不参与交互的对象及它们的关系忽略协作图内容:协作图中表现了类操作中用到的参数,布局变量,操作中的永久链;对象图扩展:协作图可以看做对象图的扩展,该图展示了对象之间的关联,显示岀了对象间的消息传递2. 协作图内容(1) 对象(Object)对象:代表协作图交互中的主体,和时序图中对象的概念类似;协作图和时序图中对象区别:协作图中对象无法创建和撤销,因此对象在协作图的位置没有限制(2) 链(Link)链的表示:链的符号和对象图中链所用的符号是一样的,用来连接两个类角色的实线;/)-- :创建对象之间的通信路径;-- :显示对象可以调用自己的属性;在两个对象之间或一个对象本身增加消息在两个对象之间或一个对象本身从反方向增加消息-- :显示两个对象之间的信息流;-- :在反方向显示两个对象之间的信息流;路径构造性:对象之间的连接可以由链末尾附加的路径构造型表示--添加方式:双击链,选择visibility 属性即可;⑶消息(Message)消息概念:对象间通过链接发送的就是消息;--消息传递方向:对象之间的箭头表明对象间交换的消息流,一个对象发出消息,链指向的对象接收消息,链用于实现消息传输--消息标识:消息流标有消息的序列号和对象间发送的消息名称;--消息结果:每条消息否会触发接收对象的一系列操作;消息序号:协作图与时序图中的消息类型是一样的,为了表明消息顺序,需要为消息添加序号;3. 协作图示例示例简介:汽车租赁流程;-- 涉及到的对象:Customer (客户),Order (订单),Worker (工人),Record (记录),Car (汽车);--流程简介:客户写好订单,工人核对订单,核对后订单存在,允许客户取车,工人填写记录,并将车取岀;114. 协作图建模策略协作图使用场景:对系统动态行为建模,按组织对控制流建模使用协作图;协作图管理策略:--单个协作图:单个协作图只能显示一个控制流;--多个协作图:描述复杂系统的时候,需要许多协作图共同描述,一些图是主干协作图,还有许多分支路径的控制流的协作图,使用包管理这些协作图;协作图的建模策略:--设置语境:设置协作图所在的环境,如系统,子系统,类,操作,用例或用例脚本;--对象顶点:识别对象在协作图中扮演的角色,协作图中,对象是图的顶点;--变化修改:每个对象最初都会设置初始值,如果期间对象发生了变化,修改的方式是:协作图中放置一个复制对象,更新复制对象,同过后造型become copy 连接二者;--确定链接顺序:先确定关联链接,哪些对象相互链接;在确定消息链接,路径构造型等表示对象间如何连接;--消息顺序:从引起交互的消息开始编号,将编号信息和描述信息附到链接上,描述了对象之间的传递次序;--时间空间约束:可以为每个消息附加时间和空间上的约束;--前置后置条件:可以为每个消息附加前置和后置条件;5. Rati onal Rose 绘制协作图13(1)创建协作图创建流程:视图浏览器-> Logical View ( 逻辑视图)-> New ( 新建)-> Collaboration Diagram (协作图);链)Cunt i tied ) E Cl Use Case Vi ew 里 Main 玄 Asscci at i ons o Ma: Cor IS 固 Niodal Froparti es ClassClass Utility Use Cas€InterfaceFackAg®Class Di agram ; Sequence Diagram Statfrchar t Di agr un Activi tjr Diagram Die URL(2) 添加对象协作图中添加对象:与时序图基本类似; --添加参与者对象:在类图中创建好类,然后将类型设置为Actor, 然后在视图浏览器中将 Actor拖到协作图中--添加普通对象:直接点击工具栏中的图标设置即可 ; ⑶添加消息添加对象间消息:在两个对象之间添加消息--添加消息:使用在通信路径上添加消息--设置消息名称:双击消息箭头,可以在弹岀的对话框中修改消息名称(4) 添加数据流数据流概念:数据流是一个对象向另一个对象发送消息返回的消息;--使用场景:没必要在每个消息上都加上数据流,只要在中药消息上附加数据流即可;I Q Q数据流添加方法:选择或按钮,单击要返回的数据消息,数据流箭头就会被添加到这个消息上-- 建立通信路径使用/I连接两个对象,建立两个对象间的通信路径添加反身消息:选择象添加消息;QI点击对象,就会岀现指向对象本身的路径可以为该对选择点击这个指向本身的路径6.时序图与协作图转换各自侧重点:时序图和协作图是等价的,可以任意转换,而不丢失信息--时序图:描述交互过程中的时间顺序,没有明确表达对象间关系;--协作图:描述了对象间的关系,但是时间顺序必须从消息的序号中获取转换示例--场景介绍:学生毕业管理--对象介绍:教务人员,学位评价,成绩管理,奖惩管理,信息打印;--控制流介绍:①教务人员输入学号进入学位评价模块,②学位评价模块会向成绩管理模块查询成绩,③向奖惩管理模块询奖惩记录,④学位评价模块会将结果打印到信息打印模块,⑤信息打印模块将结果返回给教务人员;时序图151学号协作图学位萱理nu::成绩管理2学号---------- >奖焦官理nu::3成绩6结果信息打印17信息打学位管印w ------ 理6■结果7.时序图和协作图对比时序图和协作图 共同点:都是有 消息和类角色组成 接口方法由消息发送对象触发 --支持消息:时序图和协作图都支持消息时序图和协作不同点--衡量工具 时序图和协作图可以作为衡量系统耦合性的工具耦合性就是系统中模型之间的依赖性两个模型之间的依赖关系通过查看两个模型之间的消息数量和类型就可以看岀,消息交互少的耦合性高;--规定责任 时序图和协作图 都规定了消息发送对象 和消息接收对象 的责任,每个接收对象都有消息对应的接口这个--对象创建撤销侧重点:时序图侧重描述对象的创建和撤销,新创建的对象放在对象生命线上对应的时间点,撤销的对象在结束的地方放一个X表示该对象不能再继续使用;协作图中创建撤销的概念不存在,对象时始终存在的,只能通过消息描述或约束来说明对象的创建和撤销;--链接侧重点:时序图中的链没有表示岀来,可以随意绘制消息,有些逻辑交互可能不会发生;协作图的消息是映射在链上的,消息和链平行放置,如果想要通过消息查看对象之间的关联使用协作图最好;--激活和去激活:时序图表现有激活和去激活,协作图上没有时间概念的描述,无法清晰地表示对象的激活和去激活;实例-图书管理系统1. 管理员为图书添加类别控制流说明:-- 涉及到的对象:Admin (管理员),BooklnfoWindow (图书信息窗口),Tittle (图书类别),Item (图书条目);--流程:管理员查询图书信息窗口,查看有没有相应的图书类别,如果有插入该图书条目;时序图:192. 管理员删除图书协作图BooktafaVViidoTittleVVnu::nu ........ .1添加图书2查询粪别 3类别有在 < .控制流说明:-- 涉及到的对象:Admin (管理员),BooklnfoWindow (图书信息窗口), Tittle (图书类别),ltem(图书条目); --控制流程:管理员登陆图书信息窗口删除图书,查表图书类别是否存在,查找图书是否存在,如果都返回true, 删除图书条目;时序图:Admin菅理员Be oh Info'//in dowTjttb协作图:AdminWJf 员3. 管理员借书时序图nu';nu. ................................... 1刪除團书 ------------ >nu2查找圈书类别丨 -------------------------------- ---- -------------- --- ------------------------3存在< ................ 4查找由书条目I~~i~■5存在< --------------- -:---- G删除歯书衆目nu……r 1睛除图毛Booklnfo ItemWindow控制流说明:21-- 参与的对象:Admin ( 管理员),BooklnfoWindow (图书信息窗口 ), Tittle ( 图书类别),Borrower ( 借阅者),Loan(借书记录),item ( 图书条目); --流程:管理员登陆图书信息窗口,查询图书类别是否存在,查询图书条目是否存在,查询借阅者是否存在,创建借书 记录; 时序图:3存在 < -----------5存在7有在3创建倍阅记录:协作图 Booklnfo'A'indcTit" BorrowerLoan□ □ 0 t □1借书请或 2査询娄别------------ - -----------。
时序图、活动图、状态图、协作图的区别时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件.在 UML 中, 时序图表示为一个二维的关系图, 其中, 纵轴是时间轴, 时间延竖线向下延伸. 横轴代表在协作中各个独立的对象. 当对象存在时, 生命线用一条虚线表示, 消息用从一个对象的生命线到另一个对象的生命线的箭头表示. 箭头以时间的顺序在图中上下排列.ATM 用户成功登陆的时序图时序图中的基本概念对象: 时序图中对象使用矩形表示, 并且对象名称下有下划线. 将对象置于时序图的顶部说明在交互开始时对象就已经存在了. 如果对象的位置不在顶部, 表示对象是在交互的过程中被创建的.生命线: 生命线是一条垂直的虚线. 表示时序图中的对象在一段生命周期内存在. 每个对象底部中心的位置都带有生命线.消息: 两个对象之间的单路通信. 从发送方指向接收方. 在时序图中很少使用返回消息.激活: 时序图可以描述对象的激活和钝化. 激活表示该对象被占用以完成某个任务. 钝化指对象处于空闲状态, 等待消息. 在 UML 中, 对象激活时将对象的生命线拓宽为矩形来表示的. 矩形称为计划条或控制期. 对象就是在激活条的顶部被激活的. 对象在完成自己的工作后被钝化.对象的创建和销毁: 在时序图中, 对象的默认位置是在图的顶部. 这说明对象在交互开始之前就已经存在了. 如果对象是在交互过程中创建的, 那么就应该将对象放到中间部分. 如果要撤销一个对象, 在其生命线终止点处放置 “ X” 符号.练习:孙中山的……活动图在 UML 中, 活动图本质上就是流程图. 它用于描述系统的活动, 判定点和分支等.活动图中的基本概念动作状态: 原子的, 不可中断的动作, 并在此动作完成之后向另一个动作转变. 在 UML 中动作状态用圆角矩形 表示, 动作状态所表示的动作写在圆角矩形内部.分支与合并: 分支在软件系统中很常见. 一般用于表示对象类所具有的条件行为. 用一个布尔型表达式的真假来判定动作的流向. 条件行为用分支和合并表达.在活动图中, 分支用空心小菱形 表示. 分支包括一个入转换和两个带条件的出转换, 出转换的条件应该是互斥的, 须保证只有一条出转换能够被触发. 合并包含两个带条件的入转换和一个出转换.状态图状态图: 通过建立对象的生存周期模型来描述对象随时间变化的动态行为.状态图中的基本概念状态: 用圆角矩形表示. 状态名称表示状态的名字, 通常用字符串表示. 一个状态的名称在状态图所在的上下文中应该是唯一的.转换: 用带箭头的直线表示. 一端连着源状态, 一端连着目标状态.初始状态: 每个状态图都有一个初始状态. 此状态代表状态图的起始位置. 初始状态只能作为转换的源, 不能作为转换的目标, 并且在状态图中只能有一个. 初始状态用一个实心圆表示.终止状态: 模型元素的最后状态, 是一个状态图的终止点. 终止状态在一个状态图中可以有多个.协作图协作图(也叫合作图)是一种交互图.时序图主要侧重于对象间消息传递在时间上的先后关系, 而协作图表达对象间的交互过程及对象间的关联关系。
(五)UML之协作图
⼀、什么是协作图?
顾名思义协作图就是合作图,有合作就涉及到多个对象。
协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是⼀种交互图(interaction diagram),显⽰某组对象如何为了由⼀个⽤例描述的⼀个系统事件⽽与另⼀组对象进⾏协作的,使⽤协作图可以显⽰对象⾓⾊之间的组织关系。
⼆、对⽐
1、协作图和时序图。
两者表的消息时⼀样的,只是强调的重点不同。
协作图表达的是在实现某个⽤例期间,对象之间的合作关系,⽽时序图表达的是对象之间产⽣合作发⽣消息的时间顺序。
两者可以相互转化。
(rational rose 快捷键F5。
)
三、协作图的构成
时序图跟协作图可以相互转化,不难理解,协作图的构成有⾓⾊,对象,连接,消息。
具体含义同时序图。
协作图表现的是对象在空间上的联系,所以不存在时序图中的⽣命线和激活器。
图⼆是图⼀转换的时序图。
第4章顺序图和协作图4.1 交互图概述交互图(interaction diagram)是用来描述对象之间以及对象与参与者(actor)之间的动态协作关系以及协作过程中行为次序的图形文档。
它通常用来描述一个用例的行为,显示该用例图中所涉及的对象和这些对象之间的消息传递情况。
交互图包括顺序图(sequence diagram)和协作图(collaboration diagram)两种形式。
顺序图着重描述对象按照时间顺序的消息交互,协作图着重描述系统成分如何协同工作。
顺序图和协作图从不同的角度表达了系统中的交互和系统的行为,它们之间可以相互转化。
一个用例需要多个顺序图或协作图,除非特别简单的用例。
交互图可以帮助分析人员对照检查每个用例中所描述的用户需求,如这些需求是否已经落实到能够完成这些功能的类中去实现,提醒分析人员去补充遗漏的类或方法。
交互图和类图可以相互补充,类图对类的描述比较充分,但对象之间的交互情况的表达不够详细;而交互图不考虑系统中的所有类及对象,但可以表示系统中某几个对象之间的交互。
需要说明的是,交互图描述的是对象之间的消息发送关系,而不是类之间的关系。
在交互图中一般不会包括系统中所有类的对象,但同一个类可以有多个对象出现在交互图中。
4.2 顺序图顺序图也称时序图。
Rumbaugh对顺序图的定义是:顺序图是现实对象之间交互的图,这些对象是按时间顺序排列的[RJB99]。
特别地,顺序图中显示的是参与交互的对象,及对象之间消息交互的顺序。
如图4.1所示是一个简单的顺序图例子。
图4.1 顺序图顺序图是一个二维图形。
在顺序图中水平方向为对象维,沿水平方向排列的是参与交互的对象。
其中对象间的排列顺序并不重要,但一般把表是参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边(或表示人的参与者放在最左边,表示系统的参与者放在最右边)。
顺序图中的垂直方向为时间维,沿垂直向下方向按时间递增顺序列出各对象所发出和接收的消息。
UML中的顺序图和协作图的区别与实际应用案例解析UML(Unified Modeling Language)是一种用于软件系统建模的标准语言,被广泛应用于软件开发过程中。
在UML中,顺序图和协作图是两种常用的建模工具,用于描述系统中对象之间的交互关系。
本文将探讨顺序图和协作图的区别,并通过实际应用案例解析它们的使用。
顺序图是一种时序图,用于展示对象之间的交互顺序。
它通过显示对象之间的消息传递和时间顺序来描述系统的动态行为。
顺序图以垂直方向表示时间轴,从上到下按照时间顺序排列对象和消息。
每个对象用一个矩形表示,对象之间的消息通过箭头表示。
顺序图强调对象之间的交互和消息的顺序,能够清晰地展示系统中的动态行为。
协作图是一种静态图,用于描述对象之间的合作关系。
它通过展示对象之间的连接和消息传递来描述系统的结构和交互。
协作图以水平方向表示对象之间的连接关系,每个对象用一个矩形表示,对象之间的连接通过实线和虚线表示。
协作图强调对象之间的连接和合作关系,能够清晰地展示系统中的结构和交互。
为了更好地理解顺序图和协作图的区别,我们可以通过一个实际应用案例来解析它们的使用。
假设我们正在开发一个在线购物系统,其中包含用户、购物车和商品三个对象。
首先,我们可以使用顺序图来描述用户购买商品的过程。
顺序图可以展示用户选择商品、将商品添加到购物车、结算支付等交互过程。
通过顺序图,我们可以清晰地了解用户与系统之间的交互顺序和消息传递。
接下来,我们可以使用协作图来描述购物车和商品之间的合作关系。
协作图可以展示购物车和商品之间的连接关系,以及它们之间的消息传递。
通过协作图,我们可以清晰地了解购物车和商品之间的合作关系,从而更好地设计系统的结构和交互。
通过以上案例,我们可以看到顺序图和协作图在描述系统中的对象交互和合作方面有着不同的应用场景。
顺序图适用于描述对象之间的交互顺序和消息传递,而协作图适用于描述对象之间的连接关系和合作关系。
动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图包括时序图和协作图;-- 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互;-- 协作图 : 描述对象之间的交互关系;一.时序图 (Sequence Diagram)1.时序图的概念时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换以完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作或者引起状态机改变的触发事件;时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.时序图轨迹 : 时序图提供了随时间推移的, 清晰的可视化的轨迹;2. 时序图组成时序图组成 : 时序图包括四个元素对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message);(1) 对象(Object)对象: 时序图中的对象在交互中扮演的角色就是对象;对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;-- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;-- 不在顶部: 如果对象的位置不在顶部, 那么对象在交互过程中创建的;(2)生命线(Lifeline)(3)生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标以及对象下面的生命线图标如上图;(3) 激活(Activation)激活(Activation): 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;激活去激活的时机 :-- 激活 : 对象激活是在激活条的顶部激活;-- 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;(4) 消息消息概念 : 定义交互和协作中交换信息的类, 对对象之间的通信内容建模;消息动作 :--动作种类: 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过发送和接收消息进行通信;--产生结果: 消息可以触发操作, 唤起信号, 或使目标对象创建或销毁;消息的异步和同步通信 :-- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的命名的对象间的异步通信;-- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;消息类型 :-- : 两个对象间绘制消息;-- : 两个对象之间的过程调用;-- : 两个对象之间的异步消息;-- : 过程调用中返回的消息;-- : 绘制反身消息;3. 时序图示例示例简介 :-- 使用场景: 汽车租赁公司;-- 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);-- 工作流程 : ①客户向工人提出租车要求, ②工人检查请求, ③客户付款, ④工人填写记录, ⑤工人取车;时序图 :4. 对象的创建和撤销对象位置:-- 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;-- 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;交互过程中创建对象的方法 :--消息指向对象 : 消息是构造方法, 箭头指向对象所代表的的矩形;-- 消息指向激活条 : 消息是构造方法, 箭头指向对象下面的激活条;撤销对象 : 如果想要在时序图中撤销一个对象, 因为如果同时有几个对象, 如果不进行特殊操作其生命周期将会一样长; -- 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;5. 时序图建模技术时序图使用时机 : 对动态行为建模, 强调时间展开信息的次序的时候, 使用时序图;时序图管理策略 :-- 单一控制流 : 一个单独的时序图只能显示一个控制流;-- 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;时序图建模策略 :-- 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作类用例等;-- 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;-- 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;-- 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息在后发出的消息上面;-- 激活期设置 : 可以将实际操作发生的时间点消息明确的显示出来;-- 时间空间约束: 每个消息都可以附加合适的时间和空间约束;-- 前置后置条件: 每条消息可以附加前置或后置条件;6. Rational Rose 时序图操作(1) 创建时序图新建时序图 : 在视图浏览器中右键点击Logical View (逻辑视图), 选择New(新建) -> Sequence Diagram(时序图);(2) 添加对象添加对象 : 时序图中有两种对象, 一种是参与者Actor, 一种是普通的对象;-- 参与者对象 : 在类图中创建一个对象, 将其 Stereotype 修改为 Actor, 就变成了参与者, 然后在视图浏览器中将这个元素拖到时序图中即可;-- 普通对象 : 直接在时序图中点击按钮, 在界面中创建对象; -- 两种对象效果 :设置对象属性 : 双击对象, 在弹出的 General 对话框中修改对象属性;-- Name: 对象名称, 不输入也可以;-- Document : 描述对象的文档;设置对象持续性 :-- 持续 (Persistent) : 对象保存在数据库或其它形式的永久存储体中;-- 静态 (Static) : 对象保存在内存中知道程序终止;-- 临时 (Transient) : 短时间内保存在内存中;(3) 添加消息消息作用 : 消息用两个对象生命线之间的箭头表示, 一个对象可以通过消息请求另一个对象执行某个操作;增加消息 :-- 发送消息 : 将从发送消息对象的生命线拖到接收消息对象的生命线上;-- 显示取消编号和激活条 : 菜单栏 Tools -> Options -> Diagram 选项卡, Sequence numbering 是消消息编号 , Focus of control 显示激活条;二. 协作图 (Collaboration Diagram)1. 协作图概念协作图: 协作图是一种类图, 包含类元角色和关联角色,不仅仅是类元和关联;-- 强调 : 强调参与交互的各个对象的结构信息和组织;协作图建模对象 : 对有交互的对象和这些对象之间的关系建模, 不参与交互的对象及它们的关系忽略;协作图内容: 协作图中表现了类操作中用到的参数, 布局变量, 操作中的永久链;对象图扩展 : 协作图可以看做对象图的扩展, 该图展示了对象之间的关联, 显示出了对象间的消息传递;2. 协作图内容(1) 对象(Object)对象 : 代表协作图交互中的主体, 和时序图中对象的概念类似;协作图和时序图中对象区别 : 协作图中对象无法创建和撤销, 因此对象在协作图的位置没有限制;(2) 链(Link)链的表示 : 链的符号和对象图中链所用的符号是一样的, 用来连接两个类角色的实线;-- : 创建对象之间的通信路径;-- : 显示对象可以调用自己的属性;-- : 在两个对象之间或一个对象本身增加消息;-- : 在两个对象之间或一个对象本身从反方向增加消息;-- : 显示两个对象之间的信息流;-- : 在反方向显示两个对象之间的信息流;路径构造性 : 对象之间的连接可以由链末尾附加的路径构造型表示;-- 添加方式 : 双击链, 选择 visibility属性即可;(3) 消息 (Message)消息概念 : 对象间通过链接发送的就是消息;--消息传递方向 : 对象之间的箭头表明对象间交换的消息流, 一个对象发出消息, 链指向的对象接收消息, 链用于实现消息传输;-- 消息标识 : 消息流标有消息的序列号和对象间发送的消息名称;-- 消息结果 : 每条消息否会触发接收对象的一系列操作;消息序号 : 协作图与时序图中的消息类型是一样的, 为了表明消息顺序, 需要为消息添加序号;3. 协作图示例示例简介 : 汽车租赁流程;-- 涉及到的对象 : Customer (客户), Order (订单), Worker (工人), Record (记录), Car (汽车);-- 流程简介 : 客户写好订单, 工人核对订单, 核对后订单存在, 允许客户取车, 工人填写记录, 并将车取出;4. 协作图建模策略协作图使用场景 : 对系统动态行为建模, 按组织对控制流建模使用协作图;协作图管理策略 :-- 单个协作图: 单个协作图只能显示一个控制流;--多个协作图 : 描述复杂系统的时候, 需要许多协作图共同描述, 一些图是主干协作图, 还有许多分支路径的控制流的协作图, 使用包管理这些协作图;协作图的建模策略 :-- 设置语境 : 设置协作图所在的环境 , 如系统, 子系统, 类, 操作, 用例或用例脚本;-- 对象顶点 : 识别对象在协作图中扮演的角色, 协作图中, 对象是图的顶点;-- 变化修改 : 每个对象最初都会设置初始值, 如果期间对象发生了变化, 修改的方式是 : 协作图中放置一个复制对象, 更新复制对象, 同过后造型 become copy 连接二者;-- 确定链接顺序 : 先确定关联链接,哪些对象相互链接; 在确定消息链接, 路径构造型等表示对象间如何连接;-- 消息顺序 : 从引起交互的消息开始编号, 将编号信息和描述信息附到链接上, 描述了对象之间的传递次序;-- 时间空间约束 : 可以为每个消息附加时间和空间上的约束;-- 前置后置条件 : 可以为每个消息附加前置和后置条件;5. Rational Rose 绘制协作图(1) 创建协作图创建流程 : 视图浏览器 -> Logical View (逻辑视图) -> New (新建) -> Collaboration Diagram (协作图);(2) 添加对象协作图中添加对象 : 与时序图基本类似;-- 添加参与者对象 : 在类图中创建好类, 然后将类型设置为Actor, 然后在视图浏览器中将Actor拖到协作图中;-- 添加普通对象 : 直接点击工具栏中的图标设置即可;(3) 添加消息添加对象间消息 : 在两个对象之间添加消息;-- 建立通信路径 : 使用连接两个对象, 建立两个对象间的通信路径;-- 添加消息 : 使用或在通信路径上添加消息;-- 设置消息名称 : 双击消息箭头, 可以在弹出的对话框中修改消息名称;添加反身消息 : 选择点击对象, 就会出现指向对象本身的路径, 选择点击这个指向本身的路径, 可以为该对象添加消息;(4) 添加数据流数据流概念 : 数据流是一个对象向另一个对象发送消息返回的消息;-- 使用场景 : 没必要在每个消息上都加上数据流, 只要在中药消息上附加数据流即可;数据流添加方法 : 选择或按钮, 单击要返回的数据消息, 数据流箭头就会被添加到这个消息上;.6. 时序图与协作图转换各自侧重点 : 时序图和协作图是等价的, 可以任意转换, 而不丢失信息;--时序图: 描述交互过程中的时间顺序, 没有明确表达对象间关系;--协作图: 描述了对象间的关系, 但是时间顺序必须从消息的序号中获取;转换示例 :-- 场景介绍 : 学生毕业管理;-- 对象介绍 : 教务人员, 学位评价, 成绩管理, 奖惩管理, 信息打印;-- 控制流介绍 : ①教务人员输入学号进入学位评价模块, ②学位评价模块会向成绩管理模块查询成绩, ③向奖惩管理模块查询奖惩记录, ④学位评价模块会将结果打印到信息打印模块, ⑤信息打印模块将结果返回给教务人员;时序图:协作图 :7. 时序图和协作图对比时序图和协作图共同点 : 都是有消息和类角色组成;-- 规定责任 : 时序图和协作图都规定了消息发送对象和消息接收对象的责任, 每个接收对象都有消息对应的接口, 这个接口方法由消息发送对象触发;-- 支持消息 : 时序图和协作图都支持消息;-- 衡量工具 : 时序图和协作图可以作为衡量系统耦合性的工具, 耦合性就是系统中模型之间的依赖性, 两个模型之间的依赖关系通过查看两个模型之间的消息数量和类型就可以看出, 消息交互少的耦合性高;时序图和协作不同点 :-- 对象创建撤销侧重点 : 时序图侧重描述对象的创建和撤销, 新创建的对象放在对象生命线上对应的时间点, 撤销的对象在结束的地方放一个 X 表示该对象不能再继续使用;协作图中创建撤销的概念不存在, 对象时始终存在的, 只能通过消息描述或约束来说明对象的创建和撤销;-- 链接侧重点 : 时序图中的链没有表示出来, 可以随意绘制消息, 有些逻辑交互可能不会发生; 协作图的消息是映射在链上的, 消息和链平行放置, 如果想要通过消息查看对象之间的关联使用协作图最好;-- 激活和去激活 : 时序图表现有激活和去激活, 协作图上没有时间概念的描述, 无法清晰地表示对象的激活和去激活;三. 实例 - 图书管理系统1. 管理员为图书添加类别控制流说明 :-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item (图书条目);-- 流程 : 管理员查询图书信息窗口, 查看有没有相应的图书类别, 如果有插入该图书条目;时序图 :\协作图 :2. 管理员删除图书控制流说明 :-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item(图书条目);-- 控制流程 : 管理员登陆图书信息窗口删除图书, 查表图书类别是否存在, 查找图书是否存在, 如果都返回true, 删除图书条目;时序图 :协作图 :3. 管理员借书时序图控制流说明 :-- 参与的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Borrower (借阅者), Loan (借书记录), item (图书条目);-- 流程 : 管理员登陆图书信息窗口, 查询图书类别是否存在, 查询图书条目是否存在, 查询借阅者是否存在, 创建借书记录;时序图 :协作图 :21。