写点什么
MySQL OpenHarmony 云计算 程序员 行业资讯 算法 Python 人工智能 区块链 Linux 前端 个人成长 面试 架构师 编程 企业动态 新基建 敏捷 安全 读书笔记 高效工作 团队管理 创业 生涯规划 知识管理 运维 产品经理 查看更多

如何画好架构图

作者: Hockor
  • 2022 年 3 月 31 日
  • 本文字数:2295 字

    阅读完需:约 8 分钟


你好,我是 hockor,作为软件开发者,我们在工作中难免要画很多的架构图,但是很多人对于如何去画架构图其实是很模糊的,有那么多种类型的图,我们究竟该选哪个,用应该怎么画呢?今天我们一起来看看这个问题。

什么是架构图

在谈什么是架构图之前,我们先来聊聊什么是架构。


软件架构指的是软件系统的顶层设计(Rank),它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule),如下图所示。



再回到我们的问题,到底什么是架构图,从字面意思上来讲,架构图 = 架构 + 图,它是你当前架构的一种表达方式,当然架构设计的领域是很多的,比如业务架构,系统架构,技术架构,模型架构等等。。。


针对不同的架构类型,当然也就需要用不同的架构图去表现它,我们都知道现实世界到软件世界的映射,是一个不断抽象的过程,这其中的方法就是不断的建立模型,所以架构的过程其实就是建模的过程,而架构图表现的就是你建模的方式。

为什么要画架构图

既然架构的过程就是建模的过程,为什么我们要费时费力的去画架构图呢?直接用代码或者文字体现不就行了吗?我觉得这个问题可以从 2 点方面来回答:


  • 从技术角度来讲:架构图相比其他表现方式,可以更方便的表明当前系统的结构体系,减少同事或者与客户之间的认知障碍,达到统一认知。

  • 从阅读角度来讲:图的表现力远远高于文字的表现力,这也是为什么人们常说“一图胜千言,NO 图 NO BB”。

架构图分类

根据我们工作职责的不同,我们所需要体现的架构图也会有所不同,比如你是一个 PD,你考虑的更多是产品架构,比如你是一个前端,你考虑的更多是前端技术体系和模块的架构,那么这里总结了一下我们常见的不同架构分类,主要有以下内容。



现在我们知道了架构的分类,那么我们如何开始去画一张架构图呢?这里有几个路径,你可以参考一下:


  • 搞清楚要画的架构图的类型

  • 抽离架构图中的关键要素

  • 梳理各个要素之间的关系:包含关系 、引用关系、同级关系等等

  • 根据以上信息串联起来,并标识清楚。


接下来我们看看几个常见的架构的描述和其示意图,和我们上面的 4R 一起做个对比。

业务架构

对应我们 4R 中的 Rank,也就是顶层结构。


业务架构指的是使用一套方法论/逻辑对产品(项目)所涉及到的业务进行边界划分,核心点就是把业务边界通过不同颜色模块标识出来,并做分组,同时不需要去考虑具体技术点。


使用场景:


  • 产品人员规划业务

  • 给高 P 汇报业务

  • 给新员工培训业务体系


比如一个电商系统的业务架构图如下。


应用架构

对应我们 4R 中的 Role,也就是组成角色。


应用架构是对整个系统实现的总体上的架构,需要指出系统的层次、系统开发的原则、系统各个层次的应用服务,通过不同的颜色来标识角色,自顶向下分层设计。


使用场景:


  • 整体引用架构规划设计

  • 架构培训


例如,下图就将系统分为数据层、服务层、通讯层、展现层,并细分写明每个层次的应用服务。


技术架构

对应我们 4R 中的 Relation,也就是角色关系。


应用架构本身只关心需要哪些应用系统,哪些平台来满足业务目标的需求,而不会关心在整个构建过程中你需要使用哪些技术。


技术架构则是应接应用架构的技术需求,并根据识别的技术需求,进行技术选型,把各个关键技术和技术之间的关系描述清楚。技术架构解决的问题包括:纯技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。


比如下面这张美团点评酒旅前端团队的技术体系结构图。


