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

UML和模式应用(原书第2版)
作者 : (美)Craig Larman
译者 : 方梁 等
出版日期 : 2004-08-19
ISBN : 7-111-14518-6
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 488
开本 : 16开
原书名 : Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and the Unified Process
原出版社: Pearson Education, Inc.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书英文版面世以来,便广受业界专家和读者的好评。全书叙述清晰、用词精炼、构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议一一道来,博引多家观点,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。
  本书是一本经典的面向对象分析设计技术的入门书,适用范围非常广,从刚刚入门的初学者,到已经有一定对象技术知识但希望进一步提高开发水平的中级读者,甚至是资深的专业人员,都可以从本书获益匪浅。同时,本书也很适合作为高等院校计算机专业及软件学院相关课程的教材和各类培训班的辅导教材。

图书特色

图书前言

谢谢你阅读本书!本书是面向对象分析和设计(OOA/D)的实用指南,阐述了迭代开发相关方面的内容。我高兴地看到本书的第1版作为一本广受欢迎的OOA/D入门书籍在全世界范围内得到认可,并被翻译成多种语言。所以,第2版是建立在第1版内容的基础上并精炼而不是替代了第1版的内容。我衷心地感谢所有阅读过本书第1版的读者。
  通过阅读本书,你将会有如下收益:
  第一,对象技术已广泛地应用在软件开发中,掌握OOA/D对创建健壮、可维护的对象系统至关重要。
  第二,如果你刚刚接触OOA/D,你将会面临如何掌握这个复杂主题的挑战;本书提供了一个良好定义的路标—统一过程,使你能一步一步地实现从需求到编码的全过程。
  第三,统一建模语言(UML)已成为建模的标准表示法,所以熟悉UML将使你受益。本书用UML表示法教授了运用OOA/D的技能。
  第四,设计模式表达了面向对象设计专家用于创建系统的“最佳实践”的习惯用法和方案。在本书中,你将学习如何应用设计模式,包括流行的GoF模式和GRASP模式。GRASP模式表达了对象设计中职责分配的基本原则。学习和掌握这些模式将加快你掌握分析和设计技能的速度。
  第五,本书的结构和重点建立在作者多年教授和培训成千上万学生掌握OOA/D的经验之上,它提供了一个精炼的、已证明的和高效率的掌握OOA/D的学习方法,使你在阅读和学习上的投资得到优化。
  第六,本书详尽地说明一个案例,以便实际地说明整个OOA/D过程,并深入讨论问题的棘手细节;这是一个实际的练习。
  第七,本书说明如何将对象设计工件映射成Java代码。
  第八,本书解释如何设计一个分层架构并将图形用户界面层与领域层和技术服务层关联起来。
  最后,本书展示如何设计一个面向对象框架的相关知识并应用这些知识创建一个在数据库中持久化存储的框架。

目标
  本书的基本目标是:
  通过应用一系列可解释的原则和启发提示来帮助学生和开发者进行对象设计。
  通过学习本书阐述的信息和技术,你将更擅长于根据过程和概念来理解一个问题并应用对象来设计一个可靠的解决方案。

适用读者
  本书是一本入门书,主要介绍OOA/D以及相关的需求分析,并以统一过程作为样例过程来阐述迭代开发;本书不是有关OOA/D的高级教材。它适用于以下读者:
  * 具有面向对象程序设计语言使用经验的开发者和学生,但是刚刚接触面向对象分析和设计。
  * 学习计算机科学和软件工程课程中对象技术的学生。
  * 熟悉OOA/D但希望学习UML表示法、应用模式的读者,或者希望加强和提高自己的分析和设计技能的读者。

