C4模型简介:快速指南
简介
该C4模型由西蒙·布朗开发的C4模型提供了一种结构化的软件架构图示方法,包含四个不同的层级,逐步深入探讨软件系统的架构。每个层级都提供独特的视角,并在记录和沟通软件架构方面发挥特定作用。让我们来探讨C4模型的四个层级:

1. 系统上下文图
范围:单一的软件系统。
主要元素:所涉及的软件系统。
支持元素:人员(例如用户、参与者、角色、人物画像)以及与所涉及软件系统直接连接的软件系统(外部依赖项)。
目标受众:所有人员,包括软件开发团队内外的技术和非技术人员。
目的:系统上下文图提供了软件系统架构的初步高层次视图。它是架构文档的起点,从整体上展示系统在其更广泛环境中的位置。在此图中,软件系统以一个中心方框表示,周围是其用户和其他交互的外部系统。重点在于人员和软件系统,而非技术细节,如技术或协议。
推荐给大多数团队: 是。
关键特征:
- 提供系统的鸟瞰视角。
- 强调系统与其用户/外部系统之间的交互。
- 非常适合与非技术人员沟通。
- 细节程度被有意保持在较低水平。
2. 容器图
范围:单一的软件系统。
主要元素:所涉及软件系统中的容器(例如,服务器端Web应用、单页应用、数据库等)。
支持元素:与容器直接连接的人员和软件系统。
目标受众:软件开发团队内外的技术人员,包括软件架构师、开发人员以及运维/支持人员。
目的:容器图深入探讨软件系统,重点关注其高层结构以及责任在容器之间的分配。容器代表可独立运行或部署的单元,例如Web应用程序或数据库。该图还突出显示了主要的技术选型,并展示容器之间如何通信。这对开发人员以及运维/支持人员来说都是一个有价值的工具。
推荐给大多数团队: 是。
关键特征:
- 聚焦于软件系统的架构。
- 描绘容器及其交互关系。
- 突出技术选型。
- 适用于技术利益相关者。
- 不涉及部署相关的具体细节,如集群或负载均衡。
3. 组件图
范围:单个容器。
主要元素:所关注容器内的组件。
支持元素:(在所关注的软件系统内的)容器,以及与组件直接关联的人员和软件系统。
目标受众:软件架构师和开发人员。
目的:组件图提供了容器内部结构的详细视图。它将容器分解为其主要的结构构建块,即组件。这些组件负责容器内的特定任务,并与技术及实现细节相关联。该图对需要理解容器架构更细粒度方面的软件架构师和开发人员尤其有用。
推荐给大多数团队: 否,仅在能带来价值时才创建组件图,并考虑为长期维护的文档自动化生成过程。
关键特征:
- 聚焦于容器的内部结构。
- 识别组件、其职责及实现细节。
- 面向技术利益相关者。
- 并非总是必要,只有在能为文档带来价值时才应谨慎使用。
4. 代码图
范围: 单个组件。
主要元素: 特定组件内的详细代码和技术产物。
支持元素: 组件(在作用域内的容器中)、容器(在作用域内的软件系统中),以及与组件直接连接的人员和软件系统。
目标受众: 高度技术性的人员,通常是开发人员以及深度参与代码库的人员。
目的: C4模型的最终层级——代码图,进一步放大,以深入展示特定组件代码库的细节。该图深入探讨组件内的实际源代码、类结构和技术实现细节。对于需要在特定组件上工作或理解其内部机制的开发人员而言,这一图示尤为有用。
对大多数团队的建议: 实际中很少使用。通常不会创建代码图,因为其提供的详细程度往往已在代码文档和开发环境中涵盖。
关键特征:
- 聚焦于实际源代码和技术产物。
- 提供对组件实现的极其详细的视图。
- 主要面向从事代码工作的开发人员。
- 由于其高度细节化,实际中很少使用,因为这些信息通常在代码库本身中即可获取。
结论
C4模型的四个层级为软件架构的文档化和沟通提供了结构化的层级,从系统上下文图中的高层次概览开始,逐步深入到代码图中的实际代码。这些图示针对不同受众,从需要宏观视角的非技术利益相关者,到需要深入代码级洞察的高技术开发人员。通过采用C4模型,软件架构师和开发团队能够有效传达复杂的架构设计,并促进组织内外的更好理解与协作。













