如何画出优秀的架构图?
JavaGuide
共 3340字,需浏览 7分钟
· 2020-10-06
分享一篇阿里巴巴云原生的一篇关于如何画架构图的文章,写的很不错!
作者 | 三画
导读:技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力。本文作者阿里巴巴技术专家三画,分享了自己和团队在画好架构图方面的理念和经验,首发于阿里内部技术分享平台,梓敬、鹏升和余乐对此文亦有贡献。
对着画布无从下手、删了又来? 用一张图描述我的系统,并且让产品、运营、开发都能看明白? 画了一半的图还不清楚受众是谁? 画出来的图到底是产品图功能图还是技术图又或是大杂烩? 图上的框框有点少是不是要找点儿框框加进来? 布局怎么画都不满意……
先理清一些基础概念
1. 什么是架构
2. 什么是架构图
3. 架构图的作用
解决沟通障碍 达成共识 减少歧义
4. 架构图分类
场景视图
![](https://filescdn.proginn.com/73f6c4c03459a3085204bf768597e555/1c5cc9b65dad78702eced9ba2ced2018.webp)
逻辑视图
![](https://filescdn.proginn.com/2817d6c812098b8e97ca1d9ec4dd19fd/e399f991c1aa7f82f9ea68726e1b815c.webp)
物理视图
![](https://filescdn.proginn.com/6d67d005c235b44a4a67f893ced62ebe/c16ffff4ed14dfd3e4562fa3fc57ab06.webp)
处理流程视图
![](https://filescdn.proginn.com/24a545d5dda91c583cc66cad1cfed084/946e2af3a9e3553f5677c45c79a181d6.webp)
开发视图
![](https://filescdn.proginn.com/8ebdd94519224aa3a40aed7ae42b70cb/f289e486560f3f519b4a4cde5879734f.webp)
怎样的架构图是好的架构图
画架构图遇到的常见问题
1. 方框代表什么?
![](https://filescdn.proginn.com/adc0c5d60837209afd141c0d9cc9cecb/2461fdfa5766d9d68e7dbeeddb7d4ac9.webp)
2. 虚线、实线什么意思?箭头什么意思?颜色什么意思?
![](https://filescdn.proginn.com/8bc60e4399226a2a5269e08307bc19bb/35fae71ec78d9964509c5d6f6f6e08a7.webp)
3. 运行时与编译时冲突?层级冲突?
![](https://filescdn.proginn.com/8bc60e4399226a2a5269e08307bc19bb/35fae71ec78d9964509c5d6f6f6e08a7.webp)
本文推荐的画图方法
![](https://filescdn.proginn.com/215bac30d5fa8b254d6f29c32b1bfe08/5f8f6ef3ce4b29f005477bf01a2db97c.webp)
1. 语境图(System Context Diagram)
![](https://filescdn.proginn.com/c0fb121017fee0eeb4758675a6c3e922/81bfc6248581d956ed5b67d31c99691b.webp)
用途
构建的系统是什么 谁会用它 如何融入已有的IT环境
怎么画
2. 容器图(Container Diagram)
![](https://filescdn.proginn.com/73658f0d57b908fce03218432e296c7e/6c65fd2096826eaa9308a490ffdc74e1.webp)
用途
展现了软件系统的整体形态 体现了高层次的技术决策 系统中的职责是如何分布的,容器间的是如何交互的 告诉开发者在哪里写代码
怎么画
3. 组件图(Component Diagram)
![](https://filescdn.proginn.com/d6497ada0c319fd9016564e053484782/8db3d778be36642636db35c209986ec3.webp)
用途
描述了系统由哪些组件/服务组成 厘清了组件之间的关系和依赖 为软件开发如何分解交付提供了框架
4. 类图(Code/Class Diagram)
![](https://filescdn.proginn.com/3a2f3952ac9e7515f19c614194a042b2/0858903165df4562ed6efa9b64ad9e8b.webp)
案例分享
![](https://filescdn.proginn.com/c000c5c21d95663803dd0aee57bd8265/b2f5d2e7f2e06120c40b35e87391e948.webp)
往期推荐
评论