The Object Primer中文版(原书第3版)
作者 : Scott W.Ambler
译者 : 车皓阳 张家才
出版日期 : 2005-08-22
ISBN : 7-111-16820-8
定价 : 45.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 349
开本 : 16开
原书名 : The Object Primer: Agile Model-Driven Development with UML 2.0 (Third Edition)
原出版社: Cambridge University Press
属性分类: 教材
包含CD :
绝版 :
图书简介

Scott W. Ambler是获奖图书《Building Object Applications That Work》、《Process Patterns》和《More Process Patterns》的作者。本书广泛受到学生和专家的好评,被认为是面向对象技术的一本很好的入门教材。现在,Scott完成了修订工作,本书中所有的建模符号都使用UML2.0书写,所有的章节都进行了重新修改。书中还增加了敏捷建模方法与其他建模技术的基本概念。
  本书包含大量复习题,便于读者测试新学到的知识。除此之外,作者也融进了过去几年在技术讨论的时候得到的经验教训。无论是学生还是开发人员都会发现这是一本相当不错的书。

图书特色

图书前言

本书以一种直接的、易于理解的方式讲解了使用面向对象和关系数据库技术应该怎样进行敏捷软件开发(ASD)。它涵盖了ASD和OO的基本概念,描述了如何采用敏捷的方法定义需求,进行分析和设计。它使用了UML 2以及其他一些领先的技术,其中包括敏捷模型驱动开发(AMDD)和测试驱动开发方法(TDD)。在20世纪90年代,OO取代结构化范型成为软件开发的主流。现在,在新的千年,ASD正在取代传统的软件开发方法。虽然OO和ASD经常用来开发复杂的系统,但了解它们却并不复杂。本书与同主题的其他介绍性书籍不同的地方在于,它是从开发者的真实角度编写的,因此涵盖了在学习这些概念中间会遇到的那些困难。

谁应该阅读本书
  本书主要面向两类读者:开发人员和大学生,这些读者都希望能够在现代软件开发过程中获得成功。本书广泛使用了“开发者”一词,开发者是参与软件应用开发的人员,包括程序员、分析员、设计师、业务风险承担者、数据库管理员、支持工程师,等等。许多人不会把业务风险承担人划归这个行列中,但实际上业务风险承担人的主动性对于软件项目的成功来说至关重要。业务风险承担者可以积极地参与需求工程和分析,有时也需要参与到设计中,很明显,他们应该是开发者。

本书的优点
  * 简洁、直观、中肯—不会浪费时间
  * 给出了完整开发生命周期—对于敏捷建模来说不仅仅是编程工作
  * 使复杂的概念简单易懂—将缩短学习时间
  * 采用开发者的语言,而不是学者的语言—很容易理解
  * 使用真实世界的例子和案例—它描述的是真实的应用
  * 把新技术与当前实践关联起来—可以很容易地弄明白如何配合使用ASD和OO
  * 平滑过渡掌握新技术—您的第一个项目会因此而获取成功

为什么要阅读本书
  通过阅读本书,您能牢固地掌握敏捷软件开发、面向对象、测试以及建模的概念和技术。对于面向对象软件开发,尤其对于C#和Java软件开发来说,这些都是基本技能。而且,这些技能被置于运行实例的上下文当中,这样就能看到它们是怎样在真实世界中得到应用的。

为什么出第3版
  1994年秋季,正值作者的第1版《The Object Primer》开始创作的时候,对象行业相对处于混沌状态。“标记战争”的硝烟到处弥漫,同时存在七八种流传甚广的建模标记,30多种不太流行的版本,但没有一个明显获胜。在1999年到2000年,作者采用UML 1.x、以应用为中心的设计技术、Java和关系技术重写了这本书。在这一版里使用了UML 2.x标准和敏捷建模软件开发技术。

如何阅读本书
  程序员、设计人员和项目经理:逐页阅读整本书。
  业务分析员和用户代表:第4章到第9章是特别为这些读者编写的,详细讲述了为OO应用收集和验证用户需求的技术。业务分析员还要读一读第2章,这一章系统讲解了面向对象的基本概念,以及第10章“敏捷架构”。
  学生:像第一类读者一样,也应该逐页阅读整本书。而且,应该在OO课程期中测验前2到3周内阅读这本书,而不是“临时抱佛脚”。这些内容需要花时间才能弄懂(实际上,要花费的时间不止几周,但可能受到学时的限制)。

