当前位置: 首页 > news >正文

UML-时序图以及PlantUML绘制

介绍

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

组成元素

角色(Actor)

系统角色,可以是人或者其他系统,子系统。

对象(Object)

对象代表时序图中的对象在交互中所扮演的角色,位于时序图顶部和对象代表类角色

生命线(Lifeline)

生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间 的消息存在于两条虚线间

控制焦点(Activation)

控制焦点代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。

消息(Message)

消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信。与编程环境相似,消息有许多不同的类型

同步消息(Synchronous Message)

消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。

异步消息(Asynchronous Message)

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。

返回消息(Return Message)

返回消息表示从过程调用返回。以小于号+虚线表示。

自关联消息

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

示例

在这里插入图片描述

上图以一个用户登录某网站的场景来说明了时序图中的各个元素在图中的作用。

组合片段

片段类型名称说明
Loop循环在满足循环的前提下,不断的重复做某些事
AltAlternatice的缩写条件分支,根据不同的条件选择不同的执行分支(类似编程中的 if else)
OptOptional的缩写可选分支,满足一定条件执行分支,否则跳过(类似编程中的if)

Loop(循环)

比如某部门每个周五都会固定开周会。我们可以这样表达
在这里插入图片描述

Alt(选择)

比如某个部门每周一至周五需要提交日报,周五下班前需要提交当周的周报我们可以这么表达
在这里插入图片描述

Opt(判断)

比如某个部门的研发同学周五需要开会,其他角色不需要,我们可以这么表达

在这里插入图片描述

PlantUML

我们再画UML的时候可以借助一些工具,比如startUML拖拽的,还有PlantUML可以使用代码生成的。这里介绍我自己比较喜欢的PlantUML工具

网站

PlantUML在线网站

基本语法

使用起来也比较简单。这里介绍一些基本的语法,一般情况下也足够满足我们的日常使用了。一般我们会以 @startuml 开始,以@enduml结束。

标题

表改图的主要内容,一般放在第一行,使用方式如下:

title your title

autonumber

申明之后会在时序图中自动显示操作序号,使用方式如下:

autonumer

申明参与者

使用 participant 关键字来声明一个参与者可以使我们对参与者做出更多控制。
关键字 participant 用于改变参与者的先后顺序,关键字 as 用于重命名参与者
可以使用下面这些关键字来声明参与者,这会改变参与者的外观:
• actor(角色)
• boundary(边界)
• control(控制)
• entity(实体)
• database(数据库)
• collections(集合)
• queue(队列)
我们可以在上述工具网站上看各种关键字的效果

@startuml
participant participant as Foo
actor actor as Foo1
boundary boundary as Foo2
control control as Foo3
entity entity as Foo4
database database as Foo5
collections collections as Foo6
queue queue as Foo7
Foo -> Foo1 : To actor
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7 : To queue
@enduml

在这里插入图片描述

消息

箭头说明
->实线同步消息
–>>虚线返回消息
->>实线异步消息

注释

一般使用note left/right来注释

LOOP

@startumltitle 每周五周会通知
participant 周会提醒服务 as service
actor 部门员工 as userloop 今天是周五service -> user: 发送周会邀请通知
end 
@enduml

ALT

使用方式如下:

ALT 今天是否是周五service -> user: 一周周报提醒 & 周会通知
ELSE 今天不是周五service -> user: 当日日报提醒
END

OPT

Loop 今天是否是周五Opt 是否是研发同学service -> user: 周会通知ELSEservice -> user: 其他同学正常工作end 
end

分隔符

可以通过使用 == 关键词来将你的图表分割成多个逻辑步骤。

@startuml
== 初始化 ==
Alice -> Bob: 认证请求
Bob --> Alice: 认证响应
== 重复 ==
Alice -> Bob: 认证请求
Alice <-- Bob: 认证响应
@enduml

本文图例PlantUML

DEMO1

@startumltitle 用户登录某网站
autonumber
actor 用户 as user
participant 某网站 as webuser -> web: 登录操作
note left: 这是同步消息
activate user
activate web
web -> web: 验证账号密码
note right: 这是自关联消息web -->> user: 验证成功,登录成功
note right: 这是返回消息deactivate web
deactivate useruser ->>web: 查看网页内容1
activate user
user ->>web: 查看网页内容2
deactivate usernote left: 这是异步消息@enduml

在这里插入图片描述

DEMO2

@startumltitle demo 汇总
participant 周会提醒服务 as service
actor 部门员工 as user== LOOP demo ==loop 今天是周五service -> user: 发送周会邀请通知
end == ALT demo ==
ALT 今天是否是周五service -> user: 一周周报提醒 & 周会通知
ELSE 今天不是周五service -> user: 当日日报提醒
END== OPT demo ==Loop 今天是否是周五Opt 是否是研发同学service -> user: 周会通知ELSEservice -> user: 其他同学正常工作end 
end@enduml

效果如下所示:
在这里插入图片描述

参考文件

百度百科
书籍-UML需求分析

http://www.lryc.cn/news/13207.html

相关文章:

  • 【Redis】Redis 有序集合 Zset 操作 ( 简介 | 查询操作 | 增加操作 | 删除操作 | 修改操作 )
  • Java特性之设计模式【策略模式】
  • IR-CUT 保证摄像机成像效果的滤镜
  • openpnp - 普通航空插头和PCB的连接要使用线对板连接器
  • Python3 错误和异常实例及演示
  • Android 9.0第三方app根据包名设置为横屏显示
  • MySQL会导致索引失效的情况与解决索引失效的方法
  • 使用nginx单独部署Vben应用
  • ES6新特性详解
  • Ubuntu下安装 ntfs-3g
  • 【专业认知】抖音就业 / 保研北大教育学 / 留学南加州EE / 微软就业
  • 【算法题】2 的 n 次幂的背后
  • 【人工智能AI】一、NoSQL 企业级基础入门《NoSQL 企业级基础入门与进阶实战》
  • Ubuntu安装opencv库3.4.10,并在cmake工程中引入opencv库
  • 实现8086虚拟机(四)——mov 和 jmp 指令解码
  • 数据库技术-函数依赖、键与约束、范式
  • shiro CVE-2020-1957
  • RabbitMQ 入门到应用 ( 五 ) 基本应用
  • 部署dapr的辛酸历程
  • golang入门笔记——内存管理
  • 97. 约数之和
  • 想和20岁的自己说
  • Unit Test and Integration Test
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题(3)
  • 智慧城市应急指挥中心数字化及城市驾驶舱建设方案
  • HSCSEC 2023 个人练习
  • Android 基础知识4-2.7 RelativeLayout(相对布局)
  • 关于云计算,我们问了ChatGPT 10个问题
  • Netty学习笔记1
  • RISK-V品牌的中国化历程(中)