软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

软件设计与架构书籍

格雷迪说过:“所有的架构都是设计,但并非所有的设计都是架构”。

软件设计,可以提升代码的可阅读性、可维护性、可扩展性等;一个设计点对软件整体影响比较小,发生变更时代价比较小。避免过度设计,避免无设计,需要找到平衡点才能提升团队的生产效率。本文只关注编码上面的软件设计,不涉及需求分析等其它内容。

软件架构,可以提升系统的可用性、稳定性、高性能等,一个架构点可能影响到整个软件的结构、依赖关系、部署形态等,发生变更时代价往往是巨大的。即使在敏捷组织中,架构点往往需要在相关编码之前确定,编码过程中只进行微调——流程上与软件设计有比较大的差别。

本文中推荐一些软件设计与架构相关的书籍。我先接触到敏捷软件开发思想,所以,从设计模式到软件架构的很多书籍都跟敏捷宣言大佬有关。

软件设计与架构书籍

1. 软件设计

软件设计是不分计算机语言的,但是选择自己认识的语言可以帮助自己更好地理解样例代码。在软件设计中,设计模式非常重要,在遇到相似问题时可以快速找到前人提供的解决方案。重构,是日常中改善现有代码设计的一个重要手段,而不是重新设计软件的架构。

  • 《敏捷软件开发:原则、模式与实践》1
  • 《设计模式:可复用面向对象软件的基础》
  • 《Head First设计模式》
  • 《代码整洁之道》(Clean Code)1
  • 《重构:改善既有代码的设计》1
  • 《重构与模式》

2. 软件架构

不同的软件架构书籍,其包含的内容不一样。有的包含架构理论,有的包含解决某类问题的方法(俗称“招式”),有的包含人员关系与组织结构。“招式”非常多,但是必需学习,“站在巨人的肩膀上”可以避免走很多弯路。同时,软件架构有不同的派系风格。

  • 《程序员必读之软件架构》(Software Architecture for Developers)1
  • 《架构整洁之道》(Clean Architecture)1
  • 《软件架构师的12项修炼》
  • 《面向模式的软件架构·卷1:模式系统》1
  • 《架构即未来:现代企业可扩展的Web架构、流程和组织》1
  • 《架构真经:互联网技术架构的设计原则》1
  • 《未来架构:从服务化到云原生》1
  • 《持续演进的Cloud Native:云原生架构下微服务最佳实践》1
  • 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》1
  • 《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》1
  • 《微服务设计》(Building Microservices)1
  • 《微服务设计模式和最佳实践》
  • 《恰如其分的软件架构》1
  • 《Kubernetes权威指南》1

脚注

  1. 本人已翻阅的书籍,收获不少。