从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152578 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

51 | 如何画出优秀的软件系统架构图?

参考案例
画图技巧
使用场景
定义
参考案例
画图技巧
使用场景
定义
参考案例
画图技巧
使用场景
定义
参考案例
画图技巧
使用场景
定义
参考案例
画图技巧
使用场景
定义
参考案例
画图技巧
使用场景
定义
系统序列图
部署架构图
应用架构图
系统架构图
客户端和前端架构图
业务架构图
Rule
Relation
Role
Rank
场景视图
物理视图
开发视图
处理视图
逻辑视图
小结
常见架构图
核心指导思想:4R架构定义
4+1视图
如何画出优秀的软件系统架构图?

该思维导图由 AI 生成,仅供参考

你好,我是华仔。
你现在看到的这篇文章,是我在 2022 年新写的。《从 0 开始学架构》这门课更新结束后,我又探索了很多和架构相关的事情。这期间新的经历和尝试,也让我有了更多的思考。
所以,有了今天这篇文章,把我在软件系统架构图上的实践分享给你。
很多同学技术能力很强,架构设计也做得很好,但是在给别人讲解的时候,总感觉像是“茶壶里煮饺子,有货倒不出”。
其实,在为新员工培训系统架构、给领导汇报技术规划、上技术大会做演讲或者向晋升评委介绍工作贡献的时候,如果你能画出一张优秀的软件系统架构图,就可以大大提升自己的讲解效果,让对方轻松地理解你想表达的关键点。
这一讲,我就会为你分享软件系统架构图的画图技巧。

4+1 视图

