【注】本文节译自:https://c4model.com/
请建筑行业中的人以视觉方式介绍一下建筑结构,你会看到场地平面图、楼层平面图、楼层立面图、横截面图和细部图。相比之下,请软件开发人员用图表来交流软件系统的体系架构,你很可能会得到一堆乱七八糟的方框和线……不一致的表示法(颜色编码、形状、线条样式等),不明确的命名、未标记的关系、通用术语、缺少技术选择、混合的抽象,等等。
作为一个行业,我们确实拥有统一建模语言(UML)、ArchiMate 和 SysML,但询问这些工具是否提供有效的软件架构通信方式通常是无关紧要的,因为许多团队已经将它们抛弃了,取而代之的是更简单的“方框和线”图。放弃这些建模语言是一回事,但是,也许在敏捷竞争中,许多软件开发团队已经失去了可视化交流的能力。
你的代码地图创建 C4 模型是为了帮助软件开发团队描述和交流软件架构,不论是在前期设计讨论还对现有代码库进行回顾性文档化。这是在各种细节层面创建代码映射的方法,就像使用 Google Maps 之类的工具来放大或缩小您感兴趣的区域一样。
像源代码一样,Google 街景视图提供了一个非常底层且准确的位置视图。
如果你缩小视野,在一个不熟悉的环境中导航会更容易。
进一步缩小将提供您可能尚未意识到的附加上下文。
不同的缩放级别可让您向不同的受众讲述不同的故事。
尽管C4模型主要针对软件架构师和开发人员,但它为软件开发团队提供了一种有效且有效地交流其软件体系结构的方法,该方法可以进行不同级别的详细说明、向不同类型的受众讲述不同的故事,不管是在进行前期设计或还是现有代码库进行回顾性文档化的时候。
级别1:系统上下文图提供了一个起点,显示了范围内的软件系统如何适应其周围环境。
级别2:容器图放大了范围内的软件系统,显示了高级技术构件。
级别3:组件图放大了单个容器,显示其中的组件。
级别4:代码图(例如UML类)可以用来放大单个组件,以显示该组件的实现方式。
不同的缩放级别可让你向不同的受众讲述不同的故事。
C4 模型是用“抽象优先”的方法绘制的软件架构图,它基于反映软件架构师和开发人员如何思考和构建软件的抽象。少量的抽象和图表类型使 C4 模型易于学习和使用。
好的软件架构图的重要性好的软件架构图有助于沟通(在软件开发/产品团队内部和外部)、新员工入职、风险识别(例如,风险风暴)、威胁建模(例如 STRIDE 和 LINDDUN)等。好的软件架构图表有助于使每个人对所构建软件的理解保持一致,从而有助于提高团队效率。
,