时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类 *** 作或状态机中引起转换的触发事件。
时序图描述对象是如何交互的,并且将重点放在消息序列上。也就是说,描述消息是如何在对象间发送和接收的。时序图有两个坐标轴:纵坐标轴显示时间,横坐标轴显示对象。每一个对象的表示方法是:矩形框中写有对象和 / 或类名,且名字下面有下划线同时有一条纵向的虚线表示对象在序列中的执行情况 ( 即发送和接收的消息对象的活动 ) , 这条虚线称为对象的生命线。对象间的通信用对象的生命线之间的水平的消息线来表示,消息线的箭头说明消息的类型,如同步,异步或简单 。 浏览时序图的方法是,从上到下查看对象间交换的消息,分析那些随着时间的流逝而发生的消息交换。
时序图中的消息可以是信号、 *** 作调用或类似于 C++ 中的 RPC ( Remote Procedure Call,远程过程调用)或 Java 中的 RMI ( Remote Method Invocation , 远程方法调用)。当对象接收到一个消息时,该对象中的一项活动就会启动,我们把这一过程称做激活 ( Activation )。 激活会显示控制焦点,表明对象在某一个时间点开始执行。一个被激活的对象或者是执行它自身的代码,或者是等待另一个对象的返回(该被激活的对象已经向另一个对象发送了消息)。在图形上,激活被绘制为对象生命线上的一个瘦高矩形。
消息可以用消息名及参数来标识。消息还可带有条件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。消息也可以有顺序号,但是在时序图中,消息的顺序号很少使用,因为时序图已经将消息的顺序显式地表示出来了。
一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对象用 "X"标识。
创建步骤
1、确定交互过程的上下文
2、识别参与过程的交互对象
3、为每个对象设置生命线
4、从初始消息开始,依次画出随后消息
5、考虑消息的嵌套,标示消息发生时的时间点,则采用FOC(focus of control)
6、说明时间约束的地点。
一、 什么是时序图?
时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
时序图是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。
二、 时序图的作用是什么?
1、展示对象之间交互的顺序。将交互行为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展示对象之间的交互;
2、相对于其他UML图,时序图更强调交互的时间顺序;
3、可以直观的描述并发进程。
三、 组成元素有哪些?
1. 角色(Actor)
系统角色,可以是人、机器、其他系统、子系统;在时序图中用表示。
2. 对象(Object)
(1)对象的三种命名方式
第一种方式包括对象名和类名,例如:直播课时:课时,在时序图中,用“对象:类”表示;
第二种方式只显示类名,即表示它是一个匿名对象,例如: :课程;在时序图中,用“:类”表示;
第三种方式只显示对象名不显示类名,例如:讲师;在时序图中,用“对象”表示。
(2)命名方式的选择
三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种。
(3)对象的排列顺序
对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交互频繁的对象尽可能的靠拢;2.把初始化整个交互活动的对象放置在最左端。
3. 生命线(Lifeline)
在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。
4. 控制焦点(Focus of Control)
又称为激活期,表示时间段的符号,在这个时间段内对象将执行相应的 *** 作。它可以被理解成C语言语义中一对花括号{ }中的内容;用小矩形表示。
5. 消息(Message)
消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
返回消息表示从过程调用返回。
6. 自关联消息
表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。
7. 组合片段
组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:
常用组合片段举例:
用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..
(1)抉择(Alt)
抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。
(2)选项(Opt)
包含一个可能发生或不发生的序列;
(3)循环(Loop)
片段重复一定次数,可以在临界中指示片段重复的条件。
(4)并行(Par)
四、 时序图的绘制工具
时序图的绘制工具有VISO、Rational Rose、StarUML、Web Sequence Diagrams、Timing Designer、Trufun Plato等,可任选其一。
五、 时序图的画法及实例
时序图的绘制步骤可简单总结如下:
划清边界,识别交互的语境;
将所要绘制的交互场景中的角色以及对象梳理出来;
从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明每个消息的特性(如参数等)。
接下来,我们按照上面所讲的时序图的绘制步骤,以学生在教务系统中查询其课程的成绩为例,来讲解时序图的绘制方法。
1、划清边界,识别交互的语境
所谓划清边界,就是要界定好自己所要画的时序图的范围,“学生在教务系统中查询其课程的成绩”就是所要绘制的时序图的交互内容,不用往上延伸到用户登录,也不要往下延伸到下载成绩单。
识别交互的语境,即是读懂所要画的时序图的前提和背景。比如本例中,既然学生可以查询成绩,那么该学生肯定已经注册并认证过其身份,并可选择其所考试的课程查询相应成绩。
2、梳理角色和对象
在本例中,角色有学生,对象有教务系统、课程、成绩。
对象的梳理是一个相对主观的过程,比如本例中,课程以及成绩分别作为了对象存在,也可以合并为数据库这一个对象。
请注意:角色以及对象,都为名词,动词不可作为角色和对象,如“成绩查询”不可作为对象。
3、添加消息
学生的登录验证作为本时序图的前置行为,可直接引用到本时序图中,也可忽略不画;学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)