【工具】-10 UML时序图(Sequence Diagram)学习笔记

为什么要绘制时序图?

我们编码的时候,知道有的用例的业务逻辑按照比较确定的时间先后顺序进行展开。这时候,我们就需要知道我们设计的系统中的不同类之间传递消息(可以认为是不同对象函数间的调用)要按照怎么样的顺序、传递什么消息、返回什么消息。这时候用时序图是最好不过的了。

时序图的定义:

          时序图是描述消息时间顺序的交互图。在图形上,时序图是一张表,其中显示的对象沿横轴排列,从左到右分布在图的顶部;而消息则沿纵轴按时间顺序排序。创建时序图时,以能够使图尽量简洁为依据布局。 

 

用visio建立时序图

1、选择模版

2、常见符号

 

时序图创建步骤

  1、确定交互过程的上下文;

  2、识别参与过程的交互对象;

  3、为每个对象设置生命线;

  4、从初始消息开始,依次画出随后消息;

  5、考虑消息的嵌套,标示消息发生时的时间点,则采用FOC(focus of control);

  6、说明时间约束的地点。

 

下面以团购系统的取消订单为例。

 


作者:kissazi2
出处:http://www.cnblogs.com/kissazi2/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fly_zxy/article/details/80911942

什么是时序图

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

让我们来看一看visio2016对时序图的的解释。


时序图的元素

我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,在单独介绍组合片段元素。

角色(Actor)

系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。

对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
    1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
    2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
    3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。

生命线(LifeLine)

时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。

控制焦点(Activation)

控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。

消息(Message)

表现代表对象之间发送的信息。消息分为三种类型。
    同步消息(Synchronous Message)
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
    异步消息(Asynchronous Message)
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。
    返回消息(Return Message)
返回消息表示从过程调用返回。以小于号+虚线表示。

自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

认识时序图六种元素

我们来使用Visio2016来画一个用户打开微信扫描二维码支付流程时序图,通过这个时序图来认识刚刚介绍的6种时序图元素。


时序图解释
1,用户输入手机密码
2,打开手机
3,打开微信扫一扫
4,返回微信扫一扫界面
5.1 扫描商家收款码
5.2 商家生成收款二维码
5.3 返回收款二维码
5.4 识别商家收款码
6,提示用户输入微信支付密码
7.1 输入微信支付密码
7.2 微信验证用户输入密码正确
7.3 向商家汇款

7.4 汇款成功
8,提示用户支付成功

组合片段

组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:



常用组合片段举例

    抉择(Alt)

抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。Alt片段组合可以理解为if..else if...else条件语句。

我们还拿微信支付的时序图举例,如果7.3向商家汇款的成功或失败流程需要在时序图中体现出来,可以这么使用Alt片段组合。


选项(Opt)

包含一个可能发生或不发生的序列。Opt相当于if..语句。

循环(Loop)

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。


并行(Par)

并行处理,片段中的事件可以并行交错。Par相当于多线程。


时序图的绘制工具

画时序图的工具有很多,但是个人只用过微软visio工具,感觉很好用,可以满足需要。

时序图的绘制步骤

时序图的绘制步骤可以总结为:

1,划清边界,识别交互语境

    所谓划清边界是是指要确定好绘制时序图的范围。在微信支付例子中省略列商家打开微信、输入收款金额等交互消息,这些不是我们需要体现的,我们主要体现的是用户的扫码支付流程。

    所谓识别交互语境就是要知道自己绘制时序图的前提和背景。在微信支付的例子中用户登录了微信、开通了支付功能是前提,背景是用户需要扫描付款买东西。

2,梳理时序图中的角色和对象都有哪些

    微信支付的例子中角色只有一个,即用户。对象有华为手机:手机、安卓版微信:微信、:商家。

3,对象之间有哪些交互消息 

    对象之间交互的消息详见以上时序图。

时序图的绘制技巧

时序图的绘制技巧:

