第1章 软件的本质 1
1.1 软件的本质 3
1.1.1 定义软件 3
1.1.2 软件应用领域 4
1.1.3 遗留软件 5
1.2 软件的变更本质 6
1.2.1 WebApp 6
1.2.2 移动App 7
1.2.3 云计算 7
1.2.4 产品线软件 8
1.3 小结 8
习题与思考题 8
扩展阅读与信息资源 9
第2章 软件工程 10
2.1 定义软件工程学科 11
2.2 软件过程 11
2.2.1 过程框架 12
2.2.2 普适性活动 12
2.2.3 过程的适应性调整 13
2.3 软件工程实践 13
2.3.1 实践的精髓 14
2.3.2 通用原则 14
2.4 软件开发神话 16
2.5 这一切是如何开始的 18
2.6 小结 19
习题与思考题 19
扩展阅读与信息资源 19
第一部分 软件过程 22
第3章 软件过程结构 22
3.1 通用过程模型 23
3.2 定义框架活动 24
3.3 明确任务集 24
3.4 过程模式 25
3.5 过程评估与改进 27
3.6 小结 28
习题与思考题 28
扩展阅读与信息资源 28
第4章 过程模型 29
4.1 惯用过程模型 30
4.1.1 瀑布模型 30
4.1.2 增量过程模型 32
4.1.3 演化过程模型 32
4.1.4 并发模型 36
4.1.5 演化过程的最终评述 37
4.2 专用过程模型 38
4.2.1 基于构件的开发 38
4.2.2 形式化方法模型 39
4.2.3 面向方面的软件开发 39
4.3 统一过程 40
4.3.1 统一过程的简史 41
4.3.2 统一过程的阶段 41
4.4 个人过程模型和团队过程模型 42
4.4.1 个人软件过程 42
4.4.2 团队软件过程 43
4.5 过程技术 44
4.6 产品和过程 45
4.7 小结 46
习题与思考题 46
扩展阅读与信息资源 47
第5章 敏捷开发 48
5.1 什么是敏捷 49
5.2 敏捷及变更成本 50
5.3 什么是敏捷过程 50
5.3.1 敏捷原则 51
5.3.2 敏捷开发战略 52
5.4 极限编程 52
5.4.1 极限编程过程 52
5.4.2 工业极限编程 54
5.5 其他敏捷过程模型 56
5.5.1 Scrum 56
5.5.2 动态系统开发方法 57
5.5.3 敏捷建模 58
5.5.4 敏捷统一过程 59
5.6 敏捷过程工具集 60
5.7 小结 61
习题与思考题 61
扩展阅读与信息资源 62
第6章 软件工程的人员方面 64
6.1 软件工程师的特质 64
6.2 软件工程心理学 65
6.3 软件团队 66
6.4 团队结构 67
6.5 敏捷团队 68
6.5.1 通用敏捷团队 68
6.5.2 XP团队 69
6.6 社交媒体的影响 70
6.7 软件工程中云的应用 71
6.8 协作工具 71
6.9 全球化团队 72
6.10 小结 73
习题与思考题 73
扩展阅读与信息资源 74
第二部分 建模 76
第7章 指导实践的原则 76
7.1 软件工程知识 77
7.2 核心原则 77
7.2.1 指导过程的原则 78
7.2.2 指导实践的原则 78
7.3 指导每个框架活动的原则 80
7.3.1 沟通原则 80
7.3.2 策划原则 81
7.3.3 建模原则 83
7.3.4 构建原则 87
7.3.5 部署原则 89
7.4 工作实践 90
7.5 小结 91
习题与思考题 92
扩展阅读与信息资源 92
第8章 理解需求 94
8.1 需求工程 95
8.2 建立根基 100
8.2.1 确认利益相关者 100
8.2.2 识别多重观点 100
8.2.3 协同合作 101
8.2.4 首次提问 101
8.2.5 非功能需求 102
8.2.6 可追溯性 102
8.3 获取需求 103
8.3.1 协作收集需求 103
8.3.2 质量功能部署 105
8.3.3 使用场景 106
8.3.4 获取工作产品 106
8.3.5 敏捷需求获取 107
8.3.6 面向服务的方法 107
8.4 开发用例 107
8.5 构建分析模型 111
8.5.1 分析模型的元素 112
8.5.2 分析模式 114
8.5.3 敏捷需求工程 114
8.5.4 自适应系统的需求 114
8.6 协商需求 115
8.7 需求监控 116
8.8 确认需求 117
8.9 避免常见错误 117
8.10 小结 118
习题与思考题 118
扩展阅读与信息资源 119
第9章 需求建模:基于场景的方法 121
9.1 需求分析 122
9.1.1 总体目标和原理 122
9.1.2 分析的经验原则 123
9.1.3 域分析 123
9.1.4 需求建模的方法 125
9.2 基于场景建模 126
9.2.1 创建初始用例 126
9.2.2 细化初始用例 128
9.2.3 编写正式用例 129
9.3 补充用例的UML模型 131
9.3.1 开发活动图 131
9.3.2 泳道图 132
9.4 小结 133
习题与思考题 133
扩展阅读与信息资源 133
第10章 需求建模:基于类的方法 135
10.1 识别分析类 135
10.2 描述属性 138
10.3 定义操作 138
10.4 类-职责-协作者建模 140
10.5 关联和依赖 145
10.6 分析包 145
10.7 小结 146
习题与思考题 146
扩展阅读与信息资源 146
第11章 需求建模:行为、模式和Web/移动App 148
11.1 生成行为模型 148
11.2 识别用例事件 149
11.3 状态表达 149
11.4 需求建模的模式 152
11.4.1 发现分析模式 152
11.4.2 需求模式举例:执行器-传感器 153
11.5 Web/移动App的需求建模 156
11.5.1 多少分析才够用 156
11.5.2 需求建模的输入 157
11.5.3 需求建模的输出 157
11.5.4 内容模型 158
11.5.5 WebApp和移动App的交互模型 159
11.5.6 功能模型 159
11.5.7 WebApp的配置模型 160
11.5.8 导航建模 161
11.6 小结 161
习题与思考题 162
扩展阅读与信息资源 162
第12章 设计概念 163
12.1 软件工程中的设计 164
12.2 设计过程 166
12.2.1 软件质量指导原则和属性 166
12.2.2 软件设计的演化 168
12.3 设计概念 169
12.3.1 抽象 169
12.3.2 体系结构 169
12.3.3 模式 170
12.3.4 关注点分离 170
12.3.5 模块化 171
12.3.6 信息隐蔽 171
12.3.7 功能独立 172
12.3.8 求精 172
12.3.9 方面 173
12.3.10 重构 173
12.3.11 面向对象的设计概念 174
12.3.12 设计类 174
12.3.13 依赖倒置 176
12.3.14 测试设计 177
12.4 设计模型 177
12.4.1 数据设计元素 178
12.4.2 体系结构设计元素 178
12.4.3 接口设计元素 179
12.4.4 构件级设计元素 180
12.4.5 部署级设计元素 181
12.5 小结 181
习题与思考题 182
扩展阅读与信息资源 183
第13章 体系结构设计 184
13.1 软件体系结构 185
13.1.1 什么是体系结构 185
13.1.2 体系结构为什么重要 186
13.1.3 体系结构描述 186
13.1.4 体系结构决策 187
13.2 体系结构类型 188
13.3 体系结构风格 188
13.3.1 体系结构风格的简单分类 189
13.3.2 体系结构模式 191
13.3.3 组织和求精 192
13.4 体系结构考虑要素 192
13.5 体系结构决策 194
13.6 体系结构设计 194
13.6.1 系统环境的表示 195
13.6.2 定义原型 195
13.6.3 将体系结构细化为构件 196
13.6.4 描述系统实例 197
13.6.5 WebApp的体系结构设计 198
13.6.6 移动App的体系结构设计 198
13.7 评估候选的体系结构设计 199
13.7.1 体系结构描述语言 200
13.7.2 体系结构评审 201
13.8 经验学习 201
13.9 基于模式的体系结构评审 202
13.10 体系结构一致性检查 203
13.11 敏捷性与体系结构 203
13.12 小结 204
习题与思考题 205
扩展阅读与信息资源 205
第14章 构件级设计 207
14.1 什么是构件 208
14.1.1 面向对象的观点 208
14.1.2 传统的观点 209
14.1.3 过程相关的观点 211
14.2 设计基于类的构件 212
14.2.1 基本设计原则 212
14.2.2 构件级设计指导方针 214
14.2.3 内聚性 215
14.2.4 耦合性 216
14.3 实施构件级设计 217
14.4 WebApp的构件级设计 222
14.4.1 构件级内容设计 222
14.4.2 构件级功能设计 222
14.5 移动App的构件级设计 222
14.6 设计传统构件 223
14.7 基于构件的开发 223
14.7.1 领域工程 223
14.7.2 构件的合格性检验、适应性修改与组合 224
14.7.3 体系结构不匹配 225
14.7.4 复用的分析与设计 226
14.7.5 构件的分类与检索 226
14.8 小结 227
习题与思考题 228
扩展阅读与信息资源 228
第15章 用户界面设计 230
15.1 黄金规则 231
15.1.1 把控制权交给用户 231
15.1.2 减轻用户的记忆负担 232
15.1.3 保持界面一致 233
15.2 用户界面的分析和设计 234
15.2.1 用户界面分析和设计模型 234
15.2.2 过程 235
15.3 界面分析 236
15.3.1 用户分析 236
15.3.2 任务分析和建模 237
15.3.3 显示内容分析 240
15.3.4 工作环境分析 240
15.4 界面设计步骤 241
15.4.1 应用界面设计步骤 241
15.4.2 用户界面设计模式 243
15.4.3 设计问题 243
15.5 WebApp和移动App的界面设计 245
15.5.1 界面设计原则与指导方针 245
15.5.2 WebApp和移动App的界面设计工作流 248
15.6 设计评估 249
15.7 小结 250
习题与思考题 250
扩展阅读与信息资源 251
第16章 基于模式的设计 253
16.1 设计模式 254
16.1.1 模式的种类 255
16.1.2 框架 256
16.1.3 描述模式 257
16.1.4 模式语言和模式库 258
16.2 基于模式的软件设计 258
16.2.1 不同环境下基于模式的设计 258
16.2.2 用模式思考 259
16.2.3 设计任务 260
16.2.4 建立模式组织表 260
16.2.5 常见设计错误 261
16.3 体系结构模式 262
16.4 构件级设计模式 263
16.5 用户界面设计模式 264
16.6 WebApp设计模式 266
16.6.1 设计焦点 266
16.6.2 设计粒度 266
16.7 移动App模式 267
16.8 小结 268
习题与思考题 268
扩展阅读与信息资源 269
第17章 WebApp设计 271
17.1 WebApp设计质量 272
17.2 设计目标 273
17.3 WebApp设计金字塔 274
17.4 WebApp界面设计 274
17.5 美学设计 275
17.5.1 布局问题 276
17.5.2 平面设计问题 276
17.6 内容设计 277
17.6.1 内容对象 277
17.6.2 内容设计问题 278
17.7 体系结构设计 278
17.7.1 内容体系结构 279
17.7.2 WebApp体系结构 280
17.8 导航设计 281
17.8.1 导航语义 281
17.8.2 导航语法 283
17.9 构件级设计 283
17.10 小结 283
习题与思考题 284
扩展阅读与信息资源 284
第18章 移动App设计 286
18.1 挑战 287
18.1.1 开发因素 287
18.1.2 技术因素 288
18.2 开发移动App 289
18.2.1 移动App质量 290
18.2.2 用户界面设计 291
18.2.3 环境感知App 292
18.2.4 经验教训 293
18.3 移动App设计的最佳实践 294
18.4 移动开发环境 295
18.5 云 297
18.6 传统软件工程的适用性 298
18.7 小结 298
习题与思考题 299
扩展阅读与信息资源 299
第三部分 质量管理 302
第19章 质量概念 302
19.1 什么是质量 303
19.2 软件质量 304
19.2.1 Garvin的质量维度 304
19.2.2 McCall的质量因素 305
19.2.3 ISO 9126质量因素 306
19.2.4 定向质量因素 306
19.2.5 过渡到量化观点 307
19.3 软件质量困境 308
19.3.1 “足够好”的软件 308
19.3.2 质量的成本 309
19.3.3 风险 311
19.3.4 疏忽和责任 311
19.3.5 质量和安全 312
19.3.6 管理活动的影响 312
19.4 实现软件质量 313
19.4.1 软件工程方法 313
19.4.2 项目管理技术 313
19.4.3 质量控制 313
19.4.4 质量保证 313
19.5 小结 314
习题与思考题 314
扩展阅读与信息资源 314
第20章 评审技术 316
20.1 软件缺陷对成本的影响 317
20.2 缺陷的放大和消除 318
20.3 评审度量及其应用 319
20.3.1 分析度量数据 320
20.3.2 评审的成本效益 320
20.4 评审的正式程度 321
20.5 非正式评审 322
20.6 正式技术评审 323
20.6.1 评审会议 324
20.6.2 评审报告和记录保存 324
20.6.3 评审指导原则 325
20.6.4 样本驱动评审 326
20.7 产品完成后评估 327
20.8 小结 327
习题与思考题 327
扩展阅读与信息资源 328
第21章 软件质量保证 329
21.1 背景问题 330
21.2 软件质量保证的要素 330
21.3 软件质量保证的过程和产品特性 332
21.4 软件质量保证的任务、目标和度量 332
21.4.1 软件质量保证的任务 332
21.4.2 目标、属性和度量 333
21.5 软件质量保证的形式化方法 334
21.6 统计软件质量保证 335
21.6.1 一个普通的例子 335
21.6.2 软件工程中的六西格玛 336
21.7 软件可靠性 337
21.7.1 可靠性和可用性的测量 337
21.7.2 软件安全 338
21.8 ISO 9000质量标准 339
21.9 软件质量保证计划 340
21.10 小结 341
习题与思考题 341
扩展阅读与信息资源 341
第22章 软件测试策略 343
22.1 软件测试的策略性方法 344
22.1.1 验证与确认 344
22.1.2 软件测试组织 345
22.1.3 软件测试策略——宏观 346
22.1.4 测试完成的标准 347
22.2 策略问题 348
22.3 传统软件的测试策略 348
22.3.1 单元测试 348
22.3.2 集成测试 350
22.4 面向对象软件的测试策略 354
22.4.1 面向对象环境中的单元测试 354
22.4.2 面向对象环境中的集成测试 354
22.5 WebApp的测试策略 355
22.6 移动App的测试策略 355
22.7 确认测试 356
22.7.1 确认测试准则 356
22.7.2 配置评审 356
22.7.3 α测试和β测试 356
22.8 系统测试 358
22.8.1 恢复测试 358
22.8.2 安全测试 358
22.8.3 压力测试 358
22.8.4 性能测试 359
22.8.5 部署测试 359
22.9 调试技巧 360
22.9.1 调试过程 360
22.9.2 心理因素 361
22.9.3 调试策略 362
22.9.4 纠正错误 363
22.10 小结 363
习题与思考题 364
扩展阅读与信息资源 364
第23章 测试传统的应用软件 366
23.1 软件测试基础 367
23.2 测试的内部视角和外部视角 368
23.3 白盒测试 369
23.4 基本路径测试 369
23.4.1 流图表示 369
23.4.2 独立程序路径 371
23.4.3 生成测试用例 372
23.4.4 图矩阵 374
23.5 控制结构测试 375
23.6 黑盒测试 376
23.6.1 基于图的测试方法 376
23.6.2 等价类划分 378
23.6.3 边界值分析 378
23.6.4 正交数组测试 379
23.7 基于模型的测试 381
23.8 文档测试和帮助设施测试 381
23.9 实时系统的测试 382
23.10 软件测试模式 383
23.11 小结 384
习题与思考题 384
扩展阅读与信息资源 385
第24章 测试面向对象的应用 386
24.1 扩展测试的视野 387
24.2 测试OOA和OOD模型 387
24.2.1 OOA和OOD模型的正确性 388
24.2.2 面向对象模型的一致性 388
24.3 面向对象测试策略 389
24.3.1 面向对象环境中的单元测试 389
24.3.2 面向对象环境中的集成测试 390
24.3.3 面向对象环境中的确认测试 390
24.4 面向对象测试方法 390
24.4.1 面向对象概念的测试用例设计含义 391
24.4.2 传统测试用例设计方法的可应用性 391
24.4.3 基于故障的测试 391
24.4.4 基于场景的测试设计 392
24.5 类级可应用的测试方法 392
24.5.1 面向对象类的随机测试 392
24.5.2 类级的划分测试 393
24.6 类间测试用例设计 394
24.6.1 多类测试 394
24.6.2 从行为模型导出的测试 395
24.7 小结 396
习题与思考题 396
扩展阅读与信息资源 397
第25章 测试WebApp 398
25.1 WebApp的测试概念 398
25.1.1 质量维度 399
25.1.2 WebApp环境中的错误 399
25.1.3 测试策略 400
25.1.4 测试计划 400
25.2 测试过程概述 401
25.3 内容测试 402
25.3.1 内容测试的目标 402
25.3.2 数据库测试 403
25.4 用户界面测试 404
25.4.1 界面测试策略 404
25.4.2 测试界面机制 405
25.4.3 测试界面语义 406
25.4.4 可用性测试 406
25.4.5 兼容性测试 408
25.5 构件级测试 409
25.6 导航测试 409
25.6.1 测试导航语法 409
25.6.2 测试导航语义 410
25.7 配置测试 411
25.7.1 服务器端问题 411
25.7.2 客户端问题 411
25.8 安全性测试 412
25.9 性能测试 413
25.9.1 性能测试的目标 413
25.9.2 负载测试 414
25.9.3 压力测试 414
25.10 小结 415
习题与思考题 416
扩展阅读与信息资源 417
第26章 测试移动App 418
26.1 测试准则 419
26.2 测试策略 420
26.2.1 传统方法适用吗 420
26.2.2 对自动化的要求 421
26.2.3 建立测试矩阵 422
26.2.4 压力测试 422
26.2.5 生产环境中的测试 423
26.3 与用户交互的各种情况 424
26.3.1 手语测试 425
26.3.2 语音输入和识别 425
26.3.3 虚拟键盘输入 425
26.3.4 警报和异常条件 426
26.4 跨界测试 426
26.5 实时测试问题 427
26.6 测试工具和环境 427
26.7 小结 428
习题与思考题 429
扩展阅读与信息资源 430
第27章 安全性工程 431
27.1 安全性需求分析 432
27.2 网络世界中的安全性与保密性 433
27.2.1 社交媒体 433
27.2.2 移动App 434
27.2.3 云计算 434
27.2.4 物联网 434
27.3 安全性工程分析 434
27.3.1 安全性需求获取 435
27.3.2 安全性建模 435
27.3.3 测度设计 436
27.3.4 正确性检查 436
27.4 安全性保证 437
27.4.1 安全性保证过程 437
27.4.2 组织和管理 438
27.5 安全性风险分析 438
27.6 传统软件工程活动的作用 440
27.7 可信性系统验证 441
27.8 小结 442
习题与思考题 443
扩展阅读与信息资源 443
第28章 形式化建模与验证 445
28.1 净室策略 446
28.2 功能规格说明 447
28.2.1 黑盒规格说明 448
28.2.2 状态盒规格说明 449
28.2.3 清晰盒规格说明 449
28.3 净室设计 449
28.3.1 设计细化 450
28.3.2 设计验证 450
28.4 净室测试 451
28.4.1 统计使用测试 451
28.4.2 认证 452
28.5 重新思考形式化方法 453
28.6 形式化方法的概念 454
28.7 其他争论 457
28.8 小结 457
习题与思考题 458
扩展阅读与信息资源 459
第29章 软件配置管理 460
29.1 软件配置管理概述 461
29.1.1 SCM场景 461
29.1.2 配置管理系统的元素 462
29.1.3 基线 463
29.1.4 软件配置项 464
29.1.5 依赖性和变更管理 464
29.2 SCM中心存储库 465
29.2.1 一般特征和内容 465
29.2.2 SCM特征 466
29.3 SCM过程 466
29.3.1 软件配置中的对象标识 467
29.3.2 版本控制 468
29.3.3 变更控制 469
29.3.4 影响管理 471
29.3.5 配置审核 472
29.3.6 状态报告 472
29.4 WebApp和移动App的配置管理 473
29.4.1 主要问题 473
29.4.2 配置对象 474
29.4.3 内容管理 475
29.4.4 变更管理 477
29.4.5 版本控制 479
29.4.6 审核和报告 479
29.5 小结 480
习题与思考题 481
扩展阅读与信息资源 481
第30章 产品度量 483
30.1 产品度量框架 484
30.1.1 测度、度量和指标 484
30.1.2 产品度量的挑战 484
30.1.3 测量原则 485
30.1.4 面向目标的软件测量 485
30.1.5 有效软件度量的属性 486
30.2 需求模型的度量 487
30.2.1 基于功能的度量 487
30.2.2 规格说明质量的度量 490
30.3 设计模型的度量 491
30.3.1 体系结构设计的度量 491
30.3.2 面向对象设计的度量 493
30.3.3 面向类的度量——CK度量集 493
30.3.4 面向类的度量——MOOD度量集 495
30.3.5 Lorenz和Kidd提出的面向对象的度量 496
30.3.6 构件级设计的度量 496
30.3.7 面向操作的度量 496
30.3.8 用户界面设计的度量 497
30.4 WebApp和移动App的设计度量 497
30.5 源代码的度量 499
30.6 测试的度量 500
30.6.1 用于测试的Halstead度量 500
30.6.2 面向对象测试的度量 500
30.7 维护的度量 501
30.8 小结 502
习题与思考题 503
扩展阅读与信息资源 503
第四部分 管理软件项目 506
第31章 项目管理概念 506
31.1 管理涉及的范围 507
31.1.1 人员 507
31.1.2 产品 507
31.1.3 过程 508
31.1.4 项目 508
31.2 人员 508
31.2.1 利益相关者 508
31.2.2 团队负责人 509
31.2.3 软件团队 509
31.2.4 敏捷团队 511
31.2.5 协调和沟通问题 512
31.3 产品 513
31.3.1 软件范围 513
31.3.2 问题分解 513
31.4 过程 514
31.4.1 合并产品和过程 514
31.4.2 过程分解 515
31.5 项目 516
31.6 W5HH原则 516
31.7 关键实践 517
31.8 小结 518
习题与思考题 518
扩展阅读与信息资源 519
第32章 过程度量与项目度量 521
32.1 过程领域和项目领域中的度量 522
32.1.1 过程度量和软件过程改进 522
32.1.2 项目度量 524
32.2 软件测量 525
32.2.1 面向规模的度量 526
32.2.2 面向功能的度量 527
32.2.3 调和代码行度量和功能点度量 527
32.2.4 面向对象的度量 528
32.2.5 面向用例的度量 529
32.2.6 WebApp项目的度量 530
32.3 软件质量的度量 531
32.3.1 测量质量 531
32.3.2 缺陷排除效率 532
32.4 在软件过程中集成度量 533
32.4.1 支持软件度量的论点 534
32.4.2 建立基线 534
32.4.3 度量收集、计算和评估 534
32.5 小型组织的度量 535
32.6 制定软件度量大纲 536
32.7 小结 537
习题与思考题 537
扩展阅读与信息资源 538
第33章 软件项目估算 540
33.1 对估算的观察 541
33.2 项目计划过程 542
33.3 软件范围和可行性 542
33.4 资源 543
33.4.1 人力资源 544
33.4.2 可复用软件资源 544
33.4.3 环境资源 544
33.5 软件项目估算 544
33.6 分解技术 545
33.6.1 软件规模估算 545
33.6.2 基于问题的估算 546
33.6.3 基于LOC估算的实例 547
33.6.4 基于FP估算的实例 548
33.6.5 基于过程的估算 549
33.6.6 基于过程估算的实例 550
33.6.7 基于用例的估算 550
33.6.8 基于用例点估算的实例 551
33.6.9 调和不同的估算方法 552
33.7 经验估算模型 553
33.7.1 估算模型的结构 553
33.7.2 COCOMOⅡ模型 553
33.7.3 软件方程 553
33.8 面向对象项目的估算 554
33.9 特殊的估算技术 555
33.9.1 敏捷开发的估算 555
33.9.2 WebApp项目的估算 555
33.10 自行开发或购买的决策 556
33.10.1 创建决策树 557
33.10.2 外包 558
33.11 小结 559
习题与思考题 559
扩展阅读与信息资源 560
第34章 项目进度安排 561
34.1 基本概念 562
34.2 项目进度安排概述 563
34.2.1 基本原则 564
34.2.2 人员与工作量之间的关系 565
34.2.3 工作量分配 566
34.3 为软件项目定义任务集 567
34.3.1 任务集举例 567
34.3.2 主要任务的细化 568
34.4 定义任务网络 568
34.5 进度安排 569
34.5.1 时序图 570
34.5.2 跟踪进度 570
34.5.3 跟踪面向对象项目的进展 572
34.5.4 WebApp和移动App项目的进度安排 573
34.6 挣值分析 575
34.7 小结 576
习题与思考题 577
扩展阅读与信息资源 578
第35章 风险管理 579
35.1 被动风险策略和主动风险策略 580
35.2 软件风险 580
35.3 风险识别 581
35.3.1 评估整体项目风险 582
35.3.2 风险因素和驱动因子 583
35.4 风险预测 584
35.4.1 建立风险表 584
35.4.2 评估风险影响 585
35.5 风险细化 587
35.6 风险缓解、监测和管理 587
35.7 RMMM计划 589
35.8 小结 590
习题与思考题 590
扩展阅读与信息资源 591
第36章 维护与再工程 593
36.1 软件维护 594
36.2 软件可支持性 595
36.3 再工程 596
36.4 业务过程再工程 596
36.4.1 业务过程 596
36.4.2 BPR模型 597
36.5 软件再工程 598
36.5.1 软件再工程过程模型 598
36.5.2 软件再工程活动 599
36.6 逆向工程 600
36.6.1 理解数据的逆向工程 601
36.6.2 理解处理的逆向工程 602
36.6.3 用户界面的逆向工程 602
36.7 重构 603
36.7.1 代码重构 603
36.7.2 数据重构 604
36.8 正向工程 604
36.8.1 客户/服务器体系结构的正向工程 605
36.8.2 面向对象体系结构的正向工程 606
36.9 再工程经济学 606
36.10 小结 607
习题与思考题 607
扩展阅读与信息资源 608
第五部分 软件工程高级课题 612
第37章 软件过程改进 612
37.1 什么是SPI 613
37.1.1 SPI的方法 613
37.1.2 成熟度模型 614
37.1.3 SPI适合每个人吗 615
37.2 SPI过程 615
37.2.1 评估和差距分析 616
37.2.2 教育和培训 617
37.2.3 选择和合理性判定 617
37.2.4 设置/迁移 618
37.2.5 评价 618
37.2.6 SPI的风险管理 618
37.3 CMMI 619
37.4 人员CMM 622
37.5 其他SPI框架 622
37.6 SPI的投资收益率 624
37.7 SPI趋势 624
37.8 小结 625
习题与思考题 626
扩展阅读与信息资源 626
第38章 软件工程的新趋势 627
38.1 技术演变 628
38.2 关于纯粹工程学科的展望 629
38.3 观察软件工程的发展趋势 629
38.4 识别“软趋势” 630
38.4.1 管理复杂性 631
38.4.2 开放世界软件 632
38.4.3 意外需求 632
38.4.4 人才技能结合 633
38.4.5 软件构造块 633
38.4.6 对“价值”认识的转变 634
38.4.7 开源 634
38.5 技术方向 634
38.5.1 过程趋势 634
38.5.2 巨大的挑战 635
38.5.3 协同开发 636
38.5.4 需求工程 636
38.5.5 模型驱动的软件开发 637
38.5.6 后现代设计 637
38.5.7 测试驱动的开发 638
38.6 相关工具的趋势 639
38.7 小结 640
习题与思考题 640
扩展阅读与信息资源 640
第39章 结束语 642
39.1 再论软件的重要性 643
39.2 人员及其构造系统的方式 643
39.3 表示信息的新模式 644
39.4 远景 645
39.5 软件工程师的责任 646
39.6 写在最后 647
索引 648
- 《中风偏瘫 脑萎缩 痴呆 最新治疗原则与方法》孙作东著 2004
- 《市政工程基础》杨岚编著 2009
- 《工程静力学》王科盛主编 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《化学反应工程》许志美主编 2019
- 《基于地质雷达信号波的土壤重金属污染探测方法研究》赵贵章 2019
- 《语文教育教学实践探索》陈德收 2018
- 《彼得·布鲁克导演实践研究》邓小玲著 2019
- 《第一性原理方法及应用》李青坤著 2019
- 《反思性实践》胡红梅, 2019
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《剑桥国际英语写作教程 段落写作》(美)吉尔·辛格尔顿(Jill Shingleton)编著 2019