- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作为架构师你应当晓得 - C4 model
2021-09-05
概述
最近在开发系统中,发觉需要一种方式来构建对于当前系统的理解和细化,UML是我一下子映入脑海的方式,但是很久不再接触了,刚好在前段时间看到关于C4model相关文章,刚好可以试试
架构图的次要功能是从各个角度和各个层次去描述系统的功能,次要是从宏观到微观的描述。C4 Model也是供应图形从不同的层次去描述我们的系统。次要的优势是C4 Model供应很少的笼统图形要素和图类型来描述系统,使得各个系统参与者都能很快理解系统的功能。这些图从层级上来看都是缩放的,就行谷歌地图一样
地图
为了构建实际系统的笼统。C4 Model对于系统的描述供应了四个笼统层次:
笼统
这个笼统层次里面包含5个要素
Software System:软件系统最高的笼统层次,描述了交付给用户完成用户所需功能的系统。
Person:使用系统的人或者角色
Container:容器是独立运转一些代码和数据,组合起来完成系统功能的要素。一个容器可以是Server-side web application、Client-side web application、Client-side desktop application、Mobile app、Server-side console application、Microservice、Database、Blob or content store、File system、Shell script等。
Component:组件一组相关功能的封装,对外供应良好的接口。
基于这四个层次的笼统,C4 Model由4张核心图和3张附加图组成
四张核心图
4张核心图分别为系统上下文图(Context)、容器图(Container)、组件图(Component)、代码图(Code),代码图是实际的类实现,可选。
系统上下文图
系统上下文图
系统上下文图次要表述的是当前要开发的系统和周边环境的关系,包括系统和用户之间的关系和系统和周边系统的关系,在系统上下文图里,方块指代的是软件系统,蓝色表示我们关注的系统(位于中心),灰色表示我们直接依靠的系统或者依靠我们的系统,虚线框一般用于用于聚合相关元素。
容器图
容器图
当我们理解了当前关注的系统在整个IT环境中的地位的时候,需要将当前系统放大,观看里面的内部结构,放大后就会看到容器,如上图所示,C4模型认为系统是由容器组成的。容器图显示的是软件架构中各个独立的部分(一般是一个独立的进程),每个容器的职责和他们间是如何交互的,以及容器与其他系统是如何交互的。它显示了当前软件系统的技术选型和交互方式。它是一个简约的、以高级技术为重点的图表,对软件开发人员和支持/操作人员都很有用
组件图
组件图
连续放大容器,可以看到每个容器里有哪些组件组成,组件的职责是什么,组件是如何交互的。组件次要是相关功能的聚合,供应对外的接口
代码图
代码图
代码图跟UML里面的类图很类似。除非格外重要的且还没有写出代码的组件才画代码图。核心图次要固定了我们系统的笼统层次,便利争辩和理解。
三张扩展图
核心图让我理解了系统静态架构,三张扩展图,可以让我们关注更多的维度。
系统景观图
image.png
系统景观图是比系统上下文图更丰富的系统级别的表达。不像上下文图只关注聚焦系统和它的直接关系,连一些间接相关的系统都会标示出来,包括那些外部系统相关的用户。系统景观图的意义在于从企业的整个IT架构来看待当前要构建的系统的功能和价值。
动态图
动态图
动态图不同于上面全部静态图的表达,它表达的系统的某个运转态,这个运转态中完成了一个用户的场景或者功能。所以一般有步骤,有挨次。而且可以在各个层级去描述这个动态图。
部署图
部署图
部署图次要描述系统在容器级别是如何实际部署到物理基础设备中的。
图形符号(Notation)如何描述
C4模型没有规定任何特殊的图形。所以简约的图形就可以描述,如下
Notation
我们可以使用颜色和外形是的图形描述愈加清楚。全部图形都需要是自描述的。下面有一些关于图形符号的实践推举
图
每张图都应当有个标题标明图类型和范围
图中需要有个图例来解释所使用的图形符号(比例 外形、颜色、边框样式等)
图形里面的缩写全部受众都能理解
元素
全部元素的类型需要被明确指定
全部元素都需要一个简约描述,描述其核心职能
全部的容器和组件都需要明确的指定技术
关系
全部关系线都只表示单向的关系
每一行都应当加上标签,标签应当与关系的方向和意图保持全都(例如依靠关系或数据流)。尽量把标签写得具体些,最好避开使用“Uses”这样的单字。
容器之间的关系(通常代表进程间通信)应当有明确标记的技术/协议。
C4的工具
在选择了众多工具之
文档评论(0)