首页/开发/系统分析与架构设计速查/组件图(Component Diagram)
需求分析与建模61 条

组件图(Component Diagram)

按可替换部件描述系统结构:组件、端口、提供接口(棒棒糖符号)、需求接口(插座符号)与装配连接件,适合表达模块边界与依赖方向。

组件图是什么

组件图按可替换的部件描述系统结构:组件、端口、提供接口(棒棒糖符号)、需求接口(插座符号)以及装配连接件。它适合表达模块边界与依赖方向,而不是类之间的实现细节,在评审分层、检查反向依赖时比类图更直观。

基本信息

组件可独立替换与部署的逻辑单元,用 component 构造型标注
端口组件对外交互的接入点,可约定协议与版本
提供接口棒棒糖符号,表示组件对外暴露的能力
需求接口插座符号,表示组件依赖的外部能力
装配连接件把提供接口与需求接口连起来的连接线

PlantUML 示例

PlantUML 示例
@startuml
component "订单 Web" as web
component "订单服务" as order {
  port "api" as api
  port "db" as db
}
component "库存服务" as stock
interface "下单接口" as iOrder
web --> iOrder            # Web 只依赖接口,不依赖具体实现
iOrder -- order           # 接口由订单服务提供
order --> stock : gRPC    # 服务间调用走 gRPC
order --> db : SQL        # 组件内部通过端口访问数据库
@enduml

典型使用场景

  • 分层评审:检查是否出现从底层指向上层的反向依赖
  • 微服务拆分:以组件为候选服务,评估接口与部署单元是否对齐
  • 接口治理:标注每个组件对外提供的接口与版本
  • 上线单元规划:确定哪些组件必须同批部署
  • 对外讲解:用少量组件讲清系统全貌,比类图更容易被非研发理解

看图先看什么

评审组件图先看箭头方向:上层依赖下层是正常的,出现下层指向上层就说明分层已被破坏。再看公共组件被谁依赖:被所有组件依赖的工具组件往往承担了过多职责,会成为变更瓶颈。最后看接口归属:接口由谁提供、谁消费、版本如何演进,这三条决定组件能否独立替换。

组件图是检查依赖方向的工具:如果所有组件都依赖同一个工具组件,说明这个公共层承担了过多职责,正在变成隐形的上帝类。

易错点

  • 组件粒度与代码模块、部署单元三者不一致,评审结论无法落地
  • 只画组件不标接口与版本,演进时兼容性无人负责
  • 用组件图代替部署图,把节点、网络与实例信息混进同一张图
  • 图上声明了接口隔离,代码里仍然跨组件直接访问内部表
  • 组件数量膨胀到几十个方块,一张图看不出主线,评审时无人能读懂全貌

数据来源与参考

  • OMG UML 2.5.1 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