首页>参考读物>计算机科学与技术>综合

分析模式:可复用的对象模型
作者 : (英)Martin Fowler 著
译者 : 樊东平 张路 等译
丛书名 : 经典重读
出版日期 : 2010-05-17
ISBN : 978-7-111-30530-9
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 332
开本 : 16
原书名 : Analysis Patterns: Reusable Object Models
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书讲述各种分析模式(即来自概念性业务模型的模式)和支持模式(即讲述如何使用分析模式的辅助性模式),把论述重点放在介绍面向对象分析和设计的最终结果——模型本身。作者透过平实朴素的语言,将自己丰富的对象建模经验与读者分享,使读者马上采纳这些经验性模式。

图书特色

Eclipse插件开发(原书第3版)
(美)Eric Clayberg Dan Rubel 著
陈 沛 等译
创建商业质量的插件意味着要比集成至Eclipse的最小要求做得更多、更远。它意味着需要处理商业版本 “得体与优雅”所要求的所有细节。本书包含了插件开发的全过程,包括达到最高质量所必需的所有额外步骤。
本书是全球畅销书,而作者完全重写了第3版以体现Eclipse 3.4各项强大的新功能。业界领先的Eclipse专家Eric Clayberg和Dan Rubel展示了插件开发所有细节和实践经验,并对开发者很有可能遇到的问题给出有针对性的、经过实践证明的解决方案。
本书已经完全更新了所有代码示例、相关API列表、图标和屏幕截图以体现Eclipse 3.4 API和最新的Java语法。此外,Clayberg和Rubel已经完全更新了广大受欢迎的Favorite用例,重新编写了大部分内容和代码。作者慎重地展开对已有Eclipse功能(比如视图和编辑器)的附加新功能的讨论,并详细解释了新的功能(如命令、GEF和PDE构建)。

本书主要内容
完整包含了Eclipse的新内容。
阐述了强大的Eclipse命令框架。该命令框架取代较老的Eclipse操作框架。
给出关于通过视图和编辑器使用命令的相关讨论。
介绍了Mylyn。它是一个降低信息过载和减轻多任务复杂度的专注于任务的接口。
包含关于图形编辑框架(Graphical Editing Framework,GEF)的全新的一章。GEF可以用于创建动态的、交互的图形用户界面元素。
带领你浏览PDE构建过程的每一个步骤。
展示如何使用p2创建更新站点。使用p2代替较老的更新管理器。

本书适用于对扩展Eclipse平台、Rational软件开发平台或支持Eclipse插件的其他平台感兴趣的有经验的开发者。

作者简介
Eric Clayberg 是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。他拥有麻省理工学院的理学学士学位、哈佛大学的MBA学位。他是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。
Dan Rubel Instantiations公司的首席技术执行官。他是一名成功的商人,也是面向对象技术方面的设计与应用专家。他具有十五年以上的商业软件开发经验。他拥有Bucknell的理学学士学位。他是Instantiations公司的创始人之一。
Instantiations是IBM高级商业伙伴,为Eclipse和IBM的VisualAge、WebSphere和Rational产品系列开发了许多商业附加软件。

图书前言

