图书前言

目前,构建软件比几十年前困难得多。以前,软件工程师们致力于如何操作计算机,使其正常工作并正确地解决问题。数据的组织和算法的实现是当时软件设计的核心。越来越多的底层工作,如内存管理、网络通信等,已经自动化了,或者至少可以用更少代码来重用。程序员和设计人员通过使用高级编程语言和可以提高生产效率的开发工具,可以将更多的精力放在问题本身,而不是在机器代码中埋头苦干。然而,来自军事、企业等领域的需求带来的问题更加复杂,并且这种复杂性日甚一日。软件体系结构是处理这些复杂性的关键。

许多人最近才知道软件体系结构这个概念。然而事实上,软件体系结构有着相当长的历史,早在C++或C等语言出现之前,一些计算机科学家已经注意到软件结构的概念以及它对软件开发的影响。在20世纪90年代,软件体系结构开始蓬勃发展。那时,形成了许多以软件体系结构为主题的团体,相关的研讨会和学术会议也纷纷召开。同时,有关软件体系结构的文章、书籍和工具的数目激增。今天,在软件领域中一个负责软件设计、分析并处理来自不同涉众的不同关注点和需求关系的职位—— “软件架构师”——已经被普遍认为是软件开发团队的核心。

但是值得关注的是,大多数架构师并没有进行有关这个领域的任何系统学习、研究或者培训。他们中有些人甚至认为软件体系结构与人工智能或者数据挖掘等领域不同,根本就不需要科学研究和学术探讨。这种观点出现的原因是软件体系结构没有广泛接受的定义,也没有理论和实践方法的事实标准。同时,软件体系结构的快速发展和分化也导致了其过多子领域和分支的出现,而这些分化出来的产物既不能得到普及,相互之间也很难统一。这些都成为学习软件体系结构的挑战。本书将介绍软件体系结构的一些经典理论和最新进展,以便让读者领悟到软件体系结构的本质。

本书的主要作者有覃征教授、邢剑宽博士、董金春教授及高工等。覃征策划和确定了本书的写作内容与审核,邢剑宽则负责了本书的主要编写,董金春负责了本书的内容组织和审核组织工作,郑翔负责本书第3章和第4章的编写工作。

目标

本书是软件体系结构领域的入门书籍,将对其基础理论、一些子领域、当前的研究动态和实践方法进行介绍。在本书中,读者可以了解软件体系结构的基本概念,如为何说软件体系结构是必要的,如何用形式化语言来描述一个系统的软件体系结构,哪些体系结构风格在实践中得到了广泛应用和认同,如何在软件系统的开发过程中应用软件体系结构等。一些学习案例、数据、插图和其他材料都是最近几年才被发布的。这些材料有利于读者了解软件体系结构的最新进展。