时序图是可视化地展示对象与对象之间的联系的图,与其他的图相比,它跟侧重于表现为了完成一个用例,对象之间是怎么协同工作的。

之前学习的组件图、用例图都能表现对象之间的联系,侧重的是“有哪些联系”,这是属于水平维度的展示,而时序图,它更像一个是从纵向维度用一个个的用例,将各个对象串起来,从而展现出它们之间的联系,在软件开发中,有了时序图,基本上就可以指导软件开发了。

1、基本元素

a、角色(actor)

角色不一定是人,也可以是组织、模块或者其他的系统以及子系统,用下图表示。

创建时序图的时候,在staruml里的工具栏里是找不到这个图的,需要在创建的module右键,选择 add,选择 actor

然后将左键长按actor1拖动到绘画面板里,就可以添加了,不要使用用例图里的小人,否则无法画出生命线。

b、对象

(1)对象的命名

对象名称,包含两部分:对象名+类名,中间用”:”隔离开来,有三种命名方式;

第一种:对象名+类名,比如说 猫头鹰:鸟;

第二种:类名,如果在项目中,无需区别具体的对象,可以省略掉对象名,但冒号不能省略,以表示这是一个类名,比如说:鸟;

第三种:对象名,如果项目中无需区别具体的类,可以直接写对项目名,比如说 猫头鹰。

(2)命名方式的选择

命名只要遵循命名规则,选择最能让时序图逻辑清晰地命名方式。

(3)对象的排序

遵循两个约束:交互频繁的尽量在一起(减少跨对象连接线的数量),用例发起者要放在最左端(遵循普通人的思维,从左往右)。

c、生命线

从对象上向下延伸的虚线,表示对象存在的时间

d、控制焦点

代表对象活跃的时间区间,所谓活跃,就是该对象在执行内置逻辑,运行代码,类似于在代码里表示{},是用一个小矩形表示。

控制焦点可重叠,两个控制焦点重叠,就相当于{{}}

e、消息

消息分为发送消息和返回消息,发送消息又根据发送形式不同,分为同步消息和异步消息

发送消息类似于代码中的调用关系,A对象调用B对象,就相当于A对象向B对象发送了调用消息,需要B执行相关逻辑,箭头指向消息接收方,也就是B

同步消息代表着调用之后,要一直等待,等待消息处理并返回;异步消息则可以马上回来,去做别的事情,所以如果是同步消息,并且需要画返回消息,则控制焦点就需要拉长,直到返回消息回来,而异步消息就没有这个限制

返回消息就是发生调用之后返回的结果,有返回消息,之前必须要有发送消息。

f、自关联消息

对象内方法调用

g、迷路消息和拾取消息

迷路消息,意思是消息发出去了,没有被处理或者接受者不在这个系统里,没有被处理的情况,不存在于函数调用中,存在于消息队列中,当消息队列中的消息出列被处理的时候,发现不存在处理者;

拾取消息,意思是来自其他系统的消息。

2、高级元素

高级元素是在时序图中加入逻辑控制,指示交互执行的条件和方式,总共有13种

着重描述常用的四种

a、抉择(alt)

抉择就相当于if else,两条路只能走一条

在staruml中,所有的高级元素(也称组合片段)都是通过这个来画的,通过设置它的属性来决定画哪种高级元素

改变交互操作属性为 alt,此时在图标中显示地就是alt

注意:此处的name已经被我删除掉,所有这里没有显示name,在使用的时候,name可以有也可以没有

双击seq,会出现一个黑色小框,点击它

中间会出现一条黑色的线

在上面的框框任意处双击,会出现一个文本框,在文本框里填写条件

这代表的意思就是 当 a>0的时候,执行第9条命令,否则执行第10条命令

b、选项 (opt)

包含一个可能发生或可能不发生的序列。 可以在临界中指定序列发生的条件,对应于 switch

画法与alt画法类似,只是 交互操作属性 设置成opt。

c、循环(loop)

相当于 for,while,foreach

无限循环

循环10次

从1循环到10

一直循环,直到当num<0的时候退出

d、退出循环(break)

当满足条件的时候退出循环(案例图的意思是 当num等于10的时候执行save命令,并退出循环)

e、 并行执行(par)

代表同时进行,与编码中的并行概念一致。

3、画图思想

第一,划清界限,图不能呈现太多的重点,所以有些上游的流程和下游的流程,不要画进去,否则会导致整个图失去重点,如果确实需要表达一种语境,可以添加ref的高级元素(可以理解为子系统)。

