前言

在我的工作中,用的最多的就是时序图了。可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过的了。

时序图简介

首先,时序图用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或者状态机中引起转换的事件;
其次,时序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。时序图属于动态建模;
最后,时序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传递消息的时间顺序。
还有,别忘了,浏览时序图的方法是,从上到下查看对象间交换的消息。

时序图中的元素

时序图中包括的建模元素主要有:角色、对象、生命线、控制焦点、消息和Combined Fragments。接下来,分别介绍每一个元素,以及展现它们在Astah中的表现形式。

角色

如下图:

图中的小人,就表示一个角色,这里的角色,可以是人,或者是其它的子系统或者系统。

对象

如下图:

每条生命线上都关联着一个对象,上图中有三条生命线,可以看到有三个对象,但是三个对象的命名方式都是不一样的。在使用Astah画时序图时,选择一个对象,在属性中可以更改这种命名,分别介绍一下这三种命名方式:

  1. 显示实例名和类名,方式:实例名:类名;
  2. 只显示类名,方式::类名;
  3. 只显示实例名,方式:实例名。

其实,三种命名方式,没有特别的要求,哪一种能让阅读该时序图的人一眼就能看明白,就使用哪种,而我一般使用的是第一种和第二种,第一种信息量多,在单例时,可以用来表示;第二种,画时序图时不用刻意的去强调实例名,只需要作出类名就好了;但是,第三种,我一直不知道存在的意义,给你一个实例名,其实从图中真的看不出其的类名。所以,我个人还是建议大家使用第一种和第二种。

生命线

没有什么多说的,从上面的两张图中,我们都可以看到一条向下延伸的虚线,而这条虚线就是表示的生命线,表示一个对象存在的时间。

控制焦点

控制焦点是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示。如下图表示:

消息

消息一般分为同步消息、异步消息和返回消息;如下图表示。

同步消息就是指消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
异步消息就是指消息发送者通过消息把信号传递给消息的接收者,然后自己继续活动,不等待接收者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
返回消息就是指消息从过程调用返回。

自关联消息

表示方法的自身调用以及一个对象内的一个方法调用另外一个方法,如下图:

Combined Fragments

表示带有一些特定条件发送的消息。

http://images.cnitblog.com/blog/405273/201307/06155657-732b73868c65429f8fba164931377107.png

如上图,就表示,循环(loop)发送GetProperty消息获得属性。在使用Astah画时序图时,选择一个Combined Fragments之后,可以在其对应的属性面板更改对应的发送条件。里面介绍了很多,此处列举一二:

  1. Alternative fragment(denoted “alt”) 与 if…then…else对应
  2. Option fragment (denoted “opt”) 与 Switch对应
  3. Parallel fragment (denoted “par”) 表示同时发生
  4. Loop fragment(denoted “loop”) 与 for 或者 Foreach对应

总结

关于时序图,就到此为止,讲的不深,主要是一些关于时序图的概念,没有涉及到应用,以及实际案例的分析,总是觉得缺点什么,是吧。没有关系,大家可以参考这里:这里。我的这篇博文中的很多内容也是参考这里的。希望大家满意。也希望大家有所收获,下一篇博文再见。

2013/7/6 于东软-大连

=====================================================================

如果喜欢,请关注:JellyThink | 思想的果冻

更多原创精彩博文,尽在www.jellythink.com

还可以关注新浪微博:http://weibo.com/u/1887014677

=====================================================================

UML时序图总结的更多相关文章

  1. [转载]UML时序图总结

    前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过 ...

  2. 10分钟学会使用Markdown绘制UML时序图

    1.1 什么是Markdown? Markdown是一种语法特别少.特别简单的标记语言,用来编写文档.用Markdown编写的文档是纯文本格式,经过编辑器的渲染,就会形成排 版优美的文档,本文就是用M ...

  3. 使用Astah制作UML时序图

    Astah制作UML图--详解 时序图的制作 开篇语: 本文为光荣之路原创文章,欢迎转载,但请注明出处. 做测试的难免看到开发画出各种设计图,都很羡慕,比如: 帅么,漂亮么,其实我们测试人员也可以轻松 ...

  4. UML系列04之 UML时序图

    概要 本章对UML的时序图进行介绍,主要内容包括:时序图介绍时序图组成 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3523355.html 时序图介绍 ...

  5. UML系列03之UML时序图

    时序图介绍 时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图.时序图是用来描述系统内部是如何交互运作的,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协 ...

  6. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  7. uml时序图的初印象-------Day64

    近期有好多想法迫不及待的想去实现,但是其实是在那些最開始想的很明确,感觉会没问题的地方也总是会出现故障,导致稍微有些急躁,还是要淡定啊.又到了周末.明后天要收拾东西搬家,不知道宽带能不能顺利的给挪过去 ...

  8. UML时序图(Sequence Diagram)学习笔记

    什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...

  9. UML时序图

    时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图; 时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图 ...

随机推荐

  1. BZOJ4158 : [POI2007]Railway

    论文题. 随便取个关键点,求出最短路树. 求出所有关键点组成的虚树,将两端都在虚树上的边保留. 对剩下的边求出最小生成树即可得到一组可行解. #include<cstdio> #inclu ...

  2. Hadoop虽然强大,但不是万能的(CSDN)

    Hadoop很强大,但企业在使用Hadoop或者大数据之前,首先要明确自己的目标,再确定是否选对了工具,毕竟Hadoop不是万能的!本文中列举了几种不适合使用Hadoop的场景. 随着 Hadoop  ...

  3. object-c cocos2d-x 写程序时注意调试的技巧

    (1)写程序时最好在类的init函数中显示类名,表明现在在执行哪个类,样例代码 CCLOG(@"cocos2d: Using Director Type:%@", [self cl ...

  4. 使用jQuery操作Cookies的实现代码

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...

  5. 添加 Windows 8.1 无虚拟机启动项 解决极品飞车的不支持虚拟机报错

    在Windows 8.1 64位环境下,安装完极品飞车17后,运行程序会出现错误对话框: Sorry, this application cannot run under a Virual Machi ...

  6. 【POJ】2406 Power Strings

    http://poj.org/problem?id=2406 题意:给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的,求 R 的最大值.(长度<=1000000) #i ...

  7. 【BZOJ】1103: [POI2007]大都市meg

    http://www.lydsy.com/JudgeOnline/problem.php?id=1103 题意:一棵n节点的树(1<=n<=250000),m条边(1<=m<= ...

  8. redis_查找命令

    1:文件名查找 find -name "filename" filename可以用通配符 2:文件内行数查找 在vi模式下 ,刚进入vi 输入:128(linenum)   即能跳 ...

  9. 小问题,小细节要注意(string类型转换为bool类型)

    一个表中的推荐字段是bit类型的,添加的时候推荐有两个值,如<asp:RadioButtonList ID="RadioButtonList1" runat="se ...

  10. SpringMVC+Spring+MyBatis整合完整版Web实例(附数据)

    最近段时间正在学习Spring MVC和MyBatis的一些知识.自己也在网络上面找了一些例子来练习.但是都不是很完整.所以,今天,自己也抽空写了个完成的关于Spring MVC + Spring + ...