当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 传奇开服需要多少钱?传奇开服服务器是自己买还是租?
  • Unity DOTS系列之托管/非托管Component的区别与性能分析
  • 一起操作一遍git,还不会你找我
  • tensorflow算子调用示例(MINIST)
  • 【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK
  • ARM基础知识点及简单汇编语法
  • 【数据结构-栈】力扣71. 简化路径
  • 【计算机网络 - 基础问题】每日 3 题(二十一)
  • YOLOv8 OBB win10+ visual 2022移植部署
  • 【2023次方 / B】
  • 王红梅老师ppt介绍算法设计一般过程---对上周csdn的补充----可以参考老版教师用书--单链表专题在介绍插入时介绍了正向思维方法,这是更详细的解释跟全面
  • iptables和nftables
  • 淘客系统开发之卷轴模式系统源码功能分析
  • 解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
  • ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • java中具有继承关系的类及其对象初始化顺序
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • overflow: hidden IE7无效
  • PHP面试之三:MySQL数据库
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue 个人积累(使用工具,组件)
  • Vue 重置组件到初始状态
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 编写高质量JavaScript代码之并发
  • 成为一名优秀的Developer的书单
  • 程序员该如何有效的找工作?
  • 解析带emoji和链接的聊天系统消息
  • 算法系列——算法入门之递归分而治之思想的实现
  • 优化 Vue 项目编译文件大小
  • 再谈express与koa的对比
  • 智能合约开发环境搭建及Hello World合约
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​一些不规范的GTID使用场景
  • !!java web学习笔记(一到五)
  • #APPINVENTOR学习记录
  • (007)XHTML文档之标题——h1~h6
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (C#)获取字符编码的类
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (九)c52学习之旅-定时器
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (数据结构)顺序表的定义
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ******之网络***——物理***
  • .Net - 类的介绍
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 常见的偏门问题
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道