不久前,还没有任何有关面向对象分析和设计的书籍。而现在,却有如此之多的书籍,以致于任何一个专业人员都无法全部涉猎。其中大部分书籍都专注于:传授一种图符表示法,提出一个简单的建模过程,并用几个简单的示例来加以说明。本书是一本与它们完全不同的书。它并不把重点放在过程—即如何建模,而是把重点放在过程的结果—即模型本身。
  我是一个信息系统对象建模方面的顾问。客户常常聘请我训练他们的员工如何建模和为他们的项目提供指导。我的大部分技能来自对建模技术以及如何运用这些技术的了解。然而,更重要的是我的实际经验,这些经验是在建造许多模型和经常分析重复出现问题的过程中积累起来的。我经常发现项目在很多方面会遇到以前我曾面对的同样问题。这些经验使得我可以重用以前所建造的模型,我只需要对这些模型加以改进,使之适应新的需求。
  在过去的几年里,越来越多的人已经意识到这一现象,并且认识到那些通常介绍方法论的书籍虽然很有价值,但都只提出了学习过程的第一步,而这个学习过程还必须捕获要被建模的实际事物本身。这种认识逐渐发展成为“模式”运动,在这一运动中汇集了各种各样的人,他们有着不同的兴趣和观点,却抱着共同的目标,即传播有用的软件系统模式。
  由于这个模式群体构成的多样性,我们很难给“模式”一个准确的定义。我们中的所有人都相信,一旦我们看到一个模式,就能辨别出它;我们认为我们在大多数情况下是一致的,但我们无法给出一个简单的定义。我对模式的定义是:模式是一种问题解决思路,它已经适用于一个实践环境,并且也可能适用于其它环境。
  我喜欢给出一个宽松的定义,因为我希望能尽可能地接近模式研究的初衷,而不需要增加太多限制性的内容。模式可以有多种形式,而每一种形式增加了对于该模式有用的特性(1.2节讨论有关模式研究的现状以及本书所处的地位)。
  本书讨论的是分析方面的模式,这些模式反映的是业务过程的概念架构,而不是实际的软件实现。绝大部分章节讨论不同业务领域的模式。这些模式很难按照传统的行业(如制造、金融、医疗保健等)进行分类,因为它们通常可用在多个领域。这些模式非常重要,因为它们可以帮助我们了解人们对世界的认识。基于这样的认识去设计计算机系统并确实去改变这种认识是非常有价值的,而认识中需要改变的地方正是需要进行业务过程重组(BPR)的地方。
  然而,概念模式不可能孤立存在。对于软件工程师来讲,只有在他们明白如何实现概念模型时,这些概念模型才有用。本书介绍了一些可用于将概念模型转化成软件实现的模式,并且讨论了在一个大型信息系统中这些软件实现是如何适应系统构架的,另外还讨论了使用这些模式的具体实现技巧。
  我写本书是因为它也正是我在开始时想要阅读的书。建模人员会从本书中找到可以帮助他们如何在新领域中大展拳脚的基本思路。这些模式包括:有用的模型、设计背后的论证以及适用范围。拥有这些信息,建模人员就可以为特定的问题改造现有的模型。
  本书中的模式也可用于评审已有的模型—看看其中哪些可以省略,并给出一些有助于模型改进的可选方案。当我在评审一个项目时,通常会将所看到的东西同我在以前工作中所总结出的模式加以比较。我发现了解我的书中包含的模式有助于我更容易地应用自己过去的经验。像这样的一些模式还揭示了在简单的教科书中没有谈及的建模问题。通过探讨为什么要按照我们的方法去进行建模,我们在即使没有直接使用这些模式的情况下也可以更深刻地认识到如何改进我们的建模方法。
本书结构
  本书分为两个部分。第一部分介绍各种分析模式,即来自概念业务模型的模式。它们提供来自贸易、测量、财务以及组织关系等多个问题域的关键抽象。这些模式都是概念性的,因为它们表征了人们考虑业务的方式,而不是设计计算机系统的方式。该部分的各章重点阐述了可用的可选模式以及这些模式的优缺点。对于同一领域的建模人员来说,每种模式都是明显有用的,但是其中的基本模式通常在别的领域也能够发挥作用。
  第二部分重点介绍支持模式,这类模式帮助我们使用分析模式。支持模式展示:分析模式如何适合一个信息系统构架,概念模型的构造如何演变成为软件接口和实现,以及那些特定的高级建模构造如何与更简单的结构关联。
  为了描述这些模式,需要借助于一种新的图符表示法。附录简要地讨论了这种图符表示法,并提供了其中各种符号表示的含义。我没有采用单一的方法,而喜欢综合采用来自不同方法的多种技术。附录并不是一个技术指南,但它可以提供一个大纲,使你能回想起技术内容。此外,附录还告诉你应该到何处去查找我所采用技术的指南。
  书中每个部分都划分成若干章节,有关分析模式的各个章节阐述了相关的模式,这些相关模式同属一个概念较为松散的主题空间,并受到产生它们的项目的影响。这种组织形式反映了这样一个事实:任何一种模式都必须来自于一个实际的环境。每个模式都由一章中的单独小节加以阐述。我没有采用其他一些模式作者所用的任何正式标题(参见1.2.2节),而是采取尽可能具体而又尽量合理地接近原始项目形式的方式去描述模式。我还增加了一些例子来说明如何将模式应用于其原有领域以及如何将模式应用于其它领域。有关模式研究的最困难的一件事是如何对它们加以抽象,并用于其它领域;我所采取的策略是把这一问题留给读者自己去思考和解决(参见1.2.3节)。
  本书更像是一本目录册,而不是一本从头读到尾的书。我尽量按照可单独阅读的方式撰写书中的每一章。(但是,这一点并非总是能做到的。在阅读一章时如果需要先了解其他章的内容,我将在引言中加以说明。)每一章都有引言,引言部分概要地说明该章所针对的问题域,并概要地描述该章所包含的相关模式,此外还会谈到这些模式来自什么项目。
