首页>参考读物>计算机科学与技术>软件工程及软件方法学

面向模式的软件体系结构 卷1:模式系统
作者 : Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal
译者 : 贲可荣 郭福亮 赵皑 等
出版日期 : 2003-01-01
ISBN : 7-111-11182-6
定价 : 45.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 273
开本 : 16开
原书名 : Pattern-Oriented Software Architecture, Volume 1 A System of Patterns
原出版社: John Wiley & Sons,Inc.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书系统地介绍了模式的概念并讨论了模式描述的原则;给出了来自不同应用领域的8个软件体系结构模式;还给出了8个设计模式,这些模式分别针对在定义了软件系统的整体结构之后遇到的典型问题;对惯用法模式进行了阐述;论述了将模式组织成模式系统的重要性;讨论了模式如何嵌入到软件体系结构中,特别是对软件体系结构及其基本原则的理解。此外,本书还介绍了模式历史、相关工作和整个模式团体,并对模式的未来发展作了展望。
  本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供了一些技术来解决特定的再现设计问题,对软件开发的初学者和专家都有帮助。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。本书可作为计算机专业高年级本科生、研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。  软件模式根本改变了开发人员对软件应该如何设计、构建和文档化的思考方式。任何一位认真求索的程序员都应该将本放到自己的书架上作为必备的参考用书。

Amazon.com评价:
  为了从软件工程的更大范围内前瞻模式的潜能…本书指出了如何将模式应用于各个层次,从用于特定计算机语言(如C++)的惯用法到设计模式,再到对改善整个软件工程周期都有用的高层模式。

Amazon.com客户评价:
   关于模式的一本杰作。该书是《设计模式》(Gamma等著)的参考读物。 一本适用于每一个软件构架师的著作…它确实能使我们缩短所需的设计时间。 这是一本特别的模式专著…我不但曾论证“四人帮”的书是20世纪90年代最重要的编程著作,我也认为…本书是一本更加深入、更加成熟的著作。

CVu 1997年的评价:
  《设计模式》(Gamma等著)已是一本广为传阅的经典著作,我认为《面向模式的软件体系结构》也应该成为经典。《设计模式》覆盖了面向对象开发中的一个抽象层,而这本书覆盖了三个层次:高层体系结构模式、设计模式和语言特定的惯用法。

图书特色

贲可荣  男,1963年8月生,江苏省海安县人。现任海军工程大学教授。 1983年在苏州大学数学系获理学学士学位,1986年在南京大学数学系获理学硕士学位。1986年8月至1990年3月在海军工程大学计算机系任教。1994年6月在国防科技大学获工学博士学位。博士期间,由国防科技大学计算机学院陈火旺院士指导,主修计算机软件。1994年12月任海军工程大学计算机系副教授。1995年起担任计算机应用技术专业硕士生导师、海军工程大学学位评定委员会委员。经教育部批准,2000年3月至2001年3月任武汉大学软件工程国家重点实验室访问学者;2000年被教育部确定为海军首批十名骨干教师之一。2000年12月晋升为教授。 主要译著有《净室软件工程—技术与过程》(电子工业出版社,2001年6月),《能力成熟度模型(CMM):软件过程改进指南》(电子工业出版社,2001年7月),《基于项目的软件工程—面向对象研究方法》(机械工业出版社,2002年6月),审校《实用软件测试指南》(电子工业出版社,2003年1月),参加《计算机科学技术百科全书》(清华大学出版社,1998)的编写。先后承担国家自然科学基金项目、国家863项目和军队科研等五个项目。在“中国科学”、“软件学报”、“计算机科学”等刊物和会议发表论文50余篇。成果获军队科技进步奖。主要研究方向:软件可靠性、软件质量保证技术、形式化方法等。兼任中国计算机学会计算机理论专业委员会委员、中国造船工程学会电子技术学术委员会委员,《海军工程大学学报》、《舰船电子工程》等刊物编委。 郭福亮  男,1963年1月生,河北省滦南县人。现任海军工程大学教授。 1982年在海军工程学院数学专业获理学学士学位,1987年在北京航空学院计算机系软件工程研究生班毕业。1987年8月至1996年8月在海军工程学院计算机系任教。2001年1月在华中科技大学计算机学院获硕士学位。2001年9月起在华中科技大学攻读博士学位。由华中科技大学计算机学院卢炎生教授指导,主修计算机软件与理论。1996年12月任海军工程学院华中地区军队院校计算机技术服务中心副教授。1998年起担任计算机应用技术专业硕士生导师。2001年12月晋升为教授。 曾主编过《微型计算机维护维修实用技术》(华中理工大学出版社,1997年11月),主要译著有《自己动手装网络Linux》(华中理工大学出版社,1998年12月)。在“中国科技文库”、“计算机应用研究”、“图像工程”、“军事”等刊物和会议发表论文20余篇。先后承担多项军队科研项目,其中两项成果获军队科技进步奖。主要研究方向:软件可靠性,数据挖掘技术等。 赵皑  女,1973年1月生,河北张家口人。现任海军工程大学讲师。 1994年在国防科技大学计算机系获工学学士学位,1997年在国防科技大学计算机系获工学硕士学位。1997年3月至今在海军工程大学任教。主要研究方向:计算机网络及应用、多媒体技术。 主要译著有《JAVA 2 类库》(机械工业出版社,2001年1月)。

