在阅读了C4 model并听了Simon Brown's talk之后,我仍然不明白如何在实践中使用它。
AFAIK,C4 模型的主要贡献是简单抽象的“协议”,使图表和文档更接近开发人员。在同一个 C4 更多关于建议,你必须自己弄清楚一些东西(这再次打破了与自定义抽象的“协议”)。
如果 C4 缺少细节,我该怎么办?直到我应该自定义它的程度?
例如:
基础设施、数据流或业务流程等支持图如何适合 C4?
例如,路由器 / 防火墙 / api 网关 / 服务总线是基础设施图中 C4 的容器吗?我找不到任何例子。
扩展 C4 的级别是个好主意吗?
C4 模型只有 4 个级别(不是递归的)。如果我需要第 5 个子系统级别怎么办。
容器关系图(级别 2)中的“数据库容器”是否应包含有关数据库名称、架构名称或数据库技术的信息?
从示例中,doesn't contain,rodoes contain。
是否可以从文档中找到除了琐碎之外的 C4 示例?
C4 model旨在简化。在许多细节仍然不确定的时候,它简化了早期的体系结构工作。它有助于团队与不熟悉 UML 符号所有微妙之处的人进行讨论。
(1)
它并不打算成为所有内容的通用图表技术。因此,没有业务流程建模。上下文级别图提供了更多信息,例如关于用户与系统交换内容的用例图。但它停在那里。BPMN(或demonstrated与 BPMN 一样具有表现力的 UML 活动图)仍然有市场。
它既不打算取代基础架构图表或硬件设计。它专门针对软件密集型系统的需求:什么软件在何处以及如何运行。如果需要细节,UML 部署图并没有死。话虽如此,我认为如果需要了解体系结构,可以很容易地添加一些框来表示防火墙,就像它们是软件元素一样。API 网关最终到达 C4 图片(类似于this example)。
(2)
C4 级别 3 是组件。第 4 级允许您使用任何现有的建模符号来显示更多细节。没有必要重新发明轮子。如果组件仍然非常复杂,您可以使用 UML 的全部功能及其递归地根据需要进行更深入的操作 (并且仅在需要时)。
(3)
它是根据需要的。你可能会开始你的架构,只是确定需要一个数据库。但也许以后,你会在环境中有几个模式,你需要消除歧义。或者只是想记录名称。
(4)
当然,但这超出了范围。
像 Infrastructure,Data Flow 或 Business Process 这样的支持图如何适合 C4?例如,路由器 / 防火墙 / api-gateway / service-buses 是一个 C4 的 Containers at Infrastructure 图?我找不到任何例子。
构成 C4 模型的核心图被设计为专注于静态结构,在不同的细节层次。在 c4model.com 上也定义了一些补充图,其中一个是部署图...这是我将对路由器,防火墙,负载平衡器等进行建模的地方。
还有其他几种图表符号可用于数据流(DFD,UML 序列图,UML 协作 / 通信图等)和业务流程(BPMN,ArchiMate,UML 活动图等)。我的建议是,团队应根据需要使用这些现有的图 / 符号来补充其 C4 模型图。
来自 c4model.com FAQ:“C4 模型的重点是组成软件系统的静态结构,在不同的抽象级别。如果您需要描述其他方面,请随时使用 UML 图,BPML 图,ArchiMate 图,实体关系图等来补充 C4 图。”
扩展 C4 的级别是个好主意吗?C4 模型只有 4 个级别 (不是递归的)。如果我需要第 5 个子系统级别
当然,我见过团队这样做。只要确保你的“扩展”被你的团队 / 组织中的每个人记录和理解。
容器关系图(级别 2)中的“数据库容器”是否应包含有关数据库名称、架构名称或数据库技术的信息?
这取决于您。如果您的数据库是标准的 RDBMS 数据库 / 模式,并且不使用任何专有功能,那么您不一定需要指定技术。相反,您可以在部署图上提及该技术。但是,如果您的数据库正在使用 RDBMS 的特定功能(例如 Oracle 存储过程),并且无法部署到其他 RDBMS 上,那么您也可以指定技术以明确说明这一点。
这是否有可能找到 C4 的例子,除了从文档琐碎?
不幸的是,公开的例子很难得到...这只是组织不想公开他们的文档的性质。在 GitHub 上搜索“c4 模型”应该会找到一些例子。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(41条)