时序图协作图详解.docx
《时序图协作图详解.docx》由会员分享,可在线阅读,更多相关《时序图协作图详解.docx(28页珍藏版)》请在冰点文库上搜索。
时序图协作图详解
动态图概念:
从静态图中抽取瞬间值的变化描述系统随时间变化的行为,动态图包括交互图活动图状态图,这篇博客研究交互图
包括时序图和协作图;
--时序图:
显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互;
--协作图:
描述对象之间的交互关系;
~一.时序图(SequeneeDiagram)
1.时序图的概念
时序图定义:
描述了对象之间传递消息的时间顺序,用来表示用例中的行为顺序,是强调消息时间顺序的交互图;
时序图描述的事物:
时序图描述系统中类和类之间的交互,将这些交互建模成消息交换,时序图描述了类以及类之间的交换以完成的期望行为的消息,时序图中每条消息都代表了类的一个操作或者引起状态机改变的触发事件;
时序图表示:
参与交互的对象在时序图顶端水平排列,每个对象的底端绘制了一条垂直虚线,对象A像对象B发送消息,用一条带箭头的实线表示,
该实线起始于对象A底部的虚线,终止于对象B底部的虚线;实线箭头水平放置,越靠近顶端越早被发送
时序图轨迹:
时序图提供了随时间推移的,清晰的可视化的轨迹;
2.时序图组成
时序图组成:
时序图包括四个元素对象(Object),生命线(Lifeline),激活(Activation),消息(Message)
(1)对象(Object)
custom协匚口如门他
对象:
时序图中的对象在交互中扮演的角色就是对象;
对象的符号:
时序图中的对象与对象图中的表示方法一样,使用矩形将对象名称包含起来,并且对象名称下有下划线对象创建时机:
对象可以在交互开始的时候创建,也可以在交互过程中进行创建;
--处于顶部:
如果对象的位置在时序图顶部,说明在交互开始的时候对象就已经存在了;
--不在顶部:
如果对象的位置不在顶部,那么对象在交互过程中创建的;
(2)生命线(Lifeline)
ug£tcinnE「fListcirr]可
生命线:
生命线是一条垂直的虚线,这条虚线表示对象的存在,在时序图中,每个对象的底部都有生命线生命线作用:
生命线是一个时间线,从时序图顶部一直到底部都存在,其长度取决于交互的时间;
对象的生命线:
对象与生命线结合在一起就是对象的生命线,这个概念包含对象图标以及对象下面的生命线图标如上图;
⑶激活(Activation)
Lil
I
i
i
激活(Activation):
代表时序图中对象执行一项操作的时期,激活期可以理解为语义中{}中的内容,表示该对象被占用以完成某个任务去激活(Deactivation):
指对象处于空闲状态,在等待消息激活这个对象;
激活的表示:
当对象处于激活时期,生命线可以拓宽为矩形,这个矩形条成为激活条;
激活去激活的时机:
--激活:
对象激活是在激活条的顶部激活;
--去激活:
激活条的底部去激活,通常发生在一个消息离开对象生命线;
⑷消息
消息概念:
定义交互和协作中交换信息的类,对对象之间的通信内容建模;
消息动作:
--动作种类:
消息允许在实体间传递信息(传递参数),允许实体请求其它服务,对象之间通过发送和接收消息进行通信;
--产生结果:
消息可以触发操作,唤起信号,或使目标对象创建或销毁;
消息的异步和同步通信:
--异步通信:
消息是信号的时候,发送信号之后,等待对方触发相应方法,这是明确的命名的对象间的异步通信;
--同步通信:
直接调用对象的方法,执行方法返回结果,这种具有返回控制机制的操作是同步通信;
时序图和协作图中消息的区别:
时序图中的消息强调顺序,协作图中的消息强调交换消息的对象间的关系;
消息类型:
两个对象间绘制消息
过程调用中返回的消息
E)
两个对象之间的过程调用
两个对象之间的异步消息
绘制反身消息
3.时序图示例
示例简介:
--使用场景:
汽车租赁公司;
--使用的对象:
Customer(客户),Worker(工作人员),Order(请求),Record(记录),Car(汽车);
--工作流程:
①客户向工人提出租车要求,②工人检查请求,③客户付款,④工人填写记录,⑤工人取车;
时序图:
4.对象的创建和撤销
对象位置:
--顶部:
时序图中对象的默认位置是在时序图顶部,这表明对象在交互开始之间就已经存在
--中间:
如果对象在时序图中间部分,说明对象时在交互过程中创建的;
交互过程中创建对象的方法:
--消息指向对象:
消息是构造方法,箭头指向对象所代表的的矩形;
cusmmenGust
omer
--消息指向激活条:
消息是构造方法,箭头指向对象下面的激活条
撤销对象:
如果想要在时序图中撤销一个对象,因为如果同时有几个对象,如果不进行特殊操作其生命周期将会一样长
--效果图:
下图中将Customer和Order对象撤消了,因为它们基本没有参与后期的交互
口njgr砒
recordRecord
[]
~r
u
■:
2chackO
,―
->
1i
:
a
■•'
ilJ'
n•>
a»■
a
a
ii11
aH
a*!
tl"
a*■
a»
J"
3:
nk
A
\
*
y[)
u
5writeRacorci:
]
X
■;
£g机盹
*:
•■i
u
0
1日(hew:
OrdBr(J
5.时序图建模技术
时序图使用时机:
对动态行为建模,强调时间展开信息的次序的时候,使用时序图;
时序图管理策略
单一控制流:
一个单独的时序图只能显示一个控制流
--多个时序图:
完整的控制流很复杂,可以绘制多个时序图,一个主干时序图,多个分支时序图,使用包对这些时序图进行管理时序图建模策略:
--设置交互语境:
交互所在的环境,包括哪些对象,属于什么系统,子系统,相关的操作类用例等;
--对象排列顺序:
根据对象重要性,从左到右排列在时序图中;
--对象生命线:
对象通常存在于交互的整个过程,也可以在交互过程中被创建和撤销;
--消息排列:
引发交互信息之后,消息按照时间顺序从上向下画出,先发出的消息在后发出的消息上面;
--激活期设置:
可以将实际操作发生的时间点消息明确的显示出来;
--时间空间约束:
每个消息都可以附加合适的时间和空间约束;
--前置后置条件:
每条消息可以附加前置或后置条件;
(1)创建时序图
时序图);
新建时序图:
在视图浏览器中右键点击LogicalView(逻辑视图),选择New(新建)->SequenceDiagram(
添加对象:
时序图中有两种对象,一种是参与者Actor,一种是普通的对象;
--参与者对象:
在类图中创建一个对象,将其Stereotype修改为Actor,就变成了参与者,然后在视图浏览器中将这个元
素拖到时序图中即可;
載务人员
--普通对象
直接在时序图中点击
按钮,在界面中创建对象
--两种对象效果
学位管理
鞍务人员
设置对象属性:
双击对象,在弹岀的General对话框中修改对象属性
--Name:
对象名称,不输入也可以;
--Document:
描述对象的文档;
设置对象持续性
--持续(Persistent)
--静态(Static)
--临时仃ransient)
:
对象保存在数据库或其它形式的永久存储体中
对象保存在内存中知道程序终止;
:
短时间内保存在内存中;
⑶添加消息
消息作用:
消息用两个对象生命线之间的箭头表示,一个对象可以通过消息请求另一个对象执行某个操作
增加消息:
--发送消息:
将从发送消息对象的生命线拖到接收消息对象的生命线上;
Focus
--显示取消编号和激活条:
菜单栏Tools->Options->Diagram选项卡,Sequencenumbering是消消息编号ofcontrol显示激活条;
协作图(CollaborationDiagram)
1.协作图概念
协作图:
协作图是一种类图,包含类元角色和关联角色,不仅仅是类元和关联;
--强调:
强调参与交互的各个对象的结构信息和组织;
协作图建模对象:
对有交互的对象和这些对象之间的关系建模,不参与交互的对象及它们的关系忽略协作图内容:
协作图中表现了类操作中用到的参数,布局变量,操作中的永久链;
对象图扩展:
协作图可以看做对象图的扩展,该图展示了对象之间的关联,显示岀了对象间的消息传递
2.协作图内容
(1)对象(Object)
对象:
代表协作图交互中的主体,和时序图中对象的概念类似;
协作图和时序图中对象区别:
协作图中对象无法创建和撤销,因此对象在协作图的位置没有限制
(2)链(Link)
链的表示:
链的符号和对象图中链所用的符号是一样的,用来连接两个类角色的实线;
/)
--:
创建对象之间的通信路径;
--:
显示对象可以调用自己的属性;
在两个对象之间或一个对象本身增加消息
在两个对象之间
或一个对象本身从反方向增加消息
--:
显示两个对象之间的信息流;
--:
在反方向显示两个对象之间的信息流;
路径构造性:
对象之间的连接可以由链末尾附加的路径构造型表示
--添加方式:
双击链,选择visibility属性即可;
⑶消息(Message)
消息概念:
对象间通过链接发送的就是消息;
--消息传递方向:
对象之间的箭头表明对象间交换的消息流,一个对象发出消息,链指向的对象接收消息,链用于实现消息传输
--消息标识:
消息流标有消息的序列号和对象间发送的消息名称;
--消息结果:
每条消息否会触发接收对象的一系列操作;
消息序号:
协作图与时序图中的消息类型是一样的,为了表明消息顺序,需要为消息添加序号;
3.协作图示例
示例简介:
汽车租赁流程;
--涉及到的对象:
Customer(客户),Order(订单),Worker(工人),Record(记录),Car(汽车);
--流程简介:
客户写好订单,工人核对订单,核对后订单存在,允许客户取车,工人填写记录,并将车取岀;
4.协作图建模策略
协作图使用场景:
对系统动态行为建模,按组织对控制流建模使用协作图;
协作图管理策略:
--单个协作图:
单个协作图只能显示一个控制流;
--多个协作图:
描述复杂系统的时候,需要许多协作图共同描述,一些图是主干协作图,还有许多分支路径的控制流的协作图,使用包管理这些协作图;
协作图的建模策略:
--设置语境:
设置协作图所在的环境,如系统,子系统,类,操作,用例或用例脚本;
--对象顶点:
识别对象在协作图中扮演的角色,协作图中,对象是图的顶点;
--变化修改:
每个对象最初都会设置初始值,如果期间对象发生了变化,修改的方式是:
协作图中放置一个复制对象,更新复制对象,同过后造型becomecopy连接二者;
--确定链接顺序:
先确定关联链接,哪些对象相互链接;在确定消息链接,路径构造型等表示对象间如何连接;
--消息顺序:
从引起交互的消息开始编号,将编号信息和描述信息附到链接上,描述了对象之间的传递次序;
--时间空间约束:
可以为每个消息附加时间和空间上的约束;
--前置后置条件:
可以为每个消息附加前置和后置条件;
5.RationalRose
绘制协作图
(1)创建协作图
创建流程:
视图浏览器->LogicalView(
逻辑视图)->New(新建)->CollaborationDiagram(
协作图);
链)Cuntitied)
E
ClUseCaseView里Main
玄Asscciationso
Logic
Ma:
1
Ifielett
iRen-ijTr&
DataModeler
►
New
Cor
IS
[fljjDeploymentView固NiodalFroparties
Class
ClassUtilityUseCas€
Interface
FackAg®
ClassDiagram;UseCaseDia;gram
CsllaboraticnDi
SequenceDiagramStatfrchartDiagrunActivitjrDiagram
DieURL
(2)添加对象
协作图中添加对象:
与时序图基本类似;
--添加参与者对象:
在类图中创建好类,然后将类型设置为Actor,然后在视图浏览器中将Actor
拖到协作图中
x1
:
載务人员
妣to时象普通对象
--添加普通对象:
直接点击工具栏中的图标设置即可;
⑶添加消息
添加对象间消息:
在两个对象之间添加消息
--建立通信路径
使用
/I
连接两个对象,建立两个对象间的通信路径
--添加消息:
使用
在通信路径上添加消息
--设置消息名称:
双击消息箭头,可以在弹岀的对话框中修改消息名称
(4)添加数据流
数据流概念:
数据流是一个对象向另一个对象发送消息返回的消息;
--使用场景:
没必要在每个消息上都加上数据流,只要在中药消息上附加数据流即可;
IQQ
数据流添加方法:
选择或按钮,单击要返回的数据消息,数据流箭头就会被添加到这个消息上
6.时序图与协作图转换
各自侧重点:
时序图和协作图是等价的,可以任意转换,而不丢失信息
--时序图:
描述交互过程中的时间顺序,没有明确表达对象间关系;
--协作图:
描述了对象间的关系,但是时间顺序必须从消息的序号中获取
转换示例
--场景介绍:
学生毕业管理--对象介绍:
教务人员,学位评价,成绩管理,奖惩管理,信息打印;
--控制流介绍:
①教务人员输入学号进入学位评价模块,②学位评价模块会向成绩管理模块查询成绩,③向奖惩管理模块
询奖惩记录,④学位评价模块会将结果打印到信息打印模块,⑤信息打印模块将结果返回给教务人员;
时序图
1学号
协作图
学位萱理
nu:
:
成绩管理
2学号
>
奖焦官理
nu:
:
3成绩
6结果
信息打印
信息打
学位管
印
w
理
6■结果
7.时序图和协作图对比
时序图和协作图共同点:
都是有消息和类角色组成
接口方法由消息发送对象触发
--支持消息:
时序图和协作图都支持消息
--衡量工具
时序图和协作图
可以作为衡量系统耦合性的工具
耦合性就是系统中模型之间的依赖性
两个模型之间的依赖
关系通过查看两个模型之间的消息数量
和类型就可以看岀,消息交互少的耦合性高;
时序图和协作不同点
--对象创建撤销侧重点:
时序图侧重描述对象的创建和撤销,新创建的对象放在对象生命线上对应的时间点,撤销的对象在结
束的地方放一个X表示该对象不能再继续使用;协作图中创建撤销的概念不存在,对象时始终存在的,只能通过消息描述或约束来说明对象的创建和撤销;
--链接侧重点:
时序图中的链没有表示岀来,可以随意绘制消息,有些逻辑交互可能不会发生;协作图的消息是映射在链上的,消息和链平行放置,如果想要通过消息查看对象之间的关联使用协作图最好;
--激活和去激活:
时序图表现有激活和去激活,协作图上没有时间概念的描述,无法清晰地表示对象的激活和去激活;
实例-图书管理系统
1.管理员为图书添加类别
控制流说明:
--涉及到的对象:
Admin(管理员),BooklnfoWindow(图书信息窗口),Tittle(图书类别),Item(图书条目);
--流程:
管理员查询图书信息窗口,查看有没有相应的图书类别,如果有插入该图书条目;
时序图:
协作图
2.管理员删除图书
--涉及到的对象:
Admin(管理员),BooklnfoWindow(图书信息窗口),Tittle(图书类别),ltem(图书条目);
--控制流程:
管理员登陆图书信息窗口删除图书,查表图书类别是否存在,查找图书是否存在,如果都返回true,删除图
书条目;
时序图:
Admin菅理员
BeohInfo'//indow
Tjttb
协作图:
AdminWJf员
3.管理员借书时序图
--参与的对象:
Admin(管理员),BooklnfoWindow(图书信息窗口),Tittle(图书类别),Borrower(借阅者),Loan
(借书记录),item(图书条目);
--流程:
管理员登陆图书信息窗口,查询图书类别是否存在,查询图书条目是否存在,查询借阅者是否存在,创建借书记录;
时序图:
3存在
<
5存在
7有在
3创建倍阅记录:
协作图