作者:
Craig Larman
出版社: 机械工业出版社
原作名: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
译者: 李洋 / 郑䶮
出版年: 2006-5
页数: 500
定价: 66.00元
装帧: 平装
ISBN: 9787111186823
出版社: 机械工业出版社
原作名: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
译者: 李洋 / 郑䶮
出版年: 2006-5
页数: 500
定价: 66.00元
装帧: 平装
ISBN: 9787111186823
内容简介 · · · · · ·
《UML和模式应用(原书第3版)》英文版面世以来,广受业界专家和读者的好评,历经3个版本的锤炼,吸收了大量OOA,D的精华思想和现代实践方法。全书叙述清晰、用词精炼、构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议娓娓道来,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。
《UML和模式应用(原书第3版)》是一本经典的面向对象分析设计技术的入门书,适用范围广泛,从初学者到有一定对象技术知识但希望进一步提高开发水平的中级读者,甚至是资深的专业人员,都可以从本书获益匪浅,同时,本书也适合作为高等院校相关课程的教材和各类培训班的辅导教材。
目录 · · · · · ·
第一部分 绪论 2
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
· · · · · · (更多)
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
· · · · · · (更多)
第一部分 绪论 2
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
1.5 简单示例 5
1.6 什么是UML 8
1.7 可视化建模的优点 10
1.8 历史 10
1.9 参考资料 12
2.1 什么是UP?其他方法能否对其进行补充 13
第2章 迭代、进化和敏捷 13
2.2 什么是迭代和进化式开发 15
2.3 什么是瀑布生命周期 17
2.4 如何进行迭代和进化式分析和设计 18
2.5 什么是风险驱动和客户驱动的迭代计划 20
2.6 什么是敏捷方法及其观点 20
2.7 什么是敏捷建模 22
2.8 什么是敏捷UP 23
2.9 UP的其他关键实践 24
2.10 什么是UP的阶段 25
2.11 什么是UP科目 25
2.12 如何定制过程和UP开发案例 27
2.13 判断你是否理解迭代开发或UP 28
2.14 历史 29
2.15 参考资料 29
第3章 案例研究 31
3.1 案例研究中涵盖的内容 31
3.2 案例研究策略:迭代开发+迭代学习 32
3.3 案例一:NextGen POS系统 32
3.4 案例二:Monopoly游戏系统 33
第二部分 初始阶段 36
第4章 初始不是需求阶段 36
4.1 什么是初始阶段 36
4.2 初始阶段的持续时间 37
4.3 初始阶段会创建的制品 38
4.4 何时知道自己并不了解初始阶段 39
4.5 初始阶段中有多少UML 39
第5章 进化式需求 40
5.1 定义:需求 40
5.2 进化式需求与瀑布式需求 41
5.3 寻找需求可以采用的方法 42
5.4 需求的类型和种类 42
5.5 UP制品如何组织需求 43
5.6 本书是否包含这些制品的示例 43
5.7 参考资料 44
6.1 示例 45
第6章 用例 45
6.3 用例和用例模型 47
6.2 定义:参与者、场景和用例 47
6.4 动机:为什么使用用例 48
6.5 定义:用例是功能性需求吗 48
6.6 定义:参与者的三种类型 48
6.7 表示法:用例的三种常用形式 49
6.8 示例:详述风格的处理销售 49
6.9 各小节的含义 55
6.10 表示法:有其他格式吗?两栏变体 60
6.11 准则:以无用户界面约束的本质风格编写用例 60
6.14 准则:采用参与者和参与者目标的视点 62
6.15 准则:如何发现用例 62
6.12 准则:编写简洁的用例 62
6.13 准则:编写黑盒用例 62
6.16 准则:什么样的测试有助于发现有用的用例 65
6.17 应用UML:用例图 67
6.18 应用UML:活动图 69
6.19 动机:用例还有其他益处吗?语境中的需求 69
6.20 示例:Monopoly游戏 70
6.21 过程:在迭代方法中如何使用用例 71
6.22 历史 75
6.23 参考资料 75
第7章 其他需求 76
7.1 如何完成这些示例 77
7.2 准则:初始阶段是否应该对此彻底地进行分析 77
7.3 准则:这些制品是否应该放在项目Web站点上 77
7.4 NextGen示例:(部分)补充性规格说明 78
7.5 注解:补充性规格说明 80
7.6 NextGen示例:(部分)设想 82
7.7 注解:设想 84
7.8 NextGen示例:(部分)词汇表 87
7.9 注解:词汇表(数据字典) 87
7.10 NextGen示例:业务规则(领域规则) 88
7.12 过程:迭代方法中的进化式需求 89
7.11 注解:领域规则 89
7.13 参考资料 90
第三部分 细化迭代1——基础第8章 迭代1——基础 92
8.1 迭代1的需求和重点:OOA/D技术的核心 92
8.2 过程:初始和细化 94
8.3 过程:计划下一个迭代 96
第9章 领域模型 98
9.1 示例 99
9.2 什么是领域模型 100
9.3 动机:为什么要创建领域模型 102
9.4 准则:如何创建领域模型 104
9.5 准则:如何找到概念类 104
9.6 示例:寻找和描绘概念类 106
9.7 准则:敏捷建模——绘制类图的草图 107
9.8 准则:敏捷建模——是否要使用工具维护模型 107
9.9 准则:报表对象——模型中是否要包括“票据” 108
9.10 准则:像地图绘制者一样思考;使用领域术语 108
9.11 准则:如何对非现实世界建模 108
9.12 准则:属性与类的常见错误 109
9.13 准则:何时使用“描述”类建模 109
9.14 关联 111
9.15 示例:领域模型中的关联 115
9.16 属性 117
9.17 示例:领域模型中的属性 122
9.18 结论:领域模型是否正确 123
9.19 过程:迭代和进化式领域建模………124 123
9.20 参考资料 125
第10章 系统顺序图 126
10.1 示例:NextGen SSD 126
10.2 什么是系统顺序图 128
10.3 动机:为什么绘制SSD 128
10.4 应用UML:顺序图 129
10.5 SSD和用例之间的关系 129
10.9 示例:Monopoly SSD 130
10.8 SSD的哪些信息要放入词汇表中 130
10.7 如何为涉及其他外部系统的SSD建模 130
10.6 如何为系统事件和操作命名 130
10.10 过程:迭代和进化式SSD 131
10.11 历史和参考资料 132
第11章 操作契约 133
11.1 示例 133
11.2 定义:契约有哪些部分 135
11.3 定义:什么是系统操作 135
11.4 定义:后置条件 136
11.5 示例:enterItem后置条件 137
11.8 准则:如何创建和编写契约 138
11.7 准则:契约在何时有效 138
11.6 准则:是否应该更新领域模型 138
11.9 示例:NextGen POS契约 139
11.10 示例:Monopoly契约 140
11.11 应用UML:操作、契约和OCL 141
11.12 过程:UP的操作契约 141
11.13 历史 142
11.14 参考资料 142
第12章 从需求到设计——迭代进化 143
12.1 以迭代方式做正确的事,正确地做事 143
12.2 尽早引发变更 143
12.3 完成所有分析和建模工作是否需要几个星期 144
第13章 逻辑架构和UML包图 145
13.2 什么是逻辑架构和层 146
13.1 示例 146
13.3 案例研究中应该关注的层 147
13.4 什么是软件架构 147
13.5 应用UML:包图 148
13.6 准则:使用层进行设计 149
13.7 准则:模型-视图分离原则 153
13.8 SSD、系统操作和层之间的联系 154
13.9 示例:NextGen的逻辑架构和包图 155
13.10 示例:Monopoly逻辑架构 155
13.11 参考资料 155
第14章 迈向对象设计 156
14.2 UML CASE工具 157
14.1 敏捷建模和轻量级UML图形 157
14.3 编码前绘制UML需要花费多少时间 158
14.4 设计对象:什么是静态和动态建模 158
14.5 基于UML表示法技术的对象设计技术的重要性 159
14.6 其他对象设计技术:CRC卡 159
第15章 UML交互图 161
15.1 顺序图和通信图 161
15.2 UML建模初学者没有对交互图给予足够重视 164
15.3 常用的UML交互图表示法 164
15.4 顺序图的基本表示法 166
15.5 通信图的基本表示法 175
16.1 应用UML:常用类图表示法 180
第16章 UML类图 180
16.2 定义:设计类图 181
16.3 定义:类元 182
16.4 表示UML属性的方式:属性文本和关联线 182
16.5 注解符号:注解、注释、约束和方法体 185
16.6 操作和方法 185
16.7 关键字 187
16.8 构造型、简档和标记 187
16.9 UML特性和特性字符串 188
16.10 泛化、抽象类、抽象操作 188
16.11 依赖 189
16.13 组合优于聚合 191
16.12 接口 191
16.14 约束 192
16.15 限定关联 192
16.16 关联类 193
16.17 单实例类 193
16.18 模板类和接口 194
16.19 用户自定义的分栏 194
16.20 主动类 194
16.21 交互图和类图之间的关系 195
第17章 GRASP:基于职责设计对象 196
17.1 UML与设计原则 196
17.2 对象设计:输入、活动和输出的示例 197
17.3 职责和职责驱动设计 198
17.4 GRASP:基本OO设计的系统方法 200
17.5 职责、GRASP和UML图之间的联系 201
17.6 什么是模式 201
17.7 现在我们所处的位置 203
17.8 使用GRASP进行对象设计的简短示例 203
17.9 在对象设计中应用GRASP 210
17.10 创建者 210
17.11 信息专家(或专家) 212
17.12 低耦合 215
17.13 控制器 218
17.14 高内聚 227
17.15 参考资料 230
第18章 使用GRASP的对象设计示例 231
18.1 什么是用例实现 232
18.2 制品注释 233
18.3 下一步工作 235
18.4 NextGen迭代的用例实现 235
18.5 Monopoly迭代的用例实现 251
18.6 过程:迭代和进化式对象设计 258
18.7 总结 260
19.1 对象之间的可见性 261
19.2 什么是可见性 261
第19章 对可见性进行设计 261
第20章 将设计映射为代码 265
20.1 编程和迭代、进化式开发 265
20.2 将设计映射到代码 266
20.3 由DCD创建类的定义 266
20.4 从交互图创建方法 266
20.5 代码中的集合类 268
20.6 异常和错误处理 269
20.7 定义Sale.makeLineItem方法 269
20.8 实现的顺序 269
20.11 NextGen POS程序简介 270
20.10 将设计映射为代码的总结 270
20.9 测试驱动或测试优先的开发 270
20.12 Monopoly程序简介 274
第21章 测试驱动开发和重构 279
21.1 测试驱动开发 279
21.2 重构 282
21.3 参考资料 286
第22章 UML工具与UML蓝图 287
22.1 前向、逆向和双向工程 288
22.2 什么是有价值特性的常见报告 288
22.3 对工具有哪些期待 288
22.4 如果绘制了UML草图,如何在编码后更新该图形 289
22.5 参考资料 289
23.1 从迭代1到迭代2 292
第四部分 细化迭代2——更多模式第23章 迭代2:更多模式 292
23.2 迭代2的需求和重点:对象设计和模式 293
第24章 快速地更新分析 296
24.1 案例研究:NextGen POS 296
24.2 案例研究:Monopoly 298
第25章 GRASP:更多具有职责的对象 300
25.1 多态 301
25.2 纯虚构 306
25.3 间接性 309
25.4 防止变异 310
第26章 应用GoF设计模式 316
26.1 适配器(GoF) 317
26.2 一些GRASP原则是对其他设计模式的归纳 318
26.3 设计中发现的“分析”:领域模型 319
26.4 工厂(Factory) 319
26.5 单实例类(GoF) 321
26.6 具有不同接口的外部服务问题的结论 323
26.7 策略(GoF) 324
26.8 组合(GoF)和其他设计原则 328
26.9 外观(GoF) 335
26.10 观察者/发布-订阅/委派事件模型(GoF) 337
26.11 结论 342
26.12 参考资料 342
27.2 Monopoly案例 344
第五部分 细化迭代3——中级主题第27章 迭代3——中级主题 344
27.1 NextGen POS案例 344
第28章 UML活动图及其建模 346
28.1 示例 346
28.2 如何应用活动图 346
28.3 其他UML活动图表示法 348
28.4 准则 350
28.5 示例:NextGen中的活动图 350
28.6 过程:“统一过程”中的活动图 351
28.7 背景 351
第29章 UML状态机图和建模 352
29.1 示例 352
29.3 如何应用状态机图 353
29.2 定义:事件、状态和转换 353
29.4 更多UML状态机图表示法 354
29.5 示例:使用状态机进行UI导航建模 355
29.6 示例:NextGen用例的状态机图 356
29.7 过程:UP中的状态机图 356
29.8 参考资料 356
第30章 用例关联 357
30.1 包含关系 358
30.2 术语:具体用例、抽象用例、基础用例和附加用例 360
30.3 扩展关系 360
30.4 泛化关系 361
30.5 用例图 362
第31章 领域模型的精化 363
31.1 NextGen领域模型中的新概念 363
31.2 泛化 365
31.3 定义概念超类和子类 366
31.4 何时定义概念子类 368
31.5 何时定义概念超类 369
31.6 NextGen POS案例中的概念类层次结构 369
31.7 抽象概念类 371
31.8 对变化的状态建模 372
31.9 软件中的类层次结构和继承关系 373
31.10 关联类 373
31.11 聚合关系和组合关系 375
31.12 时间间隔和产品价格——解决迭代1阶段的“错误” 377
31.13 关联角色名称 377
31.14 作为概念的角色与关联中的角色 378
31.15 导出元素 379
31.16 受限关联 379
31.17 自反关联 380
31.18 使用包来组织领域模型 380
31.19 示例:Monopoly领域模型的精化 384
第32章 更多的SSD和契约 386
第33章 架构分析 390
33.3 架构分析 391
33.1 过程:何时开始架构分析 391
33.2 定义:变化点和进化点 391
33.4 架构分析的常用步骤 392
33.5 科学:架构因素的识别和分析 392
33.6 示例:NextGen POS的部分架构因素表 395
33.7 艺术:架构性因素的解决 396
33.8 架构分析主题的总结 400
33.9 过程:UP中的迭代架构 401
33.10 参考资料 402
第34章 逻辑架构的精化 403
34.1 示例:NextGen的逻辑架构 403
34.2 使用层模式的协作 407
34.3 有关层模式的其他问题 412
34.4 模型-视图分离和“向上”通信 415
34.5 参考资料 415
第35章 包的设计 416
35.1 组织包结构的准则 417
35.2 参考资料 421
第36章 使用GoF模式完成更多对象设计 422
36.1 示例:NextGen POS 422
36.2 本地服务容错;使用本地缓存提高性能 422
36.3 处理故障 426
36.4 通过代理(GoF)使用本地服务进行容错 431
36.6 使用适配器访问外部物理设备 433
36.5 对非功能性或质量需求的设计 433
36.7 对一组相关的对象使用抽象工厂模式 435
36.8 使用多态性和“Do It Myself”模式处理支付 437
36.9 示例:Monopoly案例 442
36.10 结论 445
第37章 使用模式设计持久性框架 446
37.1 问题:持久性对象 447
37.2 解决方案:持久性框架提供的持久性服务 447
37.3 框架 447
37.4 持久性服务和框架的需求 448
37.5 关键思想 448
37.8 模式:对象标识符 449
37.6 模式:将对象表示为表 449
37.7 UML数据建模简档 449
37.9 通过外观访问持久服务 450
37.10 映射对象:数据库映射器或数据库代理模式 450
37.11 使用模板方法模式进行框架设计 452
37.12 使用模板方法模式的具体化 453
37.13 使用MapperFactory配置Mapper 457
37.14 模式:缓存管理 458
37.15 在一个类中合并和隐藏SQL语句 458
37.16 事务状态和状态模式 459
37.17 使用命令模式设计事务 461
37.18 使用虚代理实现滞后具体化 463
37.20 PersistentObject超类和关注分离 465
37.19 如何在表中表示关系 465
37.21 未决问题 466
第38章 UML部署图和构件图 467
38.1 部署图 467
38.2 构件图 469
第39章 架构的文档化:UML和N+1视图模型 470
39.1 SAD和架构视图 470
39.2 表示法:SAD的结构 473
39.3 示例:NextGen POS的SAD 473
39.4 示例:Jakarta Struts的SAD 478
39.6 参考资料 481
39.5 过程:迭代式架构文档 481
第六部分 其他主题 484
第40章 迭代式开发和敏捷项目管理的进一步讨论 484
40.1 如何计划一次迭代 484
40.2 适应性计划与预测性计划 485
40.3 阶段计划和迭代计划 486
40.4 如何使用用例和场景来计划迭代 487
40.5 早期预算的有效性(无效性) 488
40.6 将项目制品组织起来 489
40.7 何时你会发现自己并没有理解迭代计划 489
40.8 参考资料 490
参考文献 491
术语表 497
· · · · · · (收起)
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
1.5 简单示例 5
1.6 什么是UML 8
1.7 可视化建模的优点 10
1.8 历史 10
1.9 参考资料 12
2.1 什么是UP?其他方法能否对其进行补充 13
第2章 迭代、进化和敏捷 13
2.2 什么是迭代和进化式开发 15
2.3 什么是瀑布生命周期 17
2.4 如何进行迭代和进化式分析和设计 18
2.5 什么是风险驱动和客户驱动的迭代计划 20
2.6 什么是敏捷方法及其观点 20
2.7 什么是敏捷建模 22
2.8 什么是敏捷UP 23
2.9 UP的其他关键实践 24
2.10 什么是UP的阶段 25
2.11 什么是UP科目 25
2.12 如何定制过程和UP开发案例 27
2.13 判断你是否理解迭代开发或UP 28
2.14 历史 29
2.15 参考资料 29
第3章 案例研究 31
3.1 案例研究中涵盖的内容 31
3.2 案例研究策略:迭代开发+迭代学习 32
3.3 案例一:NextGen POS系统 32
3.4 案例二:Monopoly游戏系统 33
第二部分 初始阶段 36
第4章 初始不是需求阶段 36
4.1 什么是初始阶段 36
4.2 初始阶段的持续时间 37
4.3 初始阶段会创建的制品 38
4.4 何时知道自己并不了解初始阶段 39
4.5 初始阶段中有多少UML 39
第5章 进化式需求 40
5.1 定义:需求 40
5.2 进化式需求与瀑布式需求 41
5.3 寻找需求可以采用的方法 42
5.4 需求的类型和种类 42
5.5 UP制品如何组织需求 43
5.6 本书是否包含这些制品的示例 43
5.7 参考资料 44
6.1 示例 45
第6章 用例 45
6.3 用例和用例模型 47
6.2 定义:参与者、场景和用例 47
6.4 动机:为什么使用用例 48
6.5 定义:用例是功能性需求吗 48
6.6 定义:参与者的三种类型 48
6.7 表示法:用例的三种常用形式 49
6.8 示例:详述风格的处理销售 49
6.9 各小节的含义 55
6.10 表示法:有其他格式吗?两栏变体 60
6.11 准则:以无用户界面约束的本质风格编写用例 60
6.14 准则:采用参与者和参与者目标的视点 62
6.15 准则:如何发现用例 62
6.12 准则:编写简洁的用例 62
6.13 准则:编写黑盒用例 62
6.16 准则:什么样的测试有助于发现有用的用例 65
6.17 应用UML:用例图 67
6.18 应用UML:活动图 69
6.19 动机:用例还有其他益处吗?语境中的需求 69
6.20 示例:Monopoly游戏 70
6.21 过程:在迭代方法中如何使用用例 71
6.22 历史 75
6.23 参考资料 75
第7章 其他需求 76
7.1 如何完成这些示例 77
7.2 准则:初始阶段是否应该对此彻底地进行分析 77
7.3 准则:这些制品是否应该放在项目Web站点上 77
7.4 NextGen示例:(部分)补充性规格说明 78
7.5 注解:补充性规格说明 80
7.6 NextGen示例:(部分)设想 82
7.7 注解:设想 84
7.8 NextGen示例:(部分)词汇表 87
7.9 注解:词汇表(数据字典) 87
7.10 NextGen示例:业务规则(领域规则) 88
7.12 过程:迭代方法中的进化式需求 89
7.11 注解:领域规则 89
7.13 参考资料 90
第三部分 细化迭代1——基础第8章 迭代1——基础 92
8.1 迭代1的需求和重点:OOA/D技术的核心 92
8.2 过程:初始和细化 94
8.3 过程:计划下一个迭代 96
第9章 领域模型 98
9.1 示例 99
9.2 什么是领域模型 100
9.3 动机:为什么要创建领域模型 102
9.4 准则:如何创建领域模型 104
9.5 准则:如何找到概念类 104
9.6 示例:寻找和描绘概念类 106
9.7 准则:敏捷建模——绘制类图的草图 107
9.8 准则:敏捷建模——是否要使用工具维护模型 107
9.9 准则:报表对象——模型中是否要包括“票据” 108
9.10 准则:像地图绘制者一样思考;使用领域术语 108
9.11 准则:如何对非现实世界建模 108
9.12 准则:属性与类的常见错误 109
9.13 准则:何时使用“描述”类建模 109
9.14 关联 111
9.15 示例:领域模型中的关联 115
9.16 属性 117
9.17 示例:领域模型中的属性 122
9.18 结论:领域模型是否正确 123
9.19 过程:迭代和进化式领域建模………124 123
9.20 参考资料 125
第10章 系统顺序图 126
10.1 示例:NextGen SSD 126
10.2 什么是系统顺序图 128
10.3 动机:为什么绘制SSD 128
10.4 应用UML:顺序图 129
10.5 SSD和用例之间的关系 129
10.9 示例:Monopoly SSD 130
10.8 SSD的哪些信息要放入词汇表中 130
10.7 如何为涉及其他外部系统的SSD建模 130
10.6 如何为系统事件和操作命名 130
10.10 过程:迭代和进化式SSD 131
10.11 历史和参考资料 132
第11章 操作契约 133
11.1 示例 133
11.2 定义:契约有哪些部分 135
11.3 定义:什么是系统操作 135
11.4 定义:后置条件 136
11.5 示例:enterItem后置条件 137
11.8 准则:如何创建和编写契约 138
11.7 准则:契约在何时有效 138
11.6 准则:是否应该更新领域模型 138
11.9 示例:NextGen POS契约 139
11.10 示例:Monopoly契约 140
11.11 应用UML:操作、契约和OCL 141
11.12 过程:UP的操作契约 141
11.13 历史 142
11.14 参考资料 142
第12章 从需求到设计——迭代进化 143
12.1 以迭代方式做正确的事,正确地做事 143
12.2 尽早引发变更 143
12.3 完成所有分析和建模工作是否需要几个星期 144
第13章 逻辑架构和UML包图 145
13.2 什么是逻辑架构和层 146
13.1 示例 146
13.3 案例研究中应该关注的层 147
13.4 什么是软件架构 147
13.5 应用UML:包图 148
13.6 准则:使用层进行设计 149
13.7 准则:模型-视图分离原则 153
13.8 SSD、系统操作和层之间的联系 154
13.9 示例:NextGen的逻辑架构和包图 155
13.10 示例:Monopoly逻辑架构 155
13.11 参考资料 155
第14章 迈向对象设计 156
14.2 UML CASE工具 157
14.1 敏捷建模和轻量级UML图形 157
14.3 编码前绘制UML需要花费多少时间 158
14.4 设计对象:什么是静态和动态建模 158
14.5 基于UML表示法技术的对象设计技术的重要性 159
14.6 其他对象设计技术:CRC卡 159
第15章 UML交互图 161
15.1 顺序图和通信图 161
15.2 UML建模初学者没有对交互图给予足够重视 164
15.3 常用的UML交互图表示法 164
15.4 顺序图的基本表示法 166
15.5 通信图的基本表示法 175
16.1 应用UML:常用类图表示法 180
第16章 UML类图 180
16.2 定义:设计类图 181
16.3 定义:类元 182
16.4 表示UML属性的方式:属性文本和关联线 182
16.5 注解符号:注解、注释、约束和方法体 185
16.6 操作和方法 185
16.7 关键字 187
16.8 构造型、简档和标记 187
16.9 UML特性和特性字符串 188
16.10 泛化、抽象类、抽象操作 188
16.11 依赖 189
16.13 组合优于聚合 191
16.12 接口 191
16.14 约束 192
16.15 限定关联 192
16.16 关联类 193
16.17 单实例类 193
16.18 模板类和接口 194
16.19 用户自定义的分栏 194
16.20 主动类 194
16.21 交互图和类图之间的关系 195
第17章 GRASP:基于职责设计对象 196
17.1 UML与设计原则 196
17.2 对象设计:输入、活动和输出的示例 197
17.3 职责和职责驱动设计 198
17.4 GRASP:基本OO设计的系统方法 200
17.5 职责、GRASP和UML图之间的联系 201
17.6 什么是模式 201
17.7 现在我们所处的位置 203
17.8 使用GRASP进行对象设计的简短示例 203
17.9 在对象设计中应用GRASP 210
17.10 创建者 210
17.11 信息专家(或专家) 212
17.12 低耦合 215
17.13 控制器 218
17.14 高内聚 227
17.15 参考资料 230
第18章 使用GRASP的对象设计示例 231
18.1 什么是用例实现 232
18.2 制品注释 233
18.3 下一步工作 235
18.4 NextGen迭代的用例实现 235
18.5 Monopoly迭代的用例实现 251
18.6 过程:迭代和进化式对象设计 258
18.7 总结 260
19.1 对象之间的可见性 261
19.2 什么是可见性 261
第19章 对可见性进行设计 261
第20章 将设计映射为代码 265
20.1 编程和迭代、进化式开发 265
20.2 将设计映射到代码 266
20.3 由DCD创建类的定义 266
20.4 从交互图创建方法 266
20.5 代码中的集合类 268
20.6 异常和错误处理 269
20.7 定义Sale.makeLineItem方法 269
20.8 实现的顺序 269
20.11 NextGen POS程序简介 270
20.10 将设计映射为代码的总结 270
20.9 测试驱动或测试优先的开发 270
20.12 Monopoly程序简介 274
第21章 测试驱动开发和重构 279
21.1 测试驱动开发 279
21.2 重构 282
21.3 参考资料 286
第22章 UML工具与UML蓝图 287
22.1 前向、逆向和双向工程 288
22.2 什么是有价值特性的常见报告 288
22.3 对工具有哪些期待 288
22.4 如果绘制了UML草图,如何在编码后更新该图形 289
22.5 参考资料 289
23.1 从迭代1到迭代2 292
第四部分 细化迭代2——更多模式第23章 迭代2:更多模式 292
23.2 迭代2的需求和重点:对象设计和模式 293
第24章 快速地更新分析 296
24.1 案例研究:NextGen POS 296
24.2 案例研究:Monopoly 298
第25章 GRASP:更多具有职责的对象 300
25.1 多态 301
25.2 纯虚构 306
25.3 间接性 309
25.4 防止变异 310
第26章 应用GoF设计模式 316
26.1 适配器(GoF) 317
26.2 一些GRASP原则是对其他设计模式的归纳 318
26.3 设计中发现的“分析”:领域模型 319
26.4 工厂(Factory) 319
26.5 单实例类(GoF) 321
26.6 具有不同接口的外部服务问题的结论 323
26.7 策略(GoF) 324
26.8 组合(GoF)和其他设计原则 328
26.9 外观(GoF) 335
26.10 观察者/发布-订阅/委派事件模型(GoF) 337
26.11 结论 342
26.12 参考资料 342
27.2 Monopoly案例 344
第五部分 细化迭代3——中级主题第27章 迭代3——中级主题 344
27.1 NextGen POS案例 344
第28章 UML活动图及其建模 346
28.1 示例 346
28.2 如何应用活动图 346
28.3 其他UML活动图表示法 348
28.4 准则 350
28.5 示例:NextGen中的活动图 350
28.6 过程:“统一过程”中的活动图 351
28.7 背景 351
第29章 UML状态机图和建模 352
29.1 示例 352
29.3 如何应用状态机图 353
29.2 定义:事件、状态和转换 353
29.4 更多UML状态机图表示法 354
29.5 示例:使用状态机进行UI导航建模 355
29.6 示例:NextGen用例的状态机图 356
29.7 过程:UP中的状态机图 356
29.8 参考资料 356
第30章 用例关联 357
30.1 包含关系 358
30.2 术语:具体用例、抽象用例、基础用例和附加用例 360
30.3 扩展关系 360
30.4 泛化关系 361
30.5 用例图 362
第31章 领域模型的精化 363
31.1 NextGen领域模型中的新概念 363
31.2 泛化 365
31.3 定义概念超类和子类 366
31.4 何时定义概念子类 368
31.5 何时定义概念超类 369
31.6 NextGen POS案例中的概念类层次结构 369
31.7 抽象概念类 371
31.8 对变化的状态建模 372
31.9 软件中的类层次结构和继承关系 373
31.10 关联类 373
31.11 聚合关系和组合关系 375
31.12 时间间隔和产品价格——解决迭代1阶段的“错误” 377
31.13 关联角色名称 377
31.14 作为概念的角色与关联中的角色 378
31.15 导出元素 379
31.16 受限关联 379
31.17 自反关联 380
31.18 使用包来组织领域模型 380
31.19 示例:Monopoly领域模型的精化 384
第32章 更多的SSD和契约 386
第33章 架构分析 390
33.3 架构分析 391
33.1 过程:何时开始架构分析 391
33.2 定义:变化点和进化点 391
33.4 架构分析的常用步骤 392
33.5 科学:架构因素的识别和分析 392
33.6 示例:NextGen POS的部分架构因素表 395
33.7 艺术:架构性因素的解决 396
33.8 架构分析主题的总结 400
33.9 过程:UP中的迭代架构 401
33.10 参考资料 402
第34章 逻辑架构的精化 403
34.1 示例:NextGen的逻辑架构 403
34.2 使用层模式的协作 407
34.3 有关层模式的其他问题 412
34.4 模型-视图分离和“向上”通信 415
34.5 参考资料 415
第35章 包的设计 416
35.1 组织包结构的准则 417
35.2 参考资料 421
第36章 使用GoF模式完成更多对象设计 422
36.1 示例:NextGen POS 422
36.2 本地服务容错;使用本地缓存提高性能 422
36.3 处理故障 426
36.4 通过代理(GoF)使用本地服务进行容错 431
36.6 使用适配器访问外部物理设备 433
36.5 对非功能性或质量需求的设计 433
36.7 对一组相关的对象使用抽象工厂模式 435
36.8 使用多态性和“Do It Myself”模式处理支付 437
36.9 示例:Monopoly案例 442
36.10 结论 445
第37章 使用模式设计持久性框架 446
37.1 问题:持久性对象 447
37.2 解决方案:持久性框架提供的持久性服务 447
37.3 框架 447
37.4 持久性服务和框架的需求 448
37.5 关键思想 448
37.8 模式:对象标识符 449
37.6 模式:将对象表示为表 449
37.7 UML数据建模简档 449
37.9 通过外观访问持久服务 450
37.10 映射对象:数据库映射器或数据库代理模式 450
37.11 使用模板方法模式进行框架设计 452
37.12 使用模板方法模式的具体化 453
37.13 使用MapperFactory配置Mapper 457
37.14 模式:缓存管理 458
37.15 在一个类中合并和隐藏SQL语句 458
37.16 事务状态和状态模式 459
37.17 使用命令模式设计事务 461
37.18 使用虚代理实现滞后具体化 463
37.20 PersistentObject超类和关注分离 465
37.19 如何在表中表示关系 465
37.21 未决问题 466
第38章 UML部署图和构件图 467
38.1 部署图 467
38.2 构件图 469
第39章 架构的文档化:UML和N+1视图模型 470
39.1 SAD和架构视图 470
39.2 表示法:SAD的结构 473
39.3 示例:NextGen POS的SAD 473
39.4 示例:Jakarta Struts的SAD 478
39.6 参考资料 481
39.5 过程:迭代式架构文档 481
第六部分 其他主题 484
第40章 迭代式开发和敏捷项目管理的进一步讨论 484
40.1 如何计划一次迭代 484
40.2 适应性计划与预测性计划 485
40.3 阶段计划和迭代计划 486
40.4 如何使用用例和场景来计划迭代 487
40.5 早期预算的有效性(无效性) 488
40.6 将项目制品组织起来 489
40.7 何时你会发现自己并没有理解迭代计划 489
40.8 参考资料 490
参考文献 491
术语表 497
· · · · · · (收起)
原文摘录 · · · · · ·
喜欢读"UML和模式应用"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"UML和模式应用"的人也喜欢 · · · · · ·
UML和模式应用的书评 · · · · · · ( 全部 17 条 )
软件设计的工程学方法
我以前做设计的时候基本是凭直觉和经验,虽然也知道一些原则,但不够系统化,难以应用。 这本书则在这方面帮助我提高了很多,书中提供了很多可复制可操作的方法,让我在思考的时候有了更明确的方向。 书名为uml和模式应用,其中包含了几类模式,一类是需求分析模式FURPS+,一...
(展开)
如果你喜欢 Martin Fowler 的《企业应用架构模式》和《UML Distilled》,你可能也会喜欢这本书
除了英文,UML 应该是最容易被程序员忽视的职业技能了。 软件研发是一项心智劳动,我们需要思考、勾勒草稿、交流,这些都需要承载工具。而 UML 就是目前业界最通用的工具。大量的技术书籍都采用 UML 进行设计的可视化。 广泛应用的技术总是难以避免被滥用、误用,UML 也不例外...
(展开)
基于职责的设计如何体现?
作者在文中鼓吹基于职责的设计。 但是从例子看不出职责在哪里体现,感觉UML很难表现职责。 职责是一种关系?表现为依赖还是关联? 从例子上看,很多设计决策都是reasonable的行为,一定要职责驱动吗? 看来要去翻基于职责设计的原始文献。
(展开)
> 更多书评 17篇
这本书的其他版本 · · · · · · ( 全部9 )
-
Prentice Hall (2004)8.3分 21人读过
-
机械工业出版社 (2006)9.2分 48人读过
-
机械工业出版社 (2004)8.1分 56人读过
-
机械工业出版社 (2003)8.2分 32人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 站在巨人的肩膀上(一)基本读物 (7655cjc)
- ACM班书单 (六琴)
- 架构设计师——书目 (joshua'sElohim)
- 公司书架 (number5)
- 计算机求职必读 (mdyang)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于UML和模式应用的评论:
feed: rss 2.0
0 有用 panjf 2009-07-31 22:14:20
内容不少但不精,我觉得真的想学不如好好看一本UML书+模式设计书+软件工程书
1 有用 精一 2020-08-14 07:49:56
串起了架构和设计模式,需要精读
0 有用 花火町 2012-08-26 13:27:16
入门的工具书,其中列举了各种图和文档的实例,初学者可以通过这本对整体概念有所了解。
0 有用 空灵一月 2014-01-01 20:54:10
现在看有点过时了
2 有用 ming 2012-03-17 10:12:53
不仅仅是UML,也不仅仅是模式。贯穿了整个迭代周期。前言里写的读者对象是“入门级”,有点汗颜。每章后面都有推荐书目。风格和《敏捷软件开发》有点类似,绝对值得一读。 每章前面有一句话,分享两个冷的: 0x2B | ~0x2B 注:莎士比亚在《哈姆雷特》中留下了一句很有名的台词:“To be or not to be, that is a question”。在计算机科学中,我们给出了它的答案:FF。... 不仅仅是UML,也不仅仅是模式。贯穿了整个迭代周期。前言里写的读者对象是“入门级”,有点汗颜。每章后面都有推荐书目。风格和《敏捷软件开发》有点类似,绝对值得一读。 每章前面有一句话,分享两个冷的: 0x2B | ~0x2B 注:莎士比亚在《哈姆雷特》中留下了一句很有名的台词:“To be or not to be, that is a question”。在计算机科学中,我们给出了它的答案:FF。 为什么程序员总是将万圣节和圣诞节搞混?因为OCT(31)=DEC(25)。 (展开)
0 有用 易水萧萧 2024-08-18 16:17:59 北京
融合了多种技术,需求分析,用例分析,领域建模,职责分配原则,职责驱动设计,设计模式,是一本内容丰富的好书,但不是那么容易吸收和掌握的,需要仔细领悟。学习面向对象与软件工程,这本书就足够了,全流程,全要素的好书,一定要多看几遍,消化吸收,不要错过这本大牛专家,倾囊相授的道。传道授业解惑的导师,良心导师,为学习者指明了道路。
0 有用 猫和基金的侍者 2024-01-30 09:08:01 浙江
开卷有益
0 有用 lkjidm 2023-07-06 12:11:47 广东
其实我挺喜欢这本书的,可能跟我比较喜欢偏文科的东西,而不喜欢具体的代码实现有一定关系。老师也挺好,只是这些高屋建瓴的设计思维确实比较抽象,导致考试的时候有些云里雾里。有空可以考虑多读读?总之终于明白了啥是UML,还有如何做思维导图。
0 有用 草木如织 2023-06-04 22:58:46 湖北
内容有些陈旧,翻译糟糕
0 有用 七小丘人 2023-03-02 13:06:34 上海
目前看过的最宏观的架构层面的方法论,引入了一整套软件设计指导思想。但是可以发现就UML而言,相关理论停留在06年,VisualStudio2015之后去掉了UML相关模块,UML的应用程度和标准与设计者的个人风格有关,适合作为打草稿和锻炼思维的工具但难以作为标准输出文档。同时书中试图用GRASP原则/模式去给GoF模式进行分类归纳,提供一个记忆不同设计模式的方法。书中关于软件分层的内容比较浅,可能... 目前看过的最宏观的架构层面的方法论,引入了一整套软件设计指导思想。但是可以发现就UML而言,相关理论停留在06年,VisualStudio2015之后去掉了UML相关模块,UML的应用程度和标准与设计者的个人风格有关,适合作为打草稿和锻炼思维的工具但难以作为标准输出文档。同时书中试图用GRASP原则/模式去给GoF模式进行分类归纳,提供一个记忆不同设计模式的方法。书中关于软件分层的内容比较浅,可能需要结合DDD去补充。 (展开)