软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢?
今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。
一、什么是PlantUML?
PlantUML是一个允许你快速作出UML图的组件:
- 序列图
- 用例图
- 类图
- 对象图
- 活动图(这里是传统的语法)。
- 组件图
- 部署图
- 状态图
- 时序图
也支持以下非UML图表:
- JSON数据
- YAML数据
- Extended Backus-Naur Form (EBNF)图表
- 网络图(nwdiag)
- 线框图形界面或UI模拟图(盐)。
- 架构图
- 规范和描述语言(SDL)
- Ditaa图
- 甘特图
- 思维导图
- 工作分解结构图(WBS)
- 用AsciiMath或JLaTeXMath符号进行数学计算
- 实体关系图(IE/ER)。
此外:
- 超链接和工具提示
- 克里奥尔语:富文本、表情符号、unicode、图标
- OpenIconic图标
- Sprite图标
- AsciiMath数学表达式
关于PlantUML的更多信息,可通过查阅PLantUML官网获取:
https://plantuml.com/zh/
二、如何使用PlantUML?
使用PlantUML画图有多种方式,一种是使用PlantUML在线编辑器,另一种是使用VSCode/PyCharm/IDEA等软件支持的插件来编写。
PlantUML在线编辑器:
http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
下面我们演示一个PlantUML画时序图例子:
@startuml
/'boundary 分界; control 控制器; entity 数据对象; database 数据库; collections 集合'/
'为了图标更加简洁,去掉底部重复的对象
hide footbox
autonumberparticipant SERVICE
database DB
participant AGENTrnote over DB
Database, 数据驱动设计
endnoteSERVICE ->o SERVICE: 服务端处理
SERVICE [#Red]-> DB: 写状态,触发更新事件
note right
Pub/Sub机制
endnote
DB -> AGENT: 发布更新事件activate AGENT
alt 激活事件AGENT --> AGENT: 激活处理
else 去激活事件AGENT --> AGENT: 去激活处理
else 升级事件AGENT <--> AGENT: 升级处理
end
AGENT [#Blue]-> DB: 写状态,触发更新事件
deactivate AGENT@enduml
时序图用来标识某个操作的整个流程,通过时序图可以很清晰地知道某个操作的全流程,以及相关的交互方。
如下是上述代码作出的时序图:
更多PlantUML作图演示,可参考:
https://www.cnblogs.com/wangbin2188/p/16128832.html