對於程序員來說,為心無旁騖,全心投入到系統架構、軟件、算法的設計中,通常不希望雙手在鍵盤與鼠標之間頻繁切換,導致大腦焦點不集中,影響工作效率。
然而,在做業務建模、需求、分析、設計時,需要繪制用例圖、類圖、序列圖等,並且繪圖軟件大多通過鼠標操作。那么,有沒有一種繪圖軟件不需要通過鼠標操作呢?答案就是 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
命令。
參考
- plantuml 中文教程
- 軟件方法:業務建模與需求 潘加宇
- planttext線上編輯plantuml
NFVschool 微信公共號
NFVschool,關注最前沿的網絡技術。