|
|
51CTO旗下网站
|
|
移步端
  • 用于软件架构的 C4 模型

    硬件架构图可能是一番奇异实用之关联工具,但很多团队减少了图表的创造,即使有创建图表,也往往模糊不清。

    笔者:Simon Brown 来源:架构头条| 2020-01-15 12:15

    用于软件架构的 C4 模型

    硬件架构图可能是一番奇异实用之关联工具,但很多团队减少了图表的创造,即使有创建图表,也往往模糊不清。本文作者根据自己多年之硬件开发和与组织合作之阅历,谈起了 C4 模型。C4 模型是由一系列分层的硬件架构图组成,该署架构图用于描述上下文、容器、组件和代码。C4 模型的层系结构提供了不同之泛级别,每个抽象级别都与不同之受众有关。同时,C4 模型也是向软件开发集团介绍轻量级建模的一种方法。

    硬件架构图是一种特别好的发挥方式,可以用他们来表达你将如何构建一个软件系统(预先设计)或者现有的软件系统是如何工作之(回首文档、文化分享和学习)。

    然而,你所见到的绝大多数软件架构图很可能只是由混乱的框和线组成。迅速软件开发宣言 的一个副作用就是让众多团队停止或减少了她们的图形和文档工作,包括采取 UML。

    如今,该署团体倾向于依靠他们在白板上绘制的暂时图表,或者采取通用的图形工具(如微软之 Visio)。Ionut Balosin 在上年写了一篇叫作“硬件架构图的技术”的篇章,她在篇章中描述了部分常见问题,该署题材与不可理解的标记和不明显的涵义有关。

    用于软件架构的 C4 模型

    草不清的硬件架构图容易导致误解,这可能会拖慢一个优秀团队的发展步伐。在我们的行当中,咱们真的应该努力创造出更好的硬件架构图。近年,我自己参与软件开发,并与世风各地的团体合作,基于这些经验,我建立了一番称之为“C4 模型”的东西。C4 代表 上下文(Context)、容器(Container)、组件(Component) 和 代码(Code)——系列分层的图形,可以用这些图表来叙不同缩放级别的硬件架构,每个图表都选用于不同之受众。可以将他视为代码的谷歌地图。

    用于软件架构的 C4 模型

    要为你的编码创建地图,第一需要一组通用的泛来创造一种无处不在的语言,用于描述软件系统的常态结构。C4 模型使用 容器(使用程序、数量存储、微服务等)、组件 和 代码 来叙一个软件系统的常态结构。他还考虑到使用软件系统的人数。

    用于软件架构的 C4 模型

    一、先后 1 层:系统上下文

    先后 1 层是系统上下文图,他显示了你正在构建的软件系统,以及系统与用户及其它软件系统之间的关联。以下是一番系统上下文图的示范,叙述了一番互联网银行体系之体系上下文:

    用于软件架构的 C4 模型

    银行的私房客户使用互联网银行体系查看有关银行账户的消息并开展支付。互联网银行体系采取银行现有的直升机银行体系来实行此操作,并利用银行现有的电子邮件系统向用户发送电子邮件。希冀中的颜色表示哪些软件系统已经存在(灰色)以及待构建的体系(蓝色)。

    二、先后 2 层:容器

    先后 2 层是一番容器图,名将软件系统放大,表现组成该软件系统的容器(使用程序、数量存储、微服务等)。艺术决策也是该图的严重性部分。以下是互联网银行体系之容器图示例。他显示了互联网银行体系(伽马射线框)由五个容器组成:服务器端 Web 使用程序、客户端单页面应用程序、移步应用程序、服务器端 API 使用程序和必发娱乐登录。

    用于软件架构的 C4 模型

    Web 使用程序是一番 Java/Spring MVC Web 使用程序,他仅提供静态内容(HTML、CSS 和 JavaScript),包括组成单页应用程序的情节。另一方面页面应用程序是一番运行在他家网络浏览器中的 Angular 使用程序,提供任何的水上银行效益。或者,我家可以运用跨平台 Xamarin 移步应用程序访问互联网银行的一部分功能。单页应用程序和移动应用程序都适用 JSON/HTTPS API,这是由服务器端运行的另一番 Java/Spring MVC 使用程序提供的。API 使用程序从必发娱乐登录中获取用户信息(沟通必发娱乐登录模式)。API 使用程序还采用专有的 XML/HTTPS 接口与现有的直升机银行体系开展通信,以获取有关银行账户或交易的消息。如果需要向用户发送电子邮件,API 使用程序还会调用现有的电子邮件系统。

    三、先后 3 层:组件

    先后 3 层是组件图,名将单个容器放大,以显示其中的组件。该署组件映射到代码库中的真实抽象(例如一组代码)。下是一番虚拟的水上银行体系之组件图示例,表现了 API 使用程序中的一些组件(而不是任何)。

    用于软件架构的 C4 模型

    两个 Spring MVC REST 玉器为 JSON/HTTPS API 提供访问点,每个控制器随后使用其他组件访问必发娱乐登录和大型机银行体系中的数据。

    四、先后 4 层:代码

    说到底,如果你确实想要,或者说有这个必要,可以放大个别组件,以显示该组件的贯彻方式。以下是一番虚拟的水上银行体系之 UML 类图示例(局部),表现了组成 MainframeBankingSystemFacade 组件的编码元素(接口和类)。

    用于软件架构的 C4 模型

    他表明该组件由许多类组成,贯彻细节直接反映了代码。我并不建议创建在这种详细程度的图形,有时候你可以直接从大多数 IDE 官方获取它们。

    五、标志

    C4 模型没有预定义任何特定的标记,你在这些示例图中看到的是一番个简单的标记,租用于白板、纸张、便签、目录卡片和各族图表工具。你也得以运用 UML 表现符号,并适当使用包、组件和原型。不论是你利用哪种符号,我都会提议让每个元素都包含名称、元素类型(即“人口”、“软件系统”,“容器”或“组件”)、艺术选型(如果有之话),以及部分描述性文字。在图表中包含如此多之公文可能看起来很不平凡,但这些附加文本有助于消除软件架构图中常见会出现的不明显的表示。

    即使符号对你来说是有目共睹的,仍然要确保为那些符号提供图例。图例中应当包括颜色、造型、首字母缩略词、线条样式、边框、尺寸等。优秀情况下,标志应该在每个细节层次上保持一致。下是前面显示的容器图的说明。

    用于软件架构的 C4 模型

    说到底,无需忘记了标题,他应当出现在每个图表上,以强烈地讲述每个图表的项目和层面(例如,“地上银行体系之体系上下文图表”)。

    六、更多信息

    C4 模型是一种在不同抽象层次上交流软件架构的简短方法,可以向不同之受众讲述不同之本事。这也是向软件开发集团介绍(普通是重新引入)严谨和轻量级建模的一种方法。有关 C4 模型的更多信息,以及补充图(运作时和部署)的示范、标志清单、常见问题解答、议会讲座视频和工具选项,请参阅 http://c4model.com/。

    七、关于作者

    Simon Brown 是一位专门从事软件架构的独立顾问,也是“Software Architecture for Developers”(面向开发人员的硬件架构、艺术领导力和敏捷性平衡的规范)的作者。她还是 C4 硬件架构模型的奠基人,这是一种创建代码映射的简短方法。Simon 在国际软件开发会议上经常发表演说,并在世界各地旅行,以救助组织可视化和记录他们的硬件架构。

    【编纂推荐】

    1. 七种可能改变IT的“疯狂”艺术
    2. 5G网络技术面临十大挑战
    3. 【深入揭秘Tomcat传感器底层原理】扒下这只又爱又恨的“Tom猫”_IT艺术周刊第607为期
    4. QQ 的担忧,都把写进微信小程序里了_IT艺术周刊第608为期
    5. 快来看望,你正在采取的编程语言流行排行榜!别把时代淘汰了_IT艺术周刊第610为期
    【义务编辑: 张燕妮 TEL:(010)68476606】

    点赞 0
  • 架构  运维  艺术
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    116人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    184人口订阅学习

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    131人口订阅学习

    读 书 +更多

    黑客入侵的主动防御

    该书是一资产非常全面地描述黑客入侵主动防御技术之网络安全工具书。该书的基本点是介绍黑客的攻击手段和提供相应的主动防御保护措施,在集体结...

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微

    <strike id="76300223"></strike>