Java 版:下载 JAR 包,命令行运行:java -jar plantuml.jar your_file.puml
IDE 插件:VS Code、IntelliJ IDEA、Eclipse 等均有插件,保存即生成图像
在线版:通过 PlantUML 网站或 Kroki 服务
核心优势:
UML 全覆盖:类图、时序图、用例图、活动图等所有 UML 类型
文本驱动:代码即图表,版本控制友好
批量生成:一次编写,自动生成多张关联图表
集成能力:与 CI/CD 流水线集成,代码变更自动更新图表
语法示例(类图):
@startuml
class Customer {
-id: Long
-name: String
+getOrders(): List<Order>
}
class Order {
-id: Long
-total: Double
+calculateTax(): Double
}
Customer "1" --> "*" Order : 下订单
@enduml
使用场景:
软件设计阶段:系统建模和架构设计
教育领域:UML 教学和课件制作
大型项目文档:完整的系统设计文档生成
实用技巧:
安装 Graphviz(开源布局引擎)获得更优的自动布局效果
使用 skinparam 自定义图表样式,如颜色、字体
在 Markdown 中使用 PlantUML 代码块,文档与图表同步更新
5. Structurizr DSL:C4 模型标准实现
安装与使用:
命令行:下载 structurizr-cli,通过 DSL 文件生成图表
IDE 插件:VS Code 插件支持语法高亮和验证
云服务:Structurizr 网站提供免费个人版和付费团队版
核心优势:
C4 模型原生支持:Simon Brown(C4 模型创始人)官方推荐工具
层次化建模:完整支持 Context/Container/Component/Code 四级抽象
自动布局:生成专业美观的架构图,无需手动调整
文档生成:不仅生成图表,还能输出完整架构文档
DSL 语法示例(系统上下文):
workspace OnlineBookstore {
model {
person(customer, "顾客", "浏览和购买图书")
softwareSystem(bookstore, "在线书店系统", "提供图书浏览和购买功能")
relationship(customer, bookstore, "浏览/购买图书", "HTTPS")
}
views {
systemContext(bookstore, "系统上下文图", "在线书店与外部用户的交互") {
include customer
include bookstore
}
}
}
使用场景:
企业级架构设计:大型系统的标准 C4 建模
架构评审:为技术委员会提供标准化的架构视图
文档驱动开发:生成符合 C4 标准的架构文档和图表
入门建议:
学习 C4 模型基本概念(Context、Container、Component、Code)
从简单的系统上下文图开始,逐步构建完整模型
使用 VS Code 插件获得更好的开发体验
6. Diagrams (Python):云原生架构代码生成器
安装:
pip install diagrams
核心优势:
云服务全覆盖:AWS(2000+ 图标)、Azure、GCP、K8s、阿里云等主流云平台
代码即图表:用 Python 代码描述架构,版本控制友好
高度定制:可自由组合云服务组件,创建复杂的多层架构
自动化:与 CI/CD 集成,代码变更自动更新架构图
代码示例(AWS 三层架构):
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Web Service with DB", show=False):
elb = ELB("lb")
web = [EC2("web1"), EC2("web2"), EC2("web3")]
db = RDS("db")
elb >> web >> db
使用场景:
云原生架构设计:AWS/Azure/GCP 等云环境的架构可视化
DevOps 流程:基础设施即代码 (IaC) 的配套文档
微服务架构:展示服务间的依赖关系和数据流
进阶用法:
使用 Cluster 分组相关组件,使图表更清晰
自定义节点样式(颜色、大小),突出关键组件
与 Mermaid 或 PlantUML 结合,在文档中同时展示高层和细节架构
7. Go-Diagrams:Golang 开发者的架构图工具
安装:
go get -u github.com/blushft/go-diagrams
核心优势:
Go 语言原生支持,与 Go 项目无缝集成
丰富的云服务图标库,支持 AWS、Azure、GCP、K8s 等
无需外部依赖,二进制文件独立运行
代码示例:
package main
import (
"github.com/blushft/go-diagrams/diagram""github.com/blushft/go-diagrams/targets/aws/compute""github.com/blushft/go-diagrams/targets/aws/network"
)
funcmain() {
diag := diagram.New("Go Web Service", diagram.Portrait)
diag.NodeSpace(200, 100)
lb := diag.Node("LB", network.LoadBalancer())
web := diag.Nodes("Web", 3, compute.EC2Instance())
db := diag.Node("DB", compute.Database())
lb.Connect(web...)
for _, w := range web {
w.Connect(db)
}
diag.SavePNG("architecture.png")
}