对于程序员来说,为心无旁骛,全心投入到系统架构、软件、算法的设计中,通常不希望双手在键盘与鼠标之间频繁切换,导致大脑焦点不集中,影响工作效率。
然而,在做业务建模、需求、分析、设计时,需要绘制用例图、类图、序列图等,并且绘图软件大多通过鼠标操作。那么,有没有一种绘图软件不需要通过鼠标操作呢?答案就是 plantuml 标记语言。
plantuml 可以嵌入到 markdown 文档中,结合 vim 编辑器,真正实现键不离手。同时,plantuml 的使用者不需要关心图的布局与布线,这些由软件自动完成。相比 visio 等可视化软件,plantuml 绘图的布局布线更加高效、自然。
推荐使用 vnote 软件,其将这上述几个软件集成在一起。
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 一个用例可以使用.>
+ :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,关注最前沿的网络技术。
原文链接