如何阅读本书
  建议先通读第1章,然后阅读每一章的引言部分,接下来就可以自由地按照自己喜欢的顺序去钻研各章。如果你还不熟悉我所采用的建模方法、表示法或者概念,请参见附录A。附录B“模式表”简要地总结各模式的概况,因此你可以在再次阅读本书时利用它来协助钻研本书的内容或查找所需的模式。需要特别强调的是本书中的模式也可用于其它领域,不局限于模式所产生的领域,因此我鼓励你浏览一下你可能认为不属于自己兴趣范围之内的章节。比如,我发现为医疗保健行业而设计的观察和测量模型在企业金融分析中就被证明是非常有用的。
本书的读者
  虽然不同的读者会从本书学到不同的东西并且可能需要一些不同的准备知识,但本书适合的读者范围非常广。
  我认为最大的读者群是面向对象(OO)计算机系统的分析人员和设计人员,尤其是那些主要从事系统分析的人员。这一类读者应该或多或少地使用过某种OO分析和设计方法。本书并不提供任何有关面向对象分析与设计的内容,因此如果你对这一领域还很陌生,建议你先阅读有关的书籍。必须强调的是,本书中的模式本质上是一种概念,而我是使用一种完全概念化的方法建模,这使得本书在表述风格上与使用更趋向基于实现的方法建模的书籍有某些区别。
  另外一群读者虽然数量很少,但却非常重要,他们主要是那些在建模项目中担当领域专家的人员。这些读者不需要计算机方面的专门知识,但需要了解概念建模。我在本书中使用概念模型的主要原因之一就是要使书中内容更适合于这一类读者。这里的建模项目可能是指针对计算机系统开发或业务过程重组(BPR)的分析。我曾经教过许多专业人士(包括医生、金融交易人员、会计人员、护士以及薪资监管人员等)进行这种类型的建模,并且发现软件背景知识对于概念建模来讲可有可无。本书的业务模型模式恰好介于计算机系统分析和业务建模之间(参见1.4节)。任何这一类型的读者最好都应学习着重于概念性内容的面向对象分析课程。(Odell的著作[1]在这方面特别有价值。)
  虽然一些编程人员会对缺少代码和倾向于概念性的描述存在异议,但我希望大多数编程人员能够研读本书的内容。对于这些读者,我建议你们特别注意第14章,该章阐述了概念模型与最后得到的软件之间的关系。
  这是一本面向对象方面的书,我坚信面向对象方法是开发软件的上好途径。然而,本书中的这些模型主要是概念模型,而大量数据建模人员已有很悠久的使用概念(或逻辑)模型的传统。数据建模人员会发现很多模式非常有用,尤其是在他们使用了更先进的语义技术的情况下。模型的面向对象特征将揭示面向对象方法与传统方法的许多不同之处。我非常希望这一类型的读者能将本书与其它着重于概念性建模的面向对象分析书籍相结合,并能将面向对象与语义数据建模联系起来。
  管理人员会发现可以将本书作为开发活动的一个起点。从模式开始着手开发工作可以帮助我们搞清楚开发工作的目标,而项目计划的制定也可以利用模式所提供的广泛基础。
  我并没有把本书的读者定位为普通学生,而主要是针对专业的软件工程师。但我希望普通学生也能关注本书。在学习分析和设计时,我曾感到非常困难,因为只有很少的好例子可以参考,而这些实例又来自大学校园以外的世界。正如看好的代码可以教给你大量的编程技巧一样,看好的模型也可以教给你大量的分析和设计技巧。
