markdown工具链plantuml:像写代码一样绘制 UML 模型-用例图

推荐一个chatgpt代理站(支持gpt4): www.gptschools.cn

对于程序员来说,为心无旁骛,全心投入到系统架构、软件、算法的设计中,通常不希望双手在键盘与鼠标之间频繁切换,导致大脑焦点不集中,影响工作效率。

然而,在做业务建模、需求、分析、设计时,需要绘制用例图、类图、序列图等,并且绘图软件大多通过鼠标操作。那么,有没有一种绘图软件不需要通过鼠标操作呢?答案就是 plantuml 标记语言。

plantuml 可以嵌入到 markdown 文档中,结合 vim 编辑器,真正实现键不离手。同时,plantuml 的使用者不需要关心图的布局与布线,这些由软件自动完成。相比 visio 等可视化软件,plantuml 绘图的布局布线更加高效、自然。

推荐使用 vnote 软件,其将这上述几个软件集成在一起。

UML模型

UML (Unified Modeling Language, 统一建模语言) 是非专利的第三代建模和规约语言。在UML系统中有3种主要的模型:

  • 功能模型:从用户的角度展示系统的功能,包含用例图
  • 对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类別图、对象图
  • 动态模型: 展现系统的内部行为,包括序列图,活动图,状态图

UML 模型有9种图,包括:用例图、类图、状态图、协作图、活动图、序列图、构件图、部署图。图是模型中信息的图形表达方式,但是UML模型独立于UML图存在。

不同的UML图使用场景不同,在软件开发的过程中,不同的阶段使用不同的图,通常,软件开发的不同阶段使用到的UML模型图如下:

  • 需求分析用例图,对外部的参与者以及其需要的系统功能建模,表示客户需求;
  • 概要设计类图、状态图、协作图、活动图,描述系统的静态结构、动态特征;
  • 详细设计状态图、协作图、活动图、序列图,产生技术解决方案;
  • 测试类图、构件图、部署图,单元测试使用类图,集成测试使用构建图、部署图。

plantuml 软件是众多支持 UML 建模的开源软件中的一个,其允许用户从纯文本语言创建UML图。

用例图

用例图主要用来描述“用户、需求、系统功能单元”之间的关系。
它展示一个外部用户能够观察到的系统功能模型图。用例图多用于静态建模阶段(主要是业务建模和需求建模),帮助开发团队以一种可视化的方式理解系统的功能需求。

顾名思义,用例图主要由用例、角色、关系组成。

例如,在一个论坛系统中:

  • 用例:登录论坛、发帖子、查询贴子、删除贴子、评论贴子、用户级别管理等;
  • 角色:论坛游客、论坛用户、系统管理员;
  • 关系:用例与角色之间的连接。

用例

plantuml 标记语言中,可以使用如下两种方式表示用例:

  • 使用(..)定义用例,即用例用圆括号括起来;
  • 使用关键字usecase声明用例

上述两种方式都可以使用as定义别名。

@startuml
(登录论坛)
(发帖子) as (tiezi_add)
usecase 删帖子 as tiezi_del
#enduml

include 与 extend

如果一个用例 include 一个用例可以使用.> + :include 表示;
如果一个用例extend 一个用例可以使用.> + :extend 表示;

@startuml

(删除帖子) as (del)
(查询帖子) as (lookup)

del .> lookup : include

@enduml

构造类型

可以使用 <<..>>定义用例或者角色的构造类型

@startuml

(删除帖子) as (del) << 操作 >>

@enduml

角色

plantuml 标记语言中,角色的定义也有两种方法:

  • 使用:...:定义角色,即使用两个冒号将角色括起来;
  • 使用关键字actor定义角色;
@startuml

:游客:
actor 论坛用户 as user
actor 论坛管理者 as admin

@enduml

继承

如果一个角色继承另一个,可以使用<|--符号表示;

@startuml

user <|-- admin

@enduml

关系

plantuml 标记语言中,使用箭头-->连接角色与用例,表示他们之间的关系,默认是竖直方向。
另外, 横杠-越多,表示箭头越长,可以将不同的角色在布局上分开。

@startuml
actor 游客 as visitor
actor 论坛用户 as user

(查询帖子) as lookup
(发表帖子) as add

user --> lookup
user --> add

visitor -> lookup

@enduml

注释
plantuml 使用 note left of, note right of, note top of, note bottom of等关键字声明注释,可通过as声明注释别名,然后使用..连接其他对象。

 @startuml
actor 论坛用户 as user

(查询帖子) as lookup
(发表帖子) as add

user -> lookup
user -> add

note as note1
发表帖子之前需要查询帖子
end note

add .. note1
note1 .. lookup

@enduml

箭头方向

plantuml 中,使用箭头-->连接角色与用例,表示他们之间的关系,默认是竖直方向。可以用一个-表示水平方向

可以给箭头添加left, right, up, down等关键字来改变方向

@startuml

论坛用户 -left-> (查询帖子) 
论坛用户 -right-> (发表帖子) 
论坛用户 -up-> (删除帖子) 
论坛用户 -down-> (更新帖子) 

@enduml

分割

用 newpage 关键字将图示分解为多个页面。

@startuml

论坛用户 --> (查询帖子)

newpage

游客 --> (查询帖子)


@enduml

构图

默认从上往下构建图示。
你可以用 left to right direction 命令改变图示方向。

@startuml

left to right direction
论坛用户 --> (查询帖子)

@enduml

注意:不支持 right to left direction命令。

参考

NFVschool 微信公共号

NFVschool,关注最前沿的网络技术。


原文链接

posted @ 2020-08-23 19:01  可酷可乐  阅读(2925)  评论(0编辑  收藏  举报