预备知识
  本书假设读者已具备如下必需的知识:
  * 面向对象程序设计语言(如Java、C#、C++或Smalltalk)的知识和经验。
  * 对象技术的基本概念和知识,如类、实例、接口、多态、封装和继承。
  在本书中没有定义基本的对象技术概念。

Java示例
  本书用Java提供代码示例或讨论Java的实现,是因为Java使用广泛。然而,本书的观点适用于大多数(即使不是全部)的面向对象程序设计语言。

本书的组织
  本书组织的整个策略是按与软件开发项目类似的顺序引入分析和设计的主题,包括“初始”阶段(统一过程中的术语)后跟着三个迭代(见图P-1)。
  1. 初始阶段的各章介绍需求分析的基本知识。
  2. 迭代1介绍基本的OOA/D的知识以及如何为对象分配职责。
  3. 迭代2重点介绍对象设计,特别是介绍一些常用的设计模式。
  4. 迭代3介绍多个不同的主题,如架构分析和框架设计。
  图P-1  按与软件开发项目类似的顺序组织本书

与Web相关的资源
  * 请访问 www.craiglarman.com参阅有关对象技术、模式和过程的相关文章。
  * 在www.phptr.com/larman可获得教辅资料。

对第1版内容的扩充
  虽然第2版的基本内容与第1版相同,但第2版在如下方面进行了许多改进:
  * 更新了有关用例的内容以跟从非常流行的[Cockburn0l]的方法。
  * 用众所周知的统一过程(UP)作为迭代开发过程的样例,并在其中介绍OOA/D。因此,所有的工件按照UP的术语命名,例如领域模型。
  * 案例研究的新需求的加入导致了第3次迭代。
  * 更新后的设计模式的论述。
  * 引入架构分析。
  * 引入“受保护变化”作为一个GRASP模式。
  * 顺序图和协作图之间50/50的平衡处理。
  * 最新的UML表示法的更新。
  * 用白板或UML CASE工具绘图的实践建议。

致谢
  首先,非常感谢在Valtech的我的同事和朋友们,他们是世界一流的对象开发者和迭代开发的专家,他们促成、支持或评审了本书,他们是:Chris Tarr、Michel Ezran、Tim Snyder、Curtis Hite、Celso Gonzalez、Pascal Roques、Ken DeLong、Brett Schuchert、Ashley Johnson、Chris Jones、Thomas Liou、Darryl Gebert、Frank Rodorigo、Jean-Yves Hardy,还有许多我叫不出名字的人。
  感谢Philippe Kruchten为本书撰写了序言,进行了评审,并以多种方式提供了帮助。
  感谢Martin Fowler和Alistair Cockburn对有关设计和过程的真知灼见,同意我引用他们的观点,并对本书提供了评审意见。
  感谢John Vlissides和Cris Kobryn,本书引用了他们的观点。
  感谢Chelsea Systems和John Gray,他们的Java技术ChelseaStore POS系统启发了一些需求,为本书提供了帮助。
  感谢Pete Goad和Dave Astels在TogetherSoft上的支持。
  感谢其他的评审者,他们是:Steve Adolph、Bruce Anderson、Len Bass、Gary K. Evans、Al Goerner、Luke Hohmann、Eric Lefebvre、David Nunn和Robert J. White。
  感谢Prentice-Hall出版公司的Paul Becker,正是他深信本书的第1版是一个有价值的项目,感谢Paul Petralia 和Patti Guerrieri对第2版的指导。
  最后,特别感谢Graham Glass提供的一切便利。

关于作者
  Craig Larman是Valtech的过程主管,Valtech是一个国际性的咨询公司,在欧洲、亚洲和北美洲都有分支机构,致力于电子商务系统的开发、对象技术和统一过程的迭代开发。
  从20世纪80年代中期开始,Craig已经帮助成千上万的开发者学习和应用面向对象编程、分析和设计技术,并协助各种机构和公司采用迭代开发实践。
  在20世纪70年代,他用APL、PL/I和CICS建立系统。从20世纪80年代初期开始,他开始对人工智能、自然语言处理和知识表示感兴趣,并用Lisp machines、Lisp、Prolog和Smalltalk建立知识系统。
  他拥有加拿大温哥华Simon Fraser大学的计算机科学学士和硕士学位。
  读者可以通过clarman@acm.org 和 www.craiglarman.com与他联系。

图书序言

编程是一种乐趣,但是开发高质量的软件是困难的。从好的观点、需求或“构想”出发,到最终变成一个要实际运行的软件产品,其间需要的东西远远不只是编码工作这般简单。分析和设计,定义如何解决问题,编程什么内容,用易于交流、评审、实现和演化的多种方式来捕获这个设计,这就是本书的核心所在。这也是你将要学习的内容。
  统一建模语言(UML)已经成为描述软件设计蓝图的广泛接受的语言。在整本书中,UML是用来传递设计概念的可视化语言。本书重点讲述开发者如何实际应用常用的UML元素而不是讲述UML的特征。
  在很多学科中,人们早就认识到模式在构造复杂系统时的重要性。软件设计模式可以帮助开发人员描述设计片断、重用设计思想、使用其他人的专业经验。模式给出了抽象的探索式过程的名称和形式,以及面向对象技术的最佳实践和规则。让工程师从零开始工作是不合乎情理的,而本书为方便使用模式提供了一个范例。
  然而,如果不使用软件工程方法来描述,软件设计就显得有些枯燥和神秘。关于软件设计这个主题,我很高兴地看到在本书的第2版中,Craig Larman已经加入并介绍了统一过程(Unified Process),并介绍如何以一种相对简单和实际的方式来应用统一过程。通过在一个迭代的、风险驱动的、以架构为中心的过程中介绍案例研究,Craig的建议有其现实的环境;他揭示了软件开发中实际的动态发展,并分析外部作用的影响。设计活动与其他任务相关,它们不再是一个纯粹的系统化转换或使用创造性直觉的脑力活动。同时,Craig和我都深信迭代开发的益处,你可以在整本书中看到对此问题的大量说明。
  所以,我认为,本书融合了多种技术。你可以师从一位一流的老师、卓越的方法论学家或OO专家学习应用面向对象分析和设计(OOA/D)的系统化方法。Craig在统一过程的背景下描述了面向对象分析和设计的系统化方法,逐步介绍了更复杂的设计模式,因此当你面临现实世界的设计挑战时,本书非常方便实用。同时,他在本书中也使用了为人们广泛接受的表示法。
  我非常荣幸地有机会直接与作者一起参与了这本书的写作。我阅读过本书的第1版,并愉快地接受了Craig请求我评阅本书第2版的邀请。我们会面多次并来往了许多邮件讨论书中的内容。我从Craig那里学到了很多东西,其中甚至涉及我所从事的统一过程工作,包括如何改进统一过程,如何在不同组织中定位统一过程。我敢肯定,你也将通过阅读本书学到很多东西,即使你非常熟悉OOA/D。而且,像我一样,你将发现自己重温并更新了过去的知识,或从Craig的解释和经验中获得了更深入的理解。
  在迭代过程方面,第2版改进了第1版的相关内容,而且,我认为第2版的写作也更趋成熟,即使你已阅读过第1版,你也会从第2版中受益良多。
  阅读愉快!

Philippe Kruchten
Rational Fellow
Rational Software Canada
Vancouver, BC

作者简介

(美)Craig Larman:Craig Larman: Craig Larman Valtech公司首席科学家,Valtech是一家领先的跨国技术咨询公司,在美国、欧洲和亚洲都有分支机构。他是国际软件界知名的专家和导师,专长为OOA/D与设计模式、敏捷/迭代方法、统一过程的敏捷途径和UML建模。除本书外,他还著有畅销的《Agile and Iterative Development: A Manager's Guide》(敏捷迭代开发,该书影印版由机械工业出版社引进出版)一书,并且与Rhett Guthrie合著了《Java 2Performance and Idiom Guide》一书。Larman是ACM和IEEE会员,拥有计算机科学学士和硕士学位。他的中文网站是www.craiglarman.cn。

译者简介

方梁 等:暂无简介

译者序

我读过很多有关面向对象分析设计技术的书籍,但本书给我留下了深刻的印象。本书将面向对象分析设计的概念、过程、方法、原则和个人的实践建议一一道来,博引多家观点,以实例为证,将软件的分析和设计的过程如逻辑推理一般地展开叙述,于细节处见真知,如沐春风,想必读者读后将与我有相似的共鸣,这也是我向读者推荐此书的理由。
  学以致用或许是读书的目的之一。在我讲课时遇到过很多开发者,他们认为书本上的内容很难在实践中应用,特别是有关OOA/D这样的方法论书籍。其实,这里面有三个问题:其一,大家可以问问自己:我是否可以不通过书本获得同样的经验和技术?我要读的书是否得到了大多数专业人士的肯定?我是否真正理解了书中的内容?就本书而言,它已经得到许多读者和专业人士的一致好评,在亚马逊网站上,读者评价也很好,因此,如果出现了很难学以致用的问题,读者可以多从自身的角度来找原因。其二,面向对象分析和设计是一项集体活动,大家从各自的经验、理解和技术背景出发在一起讨论、交流和争论才会得到更好的分析和设计结果,但前提是大家需要拥有能够相互理解的交流语言,所以,开发设计小组的成员需要一起学习、了解和掌握这些技术。其三,OOA/D具有方法论的边际效用,因此掌握它比直接掌握一门程序设计语言获得的成效或许要低,但从长期的效果来看,或许正好相反。因此,坚持才会有结果。总之,软件工程方法的目的是高效率、高质量地开发软件,基于这一目的,无论何种方法都有其价值。OOA/D作为一种经过实践证明行之有效的软件分析和设计方法,更是值得我们在实际工作中应用它,使软件分析和设计有一个规范的思维框架,而本书为我们学习和应用OOA/D技术提供了实用和详尽的指导,也是我们能够学以致用的书籍之一。
  以前,我曾在课堂上说:现在翻译过来的中文版图书比英文版更难懂。自己亲历翻译工作之后,才知翻译不易。在翻译过程中,我坚持直译为主,意译为辅的原则,同时兼顾到国内的用语习惯。但亦如履薄冰,不当之处,恳请读者指正,请通过电子邮件fangsoft@yahoo.com与我联系。在翻译过程中,我得到李阳、吴红艳、李晓霞、尹超、孙文灿、须晨、谭志强的帮助,在此表示感谢。

方  梁
2004年2月26日

图书目录

第一部分  绪   论
第1章  面向对象分析和设计 2
1.1  在OOA/D中应用UML和模式 2
1.2  分配职责 4
1.3  什么是分析和设计 4
1.4  什么是面向对象分析和设计 4
1.5  示例 5
1.6  UML 7
1.7  进一步学习的参考资料 8
第2章  迭代开发和统一过程 9
2.1  最重要的UP思想:迭代开发 10
2.2  其他的UP最佳实践和概念 13
2.3  UP阶段和面向进度表的术语 13
2.4  UP流程(工作流) 13
2.5  流程定制和开发案例 16
2.6  敏捷UP 17
2.7  顺序“瀑布”生命周期 18
2.8  何时你会知道自己并不了解UP 18
2.9  进一步学习的参考资料 19
第3章  案例研究:NextGen POS系统 20
3.1  NextGen POS系统 20
3.2  架构层和案例研究重点 21
3.3  本书的策略:迭代学习和开发 21
第二部分  初   始
第4章  初始 24
4.1  初始:一个类比 25
4.2  初始阶段可能会非常短暂 25
4.3  初始阶段会创建哪些工件 25
4.4  何时你会知道自己并不了解初始阶段 26
第5章  理解需求 28
5.1  需求的类型 28
5.2  进一步学习的参考资料 30
第6章  用例模型:写出实际语境中的需求 31
6.1  目标和情节 31
6.2  背景 32
6.3  用例和附加价值 32
6.4  用例和功能性需求 33
6.5  用例类型和格式 34
6.6  详述用例的示例:处理销售 34
6.7  各部分的解释 39
6.8  用例的目标和范围 43
6.9  找出主要参与者、目标和用例 46
6.10  恭喜:用例已经被写出,但并不完美无缺 49
6.11  以一种简朴的不考虑用户界面的风格来写出用例 49
6.12  参与者 51
6.13  用例图 51
6.14  语境中的需求和低级别特性列表 54
6.15  用例不是面向对象的 55
6.16  统一过程中的用例 55
6.17  案例研究:NextGen的初始阶段中的用例 59
6.18  进一步学习的参考资料 59
6.19  统一过程的工件和处理语境 59
第7章  识别其他需求 62
7.1  NextGen POS系统的示例 62
7.2  NextGen系统示例:补充规范(部分) 63
7.3  注解:补充规范 66
7.4  NextGen示例:构想(部分) 68
7.5  注解:构想 71
7.6  NextGen示例:术语表(部分) 74
7.7  注解:术语表(数据字典) 74
7.8  可靠的规范:一个矛盾 76
7.9  项目网站上的联机工件 76
7.10  在初始阶段不需要太多的UML图示 76
7.11  统一过程中的其他需求工件 76
7.12  进一步学习的参考资料 78
7.13  统一过程的工件和处理语境 78
第8章   从初始到细化 81
8.1  检验点:初始阶段发生了什么 81
8.2  细化 82
8.3  计划下一次迭代 83
8.4  迭代1的需求和重点:基本的OOA/D技巧 84
8.5  哪些工件在细化阶段中开始 85
8.6  何时你会知道自己并不了解细化阶段 85
第三部分   细化迭代1
第9章  用例模型:绘制系统顺序图 88
9.1  系统行为 88
9.2  系统顺序图 89
9.3  一个SSD的示例 89
9.4  系统之间的SSD 89
9.5  SSD和用例 89
9.6  系统事件和系统边界 89
9.7  命名系统时间及操作 91
9.8  显示用例文本 92
9.9  SSD和术语表 92
9.10  UP内的SSD 92
9.11  进一步学习的参考资料 93
9.12  UP工件 93
第10章  领域模型:可视化概念 95
10.1  领域模型 96
10.2  概念类识别 99
10.3  销售领域的候选概念类 102
10.4  领域建模的指导原则 102
10.5  分析相似的概念类—Register与“POST”的比较 104
10.6  为非现实世界建模 105
10.7  规格说明或描述概念类 105
10.8  UML表示法、模型以及方法:多重观点 107
10.9  缩小表示差距 109
10.10  示例:NextGen POS领域模型 110
10.11  UP中的领域模型 111
10.12  进一步学习的参考资料 112
10.13  UP工件 112
第11章  领域模型:添加关联 114
11.1  关联 114
11.2  UML关联表示法 115
11.3  找出关联—通用关联列表 116
11.4  关联的指导原则 117
11.5  角色 117
11.6  关联应该详细到何种程度 118
11.7  关联的命名 119
11.8  两种类型间的多重关联 119
11.9  关联以及实现 120
11.10  NextGen POS的领域模型中的关联 120
11.11  NextGen POS的领域模型 121
第12章  领域模型:添加属性 124
12.1  属性 124
12.2  UML的属性表示法 124
12.3  有效的属性类型 124
12.4  非原始的数据类型类 127
12.5  设计潜行:没有属性是外键 128
12.6  为属性的数量和单位建模 128
12.7  NextGen的领域模型中的属性 128
12.8  从SalesLineItem到Item的多重性 130
12.9  领域模型小结 130
第13章  用例模型:用操作契约增加细节 132
13.1  契约 132
13.2  示例契约:enterItem 132
13.3  契约条目的描述 133
13.4  后置条件 134
13.5  讨论—enterItem的后置条件 136
13.6  书写契约将导致领域模型更新 136
13.7  什么时候契约是有用的?契约与用例的比较 136
13.8  指导原则:契约 137
13.9  NextGen POS示例:契约 138
13.10  领域模型的变化 139
13.11  契约、操作以及UML 139
13.12  UP内的操作契约 140
13.13  进一步学习的参考资料 142
第14章  迭代中的从需求到设计 144
14.1  反复地做正确的事、正确地做事 144
14.2  难道这样做不需要花费数周吗?是的,完全不需要 144
14.3  开始对象设计 145
第15章  交互图表示法 146
15.1  顺序图和协作图 146
15.2  协作图示例:makePayment 147
15.3  顺序图示例:makePayment 148
15.4  交互图价值不菲 148
15.5  迭代图的通用表示法 149
15.6  协作图的基本表示法 150
15.7  顺序图的基本表示法 154
第16章  GRASP:根据职责设计对象 159
16.1  职责和方法 160
16.2  职责和交互图 160
16.3  模式 161
16.4  GRASP:在职责分配中的通用原则模式 162
16.5  UML类图表示法 163
16.6  信息专家模式(专家模式) 163
16.7  创建者模式 167
16.8  低耦合模式 169
16.9  高内聚模式 172
16.10  控制器模式 176
16.11  对象设计和CRC卡片 182
16.12  进一步学习的参考资料 182
第17章  设计模型:GRASP模式与用例实现 183
17.1  用例实现 183
17.2  工件注释 184
17.3  NextGen迭代的用例实现 186
17.4  对象设计:makeNewSale 187
17.5  对象设计:enterItem 189
17.6  对象设计:endSale 192
17.7  对象设计:makePayment 196
17.8  对象设计:startUp 200
17.9  将UI层连接到领域层 202
17.10  UP中的用例实现 205
17.11  小结 207
第18章  设计模型:决定可见性 208
18.1  对象之间的可见性 208
18.2  可见性 208
18.3  在UML中表示可见性 212
第19章  设计模型:创建设计类图 213
19.1  何时创建DCD 213
19.2  DCD示例 213
19.3  DCD和UP术语 214
19.4  领域模型中的类与设计模型中的类的比较 214
19.5  创建NextGen POS的DCD 214
19.6  成员细节的表示法 222
19.7  DCD、绘图和CASE工具 222
19.8  UP中的DCD 223
19.9  UP工件 224
第20章  实现模型:将设计映射成代码 226
20.1  编程和开发过程 226
20.2  将设计映射成代码 228
20.3  从DCD创建类的定义 228
20.4  从交互图创建方法 231
20.5  代码中的容器/集合类 232
20.6  异常和错误处理 233
20.7  定义Sale--makeLineItem方法 233
20.8  实现的顺序 233
20.9  测试为先的编程 233
20.10  映射设计到代码的小结 235
20.11  编码方案的介绍 235
第四部分  细化迭代2
第21章  迭代2和其需求 242
21.1  迭代2的重点:对象设计和模式 242
21.2  从迭代1到迭代2 242
21.3  迭代2的需求 243
21.4  迭代2中面向分析的工件的改进 244
第22章  GRASP:更多的职责分配模式 247
22.1  多态模式 247
22.2  纯虚构模式 250
22.3  中介模式 252
22.4  受保护变化模式 253
第23章  用GoF设计模式设计用例实现 259
23.1  适配器模式(GoF) 260
23.2  设计中的“分析”发现:领域模型 261
23.3  工厂模式(GoF) 263
23.4  单子模式(GoF) 264
23.5  接口变化的外部服务问题的结论 267
23.6  策略模式(GoF) 268
23.7  组合模式(GoF)和其他设计原则 272
23.8  外观模式(GoF) 279
23.9  观察者/发布-订阅/委托事件模型(GoF) 281
23.10  结论 288
23.11  进一步学习的参考资料 288
第五部分  细化迭代3
第24章  迭代3和其需求 292
24.1  迭代3的需求 292
24.2  迭代3的重点 292
第25章  建立用例的关系 293
25.1  包含关系 293
25.2  术语:具体用例、抽象用例、基用例和附加用例 296
25.3  扩展关系 296
25.4  泛化关系 297
25.5  用例图 298
第26章  泛化建模 299
26.1  领域模型的新概念 299
26.2  泛化 301
26.3  定义概念性超类和子类 302
26.4  何时定义一个概念性子类 304
26.5  何时定义一个概念性超类 306
26.6  NextGen POS概念类的层次 306
26.7  抽象概念类 308
26.8  为变化的状态建模 309
26.9  软件中的类的层次和继承 310
第27章  精化领域模型 311
27.1  关联类 311
27.2  聚集与组合 314
27.3  时间间隔和产品价格—改正迭代1中的“错误” 316
27.4  关联角色名称 317
27.5  作为概念的角色与关联角色的比较 318
27.6  导出元素 318
27.7  受限关联 319
27.8  自反关联 320
27.9  有序元素 320
27.10  使用包来组织领域模型 320
第28章  增加新的SSD和契约 326
28.1  新的系统顺序图 326
28.2  新的系统操作 328
28.3  新的系统操作契约 328
第29章  在状态图中为行为建模 330
29.1  事件、状态和转移 330
29.2  状态图 330
29.3  UP中的状态图在哪里 331
29.4  用例的状态图 331
29.5  POS应用的用例状态图 332
29.6  从状态图受益的类 332
29.7  外部事件和内部事件的说明 334
29.8  状态图的另外表示法 335
29.9  进一步学习的参考资料 336
第30章  应用模式设计逻辑架构 337
30.1  软件架构 337
30.2  架构模式:层 339
30.3  模型-视图分离原则 355
30.4  进一步学习的参考资料 356
第31章  组织模型包的设计和实现 357
31.1  包组织的指导原则 358
31.2  更多的UML包表示法 362
31.3  进一步学习的参考资料 363
第32章  架构分析和SAD的介绍 364
32.1  架构分析 365
32.2  架构的类型和视图 366
32.3  技巧:识别和分析架构因素 366
32.4  示例:部分NextGen POS架构因素表 368
32.5  技巧:架构因素的解析 368
32.6  架构分析中各主题的小结 374
32.7  UP中的架构分析 375
32.8  进一步学习的参考资料 378
第33章  使用对象和模式设计更多用例的实现 379
33.1  在本地服务上实现故障恢复;使用本地高速缓存提高性能 379
33.2  故障处理 384
33.3  通过代理(GoF)在本地服务上实现故障恢复 389
33.4  对非功能性或质量需求进行设计 391
33.5  通过适配器访问外部物理设备;购买与开发的比较 391
33.6  对一族互相关联的对象使用抽象工厂(GoF) 392
33.7  通过多态性和Do It Myself处理支付 395
33.8  结论 399
第34章  使用模式设计持久化框架 401
34.1  问题:持久化对象 401
34.2  解决方案:来自持久化框架的持久化服务 402
34.3  框架 402
34.4  持久化服务和框架的需求 403
34.5  关键思想 403
34.6  模式:将对象表示为表 403
34.7  UML的数据建模Profile 404
34.8  模式:对象标识 404
34.9  使用外观访问持久化服务 405
34.10  映射对象:数据库映射器或数据库代理模式 405
34.11  使用模板方法模式设计框架 407
34.12  使用模板方法模式实现物化 408
34.13  使用映射器工厂配置映射器 412
34.14  模式:缓存管理 413
34.15  在一个类里合并和隐藏SQL语句 413
34.16  事务状态和状态模式 414
34.17  使用命令模式设计事务 416
34.18  使用虚拟代理延迟物化 417
34.19  如何表示表中的关系 420
34.20  持久化对象超类和分离问题不同方面的设计原则 421
34.21  遗留问题 421
第六部分  特 殊 专 题
第35章  绘图及其工具 424
35.1  冥思苦想的设计和形象思考 424
35.2  在开发过程中画UML图的建议 425
35.3  工具和特性样例 426
35.4  样例二 427
第36章  迭代计划和项目有关问题的介绍 430
36.1  区分需求的等级 430
36.2  划分项目风险的等级 433
36.3  适应性计划与预测性计划 433
36.4  阶段和迭代计划 434
36.5  迭代计划:下一迭代做什么 434
36.6  在迭代之间跟踪需求 436
36.7  早期估计的有效性(和无效性) 437
36.8  组织项目工件 438
36.9  一些小组迭代进度安排问题 438
36.10  何时你会知道自己并不了解UP中的计划安排 439
36.11  进一步学习的参考资料 440
第37章  关于迭代开发和UP的注释 441
37.1  其他UP的最佳实践和观点 441
37.2  构造阶段和移交阶段 442
37.3  其他有意义的实践 443
37.4  限定每次迭代时间的动机 443
37.5  顺序“瀑布型”生命周期 444
37.6  可用性工程和用户界面设计 448
37.7  UP分析模型 448
37.8  RUP产品 449
37.9  重用的挑战和神话 450
第38章  更多的UML表示法 451
38.1  一般符号 451
38.2  实现图 452
38.3  模板(参数化的、通用的)类 454
38.4  活动图 454
术语表 457
参考文献 461

教学资源推荐
作者: Katsuhiko Ogata(尾形克彦)
作者: (美) 托马斯 W. 米勒(Thomas W. Miller )著
作者: 徐洁磐
作者: (美)Maurice Herlihy布朗大学(以)Nir Shavit 著   特拉维夫大学
参考读物推荐
作者: 刘宪军 编著
作者: [美]挪亚·吉夫特(Noah Gift) 著
作者: 丛霖 郑志强 编著
作者: [美] 托马斯 W.米勒(Thomas W. Miller)著