一本动态更新的书
  我所知道的每位作者都曾有过这样的挫折感:一本书一旦出版,书中的内容就很难进行改变。书在读者之间传播,但是作者却没有什么途径可以传达可能出现的变化。随着我不断地学习新的东西,肯定会改变某些想法。我希望这些改变能够传递给读者。
  在我的个人主页(http://martinfowler.com/)上会提供更多的资料,使本书可以保持动态更新。因此请随时关注该站点的动态,并通过它让我了解如何改进和发扬本书的思想。
致谢
  任何作者都会感激那些给过其帮助的人。而本书的编写过程尤其如此,因为我所写的大多数的模式是在我的客户、同事和朋友的协助下创建的。在此我向他们表示最衷心的感谢。
  首先也是最需要感谢的是Jim Odell,他是我事业上的良师益友。他传授给我大量有关信息系统开发的知识,并且是我不断获得灵感、有益建议以及强烈幽默感的源泉。可以这么讲,如果没有他的支持,就不可能有本书的面世。
  其他需要要感谢的人是:
  在伦敦Coopers & Lybrand的开发小组。他们在早期阶段给予我很大的帮助,并帮助我在Smithfield度过了很多个夜晚。
  John Edwards。他协助我形成了有关概念性建模及其在软件开发中的作用的早期思想,他还向我介绍了许多有趣的想法,其中包括Christopher Alexander的想法。
  John Hope。他建议我首先要考虑领域,再考虑技术,并在几个关键点上为我的工作提出了很好的建议。
  伦敦圣·玛丽医院的两位医生Tom Cairns、Mark Thursz。他们和我一起开发了组成第2、3、8章的基本内容的医疗保健模型;他们的工作证明了计算机背景知识并不是一流的概念性建模人员所必须具备的。其中,Mark精通医药术语,他欣然为我们提供了各种医疗保健案例。
  医疗保健项目还得到来自圣·玛丽医院、儿童医院(HSC)、圣·托马斯医院以及威尔斯大学的软件专业人员和医疗保健专家的帮助。儿童医院的护士Anne Casey和系统分析员Hazim Timimi协助将最终的Cosmos模型汇集在一起。Gerry Gold发起并推动了该项目。
  Brad Kain。他深深地影响了我,使我考虑到构件和重用。
  对我来讲,将医疗保健模型应用到第4章的公司财务模型中的实践证明了分析模式可以在不同领域中使用。在此特别感谢Vivek Salgar以及施乐公司中领导MBFW小组的Lynne Halpin和Craig Lockwood,是他们用C++把我们的概念性想法变成了客观实现。
  David Creager、Steve Shepherd以及他们在Citibank(都市银行)工作的小组。他们和我一起开发了在第9到11章中刻画金融模式时用到的模型。他们还从原始的医疗保健工作中进一步提出了第12章的大量构架性思想,并向我讲述了伦敦城许多精神病人的生活。
  Fred Peel,他发起并负责维护我在Citibank中的工作,并且由于他的强力推动,解除了我的后顾之忧。来自Valbecc的Daniel Poon和Hazim Timimi,他们将我的模糊的思想变成了详细的规格说明。
  第6章中的账务模式经过长期的酝酿。其间,Tom Daly、Peter Swettenham、Tom Hadfield以及他们各自小组开发的模型引发了本书中账务模式的诞生。Rich Garzaniti把我的会计学术语挑选了出来。而Kent Beck在完善我的Smalltalk程序方面做了大量工作。
  James Odell,他协助我编写了第14章。
  我是模式研究团体的后来者,在写完本书的大部分章节之后,我才逐步较好地了解了模式这一概念。正是这一非常开放和友好的团体所做的大量工作激励了我进行研究工作。Kent Beck、Ward Cunningham以及Jim Coplein鼓励我加入这一团体,将一些想法总结成为模式。Ralph Johnson特别为本书的第一稿提出了中肯的意见。
  还有许多给予我很好建议的审阅者,他们是:Dave Collins、Ward Cunningham(Cunningham & Cunningham公司)、Henry A. Etlinger(RIT计算机科学系)、Donald G. Firesmith(Knowledge Systems公司)、Erich Gamma、Adele Goldberg、Tom Hadfield(TesserAct Technology)、Lynne Halpin(Nescape Communications)、Brian Henderson-Sellers、Neil Hunt(Pure Software)、Ralph E. Johnson(伊利诺伊大学厄巴纳-尚佩恩分校)、Jean-Pierre Kuilboer(波士顿马萨诸塞大学)、Patrick D. Logan(Intel公司)、James Odell、Charles Richter(Objective Engineering公司)、Douglas C. Schmidt(华盛顿大学)以及Dan Tasker。还需要特别指出的是,Don Firesmith负责收集了以上审阅者提出的需要修改的问题。
参考文献

上架指导

计算机\软件工程

封底文字

用原译书的封底文字(ISBN 7-111-13301-3)

作者简介

(英)Martin Fowler 著:暂无简介

译者简介

樊东平 张路 等译:暂无简介

图书目录

Ralph Johnson序
Ward Cunningham序
前言
第1章  绪论 1
1.1  概念模型 1
1.2  模式世界 4
1.2.1  Christopher Alexander 5
1.2.2  描述格式 5
1.2.3  关于模式的抽象程度 6
1.3  本书中的模式 7
1.3.1  建模实例 8
1.3.2  模式的来源 8
1.3.3  跨领域的模式 9
1.4  概念模型与业务过程重组 9
1.5  模式与框架 10
1.6  本书的使用 11
第一部分  分析模式
第2章  责任模式 17
2.1  团体 18
2.2  组织层次 19
2.3  组织结构 21
2.4  责任 22
2.5  责任知识级 24
2.6  团体类型泛化 26
2.7  层次型责任 27
2.8  操作范围 29
2.9  职位 31
第3章  观察和测量模式 33
3.1  数量 34
3.2  转换率 36
3.3  复合单位 37
3.4  测量 38
3.5  观察 40
3.6  观察概念的子类型化 43
3.7  观察方案 44
3.8  双时间记录 44
3.9  被否决的观察 45
3.10  临床观察、假设与推理 45
3.11  关联观察 46
3.12  观察过程 48
第4章  针对公司财务的观察模式 52
4.1  企业片断 53
4.1.1  定义维度 57
4.1.2  维度的属性以及企业片断 59
4.2  测量方案 60
4.2.1  保持计算的有效性 61
4.2.2  比较和因果测量方案 62
4.2.3  状态类型:定义计划的和实际的
状态 63
4.2.4  构造测量 66
4.2.5  维度合并 66
4.3  范围 69
4.4  带范围的现象 70
4.4.1  带范围属性的现象 71
4.4.2  范围函数 73
4.5  使用最终框架 75
第5章  引用对象 77
5.1  名称 77
5.2  标识方案 79
5.3  对象合并 81
5.3.1  复制并替换 82
5.3.2  替代 82
5.3.3  本质/表象 83
5.4  对象等价 83
第6章  库存与账务 85
6.1  账目 87
6.2  事务 88
6.3  汇总账目 90
6.4  备注账目 92
6.5  记入规则 93
6.5.1  可逆性 94
6.5.2  不使用事务 94
6.6  个体实例方法 95
6.6.1  使用singleton类实现 95
6.6.2  使用策略模式实现 96
6.6.3  使用内部case语句实现 97
6.6.4  使用参数化方法实现 98
6.6.5  使用解释器实现 98
6.6.6  实现方式的选择 99
6.7  记入规则的执行 99
6.7.1  急切触发 99
6.7.2  基于账目的触发 101
6.7.3  基于记入规则的触发 102
6.7.4  向后链式触发 102
6.7.5  触发手段的比较 102
6.8  多个账目的记入规则 103
6.9  选择条目 106
6.10  账务实践 107
6.11  条目来源 109
6.12  结算单和所得计算书 110
6.13  对应账目 111
6.14  专门化的账目模型 112
6.15  登记条目到多个账目 113
6.15.1  使用备注账目 116
6.15.2  派生账目 116
进一步阅读 118
第7章  使用财务模型 119
7.1  结构模型 120
7.2  结构的实现 122
7.3  设置新的电话服务 124
7.4  建立通话 126
7.5  实现基于账目的触发 127
7.6  把电话分成白天和夜晚两类 128
7.7  按时间收费 130
7.8  计算税款 133
7.9  结论 134
7.9.1  记入规则的结构 134
7.9.2  什么时候不能使用框架 136
7.9.3  账务实践图 137
第8章  计划 139
8.1  提议和执行的动作 140
8.2  完成和放弃的动作 141
8.3  挂起 142
8.4  计划 143
8.5  方案 146
8.6  资源分配 149
8.7  输出和启动函数 153
第9章  交易 156
9.1  合同 156
9.2  合同夹 160
9.3  报价 165
9.4  场景 168
第10章  派生合同 176
10.1  期货合同 177
10.2  期权 179
10.2.1  多头、空头、看涨和看跌:体现
一种谋略的词汇 181
10.2.2  子类型化或者非子类型化 182
10.3  产品 184
10.4  子类型状态机 188
10.4.1  确保状态图的一致 190
10.4.2  一致性的使用问题 192
10.5  并行的应用和领域层次结构 194
10.5.1  应用外观的类型检查 195
10.5.2  给超类型一个包装性接口 196
10.5.3  使用一个运行时属性 196
10.5.4  使应用外观对领域模型可见 198
10.5.5  使用异常处理 199
第11章  交易包 201
11.1  对一个包的多重访问级别 201
11.2  相互可见性 205
11.3  包的子类型化 208
11.4  结论 209
第二部分  支持模式
第12章  信息系统的分层构架 213
12.1  两层构架 214
12.2  三层构架 215
12.3  表示层和应用逻辑层 218
12.3.1  表示层/应用逻辑层分离的优点 222
12.3.2  在客户/服务器环境中伸展外观 222
12.4  数据库交互 224
12.4.1  把领域层连接到数据源 224
12.4.2  数据库接口层 225
12.5  结论 227
第13章  应用外观 229
13.1  一个医疗保健示例 229
13.2  外观的内容 231
13.2.1  方法的类型 232
13.2.2  样本方法 233
13.3  公共方法 234
13.4  操作 235
13.5  类型转换 236
13.6  多重外观 237
第14章  类型模型的模式—设计模板 240
14.1  实现关联 242
14.1.1  双向关联和单向关联 243
14.1.2  关联的接口 243
14.1.3  基础类型 245
14.1.4  实现一个单向关联 246
14.1.5  在两个方向上都使用指针的双向
实现 246
14.1.6  在一个方向上使用指针的双向
实现 247
14.1.7  使用关联对象的双向实现 248
14.1.8  双向实现的比较 248
14.1.9  派生映射 249
14.1.10  非集合映射 249
14.2  实现泛化 249
14.2.1  用继承实现 249
14.2.2  用多重继承组合类实现 250
14.2.3  用标志实现 250
14.2.4  用委托给一个隐藏类来实现 251
14.2.5  通过创建一个替换来实现 253
14.2.6  泛化的接口 254
14.2.7  实现hasType操作 255
14.3  对象创建 255
14.3.1  创建的接口 256
14.3.2  创建的实现 256
14.4  对象析构 256
14.4.1  析构的接口 257
14.4.2  析构的实现 257
14.5  入口点 258
14.5.1  查找对象的接口 259
14.5.2  查找操作的实现 260
14.5.3  使用类或者登记表对象 260
14.6  实现约束 260
14.7  其它技术的设计模板 261
第15章  关联模式 263
15.1  关联类型 264
15.2  带键值的映射 266
15.3  历史映射 268
第16章  后记 273
第三部分  附   录
附录A  技术和符号 277
附录B  模式列表 293
索引 301

教学资源推荐
作者: 刘春燕 高建华 吴黎兵 主编 熊建强 康卓 何宁 黄文斌 熊素萍 黄华 林莉 参编
作者: [美] 罗伯特·H. 沙姆韦(Robert H. Shumway),戴维·S. 斯托弗(David S. Stoffer)著
作者: 邬延辉 王小权 陈叶芳 等编著
作者: (英)Robert Spence 著
参考读物推荐
作者: 杨泳梁
作者: (美)Dan Ginsburg Budirijanto Purnomo 等著
作者: [美]马修·斯卡皮诺(Matthew Scarpino) 著
作者: 苏生