致谢
  在此,对给本书提出深刻意见和问题的读者表示特别的感谢,他们是:Kevin Alcock、Trond Andersen、Brad Appleton、Phillipe Back、Steven Baynes、James Beliak、Chris Britton、Larry Brunelle、Francois Coallier、Mike Colbert、Rick Fisher、Martin Gainty、Adam Geras、Mark Graybill、Tom Gullion、Terry Halpin、Ron Jeffries、Jesper Rugaard Jensen、Andrew Johnston、Jon Kern、Bob Lee、Ashley McNeile、Alexey Meledin、Randy Miller、David Mulcihy、Les Munday、John Nalbone、Paul Oldfield、Neil Pitman、Chris Roffler、Doug Rosenberg、Felix Ruessel、Phil Sims、Jim Standley、Tim Tuxworth、Michael Vizdos、Stephen Webb、Ashin Wima、Yuji Yamano以及剑桥出版社和TechBooks的工作人员。

图书序言

敏捷软件开发本来是软件开发社区的边缘技术,但现在已经逐渐成为主流。发生这种变化的原因是需要更快更好地生产软件,在全球软件开发环境下,这已经是提升软件竞争力不可或缺的一部分。从北美直到亚洲,发布让客户感到满意的软件产品,都是成功的关键性因素。敏捷团体尤为关注客户,以确保他们能够收到最大的效益。
  传统上,我们构建系统的方式大多基于以前系统给出的约束。编译这些系统需要大量的时间,软件开发过程也是围绕着这项活动展开的。在这种环境下,首次就确保代码正确无误对于最大化生产力来说是至关重要的。然而,今天许多集成开发环境(IDE)不再需要我们编译整个系统来添加新的功能。事实上,新的编译器常常可以帮助我们确保程序语法的正确性。
  敏捷软件开发运动从这些约束提升中获得了好处。所有的敏捷软件开发过程都关注于使用迭代方法创建较小的功能增量。这种新的方法与以前的“大爆炸”式方法和瀑布方法正好相反,后者是一次性交付软件产品。再者,今天的技术和软件开发过程允许我们提升另一项约束。
  在敏捷软件开发过程中,最为人熟知的是极限编程(XP)。XP对我们开发软件的思维方式提出了一些挑战。例如,XP需要客户在现场一起完成工程项目。换句话说,客户是项目的一部分,而不仅仅是来编写规范,或者事后才出现的人物。
  让开发人员直接与客户一起工作的思想很快牵动了软件开发的其他领域。在面向服务架构的团体中,业务过程专家和软件开发人员一起工作,检查新的业务自动化方法。结果,就出现了业务过程融合,它合并了两个独立的业务过程。在过去,这项活动的大部分内容是绝无可能实现的,因为在这些机构内部就有壁垒。
  敏捷软件开发运动理所当然地改变了我们构建软件的方式。这项运动通过尽力减小消耗动机、偏离整体目标和交付软件的那些因素,从而努力使得生产力最大化。Scott W. Ambler是一位最好的向导,是敏捷建模和敏捷数据库设计的发明者,他在本版《The Object Primer》中提出了敏捷软件开发的路标。
  在本书中,我们会找到最新的软件开发技术的综述,以及将会把我们引入敏捷殿堂的丰富知识。这个团体中的新人也会找到敏捷软件运动中关键领域的入门内容。本书将帮助开发人员极大提高工作效率。敏捷内部的原则会改变我们对软件开发的看法,最终,也将会改变我们构建软件产品的方法。
  熟悉敏捷运动的人也会从Scott丰富的经验中挖掘到“金块”。从其完整生命周期面向对象测试方法(FLOOT)到敏捷需求和架构,新版《The Object Primer》把它们放在了同一个地方。对每个人来说,这都是有意义的,它不但更加完整,同时可读性也得到了提高。
  敏捷软件开发运动需要我们理解整个生命周期。我们不仅要能编写代码,而且还要和客户以及其他团队合作交流。我们与他人的合作不仅要通过契约来保证,而且还要通过相互间的关系来维系。这样做的结果就是,我们的团队具有客户所需要的流动性和高生产力。
  保持敏捷就是消除我们的团队和我们自己身上的约束。通往敏捷软件开发的道路需要我们开发出许多跨越整个软件生命周期的新技能。新版《The Object Primer》将带领读者学习这些技能,使我们得以在敏捷软件开发的道路上继续前进。

