《架构之美》本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。
好的架构师首先关注的并不是系统的功能而是系统需要满足的品质,它指明了功能以何种方式交付才能被系统的利益相关者普遍接受,系统的结果包含了这些stakeholders的既定利益。成功的架构师的两项重要实践是:让利益相关者参与和同时关注系统的功能的品质和功能。
架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉了另一些细节。软件系统的架构包括行为上的和结构上的。外部行为描述展示了软件如何与用户、其他设备和外部设备进行交互,也就是需求。结构描述展示了软件如何被划分为多个部分,以及这些部分的关系。
架构的设计受到许多因素的制约,架构是好是坏并没有统一的标准。这取决于人们对软件的需求、软件被构建和运行的环境,以及软件团队本身的特点等等因素。评价软件好坏有很多指标,例如性能、安全、可伸展性等等。一般来说,这些指标是很难全部满足的,试图改进其中一个往往会对其他指标产生负面影响。所以从某种意义上来说,软件架构是折中的游戏。对于一组功能需求和品质需求,没有唯一的正确架构。
《架构之美》没有太多空洞的概念和论述,而是抛砖引玉地展示多个实际的项目。通过对它们架构利弊的分析,以及相关的思考,给读者提供了有益的启发。在这里我简单介绍几个其中的例子。
引用William J. Mitchell为此书所写的文章:“好的建筑师不是通过随意的、蛮力的方式来构造他们的设计,他们肯定会避免笨拙的做法。”“在漂亮的建筑作品所表现出来的不同和复杂性背后,你通常会发现一些关于功能组织和规范秩序的简单而优雅的原则。发现这些原则需要思考,而思考正是建筑的快乐和经验的关键部分。”
“如果你能弄明白这些原则,就可以通过某种标准编程语言中同样优雅的几行代码构造出这些作品的模型;但如果你弄不明白这些原则,那么肯定要编写更长的、不包含那么多深刻见解的代码。”
“建筑师会仰慕那些应用了简单优雅原则来实现许多复杂性的架构之美。类似地,软件架构师和程序员也会仰慕那些清晰而准确执行了许多复杂任务的代码之美。科学家会仰慕那些描述了各种不同现象的简单法则之美和它们的解释能力。”
架构之美在于其简洁深刻地描述和解决现实的软件设计问题,无论是它为软件开发人员减少的麻烦,还是本身形式上的和谐和整齐,都足以让人赏心悦目。