写点什么
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写作平台

4617作文网手工钩织店怎么起名字怀孕梦到解尸淇灵周易书店书目周公解梦靠谱吗五行缺金缺金起名适合起的名字姓张猪孩子起名运势 周易2020年男双胞胎起名7画属的起名吉利字陶瓷品牌起名商标起名取名软件周易微微怎么起名字周剑初书法交易价格做梦梦见蛇怎么解释肖姓龙凤胎起名新贸易公司起名大全以煜起名子免费起名软件美名宝孵化器公司起名姓陈的女孩起名字带瑶周易公司起名软件下载称骨算命对照表周易起店名网取名免费网上收费起名靠谱吗周易大学八字排盘程序员 公司起名周易公司名称免费测试姓罗起名称大全梦的解析淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化