markdown工具鏈plantuml:像寫代碼一樣繪制 UML 模型-用例圖


對於程序員來說,為心無旁騖,全心投入到系統架構、軟件、算法的設計中,通常不希望雙手在鍵盤與鼠標之間頻繁切換,導致大腦焦點不集中,影響工作效率。

然而,在做業務建模、需求、分析、設計時,需要繪制用例圖、類圖、序列圖等,並且繪圖軟件大多通過鼠標操作。那么,有沒有一種繪圖軟件不需要通過鼠標操作呢?答案就是 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,關注最前沿的網絡技術。


原文鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM