标题：面向对象软件工程——使用UML、模式与Java
基本信息
ISBN：9787302135548
定价：69元
印次：1-2
装帧：平装
印刷日期：2007-12-6
图书简介
B.Bruegge和A.H.Doutoit编写的《面向对象软件工程——使用UML、模式和Java》（第2版），是卡耐基·梅隆大学（CMU）高年级本科生和研究生的教材，是我所能见到的各类软件工程教材中最棒的一本，其二是使系统足够复杂，以至不存在明显的缺陷”等，这些充满哲理的话，总能给人以启发。
书籍目录
目录
译者的话 I
前言 III
序言 V
致谢 XIII
第1部分开始
第1章软件工程导论 2
1.1导言：软件工程的失误 2
1.2什么是软件工程 3
1.2.1建模 4
1.2.2问题解决 5
1.2.3知识获取 6
1.2.4基本原理 6
1.3软件工程概念 7
1.3.1参与者和角色 8
1.3.2系统和模型 8
1.3.3工作产品 9
1.3.4活动、任务和资源 9
1.3.5功能性需求和非功能性需求 10
1.3.6符号、方法和方法学 10
1.4软件工程开发活动 11
1.4.1需求获取 11
1.4.2分析 11
1.4.3系统设计 13
1.4.4对象设计 13
1.4.5实现 14
1.4.6测试 14
1.5管理软件开发 14
1.5.1沟通 15
1.5.2基本原理管理 15
1.5.3软件配置管理 16
1.5.4项目管理 16
1.5.5软件生命周期 16
1.5.6总结 16
1.6竞技场实例分析 17
1.7推荐读物 18
1.8练习 18
参考文献 19
第2章使用UML建模 21
2.1导言 21
2.2UML综述 22
2.2.1用例图 22
2.2.2类图 23
2.2.3交互图 24
2.2.4状态图 24
2.2.5活动图 25
2.3建模活动中的概述 26
2.3.1系统、模型和视图 26
2.3.2数据类型、抽象数据类型和
实例 28
2.3.3类、抽象类和对象 28
2.3.4事件类、事件和消息 30
2.3.5面向对象建模过程 31
2.3.6伪证和原型构造 32
2.4UML的深入透视 33
2.4.1用例图 33
2.4.2类图 39
2.4.3交互图 46
2.4.4状态图 48
2.4.5活动图 50
2.4.6图的组织 52
2.4.7图的扩展 54
2.5推荐读物 55
2.6练习 55
参考文献 57
第3章项目组织和沟通 58
3.1引言：一个关于火箭的例子 58
3.2项目综述 59
3.3项目组织的综述 62
3.3.1项目组织 62
3.3.2角色 64
3.3.3任务和工作产品 66
3.3.4进度表 68
3.4项目沟通综述 69
3.4.1计划内的沟通 69
3.4.2计划外的沟通 74
3.4.3沟通机制 76
3.5组织活动 81
3.5.1加入一个项目组 82
3.5.2加入沟通基层组织 82
3.5.3参加项目组情况通气会议 83
3.5.4组织客户和项目总结 85
3.6推荐读物 86
3.7练习 86
参考文献 88
第2部分处理复杂性
第4章需求获取 90
4.1导言：可用性实例 90
4.2需求获取综述 91
4.3需求获取概念 92
4.3.1功能性需求 93
4.3.2非功能性需求 93
4.3.3完整性、一致性、清晰性和
正确性 95
4.3.4现实性、确认性和可追踪性 95
4.3.5绿地工程、再工程和界面工程 96
4.4需求获取活动 96
4.4.1标识参与者 97
4.4.2标识场景 98
4.4.3标识用例 100
4.4.4求精用例 102
4.4.5标识参与者和用例之间的
关系 104
4.4.6标识初始分析对象 107
4.4.7标识非功能性需求 108
4.5需求获取管理 110
4.5.1与客户协商规格说明：联合
应用设计 110
4.5.2追踪性维护 112
4.5.3需求获取的文档化 112
4.6竞技场实例分析 114
4.6.1初始问题描述 114
4.6.2标识参与者和场景 115
4.6.3标识用例 119
4.6.4求精用例与标识关系 121
4.6.5标识非功能性需求 125
4.6.6获得的教训 126
4.7推荐读物 126
4.8练习 127
参考文献 128
第5章分析 130
5.1导言：光幻影 130
5.2分析概述 131
5.3分析的概念 132
5.3.1分析对象模型和动态模型 132
5.3.2实体、边界和控制对象 133
5.3.3泛化和特化 134
5.4分析活动：从用例到对象 135
5.4.1标识实体对象 135
5.4.2标识边界对象 137
5.4.3标识控制对象 139
5.4.4使用顺序图将用例?成涑啥韵?139
5.4.5使用CRC卡建模的对象之间
的交互 143
5.4.6标识关联 143
5.4.7标识聚集 145
5.4.8标识属性 146
5.4.9建模单一对象状态相关的行为 147
5.4.10建模对象之间的继承关系 148
5.4.11分析模型回顾 148
5.4.12分析小结 150
5.5分析管理 151
5.5.1将分析文档化 151
5.5.2分配责任 152
5.5.3对分析的沟通 153
5.5.4分析模型的迭代 154
5.5.5客户发出的结束信息 155
5.6竞技场实例分析 156
5.6.1标识实体对象 157
5.6.2标识边界对象 160
5.6.3标识控制对象 161
5.6.4对象之间交互的建模 161
5.6.5评价和加固分析模型 164
5.6.6获得的教训 166
5.7推荐读物 166
5.8练习 167
参考文献 168
第6章系统设计：分解系统 170
6.1导言：一个平面规划的例子 170
6.2系统设计概述 172
6.3系统设计概念 172
6.3.1子系统与类 173
6.3.2服务与子系统接口 174
6.3.3耦合与内聚 174
6.3.4分层与划分 177
6.3.5体系结构风格 180
6.4系统设计活动：从对象到子系统 186
6.4.1出发点：线路规划系统的分析
模型 186
6.4.2明确设计目标 188
6.4.3明确子系统 190
6.5推荐读物 192
6.6练习 193
参考文献 194
第7章系统设计：贯彻设计目标 195
7.1介绍：一个冗余系统的例子 195
7.2系统设计活动概述 196
7.3概念：UML部署图 197
7.4系统设计活动：贯彻设计目标 198
7.4.1将子系统映射到处理器和
构件 199
7.4.2标识并存储持久性数据 201
7.4.3提供访问控制 203
7.4.4设计全局控制流 208
7.4.5标识边界条件 210
7.4.6评审系统设计 212
7.5系统设计管理 214
7.5.1系统设计文档化 214
7.5.2分配责任 215
7.5.3系统设计交流 216
7.5.4系统设计迭代 217
7.6竞技场实例分析 218
7.6.1标识设计目标 218
7.6.2标识子系统 219
7.6.3将子系统映射到处理器和构件 221
7.6.4标识并存储持久性数据 222
7.6.5提供访问控制 223
7.6.6设计全局控制流 224
7.6.7标识边界条件 225
7.6.8课程小结 227
7.7推荐读物 227
7.8练习 228
参考文献 229
第8章对象设计：重用模式解决
方法 230
8.1导言：挫折 230
8.2对象设计概述 232
8.3重用的概念：解决方案对象、继承和
设计模式 234
8.3.1应用对象和解决方案对象 235
8.3.2说明继承和实现继承 235
8.3.3授权 237
8.3.4Liskov替换准则 238
8.3.5设?颇J街械氖谌ê图坛?238
8.4重用活动：选择设计模式和构件 240
8.4.1使用桥梁模式封装数据存储 242
8.4.2使用适配器模式封装可继承
构件 243
8.4.3使用策略模式封装上下文 245
8.4.4使用抽象工厂模式封装平台 247
8.4.5使用命令模式封装控制流 249
8.4.6使用合成设计模式封装层次 249
8.4.7选择设计模式的启发式准则 251
8.4.8标识和调整应用框架 252
8.5管理重用 255
8.5.1对重用进行文档编辑 257
8.5.2分配责任 258
8.6竞技场实例分析 258
8.6.1使用抽象工厂设计模式 259
8.6.2使用命令设计模式 260
8.6.3使用观察者设计模式 261
8.6.4课程回顾 262
8.7推荐读物 262
8.8练习 263
参考文献 264
第9章对象设计：接口规格说明 266
9.1导言：一个铁路的例子 266
9.2接口规格说明概述 268
9.3接口规格说明概念 269
9.3.1类实现者、类扩展者和类
使用者 269
9.3.2类型、签名和可见性 270
9.3.3契约：不变式、前置条件和
后置条件 271
9.3.4对象约束语言 273
9.3.5OCL收集：集合、包和序列 276
9.3.6OCL量词：全称量词forAll和
存在量词exists 279
9.4接口规格说明活动 280
9.4.1标识遗漏的属性和操作 280
9.4.2说明类型、签名和可见性 282
9.4.3说明前置条件和后置条件 283
9.4.4说明不变式 285
9.4.5继承契约 286
9.5管理对象设计 288
9.5.1对象设计文档化 289
9.5.2分配责任 293
9.5.3在需求分析中使用契约 294
9.6竞技场实例分析 294
9.6.1标识在联赛方式（TournamentStyle）和回合（Round）中遗漏的
操作 295
9.6.2定义说明联赛方式（Tournament-Style）和回合（Round）
中的契约 296
9.6.3定义说明淘汰赛方式（KnockOut-Style）和淘汰回合（KnockOut-Round）契约 298
9.6.4课程回顾 300
9.7推荐读物 300
9.8练习 301
参考文献 302
第10章将模型映射到代码 304
10.1导言：一个关于书的例子 304
10.2映射的概述 306
10.3映射的概念 306
10.3.1模型转换 307
10.3.2重构 308
10.3.3正向工程 309
10.3.4逆向工程 310
10.3.5转换准则 311
10.4映射活动 311
10.4.1优化对象设计模型 312
10.4.2将关联映射到集合 314
10.4.3将契约映射到异常 320
10.4.4将对象模型映射到持久存
储模式 323
10.5管理实现 328
10.5.1编写转换文档 328
10.5.2分配责任 329
10.6竞技场实例分析 329
10.6.1竞?汲≈械耐臣评?
（Statistics） 330
10.6.2将关联映射到集合 332
10.6.3将契约映射到异常 333
10.6.4将对象模型映射到数据库
模式 335
10.6.5课程回顾 336
10.7推荐读物 336
10.8练习 337
参考文献 338
第11章测试 339
11.1导言：测试航天飞机 339
11.2测试概述 341
11.3测试概念 344
11.3.1故障、错误状态和失败 345
11.3.2测试用例 347
11.3.3测试桩和测试驱动 348
11.3.4更正 349
11.4测试活动 350
11.4.1构件检查 350
11.4.2可用性测试 351
11.4.3单元测试 352
11.4.4集成测试 359
11.4.5系统测试 364
11.5管理测试 369
11.5.1制定测试计划 369
11.5.2编写测试文档 370
11.5.3分配责任 372
11.5.4回归测试 373
11.5.5使测试自动化 374
11.6推荐读物 375
11.7练习 375
参考文献 377
第3部分管理更改
第12章基本原理管理 380
12.1导言：将火腿切成薄片 380
12.2基本原理概述 381
12.3基本原理概念 383
12.3.1集中式的交通控制 384
12.3.2定义问题：问题 385
12.3.3探索求解空间：提议 386
12.3.4评价求解空间：标准和
讨论 387
12.3.5使求解空间崩溃：解决方案 389
12.3.6执行解决方案：活动项 390
12.3.7基于问题的模型和系统
实例 390
12.4基本原理的活动：从问题到决策 394
12.4.1CTC系统设计 394
12.4.2在会议中获取基本原理 395
12.4.3异步获取基本原理 401
12.4.4在讨论变化的时候获取
基本原理 402
12.4.5重新构造基本原理 405
12.5管理基本原理 406
12.5.1将基本原理文档化 407
12.5.2分配责任 408
12.5.3关于基本原理交流的
启发式规则 409
12.5.4问题的建模和协商 409
12.5.5冲突解决策略 411
12.6推荐读物 412
12.7练习 412
参考文献 413
第13章配置管理 415
13.1导言：一个飞机的实例 415
13.2配置管理概述 417
13.3配置管理概念 418
13.3.1配置项和CM聚集 419
13.3.2版本和配置 419
13.3.3变化请求 420
13.3.4升级和发布 421
13.3.5仓库和工作空间 421
13.3.6版本标识方案 421
13.3.7变化和变化集 423
13.3.8配置管理工具 425
13.4配置管理活动 425
13.4.1配置项和CM聚集标识 427
13.4.2升级管理 429
13.4.3发布管理 430
13.4.4分支管理 432
13.4.5不同版本管理 435
13.4.6变更管理 437
13.5对配置管理的管理 438
13.5.1配置管理的文档化 439
13.5.2分配配置管理任务 439
13.5.3计划配置管理活动 440
13.6推荐读物 440
13.7练习 441
参考文献 442
第14章项目管理 443
14.1介绍：STS-51L发射决定 443
14.2项目管理概述 445
14.3项目管理概念 449
14.3.1任务和活动 450
14.3.2工作产品、工作包和角色 451
14.3.3工作分解结构 451
14.3.4任务模型 452
14.3.5技能矩阵 453
14.3.6组织 454
14.3.7可视组织结构 455
14.3.8组织结构图谱 456
14.3.9软件项目管理计划 457
14.4项目管理活动 459
14.4.1计划项目 460
14.4.2组织项目 463
14.4.3控制项目 467
14.4.4终结项目 472
14.5推荐读物 472
14.6练习 473
参考文献 474
第15章软件生命周期 476
15.1导言：玻利尼西亚航行 476
15.2IEEE1074：开发软件生命周期
过程的标准 479
15.2.1过程与活动 479
15.2.2软件生命周期建模 481
15.2.3项目管理 481
15.2.4前期开发 482
15.2.5开发过程 482
15.2.6后期开发 483
15.2.7整体过程（交叉开发
过程） 483
15.3评价软件生命周期模型的成熟度 484
15.4生命周期模型 486
15.4.1以顺序活动为中心的模型 487
15.4.2以迭代活动为中心的模型 488
15.4.3以实体为中心的模型 492
15.5推荐读物 495
15.6练习 495
参考文献 496
第16章方法学：综合考虑各种
因素 497
16.1导言：首次攀登乔戈里峰（K2峰） 497
16.2项目环境 500
16.3方法学问题 501
16.3.1做多少计划 502
16.3.2多大程度上的重用 502
16.3.3构建多少模型 503
16.3.4过程分为几步 504
16.3.5多大程度上的控制和监控 505
16.3.6什么时候重定义项目目标 505
16.4方法学领域 506
16.4.1Royce方法学 506
16.4.2极限编程 511
16.5案例分析 514
16.5.1XP项目：ATRACT 515
16.5.2局部主客户：FRIEND 517
16.5.3分布式项目：JAMES 523
16.5.4案例分析总结 528
16.6推荐读物 531
16.7练习 532
参考文献 532
第4部分附录
附录A设计模式 536
A.1抽象工厂（AbstractFactory）：
封装平台 536
A.2适配器（Adapter）：对遗留代码的
包装 537
A.3桥梁（Bridge）：允许选择性实现 538
A.4命令（Command）：封装控制流 538
A.5组合（Composite）：表示递归的
层次结构 539
A.6层面（Facade）：层面子系统 540
A.7观察器（Observer）：将实体从
视图中分离出来 541
A.8代理（Proxy）：封装开销大的对象 542
A.9策略（Strategy）：封装算法 543
A.10选择设计模式的启发式准则 544
参考文献 545
附录B术语表 546
参考文献 570[1]