当前位置: 首页 > news >正文

学习C4模型的新网站

新的 C4 模型网站:C4 模型是一种易于学习、开发人员友好的软件架构图绘制方法。良好的软件架构图有助于软件开发/产品团队内部和外部的沟通、新员工的高效入职、架构审查/评估、风险识别、威胁建模等。

C4模型是:

  1. 一组分层抽象(软件系统、容器、组件和代码)。

  2. 一组层次结构图(系统环境、容器、组件和代码)。

  3. 符号独立。

  4. 独立于工具。

用途和好处
C4 模型是一种易于学习、开发人员友好的软件架构图绘制方法。良好的软件架构图有助于软件开发/产品团队内部和外部的沟通、新员工的高效入职、架构审查/评估、风险识别(例如风险风暴)、威胁建模等。

C4 模型背后的背景是什么?
C4 模型是由Simon Brown创建的,他在担任软件开发人员/架构师的同时,也开始教授软件架构。Simon 的培训课程的一部分是设计练习,其中会向一组人提供一些要求,要求他们进行一些设计,并绘制一些图表来表达该设计。

虽然这是一项以设计为重点的练习,但各种各样的图表表明,将想法可视化是大多数人非常缺乏的一项技能。C4 模型本质上是 Simon 过去可视化软件架构的方式的形式化,多年来不断发展。

虽然确切的日期很难确定,但 C4 模型的根源可以追溯到 2006-2009 年左右,图表类型(“上下文”、“容器”、“组件”、“类”)于 2010 年初命名,而“C4”名称于 2011 年初首次使用。第四种图表类型在 2015-2016 年间从“类”重命名为“代码”。

C4 模型背后的灵感是什么?
C4 模型是在敏捷运动影响下的团队不太热衷于使用统一建模语言(UML) 来记录软件架构(如果他们要创建图表的话)的时代创建的。尽管如此,C4 模型还是受到了 UML 和软件架构 4+1 模型的启发。总之,您可以将 C4 模型视为底层概念的简化版本,旨在 (1) 使软件开发人员更容易描述和理解软件系统的工作原理,以及 (2) 尽量缩小软件架构模型/描述与源代码之间的差距。

C4 模型不是倒退了吗?为什么要重新发明 UML?为什么不直接使用 UML?
您是否认为 C4 模型是进步还是退步取决于您所处的位置。如果您正在使用 UML(或 SysML、ArchiMate 等)并且它对您有用,请坚持使用它。不幸的是,UML 的使用似乎正在减少,许多团队又开始使用临时框和线图。鉴于其中许多团队不想使用 UML(出于各种原因),C4 模型有助于在软件架构的沟通方式中引入一些结构和规则。对于许多团队来说,C4 模型就足够了。而对于其他团队来说,也许它是 UML 的垫脚石。

为什么 C4 模型不涵盖业务流程、工作流、状态机、领域模型、数据模型等?
C4 模型的重点是构成软件系统的静态结构,具有不同的抽象级别。如果您需要描述其他方面,请随意使用 UML 图、BPML 图、ArchiMate 图、实体关系图等来补充 C4 图。

C4 模型是否暗示设计流程或团队结构?
一个常见的误解是,团队的设计过程应该遵循 C4 模型层次结构中的级别,也许团队中的不同人员负责不同级别的图表。例如,业务分析师创建系统环境图,架构师创建容器图,而开发人员负责其余的细节级别。

虽然您当然可以以这种方式使用 C4 模型,但这不是预期或推荐的使用模式。C4 模型只是从不同抽象层次描述软件系统的一种方式,它并不涉及软件交付过程。

使用 C4 描述库、框架和 SDK?
C4 模型实际上是为在各种抽象级别上对软件系统进行建模而设计的。要记录库、框架或 SDK,最好使用 UML 之类的东西。或者,您可以使用 C4 模型来描述框架、库或 SDK 的使用示例;也许可以使用颜色编码来表示软件系统的哪些部分是定制的,哪些部分是为您提供的。

C4模型是否具有普遍适用性?
C4 模型旨在帮助描述、记录和绘制定制的定制软件系统。从这个角度来看,C4 模型可用于描述各种软件架构(单片或分布式)、以各种编程语言构建、部署在各种平台上(本地或云)。

可能不太适合 C4 模型的解决方案包括嵌入式系统/固件,以及依赖于大量定制而非定制开发的解决方案(例如 SAP 和 Salesforce)。即使有了这些解决方案,您仍然会发现系统上下文和容器图很有用。

C4 模型可以扩展吗?
示例图恰好由少量的框和箭头组成,但您可能会问 C4 模型如何与现实世界的软件系统一起使用,其中有 600 个组件而不是 6 个。答案是您选择的工具可以帮助您,也可以阻碍您。

即使软件系统相对较小,人们也会忍不住想在一张图表上包含整个故事。例如,如果您有一个 Web 应用程序,创建一个组件图来显示组成该 Web 应用程序的所有组件似乎是合乎逻辑的。除非您的软件系统真的那么小,否则您可能会在图表画布上用尽空间,或者很难找到没有被无数重叠线条弄乱的布局。使用更大的图表画布有时会有所帮助,但大型图表通常难以解释和理解,因为认知负荷太高。如果没有人理解图表,就没有人会看它。

相反,不要害怕将单个复杂图表拆分成大量简单图表,每个图表都特别关注业务领域、功能领域、功能分组、有界上下文、用例、用户交互、功能集等。关键是要确保每个单独的图表在同一抽象级别上讲述同一整体故事的不同部分。

谁在使用 C4?
Simon 亲自向 30 多个国家的 10,000 多人传授了 C4 模型;会议演讲、视频、书籍和文章的受众远不止这些。其他人也在教授、演讲和撰写有关 C4 模型的文章,而且该模型已被整合到许多工具中。以下是一些案例研究:

  • Spotify:Spotify 工程:软件可视化 - 挑战,已接受
  • Boots:工程领袖:与 Amar Mehan 一起探讨 C4 设计
  • 迪卡侬:大规模软件架构导航:迪卡侬架构流程的见解
  • 合作:LinkedIn 帖子

https://www.jdon.com/75543.html


http://www.mrgr.cn/news/33364.html

相关文章:

  • 基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解
  • 连接实验室服务器并创建虚拟环境,从本地上传文件到linux服务器,使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)
  • java八股笔记-1-java基础
  • 数据结构Python版
  • 翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践
  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • 【langchain学习】深度解析:Langchain TextSplitter 与新型正则表达式分割器的性能对比
  • 单片机原理及应用详解
  • Redis数据结构之set
  • 校园美食导航:Spring Boot技术的美食发现之旅
  • 【416】【举报垃圾信息】
  • 漏洞复现_永恒之蓝
  • MySQL:事务
  • 代码编辑器 —— SourceInsight实用技巧
  • Windows下如何定时执行自定义任务
  • 数据结构—树
  • 学习 git 命令行的简单操作, 能够将代码上传到 Gitee 上
  • 广度/深度优先搜索多维数据的理解
  • 汽车电子零部件(16):ZCU区域控制器
  • Tomcat后台弱口令部署war包
  • Cocos Creator3.x设置动态加载背景图并且循环移动
  • 数字图像面积计算一般方法及MATLAB实现
  • 详解journalctl
  • WinRAR技巧:如何高效制作RAR分卷压缩文件
  • SIP信令的基本流程
  • 江协科技STM32学习- P16 实验-TIM输出比较(PWD驱动LED呼吸灯,舵机,直流电机)