1. 準備
基於Sublime的PlantUML開發環境搭好後,準備小試一下。
- 安裝Sublime
- 安裝PlantUML插件
- 安裝Graphviz組件
參考這裏
2. 組件圖
- 代碼
@startuml [NB-IoT UE] as UE [E-UTRAN] as eNodeB [SGW] [PGW] [MME] [HSS] [SCEF] [SCS/AS] @enduml
- UML圖
3. 接口圖
- 代碼
@startuml () "LTE-Uu" as Uu () "S1-AP" as S1AP () "S1-U" as S1U () "S11" () "S6a" () "S6t" () "S5/S8" as S5S8 () "SGi" () "T6" () "API" @enduml
- UML圖
4. 組件+接口圖
- 代碼
@startuml 'Components [NB-IoT UE] as UE [E-UTRAN] as eNodeB [MME] [SGW] [PGW] [HSS] [SCEF] [SCS/AS] as SCS 'Interfaces () "LTE-Uu" as Uu () "S1-AP" as S1AP () "S1-U" as S1U () "S11" () "S6a" () "S6t" () "S5/S8" as S5S8 () "SGi" () "T6" () "API" 'Architecture UE - Uu Uu - eNodeB eNodeB - S1U S1U - SGW eNodeB - S1AP S1AP - MME MME - S6a S6a - HSS MME - T6 T6 - SCEF SGW - S11 S11 - MME SGW - S5S8 S5S8 - PGW PGW - SGi SGi - SCS HSS - S6t S6t - SCEF SCEF - API API - SCS @enduml
- UML圖
- 問題:所有的網元和接口完全平鋪,看不出來原來的網絡架構。
5. 組件+位置圖
- 增加位置:PlantUML中使用的是相對位置,不是絕對位置。參考這裏。
- 代碼
@startuml 'Components [NB-IoT UE] as UE [E-UTRAN] as eNodeB [MME] [SGW] [PGW] [HSS] [SCEF] [SCS/AS] as SCS 'Architecture SGW -up- MME SGW -right- PGW eNodeB -left- UE eNodeB -up- MME SGW -left- eNodeB MME -up- HSS MME -right- SCEF HSS -down- SCEF SCEF -right- SCS PGW -up- SCS @enduml
- UML圖
6. 增加接口
- 代碼
@startuml 'Components [NB-IoT UE] as UE [E-UTRAN] as eNodeB [MME] [SGW] [PGW] [HSS] [SCEF] [SCS/AS] as SCS 'Interfaces () "LTE-Uu" as Uu () "S1-AP" as S1AP () "S1-U" as S1U () "S11" () "S6a" () "S6t" () "S5/S8" as S5S8 () "SGi" () "T6" () "API" 'Architecture UE -right- Uu Uu -right- eNodeB eNodeB -right- S1AP S1AP -right- MME eNodeB -right- S1U S1U -right- SGW MME -up- S6a S6a -up- HSS MME -down- S11 S11 -down- SGW MME -right- T6 T6 -right- SCEF HSS -down- S6t S6t -down- SCEF SGW -right- S5S8 S5S8 -right- PGW SCEF -right- API API -right- SCS PGW -up- SGi SGi -up- SCS @enduml
- UML圖
7. 後記
相比Visio,使用PlantUML整體的視覺效果要差一些;但是其代碼編寫的特性,決定了PlantUML可以和其他的開發工具結合,根據代碼自動生成UML圖,自動化維護開發文檔,提高開發效率。