图书前言

本书讨论了软件体系结构的模式,简称模式。近年来,模式已引起广泛关注,讨论模式的形式包括专题讨论会、研究班、电子论坛、期刊论文、专著等。模式团体甚至开始举行它们自己的会议。所有这些有关模式的热情讨论看起来像是达到了“对象波”的顶峰。
  为什么关于模式如此令人激动呢?很可能是因为它们在收集熟练的设计者和软件工程师的经验方面起到了“根基”的作用。这样的专家对许多再现设计问题已有了解决方案。模式以易于获得的方式和所希望的良好书写的格式捕获了这些已证实的解决方案。
  我们希望本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。本书会帮助这两种人找到对一个特定设计问题的充分考验的解决方案。
  本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
  以规范形式记录设计知识可以追溯到Christopher Alexander。他在建筑学领域率先提出模式概念。他的著作《The Timeless Way of Building》说明了如何将模式应用到房屋构建以及邻近地区和整个城市的规划之中。他的工作的基础主题是居住场所的设计,不仅要注重功能性和流行趋势,而且要讲究舒适感和欣慰感。良好设计的建筑可以展现清晰可辨而又难以描述和量化的内在特质。简而言之,这样的建筑拥有“没有名称的质量”。
  把这种方法改用到软件工程中的早期试验主要偏重于Alexander的风格。最近软件界经历了寻求更适合软件设计的风格形态的试验。对模式尝试了几种不同的描述形式,但至今没有达成一致。
  尽管我们把相当多的精力用于寻找一种描述模式的好方法,但是开发“模式风格”理论并不是本书的主要目标。这当然不是开始模式工作的原动力。在1991年,我们以一种直截了当的方式记录了第一个模式。随着模式系统文档的逐步增长,很快就发现单个模式不能单独存在。模式揭示了丰富的相互关系集。这是出版本书的驱动因素之一,而不是在某个时候把模式文档化并作为系列论文出版。采用图书这种方法的缺点在于,在成书之前需要一个较长的酝酿思考阶段。尽管模式成名已经几十年了,但是花费如此之长的时间来提出一个好的模式描述仍然让我们吃惊。
  其他四位作者经历了同样的现象。1994年秋天,Erich Gamma、Richard Helm,Ralph Johnson和John Vlissides出版了重要著作《设计模式—可复用面向对象软件的基础》。尽管设计模式的思想不再新颖,但是“GoF”(简称为“四人帮”)的著作仍然给出了对良好描述的面向对象程序设计模式的最初分类。
  我们的方法和“四人帮”的方法略有差别,尽管有许多相似之处并有部分重叠。“GoF”的著作集中于设计层模式,而我们的模式跨越几个抽象层次。范围从高层体系结构模式经设计模式到低层惯用法。我们也关注面向对象以外的问题,并试图结合对模式描述技术的最新认识。我们的整体目标是使用模式来在软件体系结构的更广泛的语境中提供帮助。我们把这种方式叫做面向模式的软件体系结构。我们谈到了模式系统,模式不仅仅被收集在不同种类的容器中,而且也根据相应的标准分组。“GoF”的著作通过把模式划分为“创建型”、“结构型”和“行为型”等开始了分类工作。我们下一步试图根据已获得的更好标准(如交互式和适应性系统、工作的组织、通信和访问控制等)来对模式分组。
  我们想要鼓励我们模式系统的用户与其同事共享我们的研究成果。模式共享建立了设计问题的通用词汇表。它使得正在成长的模式团体的成员以更有效的方式来确认、命名和讨论问题及其解决方案。在系统设计中达到“提速”是在工作中使用模式的一个更加重要的理由。