—Granville Miller

作者简介

Scott W.Ambler:Scott W.Ambler: Scott W. Ambler是软件开发方法年轻一代的领军人物之一,在理论和实践上的造诣都很深厚。作为一位高级咨询师,他一直积极参与全球各种大型软件开发和过程改进项目。同时,他还是一位视野广阔的方法学者,是《Software Development》杂志的专栏作家,撰写了多部颇受推崇的著作,其中包括《The Object Primer》、《Agile Modeling》、《The Elements of UML Style》、《More Process Patterns》等。

译者简介

车皓阳 张家才:暂无简介

译者序

本书原文是著名的《The Object Primer》的第3版,除了面向对象的基本概念之外,结合 UML 2.0,重点讲述了敏捷建模方法,其中不乏大师Scott W. Ambler自己的经验之谈。从本书和其他一些软件工程相关的书籍当中,我们可以感到,软件开发的发展趋势是敏捷。在这个时候,掌握敏捷开发的一些原则和技术,这对于确保我们这些开发者继续挺立潮头是十分重要的。很可能,当你读完本书之后,在不知不觉之中,你发现自己已经敏捷化了,俨然已经是一名敏捷建模人员了。我们想,本书的作用大概也在于此。
  鉴于前一版读者的反馈意见,本书中术语的翻译与前一版有些许的不同,例如use case我们就按照主流翻译成了“用例”,而不再遵循前一版中的“用况”,此类细节还有多处,在此就不赘述了。
  本书由车皓阳、张家才共同翻译。在本书的翻译过程中,我们力求忠实于原文,在一些有可能会产生歧义的地方,我们反复斟酌,并和多人进行了讨论。本书的翻译过程得到了机械工业出版社华章分社的大力支持和无私帮助,在此深表感谢!
  由于时间和水平有限,错误之处在所难免,恳请广大读者批评指正。

译  者
2005年7月

图书目录

