图书前言

前言

软件体系结构是计算机科学重要的研究领域,越来越多的研究人员关注如何快速、低成本地构建合理、可靠的软件系统,尤其是应用于大型、复杂性场景的软件系统,如航空航天、国防等领域的智能化软件系统。本书是软件体系结构领域的入门书籍,将对其基础理论、工程领域、当前的研究动态和实践方法进行介绍。通过本书的学习,读者可以了解软件体系结构的基本概念,例如软件体系结构的必要性,软件体系结构的形式化语言描述方法,软件体系结构风格在实践中的应用和软件体系结构在软件系统开发过程中的应用。

本书第5版出版后,其通俗易懂的讲解方式受到了读者的欢迎。第6版在保持第5版特色的基础上,充分借鉴了作者在科研、研究生教学实践过程中的诸多经验;结合读者的反馈意见及最新的研究成果等,对内容做了进一步修订,更为系统地阐述了软件体系结构的一些经典的理论和最新的进展,并试图让读者领悟到软件体系结构的本质。

修订情况

软件体系结构研究领域发展迅速,伴随着众多会议的举行和期刊的出版,每年都会产生众多优秀研究成果。

与本书第5版相比,第6版吸收了大量软件体系结构领域的前沿成果,在各个章节都做了必要的补充和拓展,并增加了新的软件体系结构风格和案例,如第2章中添加了移动App体系风格,以及适用于物联网和微服务的体系结构;第6章中添加了对软件评估的时机和结果的介绍;第8章中添加了对软件体系结构领域的前沿学术平台的介绍。

学习指导

本书主要组织方式如下。

(1)基础理论: 第1~4章。

(2)理论工具: 第5章。

(3)研究部分: 第6~8章。

除了第5章外,其他各章相对独立,读者可以按照章的顺序进行学习,也可以自选感兴趣的章跳跃式学习。第5章作为第1~4章的理论工具,需要配合相应的知识点一起学习。此外,读者也能通过参考文献找到针对一些问题的更详细、更深入的描述和解释。

第1章: 软件体系结构的起源和发展。本章对软件体系结构的产生与演化进行概述。读者可以了解软件体系结构的必要性、发展历史和一般性定义,是进一步深入阅读后续章节的基础。

第2章: 软件体系结构风格和模式。本章是软件体系结构的重点,通过寻找和发现软件开发中的共性,总结出规律,利用抽象出来的体系结构设计风格来设计性能更加良好、更加易于拓展的软件系统。读者需要熟练掌握和理解列举的风格,包括它们的优缺点和经典范例。为了让读者具备将体系结构风格运用到实际项目中的能力,本章提供了几个源自真实项目的案例。每个案例在确保叙述清晰的情况下将无关紧要的细枝末节进行了删减,着重强调了体系结构风格在项目设计中的运用。建议读者融会贯通和知行合一。

第3章: 软件体系结构描述。如何描述软件体系结构是软件体系结构领域的核心问题。它是表述软件设计、在涉众间进行有效沟通以及根据需求进行软件行为校验的基础。本章将重点放在了体系结构具有数学基础的形式化描述上。

第4章: 软件体系结构级别的设计策略。本章介绍了基于形式化的体系结构设计,目的是提供一种形式化、流程化的软件体系结构层面的设计方法。本章包含的工具和方法论在恰当使用的前提下可以快速地让读者在体系结构层面对项目有一个评估和认识,并帮助开发者寻找合适的体系结构设计。

第5章: 软件体系结构集成开发环境。本章主要介绍了两种软件体系结构集成的开发环境,详尽地阐述了两种环境的使用原理、内部机制。本章中的工具与前面提及的理论相配套,可以帮助读者更好地理论联系实践。

第6章: 软件体系结构评估。在软件体系结构的初步设计完成之后,涉众需要评估设计的质量,判断其是否能为项目的成功开发奠定基础,是否能够满足预期的需求,避免因设计缺陷而导致项目失败。本章以基于场景的评估方法为主,介绍和比较了目前被广泛使用的软件体系结构评估方法。因为大部分评估方法缺乏形式化基础,更多的要依靠参与者的经验和能力。

第7章: 柔性软件体系结构。柔性软件体系结构是当前研究的热点之一,与传统软件相比,柔性软件体系结构在动态的环境中有着极其重要的优势,这也是其独立成章的原因。本章介绍了什么是柔性软件体系结构,为什么使用柔性软件体系结构,如何使用柔性软件体系结构。介绍的过程中注重理论结合实际,将复杂的理论用浅显的例子进行说明和解释。

第8章: 软件体系结构的前景。本章着重介绍未来软件体系结构的发展,以及软件体系结构如何对其他领域产生影响。

本书特色

(1) 本书在第2章末尾添加了3个真实案例来展示软件体系结构的设计思路。很多学习过软件工程或设计模式等书籍的读者会感觉到学习这些理论知识后,难以在实践时运用。本书通过3个去粗取精后的真实案例,详细地展示了软件体系结构风格从选择到运用的完整过程。希望通过此方式让读者在实例中思考和学习。

(2) 本书作为软件体系结构的入门书籍,兼顾知识的广度、深度和新度。软件领域发展日新月异,新的理论成果层出不穷,本书在重要的知识点上进行了详细讲述,辅以实例;对于具有发展前景的新成果进行概述并且辅以参考文献。由于本书具有翔实的内容,因此适用于不同类型的读者学习,包括但不限于开发人员、软件设计人员和软件项目管理人员。

(3) 本书各章具有相对独立性,但是章内具有良好的组织。不同读者在自行选择感兴趣的章加以学习的同时,对各个知识点能有透彻的理解,同时,章的相对独立性降低了不同类型读者的学习成本。

致谢

非常感谢清华大学软件体系结构小组出色的工作。他们对本书的专注、协作精神和勤奋是本书撰写过程中的不竭动力。

在本书的编写过程中,得到了许多人的帮助和支持。感谢第5版编写组的熊昆研究员、姜流研究员和马成;感谢第4版编写组的李旭研究员、王卫红教授;感谢第3版编写组的陈旭博士、李志鹏博士、叶文文博士,以及课题组的王斌旭、徐涛、李经纬;感谢邢建宽博士、郑翔高级工程师、董金春教授在本书第2版撰写过程中的出色工作,同时也感谢在第1版和第2版撰写过程中做了大量工作的王娟高级工程师、曹辉博士。

作者2026年1月