说起软件系统架构图,你可能会想到 4+1 视图,毕竟很多学习资料上都说它是架构图的标准。那么,到底什么是 4+1 视图呢?是不是只要按照 4+1 视图的标准去画,就没有问题呢?
我们还是从它的由来说起。1995 年,Philippe Kruchten 在论文中指出了过去用单一视图描述软件系统架构的问题,并提出了 4+1 视图作为解决方案。
有时,软件架构的问题来源于系统设计者过早地划分软件或者过分地强调软件开发的某一个方面,比如数据工程、运行时效率、开发策略或团队组织。此外,软件架构往往不能解决它的所有“用户”的问题。……作为补救措施,我们建议使用几个并发视图来组织对软件架构的描述,其中每个视图分别解决一组特定的问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何绘制优秀的软件系统架构图,从4+1视图和4R架构定义出发,为读者提供了画出优秀软件系统架构图的方法和指导。作者首先介绍了4+1视图的概念,包括逻辑视图、处理视图、开发视图、物理视图和场景视图,并指出了其在实际工作中的局限性。随后,作者提出了核心指导思想:4R架构定义,即通过定义软件系统的顶层结构、角色、关系和运作规则来画架构图。此外,文章还详细介绍了常见的架构图类型,包括客户端和前端架构图、系统架构图、应用架构图、部署架构图和系统序列图,并提供了相应的使用场景和画图技巧。最后,通过AlipayHK的业务架构图为例,展示了如何有效地呈现关键信息。整体而言,本文通过介绍4+1视图和4R架构定义,以及常见的架构图类型和技巧,为读者提供了画出优秀软件系统架构图的方法和指导。文章内容丰富,涵盖了软件系统架构图的各个方面,对于希望了解和绘制软件系统架构图的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • quietwater
    这节课不应该是选学,应该是必学。对我帮助很大,太有指导意义了。老师对这门课太用心了,一直关注学员留言,这个必须点赞!学第二遍了,感觉收获比第一遍大,期待第三遍的学习🙂 客户端和前端的复杂度在于应用内部,而后端的复杂度在于应用间的协作,当然应用内的复杂度也很高,不比客户单和前端低,甚至更复杂。想要满足三高,必须是分布式的,这样后端就会涉及很多组件之间的协作,系统架构的权衡取舍也来自于此。所以后端架构的复杂度基本等同分布式的复杂度,也基本等同系统的复杂度。

    作者回复: 这一章是添加的正式章节,应该是必学的,你对课后习题的理解很到位,点赞

    2022-02-02
    28
  • Aresx
    想复习架构知识,没想到2022年老师还在更新专栏,感谢,受用颇深!

    作者回复: 哈哈,我自己也在迭代,一起学习 :)

    2022-02-24
    12
  • Thomas
    这篇文章中所列举的例子:AlipayHK业务架构图与中台系统架构图除颜色外,没看出有多大差别,实质是相同的?求解?

    作者回复: 明显不同呀,比如说“扫码支付”和“付款码”两个业务,都会涉及到支付中台里面的“交易中心、支付中心、风控中心……”等,一个是从外部用户或者客户的角度来看系统,一个是从内部开发或者团队的角度来看系统

    2022-03-09
    2
    10
  • 敏叔
    mac下一般用哪些软件画图

    作者回复: 我就是用PPT来画,有学员推荐用draw.io

    2022-02-25
    10
  • 月光宫羽
    1、4R是否可以理解成以下4个思考步骤? (1)分层 (2)列出角色 (3)表达角色间关系 (4)表达角色间交互 2、业务和系统架构图,无论从功能还是从架构层级看,有时感觉有人画的差不多,没能突出这2者的区别? 是否可以理解为: 业务架构是站在用户角度,用户能够真切的感知与看到的(页面菜单或选项)。 系统架构是站在开发者角度,通过编码实现用户所需要的功能(模块)。

    作者回复: 正解,理解到位

    2022-11-21归属地:广东
    9
  • shawn
    我觉首先得在一个应用中后端架构更加复杂,其次前端架构和后端架构一起展示出来对于绝大部分人来说是没有意义的,因为各自所属领域不同。

    作者回复: 1. 系统架构核心部分就是在后端; 2. 前端和后端一起展示出来还是有意义的,主要在高级别的汇报的时候

    2022-01-27
    7
  • 线条
    4R中的“关系”,一般都有哪些关系啊?例如依赖,包含啥的

    作者回复: 系统架构中的角色关系有几种:1)调用;2)通知;3)共享,其实这几种关系也都可以用一个词来概括:通信

    2022-08-08归属地:广东
    5
  • 知行合一
    这节课好棒,解决了我画架构图的困惑,以前不知4R方法,不会分层,总想展示所有信息,学了4R,Rank,Role,Relation,Rule对系统分层分场景展示系统角色之间的关系。

    作者回复: 赶紧画一画目前自己正在做的系统的架构,体会会更深 :)

    2022-05-24
    5
  • 线条
    一些个人的理解和疑问: 业务架构:从系统要实现的业务角度来罗列业务和相应的业务功能,主要目的是告知客户系统所支持业务范围。系统的登录等算业务吗?是否存在一些共性的业务? 功能架构【自己加的】:从业务架构中的业务视角转换成开发的视角,将某些业务功能抽象出来形成某些基础功能模块,同时将某些业务功能进行组合形成某些功能模块。 系统架构:文章中说是描述后端的逻辑架构(又叫后端架构和技术架构),这么来说主要是描述实现功能的技术方案了?包括技术选型,实现策略等? 应用架构:描述系统由哪些应用组成,对这个”应用“的概念不是那么清晰, 可以是子系统、也可以是微服务里面的一个服务,总体来讲必须满足能独立部署的特点?或者说就是一个独立的进程?那么如果是单体系统,是不是这个应用架构就不存在了? 部署架构:描述系统的各个组件的部署,包括各类中间件按什么方式部署、各个系统/子系统按什么方式部署、服务器配置、网络配置、机房信息等。在技术架构中也会涉及组件等,但更多是告诉用什么组件来干嘛,而在部署架构中需要细化到组件的部署方式,例如:单机还是集群、一个机房还是多个机房部署、配置几个副本、如何做数据同步、使用什么样的网络连接等 总的疑问:不同的架构图里面应该/可以包含哪些元素,网上的很多架构图感觉元素混乱,自己也好难判断应不应该参考。

    作者回复: 1. 登录一般不算业务,算功能; 2. 功能架构一般用在微内核架构里面; 3. 是的,后端架构包括技术选型等决策; 4. 单体系统就没有应用架构了;应用就是指可以独立部署的单元;

    2022-08-12归属地:广东
    2
    4
  • Geek_7068b3
    这些架构图没有体现技术设计,是还有其他图吗?

    作者回复: 在项目开发过程中的方案设计文档里面还有设计,例如面向对象设计,数据库表的设计,缓存key-value设计,多线程设计等

    2023-03-26归属地:北京
    2
    3
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部