1,从初始消息开始画,依次画出随后消息,并给每个消息分配序号,方便理解。

2,角色和对象用名词,消息用动词。

3,角色放在时序图的开始位置,对象重要程度或使用频率从左到右排列。这就要根据时间的流程考虑了,是一个比较主观的事情。


4,控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

正确示范


错误示范


最后的技巧就是多联系绘制时序图,熟能生巧,自然而然就会画了。

练习事例

用户登录系统时序图


参考资料

https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin

http://baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pc



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 创建模型时序图sequence diagram)的步骤包括: 1. 确定模型中的对象和活动:首先需要确定模型中需要出现的各个对象,以及这些对象在模型中扮演的角色,进而确定模型中需要描述的各个活动。 2. 确定对象之间的关系:在模型中,各个对象之间存在着各种不同的关系,例如,调用、引用、继承等,需要根据实际情况确定各个对象之间的关系,并用适当的箭头表示。 3. 绘制时序图:在确定了模型中的对象和它们之间的关系之后,可以开始绘制时序图时序图一般由多个水平方向排列的 lifeline(生命线)构成,每个 lifeline 代表一个对象,在它上面可以画出对象的各个操作,用垂直的带箭头的线表示。 4. 补充详细信息:最后,需要根据实际情况添加时序图的详细信息,例如各个操作的参数和返回值等,进一步完善模型的表达能力。 ### 回答2: 时序图也是UML建模中非常重要的一种图形,它主要用来描述对象之间的交互关系和消息通信。它能够清晰地展示对象之间的动态关系,对于分析和设计系统非常有帮助。 时序图的主要元素包括对象、生命线、消息、激活条和控制流。在时序图中,每个对象都表示一个状态或实体,生命线表示对象在一定时间段内的存在。消息则表示对象间的交互,包括同步消息、异步消息、返回消息等。激活条则表示在消息发送或者接收时,接收方的响应时间。控制流则表示消息之间的流向和顺序。 时序图的绘制可以根据具体的需求进行制定,一般分为三个步骤。第一步是确定参与交互的对象,包括系统、人员、组件等。第二步是建立生命线和激活条,确定对象的存活期和响应时间。第三步是建立消息和控制流,清晰地展示对象之间的消息交互关系。 时序图的优点在于能够以非常直观的方式展示对象间的交互行为,可以帮助开发人员更好地理解系统的交互方式,从而更好地设计出系统的结构和功能。同时,它还能够帮助进行调试和测试,方便开发人员对交互流程进行分析和优化。 总之,时序图UML建模中非常重要的一种图形,可以用来描述对象之间的交互关系和消息通信。在系统分析和设计中具有广泛的应用,是开发人员必须掌握的技能之一。 ### 回答3: 时序图UML建模中用于表示系统中对象之间交互行为的一种图示方法。时序图通常是用来表示系统中对象之间的交互行为,也可用于描述系统中对象的一般行为。 时序图展示了一系列对象在一段时间内的相互关系、相互交互。时序图就像一个类的活动图,这里就是一个方法的调用过程。时序图由对象、生命线、消息和控制流组成。 在时序图中,对象被表示为矩形,矩形上方是对象的名称,下方是对象类型。生命线通常是垂直线,表示对象在某段时间内的存在。消息是表示对象之间的通信,有同步消息和异步消息。同步消息是表示调用一个方法并在返回之前等待结果,而异步消息表示调用一个方法并立即返回。 时序图还包括控制流和逆食流,在控制流中,消息从一个生命线流向另一个生命线。逆流控制是一条带箭头的曲线,表示消息的回传。 时序图的优点在于它是一种高度形式化的语言,理解时序图需要一定的技能和专业知识。但是它的优点是,它能够在开发过程的任何阶段使用,并且能够提供完整的交互细节,帮助开发人员精确定义系统的行为,并且帮助测试人员准确地测试和验证系统的行为。在实现新系统、更改或调整现有系统或维护现有系统的过程中,时序图都可以提供实用的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值