图书前言

体系结构一词在英文里就是“建筑”的意思。把软件系统比做一座楼房,从整体上讲,是因为它有基础、主体和装饰,即操作系统之上的基础设施软件,实现计算逻辑的主体应用程序,方便使用的用户界面程序。从细节上看,每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,也就是体系结构。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下的开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别深入研究软件体系结构。

随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明就显得越来越重要。对于大规模的复杂软件系统来说,总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择变得明显重要。在此种背景下,人们认识到了软件体系结构的重要性,并认为对软件体系结构的系统进行深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。

对于软件项目的开发来说,具有清晰的软件体系结构是首要的。传统的软件开发过程可以划分为从概念直到具体实现的若干个阶段,包括问题定义、需求分析、软件设计、软件实现及软件测试等。软件体系结构的建立应在需求分析之后,软件设计之前。但在传统的软件工程方法中,需求和设计之间存在一条很难逾越的鸿沟,从而难以有效地将需求转换为相应的设计。软件体系结构就是试图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题。

体系结构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享和重用、基于体系结构的软件开发提供了有力的支持。鉴于体系结构的重要性,Perry将软件体系结构视为软件开发中第一类重要的设计对象,Barry Boehm也明确指出: “在没有设计出体系结构及其规则时,整个项目不能继续下去,而且体系结构应该看作软件开发中可交付的中间产品”。

软件体系结构是根植于软件工程发展起来的一门新兴学科,目前已经成为软件工程研究和实践的主要领域。专门和广泛的研究软件体系结构是从20世纪90年代才开始的,1993年到1995年,卡耐基梅隆大学的Mary Shaw与David Garlan,贝尔实验室的Perry,南加州大学的Barry Boehm,斯坦福大学的David Luckham等人开始将注意力投向软件体系结构的研究和学科建设。

目前,软件体系结构的领域研究非常活跃,如南加州大学专门成立了软件体系结构研究组,曼彻斯特大学专门成立了软件体系结构研究所。同时,业界许多著名企业的研究中心也将软件体系结构作为重要的研究内容。如由IBM、Nokia和ABB等企业联合一些大学研究嵌入式系统的体系结构项目。国内也有不少机构在从事软件体系结构方面的研究,如北京大学软件工程研究所一直从事基于体系结构软件组装的工业化生产方法与平台的研究,北京邮电大学则研究了电信软件的体系结构,国防科学技术大学推出的CORBA规范实现平台为体系结构研究提供了基础设施所需的中间件技术。许多大学为计算机软件专业硕士和软件工程硕士都开设了软件体系结构课程。

本书共分10章,第1章简单介绍软件体系结构的概念、发展和应用现状; 第2章讨论软件体系结构建模,包括视图模型、核心模型、生命周期模型和抽象模型; 第3章介绍软件体系结构的风格和特定领域软件体系结构; 第4章讨论软件体系结构的描述方法,重点介绍软件体系结构描述语言; 第5章介绍动态软件体系结构及其描述方法; 第6章介绍Web服务体系结构相关知识,以及面向服务的体系结构的基本概念和设计原则; 第7章讨论基于体系结构的软件开发方法,介绍基于体系结构的软件过程; 第8章讨论软件体系结构的分析与测试问题,重点介绍软件体系结构的可靠性风险分析; 第9章讨论软件体系评估方法,重点介绍ATAM和SAAM方法; 第10章介绍软件产品线的原理和方法、框架技术,重点讨论产品线体系结构的设计和演化。第4.6、4.7、5、6、7.7节和第8章由李雄编写,其他章节由张友生编写。

在本书出版之际,我们要特别感谢国内外软件工程和软件体系结构专著、教材和许多高水平论文、报告的作者们(恕不一一列举,名单详见各章中的主要参考文献),他们的作品为本书提供了丰富的营养,使我们受益匪浅。在本书中引用了他们的部分材料,使本书能够尽量反映软件体系结构研究和实践领域的最新进展。

感谢阅读本书第一版的读者,特别要感谢使用本书第一版作为教材的老师,他们为本书的修订和第2版的出版提出了宝贵的意见。

感谢希赛网(http://www.csai.cn)为本书的意见反馈提供了空间和程序,感谢清华大学出版社的帮助。

由于作者水平有限,时间紧迫,加上软件体系结构是一门新兴的学科,本身发展很快,对有些新领域作者尚不熟悉。因此,书中难免有不妥和错误之处,我们诚恳地期望各位专家和读者不吝指教和帮助。对此,我们将深为感激。

2006年9月