我们的模式系统并不完全。如此多的模式用一本书是不可能记录下来的。随着技术的演化,新的模式也跟着演化。我们希望读者能针对你们的特定需要对我们的模式系统进行扩展、修改和剪裁。缺少的模式应该添加,不需要的模式可以忽略,其他的模式可以更改。
  如果你对本书风格和内容方面的改进有任何评论、批评或建议,请大胆提出。我们也欢迎用我们描述的模式来报告经验。你可以写信并通过John Wiley & Sons.出版公司转交给我们,或发电子邮件到patterns@mchp.siemens.de。
  我们对于本书包括的绝大多数模式的最初版本已经在因特网上进行了讨论。我们的动机不是为了获得免费广告或赠送模式。相反,我们想支持出版业的一个新趋势,即在刊印之前尽早将材料展示给团体成员,这样对每一个部门都有益。我们欣赏这些经验并感谢所有的参与者。但是这并不意味着我们关闭了本书的公开电子讨论。邮件列表仍然存在并仍然欢迎读者参与。预订指南可以在模式主页上找到。它的URL是:
http://www.hillside.net/patterns/
  这个URL也是所有模式方面(比如已出版的和待出版的著作、模式会议、模式论文等)最重要的信息资源。

本书结构
  第1章系统地介绍了模式的概念并讨论了模式描述的原则。第2章~第4章给出了我们的模式目录的内容。
  体系结构模式是最高层模式。它们旨在提供整个系统体系结构的构架。第2章给出了来自不同应用领域的8个体系结构模式。
  第3章给出了8个设计模式,这些模式分别针对在定义软件系统的整体结构之后遇到的典型问题。例如,我们的设计模式处理以下情况:构建控制复杂性的组件,分布组件间工作量,组织组件间通信。
  第4章是模式内容的第三部分也是最后一部分。它处理惯用法,一种与语言相关的模式。但是本书主要谈到其他人的工作而不是对我们自己的惯用法进行文档化,并且仅仅提供了一个惯用法作为一个具体实例。本书没有对我们自己的惯用法进行描述,理由很简单—已经有了很多诸如C++和Smalltalk语言的惯用法可供使用。我们不是仅对这些模式进行改述,我们要有选择地引用原始资源。
  在第5章中,我们证实了把模式组织成模式系统是很重要的。这样的系统在如下几个方面对模式的作者和使用者都有帮助:为手头的情形寻找正确的模式,填充模式汇集中的缺口,理解模式之间的关系并演化模式系统。
  在第6章中,我们讨论了如何将模式嵌入到软件体系结构中。特别是我们讨论了对于软件体系结构及其基本原则的理解,我们展示了模式是如何支持这些原则的。
  第7章讨论模式历史、相关工作和整个模式团体。结束本书前,第8章给出了对于模式未来发展的展望。
本书以附录结尾,附录包括符号表、常用词汇表、参考文献和模式索引。

作者简介

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal:暂无简介

译者简介

贲可荣 郭福亮 赵皑 等:暂无简介

译者序

软件体系结构的模式描述了在特定设计语境中出现的设计问题的特殊重现,并为这种方案提供了一个被证明良好的一般计划。方案计划通过描述它的关键组件、它们的责任和相互关系以及它们结合的方式来指定。
  模式有助于利用资深软件工程师的经验来构建软件。模式总结在软件开发中现存的、被证明良好的经验,再用来促进好的设计实践。每个模式处理一个软件系统的设计或实现中一种特定类型的重复出现的问题。模式可以用来构建具有特定属性的软件体系结构。
  保存模式文档已被证明是很好的设计经验,它们提炼并提供一种方式来重用从实践经验中获得的设计知识。模式为设计原则提供一种公共的词汇和理解。它们提高了对设计问题及其解决方案的讨论效率。
模式是软件体系结构文档化的一种方式。当设计一个软件系统时,它们可以进行形象描述。模式支持采用定义属性来构造软件。模式提供一个功能行为的基本框架,有助于实现应用程序的功能。模式还清楚描述了软件系统的非功能需求,如可修改性、可靠性、可测试性和可重用性。模式有助于建立一个复杂的不同种类的软件体系结构。每个模式提供组件的预定义集、它们的作用以及它们之间的关系。
  一个模式提供了一个问题族的一般解决方案的计划,而不是可以使用的预制模块。模式有助于相似单元的创建。模式有助于解决问题,但它不能提供彻底的方案。
  模式有助于管理软件复杂度。每个模式描述一种已被证明的方法以处理指出的问题:所需组件的种类、它们的作用、要隐藏的细节、必须看到的抽象以及每一个是如何工作的,等等。
  本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。
  本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书作为软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书作为参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
  本书可作为计算机专业高年级本科生、研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。
由于各种原因,译稿难免存在错误和疏漏。欢迎读者批评指正。


译  者
2002年8月8日