第1章  先进的软件开发 1
1.1  现代开发技术 1
1.1.1  对象技术 2
1.1.2  扩展标记语言(XML) 3
1.1.3  关系数据库(RDB)技术 4
1.1.4  Web服务 4
1.2  现代开发方法 5
1.2.1  敏捷软件开发 5
1.2.2  统一建模语言(UML) 7
1.2.3  统一过程(UP) 8
1.2.4  模型驱动的开发(MDA) 9
1.2.5  配合使用 10
1.3  本书的组织 10
1.4  案例研究 11
1.5  小结 13
第2章  面向对象的基本概念 15
2.1  概述OO概念 15
2.2  结构化观点下的OO概念 17
2.3  UML 2图 18
2.4  对象和类 19
2.5  属性和操作/方法 20
2.6  抽象、封装和信息隐藏 21
2.6.1  抽象 21
2.6.2  封装 22
2.6.3  信息隐藏 22
2.6.4  一个示例 22
2.7  继承 23
2.7.1  继承建模 24
2.7.2  继承技巧和技术 24
2.7.3  单一继承和多重继承 25
2.7.4  抽象类和具体类 26
2.8  持久化 27
2.9  关系 27
2.9.1  关联 28
2.9.2  未知事物建模 30
2.9.3  如何实现关联 30
2.9.4  特性 31
2.9.5  聚合和组合 31
2.9.6  依赖 33
2.10  协作 33
2.11  耦合 36
2.12  内聚 36
2.13  多态 37
2.13.1  一个例子:扑克游戏 37
2.13.2  大学里的多态 38
2.14  接口 39
2.15  组件 40
2.16  模式 41
2.17  小结 41
2.18  复习题 42
第3章  完整生命周期面向对象测试 43
3.1  变更的成本 43
3.2  测试哲学 47
3.3  FLOOT 47
3.4  回归测试 48
3.5  质量保证 49
3.6  测试模型 50
3.6.1  用代码来验证 50
3.6.2  使用场景测试 51
3.6.3  原型评审/走查 53
3.6.4  用户界面测试 53
3.6.5  模型评审 54
3.6.6  每种技术的使用时机 55
3.7  测试代码 55
3.7.1  测试术语 55
3.7.2  测试工具 56
3.7.3  传统的代码测试概念 56
3.7.4  面向对象的测试技术 57
3.7.5  代码检查 59
3.8  全面测试系统 59
3.9  用户测试 60
3.10  测试驱动的开发(TDD) 61
3.11  小结 62
3.12  复习题 62
第4章  敏捷模型驱动的开发 63
4.1  建模哲学 63
4.2  项目风险承担者 65
4.3  什么是敏捷建模(AM) 67
4.4  AM的价值 68
4.5  AM的原则 68
4.6  AM实践 69
4.7  慢慢进入敏捷建模 71
4.8  AMDD 72
4.9  基本信息收集技术 74
4.9.1  会谈 74
4.9.2  观察 75
4.9.3  头脑风暴 75
4.10  敏捷文档 76
4.11  在软件开发中使用白板 77
4.12  AMDD和其他敏捷方法学 79
4.13  敏捷建模和测试驱动开发 80
4.14  小结 80
4.15  复习题 81
第5章  使用建模 83
5.1  用例建模 83
5.1.1  敏捷起步 84
5.1.2  本质用例图 86
5.1.3  确定执行者 89
5.1.4  编写本质用例 91
5.1.5  确定用例 93
5.1.6  系统用例图 94
5.1.7  系统用例 94
5.1.8  编写候选活动过程 98
5.1.9  其他用例风格 99
5.1.10  比较本质和系统用例 100
5.1.11  复用用例模型 102
5.1.12  包 105
5.1.13  用例建模技巧 106
5.1.14  保持敏捷 108
5.2  用户故事 108
5.3  特征 110
5.4  小结 112
5.5  复习题 112
第6章  用户界面开发 113
6.1  本质用户界面原型 113
6.2  传统用户界面原型法 117
6.3  用户界面流程图 121
6.4  可用性 123
6.5  用户界面设计策略 123
6.6  敏捷风险承担者文档 126
6.7  小结 127
6.8  复习题 127
第7章 补充需求 129
7.1  业务规则 129
7.2  技术需求 132
7.3  约束 132
7.4  对象约束语言(OCL) 133
7.5  术语表 133
7.6  补充规范 134
7.7  小结 134
7.8  复习题 134
第8章  概念领域建模 137
8.1  鲁棒图 137
8.2  对象角色模型(ORM)图 141
8.3  类职责协作者(CRC)卡片 143
8.4  分析类图 147
8.4.1  对类和职责建模 150
8.4.2  关联建模 152
8.4.3  通过类间继承引入复用 154
8.4.4  组合和关联建模 156
8.4.5  词汇表建模 156
8.5  逻辑数据模型 157
8.6  有效运用分析模式 159
8.7  UML对象图 161
8.8  保持概念领域建模的敏捷 162
8.9  小结 163
8.10  复习题 163
第9章  业务流程建模 165
9.1  数据流图 165
9.2  流程图 168
9.3  UML活动图 170
9.4  小结 174
9.5  复习题 175
第10章  敏捷架构 177
10.1  架构技术和概念 178
10.1.1  尽可能延迟架构决策 178
10.1.2  认可一些已经做出的架构决策 178
10.1.3  用代码检查 179
10.1.4  建立架构的变化策略 179
10.1.5  考虑复用 180
10.1.6  卷起袖子干活 180
10.1.7  准备做出折中 181
10.1.8  考虑采用Zachman框架 181
10.1.9  逐渐地运用架构模式 183
10.2  通过变例看未来 184
10.3  UML包图 185
10.3.1  类包图 185
10.3.2  数据包图 187
10.3.3  用例包图 187
10.4  UML组件图 188
10.4.1  接口和端口 190
10.4.2  组件设计 190
10.4.3  创建组件模型 192
10.4.4  保持敏捷 194
10.5  自由形式的图 195
10.6  UML部署图 196
10.7  网络图 199
10.8  架构分层 200
10.9  小结 201
10.10  复习题 202
第11章  动态对象建模 203
11.1  UML顺序图 204
11.1.1  通过顺序图进行可视化编码 211
11.1.2  如何绘制顺序图 211
11.1.3  保持敏捷 212
11.2  UML通信图 212
11.3  UML状态机图 214
11.4  UML定时图 219
11.5  UML交互概况图 221
11.6  UML组合结构图 222
11.7  小结 223
11.8  复习题 224
第12章  结构设计建模 225
12.1  UML类图 225
12.1.1  设计过程中对方法建模 226
12.1.2  设计过程中对属性建模 230
12.1.3  继承技术 233
12.1.4  关联和依赖技术 235
12.1.5  组合技术 237
12.1.6  在模型中引入接口 238
12.1.7  类建模设计技巧 239
12.2  有效地应用设计模式 242
12.2.1  Singleton设计模式 242
12.2.2  Fa峚de设计模式 243
12.2.3  有效应用设计模式的技巧 243
12.3  用UML进行物理数据建模 244
12.4  小结 248
12.5  复习题 248
第13章  面向对象编程 251
13.1  高效编程的哲学 251
13.2  高质量代码的编程技巧和技术 252
13.3  测试驱动的开发 255
13.3.1  TDD和AMDD 256
13.3.2  为什么选择TDD 257
13.4  从面向对象到Java代码 257
13.4.1  从UML顺序图到代码 257
13.4.2  从UML图类到代码 258
13.4.3  用Java实现一个类 259
13.4.4  用Java声明实例属性 261
13.4.5  用Java实现实例方法 262
13.4.6  用Java实现静态方法和属性 263
13.4.7  归档方法 266
13.4.8  实现构造函数 267
13.4.9  用访问器封装属性 268
13.4.10  用Java实现继承 272
13.4.11  用Java实现接口 273
13.4.12  用Java实现关系 276
13.4.13  实现依赖 281
13.4.14  用Java实现协作 281
13.4.15  实现业务规则 282
13.4.16  迭代、迭代再迭代 282
13.5  小结 283
13.6  复习题 283
第14章  敏捷数据库开发 285
14.1  高效数据开发的哲学 286
14.2  把对象映射到关系数据库 286
14.2.1  影子信息 287
14.2.2  映射继承结构 288
14.2.3  映射关系 290
14.3  实现持久代码的策略 292
14.4  从设计到数据库代码 292
14.4.1  定义并修改持久模式 293
14.4.2  创建、检索、更新和删除数据 293
14.4.3  从Java来与数据库进行交互 295
14.4.4  实现映射 296
14.5  面向数据实现策略 296
14.5.1  并发控制 297
14.5.2  事务控制 299
14.5.3  共享逻辑和参照完整性 300
14.5.4  安全访问控制 302
14.5.5  搜索对象 303
14.5.6  报表 305
14.6  数据库重构 306
14.7  遗留分析 308
14.7.1  形式化契约模型 308
14.7.2  常见遗留问题的挑战 309
14.7.3  创建契约模型 310
14.8  小结 310
14.9  复习题 311
第15章  发展方向 313
15.1  成为一名通用专家 313
15.2  继续学习过程 314
15.3  结束语 316
词汇表 317
参考文献和推荐读物 343
基于Web的资源 350

教学资源推荐
作者: Karl E.Wiegers
作者: (美)Alistair Cockburn
作者: 韩万江 姜立新 等编著 宋茂强 审
作者: (美)Ivar Jacobson, Pan-Wei Ng, Paul E. McMahon, Ian Spence, Svante Lidman 著
参考读物推荐
作者: 郑建德 编著
作者: (美)Paul E.McMahon
作者: [美]乔治·V.内维尔-尼尔(George V. Neville-Neil) 著