面向模式的软件体系结构 卷1:模式系统[按需印刷]
基本信息
- 原书名: Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
- 原出版社: John Wiley & Son Ltd
- 作者: Frank Buschmann,Regine meunier,Hans Rohnert,Peter Sommerlad,Michael Stal [作译者介绍]
- 译者: 贲可荣 郭福亮 等
- 丛书名: 软件工程技术丛书/设计系列
- 出版社:机械工业出版社
- ISBN:7111111826
- 上架时间:2003-1-8
- 出版日期:2003 年1月
- 开本:16开
- 页码:273
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 综合
内容简介回到顶部↑
本书系统地介绍了模式的概念并讨论了模式描述的原则;给出了来自不同应用领域的8个软件体系结构模式;还给出了8个设计模式,这些模式分别针对在定义了软件系统的整体结构之后遇到的典型问题;对惯用法模式进行了阐述;论述了将模式组织成模式系统的重要性;讨论了模式如何嵌入到软件体系结构中,特别是对软件体系结构及其基本原则的理解。此外,本书还介绍了模式历史、相关工作和整个模式团体,并对模式的未来发展作了展望。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供了一些技术来解决特定的再现设计问题,对软件开发的初学者和专家都有帮助。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。本书可作为计算机专业高年级本科生、研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。
软件模式根本改变了开发人员对软件应该如何设计、构建和文档化的思考方式。任何一位认真求索的程序员都应该将本放到自己的书架上作为必备的参考用书。
[font color="#cc0000"]amazon.com评价:[/font]
为了从软件工程的更大范围内前瞻模式的潜能…本书指出了如何将模式应用于各个层次,从用于特定计算机语言(如c++)的惯用法到设计模式,再到对改善整个软件工程周期都有用的高层模式。
[font color="#cc0000"]amazon.com客户评价:[/font]
关于模式的一本杰作。该书是《设计模式》(gamma等著)的参考读物。 一本适用于每一个软件构架师的著作…它确实能使我们缩短所需的设计时间。 这是一本特别的模式专著…我不但曾论证“四人帮”的书是20世纪90年代最重要的编程著作,我也认为…本书是一本更加深入、更加成熟的著作。
[font color="#cc0000"]cvu 1997年的评价:[/font]
《设计模式》(gamma等著)已是一本广为传阅的经典著作,我认为《面向模式的软件体系结构》也应该成为经典。《设计模式》覆盖了面向对象开发中的一个抽象层,而这本书覆盖了三个层次:高层体系结构模式、设计模式和语言特定的惯用法。
[a href="http://www.china-pub.com/computers/bookinfo/posasp.htm" target="_blank"][font color="#cc0000"]从设计模式到体系结构模式[/font][/a]/评读《面向模式的软件体系结构 卷1:模式系统》/王知遇
[a href="http://www.china-pub.com/computers/hz/hjts.html" target="_blank"][font color="#cc0000"]机械工业出版社华章公司引进的美国软件开发杂志获奖图书[/font][/a]
软件模式根本改变了开发人员对软件应该如何设计、构建和文档化的思考方式。任何一位认真求索的程序员都应该将本放到自己的书架上作为必备的参考用书。
[font color="#cc0000"]amazon.com评价:[/font]
为了从软件工程的更大范围内前瞻模式的潜能…本书指出了如何将模式应用于各个层次,从用于特定计算机语言(如c++)的惯用法到设计模式,再到对改善整个软件工程周期都有用的高层模式。
[font color="#cc0000"]amazon.com客户评价:[/font]
关于模式的一本杰作。该书是《设计模式》(gamma等著)的参考读物。 一本适用于每一个软件构架师的著作…它确实能使我们缩短所需的设计时间。 这是一本特别的模式专著…我不但曾论证“四人帮”的书是20世纪90年代最重要的编程著作,我也认为…本书是一本更加深入、更加成熟的著作。
[font color="#cc0000"]cvu 1997年的评价:[/font]
《设计模式》(gamma等著)已是一本广为传阅的经典著作,我认为《面向模式的软件体系结构》也应该成为经典。《设计模式》覆盖了面向对象开发中的一个抽象层,而这本书覆盖了三个层次:高层体系结构模式、设计模式和语言特定的惯用法。
[a href="http://www.china-pub.com/computers/bookinfo/posasp.htm" target="_blank"][font color="#cc0000"]从设计模式到体系结构模式[/font][/a]/评读《面向模式的软件体系结构 卷1:模式系统》/王知遇
[a href="http://www.china-pub.com/computers/hz/hjts.html" target="_blank"][font color="#cc0000"]机械工业出版社华章公司引进的美国软件开发杂志获奖图书[/font][/a]
作译者回到顶部↑
本书提供作译者介绍
贲可荣 男,1963年8月生,江苏省海安县人。现任海军工程大学教授。
1983年在苏州大学数学系获理学学士学位,1986年在南京大学数学系获理学硕士学位。1986年8月至1990年3月在海军工程大学计算机系任教。1994年6月在国防科技大学获工学博士学位。博士期间,由国防科技大学计算机学院陈火旺院士指导,主修计算机软件。1994年12月任海军工程大学计算机系副教授。1995年起担任计算机应用技术专业硕士生导师、海军工程大学学位评定委员会委员。经教育部批准,2000年3月至2001年3月任武汉大学软件工程.. << 查看详细
1983年在苏州大学数学系获理学学士学位,1986年在南京大学数学系获理学硕士学位。1986年8月至1990年3月在海军工程大学计算机系任教。1994年6月在国防科技大学获工学博士学位。博士期间,由国防科技大学计算机学院陈火旺院士指导,主修计算机软件。1994年12月任海军工程大学计算机系副教授。1995年起担任计算机应用技术专业硕士生导师、海军工程大学学位评定委员会委员。经教育部批准,2000年3月至2001年3月任武汉大学软件工程.. << 查看详细
目录回到顶部↑
第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
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
译者序回到顶部↑
软件体系结构的模式描述了在特定设计语境中出现的设计问题的特殊重现,并为这种方案提供了一个被证明良好的一般计划。方案计划通过描述它的关键组件、它们的责任和相互关系以及它们结合的方式来指定。
模式有助于利用资深软件工程师的经验来构建软件。模式总结在软件开发中现存的、被证明良好的经验,再用来促进好的设计实践。每个模式处理一个软件系统的设计或实现中一种特定类型的重复出现的问题。模式可以用来构建具有特定属性的软件体系结构。
保存模式文档已被证明是很好的设计经验,它们提炼并提供一种方式来重用从实践经验中获得的设计知识。模式为设计原则提供一种公共的词汇和理解。它们提高了对设计问题及其解决方案的讨论效率。
模式是软件体系结构文档化的一种方式。当设计一个软件系统时,它们可以进行形象描述。模式支持采用定义属性来构造软件。模式提供一个功能行为的基本框架,有助于实现应用程序的功能。模式还清楚描述了软件系统的非功能需求,如可修改性、可靠性、可测试性和可重用性。模式有助于建立一个复杂的不同种类的软件体系结构。每个模式提供组件的预定义集、它们的作用以及它们之间的关系。
一个模式提供了一个问题族的一般解决方案的计划,而不是可以使用的预制模块。模式有助于相似单元的创建。模式有助于解决问题,但它不能提供彻底的方案。
模式有助于管理软件复杂度。每个模式描述一种已被证明的方法以处理指出的问题:所需组件的种类、它们的作用、要隐藏的细节、必须看到的抽象以及每一个是如何工作的,等等。
本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书作为软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书作为参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
本书可作为计算机专业高年级本科生、研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。
本书第3、4章由郭福亮翻译,第5~8章由赵皑翻译,其余章节由贲可荣翻译。全书由贲可荣审校。俞立军、孙宁、王淑雪、吴铁洲、周娟、石国景等参与了本书的翻译工作,在此表示感谢。
由于各种原因,译稿难免存在错误和疏漏。欢迎读者批评指正。
译 者
2002年8月8日
模式有助于利用资深软件工程师的经验来构建软件。模式总结在软件开发中现存的、被证明良好的经验,再用来促进好的设计实践。每个模式处理一个软件系统的设计或实现中一种特定类型的重复出现的问题。模式可以用来构建具有特定属性的软件体系结构。
保存模式文档已被证明是很好的设计经验,它们提炼并提供一种方式来重用从实践经验中获得的设计知识。模式为设计原则提供一种公共的词汇和理解。它们提高了对设计问题及其解决方案的讨论效率。
模式是软件体系结构文档化的一种方式。当设计一个软件系统时,它们可以进行形象描述。模式支持采用定义属性来构造软件。模式提供一个功能行为的基本框架,有助于实现应用程序的功能。模式还清楚描述了软件系统的非功能需求,如可修改性、可靠性、可测试性和可重用性。模式有助于建立一个复杂的不同种类的软件体系结构。每个模式提供组件的预定义集、它们的作用以及它们之间的关系。
一个模式提供了一个问题族的一般解决方案的计划,而不是可以使用的预制模块。模式有助于相似单元的创建。模式有助于解决问题,但它不能提供彻底的方案。
模式有助于管理软件复杂度。每个模式描述一种已被证明的方法以处理指出的问题:所需组件的种类、它们的作用、要隐藏的细节、必须看到的抽象以及每一个是如何工作的,等等。
本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书作为软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书作为参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
本书可作为计算机专业高年级本科生、研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。
本书第3、4章由郭福亮翻译,第5~8章由赵皑翻译,其余章节由贲可荣翻译。全书由贲可荣审校。俞立军、孙宁、王淑雪、吴铁洲、周娟、石国景等参与了本书的翻译工作,在此表示感谢。
由于各种原因,译稿难免存在错误和疏漏。欢迎读者批评指正。
译 者
2002年8月8日
前言回到顶部↑
本书讨论了软件体系结构的模式,简称模式。近年来,模式已引起广泛关注,讨论模式的形式包括专题讨论会、研究班、电子论坛、期刊论文、专著等。模式团体甚至开始举行它们自己的会议。所有这些有关模式的热情讨论看起来像是达到了“对象波”的顶峰。
为什么关于模式如此令人激动呢?很可能是因为它们在收集熟练的设计者和软件工程师的经验方面起到了“根基”的作用。这样的专家对许多再现设计问题已有了解决方案。模式以易于获得的方式和所希望的良好书写的格式捕获了这些已证实的解决方案。
我们希望本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。本书会帮助这两种人找到对一个特定设计问题的充分考验的解决方案。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
以规范形式记录设计知识可以追溯到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语言的惯用法可供使用。我们不是仅对这些模式进行改述,我们要有选择地引用原始资源。
为什么关于模式如此令人激动呢?很可能是因为它们在收集熟练的设计者和软件工程师的经验方面起到了“根基”的作用。这样的专家对许多再现设计问题已有了解决方案。模式以易于获得的方式和所希望的良好书写的格式捕获了这些已证实的解决方案。
我们希望本书对软件开发的初学者和专家都有帮助。本书可以帮助初学者在适当规模的项目上像专家一样工作,而不需要积累多年的经验。本书可以支持专家去设计具备已定义属性的大型复杂软件,并可以促使他们学习别的专家的经验。本书会帮助这两种人找到对一个特定设计问题的充分考验的解决方案。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供一些技术来解决特定的再现设计问题。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉及模式实际应用的许多指导原则和约束限制。
以规范形式记录设计知识可以追溯到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语言的惯用法可供使用。我们不是仅对这些模式进行改述,我们要有选择地引用原始资源。


点击看大图




加载中...
