架构设计参考项目系列主题:如何画出一张优秀的架构图

架构设计参考项⽬系列主题:如何画出⼀张优秀的架构图
本⽂转⾃:架构⽂摘
美国共同基金⽬录
明治维新与洋务运动导读
泉水教学设计技术传播的价值,不仅仅体现在通过商业化产品和开源项⽬来缩短我们构建应⽤的路径。加速业务的上线速率,也体现在优秀⼯程师的⼯作效率提升、产品性能优化和⽤户体验改善等经验⽅⾯的分享,以提⾼我们的专业能⼒。
接下来,阿⾥巴巴技术专家三画,将分享⾃⼰和团队在画好架构图⽅⾯的理念和经验,希望对你有所帮助。当我们想⽤⼀张或⼏张图来描述我们的系统时,是不是经常遇到以下情况:
对着画布⽆从下⼿、删了⼜来?如何⽤⼀张图描述我的系统,并且让产品、运营、开发都能看明⽩?画了⼀半的图还不清楚受众是谁?画出来的图到底是产品图功能图还是技术图⼜或是⼤杂烩?图上的框框有点少是不是要点⼉框框加进来?布局怎么画都不满意…
如果有同样的困惑,本⽂将介绍⼀种画图的⽅法论,来让架构图更清晰。
先厘清⼀些基础概念
什么是架构?
架构就是对系统中的实体以及实体之间的关系所进⾏的抽象描述,是⼀系列的决策。
架构是结构和愿景。系统架构是概念的体现,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义。
做好架构是个复杂的任务,也是个很⼤的话题,本篇就不做深⼊了。有了架构之后,就需要让⼲系⼈理解、遵循相关决策。
什么是架构图?
系统架构图是为了抽象地表⽰软件系统的整体轮廓和各个组件之间的相互关系和约束边界,以及软件系统的物理部署和软件系统的演进⽅向的整体视图
架构图的作⽤
⼀图胜千⾔。要让⼲系⼈理解、遵循架构决策,就需要把架构信息传递出去。架构图就是⼀个很好的载体。
二次沉淀池
那么,画架构图是为了:
解决沟通障碍
达成共识
减少歧义
架构图分类
搜集了很多资料,分类有很多,有⼀种⽐较流⾏的是 4+1 视图,分别为场景视图、逻辑视图、物理视图、处理流程视图和开发视图。
推荐:
场景视图
场景视图⽤于描述系统的参与者与功能⽤例间的关系,反映系统的最终需求和交互设计,通常由⽤例图表⽰。
逻辑视图
逻辑视图⽤于描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系统如何构建的过程,通常由 UML 的组件图和类图来表⽰。
物理视图
物理视图⽤于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到⼀组可计算机器节点上,⽤于指导软件系统的部署实施过程。
处理流程视图
处理流程视图⽤于描述系统软件组件之间的通信时序,数据的输⼊输出,反映系统的功能流程与数据流程,通常由时序图和流程图表⽰。
开发视图
开发视图⽤于描述系统的模块划分和组成,以及细化到内部包的组成设计,服务于开发⼈员,反映系统开发实施过程。
以上 5 种架构视图从不同⾓度表⽰⼀个软件系统的不同特征,组合到⼀起作为架构蓝图描述系统架构。
怎样的架构图是好的架构图
上⾯的分类是前⼈的经验总结,图也是从⽹上摘来的,那么这些图画的好不好呢?是不是我们要依葫芦画瓢去画这样⼀些图?
先不去管这些图好不好,我们通过对这些图的分类以及作⽤,思考了⼀下,总结下来。
我们认为,在画出⼀个好的架构图之前, ⾸先应该要明确其受众,再想清楚要给他们传递什么信息 。
所以,不要为了画⼀个物理视图去画物理视图,为了画⼀个逻辑视图去画逻辑视图,⽽应该根据受众的不同,传递的信息的不同,⽤图准确地表达出来,最后的图可能就是在这样⼀些分类⾥。
那么,画出的图好不好的⼀个直接标准就是:受众有没有准确接收到想传递的信息。陶晓明死亡
明确这两点之后,从受众⾓度来说,⼀个好的架构图是不需要解释的,它应该是⾃描述的,并且要具备⼀致性和⾜够的准确性,能够与代码相呼应。
画架构图遇到的常见问题
⽅框代表什么?
为什么适⽤⽅框⽽不是圆形,它有什么特殊的含义吗?随意使⽤⽅框或者其他形状可能会引起混淆。
虚线、实线什么意思?箭头什么意思?颜⾊什么意思?
随意使⽤线条或者箭头可能会引起误会。
运⾏时与编译时冲突?层级冲突?门德尔松
架构是⼀项复杂的⼯作,只使⽤单个图表来表⽰架构很容易造成莫名其妙的语义混乱。
本⽂推荐的画图⽅法
C4 模型使⽤容器(应⽤程序、数据存储、微服务等)、组件和代码来描述⼀个软件系统的静态结构。
这⼏种图⽐较容易画,也给出了画图要点,但最关键的是,我们认为,它明确指出了每种图可能的受众以及意义。
下⾯的案例来⾃ C4 官⽹,然后加上了⼀些我们的理解,来看看如何更好的表达软件架构。
推荐:
语境图(System Context Diagram)
这是⼀个想象的待建设的互联⽹银⾏系统,它使⽤外部的⼤型机银⾏系统存取客户账户、交易信息,通过外部电邮系统给客户发邮件。
可以看到,⾮常简单、清晰,相信不需要解释,都看的明⽩,⾥⾯包含了需要建设的系统本⾝,系统的客户,和这个系统有交互的周边系统。
这样⼀个简单的图,可以告诉我们,要构建的系统是什么;它的⽤户是谁,谁会⽤它,它要如何融⼊已有的 IT 环境。
这个图的受众可以是开发团队的内部⼈员、外部的技术或⾮技术⼈员。即:
构建的系统是什么
谁会⽤它
如何融⼊已有的 IT 环境
怎么画?中间是⾃⼰的系统,周围是⽤户和其他与之相互作⽤的系统。这个图的关键就是梳理清楚待建设系统的⽤户和⾼层次的依赖,梳理清楚了画下来只需要⼏分钟时间。
容器图(Container Diagram)
容器图是把语境图⾥待建设的系统做了⼀个展开。

本文发布于:2024-09-21 19:38:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/315352.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   视图   架构   描述   关系   组件   架构图   反映
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议