这是成绩查询系统,查询啊前肯定是要登录的,但是这张图的重点是查询逻辑,登录的逻辑可以用这个高级元素替代即可。

第二,理清角色和对象,对象一定是名词,不能是动词。

注意:StarUML 删除的时候一定要用 Ctrl+delete,直接delete是删不掉的,只是不可见,它还是会占用位置!

本文学习文章:http://www.woshipm.com/ucd/607593.html

https://www.jianshu.com/p/e8a53300aa79

https://sparxsystems.cn/resources/uml2_tutorial/uml2_sequencediagram.html

疑问:一个对象引出多个生命线,这个还不知道怎么画

类似于此(来自 https://sparxsystems.cn/resources/uml2_tutorial/uml2_sequencediagram.html)

【StarUML】时序图的更多相关文章

  1. starUML建立时序图

    对于经常看项目代码或者写项目的人.时序图可以帮助理解.记录项目.设计项目等用途. 1.starUml下载安装比较简单,这里不再赘述.打开starUml 2. 在Model Explorer 中,在Un ...

  2. StarUML中时序图

    StarUML中时序图 在看时序图的例子的时候,发现有些的时序图上有小人的图标,可是一些UML工具却没有找到小人的图标,这让我很闹心,一直没解决,今天终于将该问题给解决了.解决这个问题来自于网上的一个 ...

  3. 安装StarUML 及使用时序图(Sequence Diagram)和用例图(use case diagram)

    时序图 用例图

  4. StarUML中时序图添加小人

    转载于 http://blog.csdn.net/longyuhome/article/details/9011629 在看时序图的例子的时候,发现有些的时序图上有小人的图标,可是一些UML工具却没有 ...

  5. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  6. 使用Astah制作UML时序图

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

  7. SPI总线协议及SPI时序图详解

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...

  8. GIT FLOW 时序图

    git flow sequence md link: git branching model master->master branch: use default branch Note rig ...

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

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

随机推荐

  1. Centos下安装Oracle12c

    总结一次安装oracle的折腾血泪史环境准备 centos7 虚拟机VMware Workstation Pro14 IP:192.168.245.128(根据实际情况) 4G物理内存,8G虚拟内存, ...

  2. R语言函数化学习笔记4

    条件语句和循环语句 当你说话时候用到了如果,此时条件出现了 举个条件函数的例子 sign_t<-function(x){ if(x>0){ return(1) }else if(x< ...

  3. Linux的VMware虚拟机无法上网问题

    很多时候,Linux无法上网,不管改成nat模式还是主机模式都不行.这时候可以选择进行重置: 首先点击编辑,之后点击虚拟网络编辑器, 然后移除VMnet0和VMnet8网络,点击确定: 然后再打开虚拟 ...

  4. 《深入理解java虚拟机》读书笔记二——第三章

    第三章 垃圾收集器与内存分配策略 1.判断对象是否已死 引用计数法: 给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,每当引用失效时,计数器值就减1. 任何时刻计数器为0的对象就是不 ...

  5. 虚拟机中的CentOS 7设置固定IP连接最理想的配置(转载)

    来源:虚拟机中的CentOS 7设置固定IP连接最理想的配置(https://my.oschina.net/panhongju/blog/826814) 转载说明:这是我看了很多篇虚拟机静态IP配置写 ...

  6. 将本地文件git到远程github仓库

    使用git管理项目是开发人员必备的技能,下面就介绍如何使用git将本地文件管理并且同步到github上面. 小白可以参考 创建SSH-key并且在github中添加认证 在本地用户的.ssh文件下面生 ...

  7. Centos 修改yum源为aliyun

    修改服务器源,避免长途跋涉到国外: 位置: vim  /etc/yum.repos.d/CentOS-Base.repo aliyun地址: 设置aliyun的yum源 wget -O /etc/yu ...

  8. 常用UrlEncode编码结果

    空格 ! # $ % + @ : = ? %20 %21 %23 %24 %25 %2B %40 %3A %3D %3F

  9. python2下解决json的unicode编码问题

    基础知识:   序列化——json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串)   反序列化—— ...

  10. [HNOI2017] 礼物 - 多项式乘法FFT

    题意:给定两个 \(n\) 元环,环上每个点有权值,分别为 \(x_i, y_i\).定义两个环的差值为 \[\sum_{i=0}^{n-1}{(x_i-y_i)^2}\] 可以旋转其中的一个环,或者 ...