Page 1 of 1

软件架构可视化 C4 模型简介

Posted: Wed Dec 04, 2024 3:50 am
by shahriya668
个世纪以来,架构一直是指设计、规划和构建物理结构的过程。但在过去的几十年里,架构和架构师这两个词越来越多地与软件和 IT 行业的角色联系在一起。这些行业的架构师负责规划、设计、构建、实施、保护和维护复杂的系统——它们的软件和网络架构。

建筑师创建蓝图和施工文件,以便承包商了解完工后需要什么。行业标准使建筑师和承包商保持一致。软件架构师也经常使用图表来组织抽象概念并赋予其视觉意义。问题是软件架构师并不总是使用一致或标准的形状、颜色或符号集。因此,目标受众可能不了解他们需要做什么来创建软件。

在本文中,我们将讨论 Simon Brown 创建的 C4 模型。此模型可以帮助您在向不同受众传达软件架构时尽量减少或消除混淆。

什么是 C4 模型?
C4 模型由一组图表表示,每个图表都描述了软件代码的不同细节级别。这些不同的级别可帮助您以视觉方式从不同角度传达抽象概念。这样,人们就可以放大并探索他们最感兴趣的领域的细节。

例如,经理、高管和其他关键利益相关者可能不需要或不想查看深入研究 以色列电话号码库 软件代码的图表。相反,他们可能对描述软件是什么以及它如何工作的图表更感兴趣。

C4 模型有哪四个级别?
在 C4 中,每个“C”代表不同细节级别的不同类型的模型。这些不同的级别称为上下文、容器、组件和代码。您为这些不同级别绘制的图表可帮助您向正确的受众讲述正确的故事。

第 1 级:系统环境图
在这个层次上,您的图表可以让观众鸟瞰整个系统。系统内部工作原理和技术的细节在上下文图中并不重要。这些图表应该是系统的一般描述——它做什么、谁使用它以及它与之交互的其他系统。

这些图表适合与非技术受众分享。它们可以帮助您的受众了解项目范围、用户是谁以及您想要解决的问题。这些图表可以帮助您的受众了解系统如何适应 IT 环境。

要创建上下文图,请使用简单的形状(例如方框)来表示位于中心的系统。围绕这个中心系统,使用简单的形状来表示与之交互的人员(用户、客户、参与者、角色、人物等)和其他系统。注释您的图表以描述您的解决方案的关系和价值主张。

第 2 级:容器图
该图放大到系统的下一级,详细说明系统将使用的容器以及它们如何相互通信和交互。

容器是执行应用程序所需的代码、库、配置文件和其他数据的集合。例如,桌面应用程序、移动应用程序、服务器端 Web 应用程序等。容器用于在多个环境中运行和部署这些类型的应用程序和数据。

容器图从高层次上定义了每个容器的功能。它们还显示了每个容器将使用哪些技术(Java、HTTPS、JSON、SMTP 等)。这些图适用于技术含量更高的受众,例如软件开发人员和支持技术人员。

第 3 级:组件图
组件图说明了各个容器的详细信息。这些图将容器的结构构建块(代码、文件系统、库)分解为各个组件。该图详细说明了每个组件是什么、其职责是什么、它与其他组件的交互以及技术/实现细节。

组件图可帮助您的团队直观地了解系统的物理结构。这种可视化有助于他们开发更好的软件,因为他们了解每个组件的服务行为和交互。

统一建模语言(UML) 用于绘制组件图。UML 是一种通用的可视化语言,可帮助开发人员了解系统。这有助于他们在现有系统中添加新软件和功能,因为他们可以更好地了解新软件和功能的位置以及它们与系统内其他组件的交互。

第四级:代码
在这里,人们可以放大每个组件来查看其代码。此级别显示每个组件的详细信息以及它们如何作为代码实现。

这些细节可以用UML 类图来绘制。类是具有类似角色的对象的蓝图或模板。类定义对象的结构特征(属性)和行为特征(操作)。

例如,您可能有一个用于创建用户的模板(类)。此模板具有类似的功能,如用户名、地址、电话号码等。您创建的每个用户对象都需要这些信息,但输入的值将使每个用户对象独一无二。此用户帐户类的类图将详细说明其结构并定义需要包含在其中的属性(但不是值)。

如何创建 C4 模型
C4 模型不需要您使用特定的符号或建模语言,尤其是在上下文级别。您可以使用简单的框和线来表示系统、其用户以及与其交互的其他系统。

对于更详细的模型级别,您可能需要考虑使用 UML 符号来使用一致且准确地表示容器、组件和代码的形状和线条。

为了让您能够轻松地使用标准化符号来保持 C4 模型的准确性,您可能需要使用Lucidchart C4 模板。此模板包含一个详细的示例 C4 模型和一个可以拖放到画布上的形状库。您需要做的就是修改和编辑模板以反映您的项目。

Lucidchart 文档存储在云中。这意味着您的团队成员可以随时随地访问它,因为您可以实时定义和详细说明 C4 模型的每个级别。

无论您使用什么图表应用程序,这些基本步骤都将帮助您构建 C4 模型:

Image

将代表您的系统及其用户的形状拖放到画布上。在每个元素上添加一个名称,以便您轻松识别它们。并添加系统的简短描述。
设置一些样式规则,确定每个级别的图表的绘制方式。这可确保 C4 模型一致且易于理解。如果需要,请创建一个图例或图例来描述每个形状和颜色的含义。这可防止您的插图过于模糊。
绘制线条和箭头来显示所有元素之间的连接。在连接器中添加文本来描述每个组件如何相互通信和交互。
为模型中的下一级创建新图层。如果您可以单击元素并深入查看更多详细信息,C4 模型将特别有用。Lucidchart 允许您创建图层,以便查看您单击的组件的更多详细信息。创建新图层时,只需拖放定义您正在绘制的组件详细信息所需的形状和连接器即可。
对模型中的每个细节级别重复这些步骤。
我们还应该提到,为模型中的每个图表添加标题非常重要。标题应该清楚地描述每种图表类型。例如,“网上银行系统的用户帐户组件”。

或者,将图表用作代码,这是 Lucidchart 功能集中的最新高级功能。使用 Mermaid 编码创建完全自定义的 C4 图表,这样您就可以轻松避免错误。请注意,此功能将是静态视觉效果。要在创建图表后更新图表,您需要访问代码库。

模型完成后,请确保需要查看的人可以访问它。Lucidchart 可快速轻松地共享图表,让团队可以在任何地方进行协作。