C4 模型概览 - Archyl Docs

了解 C4 模型以及 Archyl 如何实现它来进行架构文档化

C4 模型概览

C4 模型是一种精简的图形化标记法,用于对软件系统的架构进行建模。它由 Simon Brown 创建,提供了一种在不同抽象层次上沟通软件架构的方式。

为什么选择 C4?

传统架构图通常存在以下问题:

  • 标记不一致:不同团队使用不同的符号
  • 细节层次不当:要么过于抽象,要么过于详细
  • 文档过时:图表不能反映实际情况

C4 模型通过以下方式解决这些问题:

  • 标准化的抽象层次:从高到低有四个清晰的层次
  • 简单的标记法:技术人员和非技术人员都能轻松理解
  • 层次化导航:放大查看更多细节,缩小获取上下文

四个层次

第 1 层:系统上下文

系统上下文图将您的系统显示为中心的一个方框,周围是用户和与之交互的其他系统。

目的:展示全局视图 — 您的系统如何融入整个环境

受众:所有人(技术和非技术人员)

包含

  • 您的软件系统(居中)
  • 使用系统的用户/角色
  • 系统依赖的外部系统

第 2 层:容器

容器图深入到您的系统内部,展示高层次的技术构建模块。

目的:展示主要的技术选择和职责分配

受众:开发团队内外的技术人员

包含

  • 容器(应用程序、数据存储等)
  • 容器之间的关系
  • 与外部系统的连接

第 3 层:组件

组件图深入到容器内部,展示其内部组件。

目的:展示容器由哪些组件组成及其职责

受众:软件架构师和开发人员

包含

  • 容器内的组件
  • 组件之间的关系
  • 技术/实现选择

第 4 层:代码

代码图(可选)展示组件的实现方式。

目的:展示复杂或关键组件的代码级细节

受众:开发人员

包含

  • 类、接口、函数
  • 继承和实现关系
  • 设计模式

Archyl 中的 C4

Archyl 通过以下功能实现 C4 模型:

导航

  • 双击任意元素可深入到下一层次
  • 使用面包屑导航返回上层
  • 键盘快捷键快速导航(← → ↑ ↓)

元素类型

每个层次都有自己的元素类型:

层次 元素类型
系统上下文 系统、外部系统、人员
容器 容器、外部容器
组件 组件
代码 类、接口、函数

关系

可以在任何层次的元素之间创建关系:

  • 从一个元素拖动到另一个元素
  • 添加描述交互的标签
  • 指定使用的技术

样式

自定义图表的外观:

  • 不同元素类型的颜色
  • 自定义图标
  • 使用叠加层分组

最佳实践

从顶层开始

始终从系统上下文图开始。它迫使您思考:

  • 谁使用您的系统?
  • 您依赖哪些外部系统?
  • 您系统的范围是什么?

保持简洁

每张图应能在一个页面/屏幕上显示。如果不能:

  • 拆分为多张图
  • 减少细节层次
  • 使用下一层级展示更多细节

使用一致的命名

  • 使用清晰、描述性的名称
  • 遵循团队的命名规范
  • 避免使用不被普遍理解的缩写

记录关系

关系与元素同样重要:

  • 始终添加描述交互的标签
  • 在相关时包含技术/协议
  • 显示通信方向

后续步骤