计算机技术飞速发展,各种编程语言、框架都层出不穷,但是从系统架构设计角度来考虑,这么多年一直没有多大变化。书中先从什么是软件架构,让我们从软件的组织结构作为重点,从组件、类、函数、模块、层级、服务等微观与宏观的软件开发过程,进行软件的系统设计,遵循更一定的原则,来探索一条整洁路线。作者Bob大叔,作为元老级程序员,以自身经验,分享了如何做好简洁架构设计的相关方法及技巧。
首先,书中介绍了软件架构设计的终极目标:用最小的人力成本来满足构建和维护该系统的需求。研发团队需要构建一个长期稳定的、持久优秀的系统,从而减少构建成本,提高生产力。作者通过软件系统在行为价值、架构价值两方面进行了分析。
第2部分开始,书中主要介绍编程范式,从结构化编程、面向对象编程、函数式编程三方面,介绍这些范式如何来规范和限制程序员的能力。结构化编程赋予了我们创造可证伪程序单元的能力,其中功能性降解拆分仍然是最佳实践之一;面向对象编程提供了封装、继承、多态等设计,为软件架构提供了各种组件分离、架构分层等提供了更多的控制能力;函数式编程是通过函数闭包方式,对可变内容做隔离、支持事件溯源能力。这三种编程范式目前提供了不同的程序限制及规范,多年以来一直保持核心不变。
第3部分主要是介绍了架构设计中常用的设计原则:
- SRP:单一职责原则,任何一个软件模块有且仅对某一类行为者负责,这奠定了架构边界的变更轴心;
- OCP:开闭原则,要求软件应该达到易于扩展,通过抗拒修改,在实现的时候将系统划分为一系列组件,并将组件间的依赖关系按层次结构进行组织;
- LSP:里氏替换原则,提供了子类和父类的可替换性,通过父类的调用来选择具体的子类实现逻辑。
- ISP:接口隔离原则,主要是避免依赖到不需要的东西,而为系统带来意料之外的问题。
- DIP:依赖反转原则,在复杂系统中,通过多引用抽象类型的方式来管理分层源码中的依赖关系。
第4部分介绍了组件构建原则,从介绍组件、组件聚合、组件耦合等三方面,介绍了如何更好的封装组件,基于自上而下设计、稳定依赖、稳定抽象等原则,来更好的设计和管理组件。
第5部分是从软件架构出发,从介绍软件架构、系统独立性、划分边界、边界剖析、策略与层次、业务逻辑等方面来介绍如何做好软件架构设计。书中介绍了整洁架构的几个特点:独立于框架、可被测试、独立于UI、独立于数据库、独立于任何外部机构,作者提供了这个理念的示例图:
图中包含业务实体、用例、接口适配器、框架与驱动程序,展示了可能出现跨越边界的情况。书中介绍了展示其及其对应的谦卑模式,将GUI相关拆分成展示器与视图,并介绍了数据库网关、数据映射器、服务监听器等模块,提供了一种划分边界的参考方法。书中再根据实际出现不完全边界情况,介绍了单向边界、门户模式等世界方式来实现架构边界。书中再提供了层次边界、Main组件等情况来进一步做架构设计的方法。书中在这部分后面也提供了嵌入式架构的一些设计方法。
第6部分主要介绍了具体的一些实现细节,包括数据库村粗、Web、应用框架,再结合参考案例分析,让书中的内容更清晰。
作者也介绍了一些个人的经历,给读者介绍了自己在实际工作过程中做过的架构设计、踩过的坑,让大家更好的理解整洁架构设计的重要性。
本文是基于本人读书的理解拙见,有兴趣的童鞋建议去看下这本书,对于架构设计会有很大的帮助。
最后插入一条广告,为了Qcon的门票:
⌈QCon 全球软件开发大会⌋7月底将落地广州,时间是7月31日-8月1日,有没有小伙伴来现场聊聊啊~今年广州站有Web 3.0、数据架构选型、AI 工程、业务安全与风控等12个专题,50+技术案例现场分享,详细内容>>http://gk.link/a/11ucc