软件设计书籍推荐
计划开设一个专栏,输出软件设计经验。这篇文章算是开篇,先整理一份书单。
我理解的软件设计
软件设计不同于建筑设计。
建筑设计的核心是图纸,图纸是对物理世界规则的运用,能反映出完善的建造工艺和过程。 但软件设计中绘制的是草图,是对软件本体的部分抽象,只能反映出某些切面来帮助团队理解软件——画图不是软件设计。
真实的软件设计,既包括把用户原始的业务诉求转换成软件需求的过程,也包括把这些需求一步步拆开,最后落到代码上的过程。这是一个边想边做、边做边调整的过程。只有把这两部分放在一起看,才能真正把设计做好。
核心就一句话: 化解复杂度,让软件在变化中仍能保持良好结构。 做好它就必须要在需求整体上有把控还要在程序代码细节上有约束。
推荐下面这些书作为管理信息系统类软件设计开发(俗称业务系统、管理系统)的入门和进阶参考。
1《企业应用架构模式》
整体视角的书,作者是Martin Fowler,讲的是企业级应用里那些反复出现的问题、场景,以及对应的解决方法。

成书于2003年,现在很多常见的系统设计思路,都能在这本书里找到源头。后面流行起来的微服务、MVVM、微前端等实践,虽然书里没有直接写到,但回头看时,依然能看到不少脉络。适合当作“追根溯源”的书来读。
2《Expert One-on-One J2EE Development without EJB》
整体视角的书,作者是Rod Johnson,Spring框架的创始人。

作者在书中用大量篇幅讲述怎样开展更合理的OO分析和设计,比如依赖注入、控制反转、AOP等。这本书塑造了我的OO设计观。
3《设计模式》
细节视角的书,1994年出版,4位作者(Gang of Four,GoF)联合撰写。

书中整理了23种经典设计模式,并给出了每种模式的适用场景、优缺点和实现方式。
4《重构:改善既有代码的设计》
细节视角的书,作者是Martin Fowler,初版是1997年。

书中列举了一系列代码里常见的问题,以及对应的改进思路和重构手法。
5《数据模型资源手册》
一共三卷,整理了作者积累的各类关系数据库模型设计,既有通用型,也有专用型。

如果说前面的书籍讲的是方法和思路,那么这套书更像是直接给出数据库设计的答案,对于各类企业管理信息系统的设计非常有帮助。
不过,书里的实现模式相对复杂,ORM很难完全映射。
6《软件设计:从专业到卓越》
入门视角的书,这本书通过案例,从需求到实现端到端地阐述了软件设计与开发的全流程,是对各类工具和方法的综合运用。适合入门学习。

夜雨聆风