- 1
- 0
- 约5.66千字
- 约 22页
- 2018-12-28 发布于安徽
- 举报
完美WORD格式整理
范文.范例.指导
架构师的逻辑技术思维分析
目 录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc520824793 一、抽象思维 PAGEREF _Toc520824793 \h 3
HYPERLINK \l _Toc520824794 二、分层思维 PAGEREF _Toc520824794 \h 8
HYPERLINK \l _Toc520824795 三、分治思维 PAGEREF _Toc520824795 \h 11
HYPERLINK \l _Toc520824796 四、演化思维 PAGEREF _Toc520824796 \h 16
HYPERLINK \l _Toc520824797 五、如何培养架构设计思维 PAGEREF _Toc520824797 \h 19
HYPERLINK \l _Toc520824798 结论 PAGEREF _Toc520824798 \h 21
一、抽象思维
如果要问软件研发/系统架构中最重要的能力是什么,我会毫不犹豫回答是抽象能力。抽象(abstraction)这个词大家经常听到,但是真正理解和能讲清楚什么是抽象的人少之又少。抽象其实是这样定义的:
对某种事物进行简化表示或描述的过程,抽象让我们关注要素,隐藏额外细节。
举一个例子,见下图:
你看到什么?你看到的是一扇门,对不对?你看到的不是木头,也不是碳原子,这个门就是抽象,而木头或者碳原子是细节。另外你可以看到门上有个门把手,你看到的不是铁,也不是铁原子,门把手就是抽象,铁和铁原子是细节。
在系统架构和设计中,抽象帮助我们从大处着眼(get our mind about big picture),隐藏细节(temporarily hide details)。抽象能力的强弱,直接决定我们所能解决问题的复杂性和规模大小。
下图是我们小时候玩的积木,我发现小时候喜欢玩搭积木的,并且搭得快和好的小朋友,一般抽象能力都比较强。
上图右边的积木城堡就是抽象,这个城堡如果你细看的话,它其实还是由若干个子模块组成,这些模块是子抽象单元,左边的各种形状的积木是细节。搭积木的时候,小朋友脑袋里头先有一个城堡的大图(抽象),然后他/她大脑里头会有一个初步的子模块分解(潜意识中完成),然用利用积木搭建每一个子模块,最终拼装出最后的城堡。这里头有一个自顶向下的分治设计,然后自底向上的组合过程,这个分治思维非常重要,我们后面会讲。
我认为软件系统架构设计和小朋友搭积木无本质差异,只是解决的问题域和规模不同罢了。架构师先要在大脑中形成抽象概念,然后是子模块分解,然后是依次实现子模块,最后将子模块拼装组合起来,形成最后系统。所以我常说编程和架构设计就是搭积木,优秀的架构师受职业习惯影响,眼睛里看到的世界都是模块化拼装组合式的。
抽象能力不仅对软件系统架构设计重要,对建筑、商业、管理等人类其它领域活动同样非常重要。其实可以这样认为,我们生存的世界都是在抽象的基础上构建起来的,离开抽象人类将寸步难行。
这里顺便提一下抽象层次跳跃问题,这个在开发中是蛮普遍的。有经验的程序员写代码会保持抽象层次的一致性,代码读起来像讲故事,比较清晰易于理解;而没有经验的程序员会有明显的抽象层次跳跃问题,代码读起来就比较累,这个是抽象能力不足造成。举个例子:
一个电商网站在处理订单时,一般会走这样一个流程:
1. 更新库存(InventoryUpdate)
2. 打折计算(Discounting)
3. 支付卡校验(PaycardVerification)
4. 支付(Pay)
5. 送货(Shipping)
上述流程中的抽象是在同一个层次上的,比较清晰易于理解,但是没有经验的程序员在实现这个流程的时候,代码层次会跳,比方说主流程到支付卡校验一块,他的代码会突然跳出一行某银行API远程调用,这个就是抽象跳跃,银行API调用是细节,应该封装在PaycardVerification这个抽象里头。
二、分层思维
除了抽象,分层也是我们应对和管理复杂性的基本思维武器,如下图,为了构建一套复杂系统,我们把整个系统划分成若干个层次,每一层专注解决某个领域的问题,并向上提供服务。有些层次是纵向的,它贯穿所有其它层次,称为共享层。分层也可以认为是抽象的一种方式,将系统抽象分解成若干层次化的模块。
分层架构的案例很多,一个中小型的Spring Web应用程序,我们一般会设计成三层架构:
操作系统是经典的分层架构,如下图:
TCP/IP协议栈也是经典的分层架构,如下图:
如果你关注人类文明演化史,你会发现
您可能关注的文档
- 高中数学双曲线经典例题.doc
- 高中物理力学受力分析专题[1].doc
- 高中一年级数学必修一函数的定义域和值域.doc
- 高中语文必修5理解默写.doc
- 各地海拔高度和大气压.doc
- 各种水果储存方法大全.doc
- 给水管道冲洗消毒实施计划方案.doc
- 给水管道工程施工组织方案.doc
- 给水管道施工和安装技术要求.doc
- 耕地、农用地、基本农田建设用地之区别.doc
- 宣贯培训(2026年)《NYT 4512-2025 非洲菊疫病抗性鉴定技术规程》.pptx
- 宣贯培训(2026年)《NYT 4514-2025木薯副产物综合利用导则》.pptx
- 宣贯培训(2026年)《NYT 4513-2025木薯全程机械化生产技术规范》.pptx
- 宣贯培训(2026年)《NYT 4470-2025全株玉米青贮质量分级》.pptx
- 宣贯培训(2026年)《NYT 4468-2025玉米供需平衡表编制规范》.pptx
- 宣贯培训(2026年)《NYT 4469-2025全株玉米青贮质量评定 综合指数法》.pptx
- 宣贯培训(2026年)《NYT 4474-2025东北地区玉米-大豆轮作生产技术规程》.pptx
- 宣贯培训(2026年)《NYT 4472-2025玉米耐盐碱鉴定评价技术规程》.pptx
- 宣贯培训(2026年)《NYT 4473-2025玉米抗旱性鉴定评价技术规程》.pptx
- 宣贯培训(2026年)《NYT 4478-2025甘薯收获技术规程》.pptx
原创力文档

文档评论(0)