CodingTour
软件架构设计

架构设计能力,因掌握起来困难而显得珍贵。

这是对《软件架构设计》的读后感,看完这本书让我知道:我不是一名合格的架构师。我目前的职责“基础组件的开发和设计”、“已有代码的优化 & 重构”仍然没有跳出开发者的视角,架构师当然也要写代码、了解业务,但不能仅限于此,要深挖产品需求、掌握架构设计的方法、完整的领域知识和技术的实现细节。

从本书描述的架构角色来看,我的职责更侧重于系统工程师的角色,和系统架构师相比如何不同呢:

  • 系统架构师更多关注软件的总体设计、关键技术和算法的设计研究、通信协议的设计制定等
  • 系统工程师更多关注产品系统的设计、技术问题攻关、解决方案的输出等

了解了这个区别也就为我后续的职业发展指明了方向。

除了技术和视野外,系统架构师还需要掌握设计方法,以产品的 MVP 版本为例,在没有设计方法指导下,容易拍脑袋决定模块、层的划分粒度,这意味着设计不足,如果不确定每一层内部哪些“小模块”可以重用、哪些不能重用,以及功能模块内不同“小模块”之间具体的调用关系,对未来增加功能或修改功能实现影响就会很大。甚至一个基本的 MVP 版本也不能实现出来:要验证技术、产品可行性,总得有一条“深度优先”路径测试整个流程吧,没有分层设计作指导,很难实施这种开发模式。

垂直维度切分关注功能模块,水平维度切分关注层(Layer)。看清想透层、功能模块、细粒度模块三个概念才能促进我们做合理的模块划分,这是系统设计中一个最重要和最具有挑战性的任务,好的架构必须使每个关注点相互分离。

有没有经验,决定你能不能成为架构师
有没有方法,决定一个架构师能走多远

全书内容很多,让我对架构设计有了更清晰、更为全局的认识,“知道自己不知道”远比“不知道自己不知道”更困难,发现自己的弱点能指导我今后的工作、学习方向,加油!

附上我自己制作的思维导图:

xmind