用于可视化软件架构的 C4 模型:制图与建模

制图与建模

作为一个行业,我们倾向于使用图表而不是建模,主要是因为进入的门槛相对较低,并且一般来说制图比建模要简单得多。绘制图表时,通常创建一个或多个图表、使用一个特殊的特殊的标记、使用不理解任何图表语义内容的工具(比如 Microsoft Visio 或白板)。 图表工具的领域语言实际上只是框和线,所以你不能问它们诸如“组件 X 有哪些依赖关系?”之类的问题。此外,跨图重用图元素通常是通过复制(即复制和粘贴)来完成的,这样当重命名这些元素时,你要注意使图保持同步。值得注意的是,无论你是制图还是建模,都可以使用 C4 模型,但是当您从制图过渡到建模时,会有一些有趣的机会做些不同的尝试。

通过建模,您可以构建某种事物的非可视模型(例如软件系统的架构),然后在该模型之上创建不同的视图(例如图表)。这需要更严格一些,但结果是所有元素和他们之间关系要一一对应的定义。反过来,这又允许建模工具理解你要做的事情的语义,并在模型之上提供额外的智能。它还允许建模工具提供自动化的可视化效果。

前面有一节提到的一个常见问题是关于绘制大型复杂软件系统的图表。一旦你开始在一个图上有超过 20 个元素(以及它们之间的关系),结果图就会变得混乱不堪。如同下面图 1 所描述的单个容器的组件图。

解决这个问题的一种方法是不在一个图上显示所有组件,而是创建多个图,每个“切片”通过容器创建一个图(下图2)。 这种方法当然可以提供帮助,但是值得一问的是,这样的图是否有用。你如果要使用它们,您会用来干什么?尽管“系统上下文”图和“容器”图非常有用,但是大型软件系统的组件图通常没有什么价值,因为它们很难保持最新状态,并且你可能会发现很少有人看它们,特别是不把它们放在文档或演示文稿中的话。

用于可视化软件架构的 C4 模型:制图与建模

一旦图上的元素超过20个,这个图很快就会变得混乱堪。

用于可视化软件架构的 C4 模型:制图与建模

创建多个图(每个“切片”一个)可能会有所帮助

创建多个图(每个“切片”一个)可能会有所帮助,尽管生成的图往往非常简单、并且增加了要持续更新的工作量。

用于可视化软件架构的 C4 模型:制图与建模

除了创建图表之外,你还可以使用其他可视化方法。图中的可视化显示了容器内组件之间的依赖关系。

除了创建图表之外,你还可以使用其他可视化方法。图中的可视化显示了容器内组件之间的依赖关系。

用于可视化软件架构的 C4 模型:制图与建模

这个替代的可视化显示了模型中的所有元素和关系,过滤后显示了模型的一个子集。

通常,图本身并不是最终目标,团队使用图来回答他们遇到的其他问题,比如“组件 X 有哪些依赖关系?”。在这种情况下,构建一个模型让你能回答这样的问题,而无需花费额外的精力来创建图表。换句话说,一旦有了一个模型,就可以用多种不同方式可视化它(上面的图 3 和图 4),帮助你回答你想要回答的真正问题。图当然是交流软件架构的一种绝妙方法,但其他可视化也可以。

元模型

如果您对 C4 模型或构建工具来支持它有兴趣,这里有一些有关基本元模型的信息。

元素和关系

用于可视化软件架构的 C4 模型:制图与建模

视图

用于可视化软件架构的 C4 模型:制图与建模

来源:信码由缰

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月5日
下一篇 2020年10月5日

相关推荐