序列图

对应我们 4R 中的 Rule,也就是运作规则。


序列图,又称时序图,是一种 UML 交互图。它通过描述具体场景中,对象之间发送消息的时间顺序显示多个对象之间的动态协作。


比如下面这张用户登录过程的序列图。


C4 模型

这里再推荐一个现在很流行的 C4 架构模型,其官网为: https://c4model.com/


C4 架构模型由一系列分层的软件架构图组成,这些架构图用于描述上下文、容器、组件和代码。C4 图的层次结构提供了不同的抽象级别,每种抽象级别都与不同的受众有关。


C4 代表 上下文(Context)、容器(Container)、组件(Component)和代码(Code),是一系列分层的图表,可以用这些图表来描述不同 Level 的软件架构,每种图表都适用于不同的受众。可以将其视为代码的谷歌地图。


总结

好,最后我们再来总结一下,本文主要讲解了什么是软件架构设计,基于软件架构的 4R 的理论我们可以映射到业务架构,应用架构,技术架构以及时序流程,同时还推荐了近些年比较流行的 C4 架构模型。


文章的最后再来推荐下我常用的画图工具:


  • 架构图:draw.io 本地版,内部有非常多的预设标准,非常强大。

  • processOn:网页版工具,也非常强大,如果你有同步的需求,可以使用它。

  • UML 图: https://plantuml.com/zh/ ,有非常多的示例,同时 VScode / webstorm 都有对应的插件,可以方便的在编辑器中书写


最后,一张好的架构图不仅仅可以形象的描述业务领域的抽象设计,同时也要有美观的展示,它应该能帮助阅读者更好的了解当前系统的层次结构,同时也能帮助开发者自己更好的去设计和完善系统,最后还是那句话:“一图胜千言,NO 图 NO BB”。


另外在平时工作中,我们画的最多的还有一种图,就是流程图,比如下面这种



其中的圆形是啥意思?菱形又是啥意思?限于篇幅,我们下次来详细讲讲流程图吧,来详细聊聊其中各种图形的关系和含义,让你能轻松看懂别人的流程图。


好了,今天的内容就到这里了,如果觉得文章对你有帮助欢迎点赞转发,我是 hockor,我们下次再见。

欢迎关注我的个人公众号《hockor》.



参考资料:


  • 4R 架构理论: https://www.jianshu.com/p/cdce0b40ec5d

  • 前阿里 P9 教你如何画好一张架构图: https://www.bilibili.com/video/BV1764y1a7PD

  • 程序员的架构修炼: https://segmentfault.com/a/1190000038579086

  • C4 Model: https://c4model.com/

发布于: 刚刚阅读数: 3
用户头像

Hockor

关注

公众号《hockor》 2019.03.12 加入

7 年前端开发,始于前端但心在远方~

评论

发布
暂无评论
如何画好架构图_Hockor_InfoQ写作平台

玻璃钢生产厂家资阳玻璃钢景观雕塑商场独层美陈玻璃钢几何雕塑定制浦口春季商场美陈承德商场美陈商丘人物玻璃钢彩绘雕塑杭州富阳区商场美陈布置多少钱辽宁商场创意商业美陈经验息烽玻璃钢雕塑设计玻璃钢雕塑易燃内蒙古玻璃钢马雕塑新乡玻璃钢景观雕塑公司上海玻璃钢雕塑加工厂家黄山玻璃钢雕塑供应商公园玻璃钢雕塑生产双阳区玻璃钢雕塑工程施工标准浙江人物玻璃钢雕塑图片邵阳小区玻璃钢雕塑制作西山区玻璃钢雕塑禅城小品玻璃钢人物雕塑来图定制深圳透明玻璃钢雕塑厂家电话资阳玻璃钢雕塑设计海盗雕塑玻璃钢宝箱玻璃钢足球雕塑篮球广州玻璃钢雕塑的特点浙江人物玻璃钢雕塑设计重庆玻璃钢花盆价格山东园林玻璃钢雕塑生产厂家商场美陈装饰气球普陀区正宗玻璃钢雕塑推荐香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化