图书目录

第1章  模式 1
1.1  什么是模式 1
1.2  模式是如何构成的 5
1.3  模式类别 7
1.3.1  体系结构模式 7
1.3.2  设计模式 7
1.3.3  惯用法 8
1.3.4  与软件开发结合 9
1.4  模式间关系 9
1.5  模式描述 11
1.6  模式和软件体系结构 13
1.6.1  模式作为智力构造块 13
1.6.2  构造异构体系结构 13
1.6.3  模式和方法 14
1.6.4  实现模式 14
1.7  总结 14
第2章  体系结构模式 16
2.1  引言 16
2.2  从混沌到结构 17
2.2.1  层 18
2.2.2  管道和过滤器 30
2.2.3  黑板 41
2.3  分布式系统 55
2.3.1  代理者 56
2.4  交互式系统 70
2.4.1  模型-视图-控制器 70
2.4.2  表示-抽象-控制 83
2.5  适应性系统 97
2.5.1  微核 98
2.5.2  映像 110
第3章  设计模式 128
3.1  引言 128
3.2  结构化分解 129
3.2.1  整体-部分 129
3.3  工作的组织 141
3.3.1  主控-从属 142
3.4  访问控制 151
3.4.1  代理 152
3.5  管理 160
3.5.1  命令处理器 160
3.5.2  视图处理程序 169
3.6  通信 178
3.6.1  转发器-接收器 179
3.6.2  客户机-分配器-服务器 189
3.6.3  出版者-订阅者 197
第4章  惯用法 201
4.1  引言 201
4.2  惯用法能够提供什么 201
4.3  惯用法与风格 202
4.4  在哪里可以发现惯用法 204
4.4.1  计数指针 205
第5章  模式系统  210
5.1  什么是模式系统 210
5.2  模式分类 211
5.2.1  模式类别 212
5.2.2  问题类别 212
5.2.3  分类图式 213
5.2.4  比较 214
5.3  模式选择 214
5.4  作为实现指南的模式系统 216
5.5  模式系统的演化 218
5.5.1  模式描述的演化 218
5.5.2  作者研讨会 218
5.5.3  模式采掘 219
5.5.4  新模式集成 219
5.5.5  删除过时模式 220
5.5.6  扩展组织图式 220
5.6  总结 222
第6章  模式和软件体系结构 223
6.1  引言 223
6.1.1  软件体系结构 223
6.1.2  组件 224
6.1.3  关系 225
6.1.4  视图 225
6.1.5  功能属性和非功能属性 226
6.1.6  软件设计 227
6.1.7  小结 227
6.2  软件体系结构中的模式 227
6.2.1  方法学 228
6.2.2  软件过程 228
6.2.3  体系结构风格 229
6.2.4  框架 230
6.3  软件体系结构启用技术 231
6.3.1  抽象 231
6.3.2  封装 231
6.3.3  信息隐藏 232
6.3.4  模块化 232
6.3.5  事务分离 232
6.3.6  耦合和内聚 232
6.3.7  充分性、完整性和原始性 233
6.3.8  策略和实现的分离 233
6.3.9  接口和实现的分离 233
6.3.10  单一引用点 234
6.3.11  分而治之 234
6.3.12  小结 234
6.4  软件体系结构的非功能属性 234
6.4.1  易修改性 235
6.4.2  互操作性 236
6.4.3  效率 236
6.4.4  可靠性 236
6.4.5  可测试性 237
6.4.6  可重用性 237
6.5  总结 238
第7章  模式团体 239
7.1  起源 239
7.2  领军人物和他们的著作 240
7.3  团体 240
第8章  模式将走向何方 243
8.1  模式采掘 243
8.1.1  软件体系结构的模式 243
8.1.2  组织模式 244
8.1.3  特定领域模式 244
8.1.4  模式语言 244
8.2  模式组织与索引 244
8.3  方法与工具 245
8.4  算法、数据结构和模式 246
8.5  形式化模式 247
8.6  最后评述 247
符号 248
词汇表 252
参考文献 258
模式索引 270
索引 273

教学资源推荐
作者: [美] 埃里克·伽玛(Erich Gamma) 理查德·赫尔姆(Richard Helm) 拉尔夫·约翰逊(Ralph Johnson) 约翰·威利斯迪斯(John Vlissides) 著
作者: (德)Christof Ebert 著
参考读物推荐
作者: G.Gordon Schulmeyer James I.McManus
作者: (加)Lee Ackerman Celso Gonzalez 著
作者: [英]马丁·福勒(Martin Fowler) 著
作者: Ashok Iyengar, Vinod Jessani, Michele Chilanti