本书自1982年发行第1版以来,一直受到软件工程界的高度重视,成为高等院校计算机相关专业软件工程课程的重要教学参考书。近30年来,它的各个后继版本一直都是软件专业人土熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。第7版绝不是前一版的简单更新,它包含了很多新的内容,而且调整了全书的结构,以改进教学顺序,同时更加强调一些新的、重要的软件工程过程和软件工程实践知识。全书分软件过程、建模、质量管理、软件项目管理和软件工程高级课题五个部分,系统地论述了软件工程领域最新的基础知识,包括新的概念、原则、技术、方法和工具,同时提供了大量供读者进一步研究探索的参考信息。 本书适合作为本科生和研究生的软件工程及相关课程的教材,新版中五个部分的划分有利于教师根据学时和教学要求安排教学,同时也适合作为软件专业人员的工作指南,即使是资深专业人员,阅读本书也能获益匪浅。
......(更多)
Roger S. Pressman是软件过程改进和软件工程技术领域的国际知名权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。 Pressman博士曾经以软件产业专业技术人员和管理人员的身份从事先进工程、制造领域的CAD/CAM系统的开发。他也做过科学和系统程序设计方面的工作。 在获得美国康涅狄格大学工程学博士学位后,Pressman博士进入学术界成为布里奇波特(Bridgeport)大学计算机工程系副教授,同时担任该校CAD/CAM中心主任。 现在,Pressman博士是R. S. Pressman & Associates,Inc.的总裁,该公司专门从事软件工程方法的咨询和培训业务。作为公司的主要咨询专家,他设计和开发了一套完整的软件工程录像课程“Essential Software Engineering”以及软件过程改进的指导系统“Process Advisor”。这两项产品已为世界上数千家公司采用。最近,他与印度Edistalearning公司合作,开发网上软件工程教学系统“eSchool”。 Pressman博士撰写了许多论文,是多种行业期刊的固定撰稿人,并著有6本技术书。除本书之外,还有: 《A Manager’s Guide to Software Engineering》(McGraw-Hill) 该书曾获奖。 《Making Software Engineering Happen》(Prentice-Hall) 这是涉及软件过程改进的关键管理问题的第一本书。 《Software Shock》(Dorset House) 该书论述软件及其对商业和社会的影响。 Pressman博士曾任多种行业杂志的编委,多年来一直担任《IEEE Software》杂志Manager专栏的编辑。 Pressman博士是知名的演讲者,曾在许多行业会议上作重要讲话,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。 Pressman博士和他的妻子Barbara住在南佛罗里达。他热爱体育运动,擅长网球和高尔夫球。还曾写过两部小说《The Aymara Bridge》和《The Puppeteer》,并打算再写一部。
......(更多)
出版者的话
译者序
前言
作者简介
第1章 软件和软件工程 1
1.1 软件的本质 2
1.1.1 定义软件 3
1.1.2 软件应用领域 5
1.1.3 遗留软件 6
1.2 WebApp的特性 7
1.3 软件工程 8
1.4 软件过程 9
1.5 软件工程实践 11
1.5.1 实践的精髓 11
1.5.2 一般原则 12
1.6 软件神话 14
1.7 这一切是如何开始的 15
1.8 小结 16
习题与思考题 17
推荐读物与阅读信息 17
第一部分 软件过程
第2章 过程模型 20
2.1 通用过程模型 21
2.1.1 定义框架活动 22
2.1.2 明确任务集 23
2.1.3 过程模式 23
2.2 过程评估与改进 25
2.3 惯用过程模型 26
2.3.1 瀑布模型 26
2.3.2 增量过程模型 28
2.3.3 演化过程模型 29
2.3.4 协同模型 33
2.3.5 演化模型的最终评述 34
2.4 专用过程模型 34
2.4.1 基于构件的开发 35
2.4.2 形式化方法模型 35
2.4.3 面向方面的软件开发 35
2.5 统一过程 37
2.5.1 简史 37
2.5.2 统一过程的阶段 37
2.6 个人过程模型和团队过程模型 38
2.6.1 个人软件过程 39
2.6.2 团队软件过程 39
2.7 过程技术 40
2.8 产品与过程 41
2.9 小结 42
习题与思考题 42
推荐读物与阅读信息 43
第3章 敏捷开发 45
3.1 什么是敏捷 46
3.2 敏捷及变更的成本费用 47
3.3 敏捷过程是什么 47
3.3.1 敏捷原则 48
3.3.2 敏捷开发的战略 48
3.3.3 人的因素 49
3.4 极限编程 50
3.4.1 极限编程的权值 50
3.4.2 极限编程过程 51
3.4.3 工业极限编程 53
3.4.4 关于XP的争论 54
3.5 其他敏捷过程模型 55
3.5.1 自适应软件开发 56
3.5.2 Scrum 57
3.5.3 动态系统开发方法 58
3.5.4 Crystal 59
3.5.5 特征驱动开发 59
3.5.6 精益软件开发 60
3.5.7 敏捷建模 60
3.5.8 敏捷统一过程 61
3.6 敏捷过程工具集 62
3.7 小结 63
习题与思考题 63
推荐读物与阅读信息 64
第二部分 建模
第4章 指导实践的原则 68
4.1 软件工程知识 69
4.2 核心原则 69
4.2.1 指导过程的原则 69
4.2.2 指导实践的原则 70
4.3 指导每个框架活动的原则 71
4.3.1 沟通原则 71
4.3.2 策划原则 73
4.3.3 建模原则 74
4.3.4 构造原则 77
4.3.5 部署原则 79
4.4 小结 80
习题与思考题 81
推荐读物与阅读信息 81
第5章 理解需求 83
5.1 需求工程 84
5.2 建立根基 88
5.2.1 确认利益相关者 88
5.2.2 识别多重观点 88
5.2.3 协同合作 88
5.2.4 首次提问 89
5.3 导出需求 89
5.3.1 协作收集需求 90
5.3.2 质量功能部署 92
5.3.3 用户场景 92
5.3.4 导出工作产品 93
5.4 开发用例 94
5.5 构建需求模型 97
5.5.1 需求模型的元素 98
5.5.2 分析模式 100
5.6 协商需求 100
5.7 确认需求 101
5.8 小结 102
习题与思考题 102
推荐读物与阅读信息 103
第6章 需求建模:场景、信息
与类分析 105
6.1 需求分析 106
6.1.1 总体目标和原理 106
6.1.2 分析的经验原则 107
6.1.3 域分析 107
6.1.4 需求建模的方法 109
6.2 基于场景建模 110
6.2.1 新建初始用例 110
6.2.2 细化初始用例 112
6.2.3 编写正规的用例 113
6.3 补充用例的UML模型 115
6.3.1 开发活动图 115
6.3.2 泳道图 115
6.4 数据建模概念 116
6.4.1 数据对象 117
6.4.2 数据属性 117
6.4.3 关系 118
6.5 基于类的建模 119
6.5.1 识别分析类 119
6.5.2 描述属性 121
6.5.3 定义操作 122
6.5.4 类-职责-协作者建模 124
6.5.5 关联和依赖 128
6.5.6 分析包 129
6.6 小结 130
习题与思考题 130
推荐读物与阅读信息 131
第7章 需求建模:流程、行为、模式和Web应用 132
7.1 需求建模策略 132
7.2 面向数建模 133
7.2.1 创建数据流模型 133
7.2.2 创建控制流模型 135
7.2.3 控制规格说明 135
7.2.4 处理规格说明 137
7.3 生成行为模型 138
7.3.1 识别用例事件 139
7.3.2 状态表现 139
7.4 需求建模的模式 141
7.4.1 发现分析模式 142
7.4.2 需求模式举例:执行器-传感器 142
7.5 Web应用系统的需求建模 145
7.5.1 如何分析 145
7.5.2 需求建模的输入 146
7.5.3 需求建模的输出 146
7.5.4 Web应用系统内容建模 147
7.5.5 Web应用系统的交互模型 148
7.5.6 Web应用系统的功能模型 148
7.5.7 Web应用系统的配置模型 149
7.5.8 导航建模 150
7.6 小结 150
习题与思考题 151
推荐读物与阅读信息 151
第8章 设计概念 152
8.1 软件工程中的设计 153
8.2 设计过程 155
8.2.1 软件质量指导原则和属性 155
8.2.2 软件设计的演化 156
8.3 设计概念 157
8.3.1 抽象 158
8.3.2 体系结构 158
8.3.3 模式 159
8.3.4 关注点分离 159
8.3.5 模块化 159
8.3.6 信息隐蔽 160
8.3.7 功能独立 160
8.3.8 求精 161
8.3.9 方面 161
8.3.10 重构 162
8.3.11 面向对象的设计概念 163
8.3.12 设计类 163
8.4 设计模型 165
8.4.1 数据设计元素 166
8.4.2 体系结构设计元素 166
8.4.3 接口设计元素 166
8.4.4 构件级设计元素 168
8.4.5 部署级设计元素 168
8.5 小结 169
习题与思考题 169
推荐读物与阅读信息 170
第9章 体系结构设计 172
9.1 软件体系结构 172
9.1.1 什么是体系结构 173
9.1.2 体系结构为什么重要 174
9.1.3 体系结构描述 174
9.1.4 体系结构决策 175
9.2 体系结构类型 175
9.3 体系结构风格 177
9.3.1 体系结构风格的简单分类 178
9.3.2 体系结构模式 180
9.3.3 组织和求精 181
9.4 体系结构设计 181
9.4.1 系统环境的表示 181
9.4.2 定义原型 182
9.4.3 将体系结构精化为构件 183
9.4.4 描述系统实例 184
9.5 评估可选的体系结构设计 185
9.5.1 体系结构权衡分析方法 185
9.5.2 体系结构复杂性 187
9.5.3 体系结构描述语言 187
9.6 使用数据流进行体系结构映射 188
9.6.1 变换映射 188
9.6.2 精化体系结构设计 193
9.7 小结 194
习题与思考题 194
推荐读物与阅读信息 195
第10章 构件级设计 196
10.1 什么是构件 197
10.1.1 面向对象的观点 197
10.1.2 传统观点 198
10.1.3 过程相关的观点 199
10.2 设计基于类的构件 200
10.2.1 基本设计原则 200
10.2.2 构件级设计指导方针 203
10.2.3 内聚性 203
10.2.4 耦合性 205
10.3 实施构件级设计 206
10.4 WebApp的构件级设计 210
10.4.1 构件级内容设计 210
10.4.2 构件级功能设计 211
10.5 设计传统构件 211
10.5.1 图形化设计表示 211
10.5.2 表格式设计表示 212
10.5.3 程序设计语言 213
10.6 基于构件的开发 214
10.6.1 领域工程 215
10.6.2 构件合格性检验、适应性修改与组合 215
10.6.3 复用的分析与设计 217
10.6.4 构件分类与检索 217
10.7 小结 218
习题与思考题 219
推荐读物与阅读信息 220
第11章 用户界面设计 221
11.1 黄金规则 222
11.1.1 用户操纵控制 222
11.1.2 减轻用户记忆负担 223
11.1.3 保持界面一致 224
11.2 用户界面的分析与设计 225
11.2.1 用户界面分析和设计模型 225
11.2.2 过程 226
11.3 界面分析 227
11.3.1 用户分析 227
11.3.2 任务分析和建模 228
11.3.3 显示内容分析 232
11.3.4 工作环境分析 232
11.4 界面设计步骤 233
11.4.1 应用界面设计步骤 233
11.4.2 用户界面设计模式 235
11.4.3 设计问题 235
11.5 WebApp界面设计 237
11.5.1 界面设计原则与指导方针 238
11.5.2 WebApp的界面设计工作流 241
11.6 设计评估 242
11.7 小结 243
习题与思考题 244
推荐读物与阅读信息 245
第12章 基于模式的设计 246
12.1 设计模式 247
12.1.1 模式的种类 248
12.1.2 框架 249
12.1.3 描述模式 250
12.1.4 模式语言和存储库 251
12.2 基于模式的软件设计 251
12.2.1 不同环境下基于模式
的设计 252
12.2.2 在模式中思考 252
12.2.3 设计任务 253
12.2.4 建立模式组织表 254
12.2.5 常见设计错误 255
12.3 体系结构模式 255
12.4 构件级设计模式 257
12.5 用户界面设计模式 259
12.6 WebApp设计模式 261
12.6.1 设计焦点 261
12.6.2 设计粒度 261
12.7 小结 262
习题与思考题 263
推荐读物与阅读信息 263
第13章 WebApp设计 265
13.1 WebApp设计质量 266
13.2 设计目标 268
13.3 WebApp设计金字塔 269
13.4 WebApp界面设计 269
13.5 美学设计 270
13.5.1 布局问题 270
13.5.2 美术设计问题 271
13.6 内容设计 271
13.6.1 内容对象 271
13.6.2 内容设计问题 272
13.7 体系结构设计 272
13.7.1 内容体系结构 273
13.7.2 WebApp体系结构 274
13.8 导航设计 275
13.8.1 导航语义 275
13.8.2 导航语法 276
13.9 构件级设计 277
13.10 面向对象的超媒体设计方法 277
13.10.1 OOHDM的概念设计 278
13.10.2 OOHDM的导航设计 279
13.10.3 抽象界面设计与实现 279
13.11 小结 279
习题与思考题 280
推荐读物与阅读信息 280
第三部分 质量管理
第14章 质量概念 284
14.1 什么是质量 285
14.2 软件质量 285
14.2.1 Garvin的质量维度 286
14.2.2 McCall的质量因素 287
14.2.3 ISO 9126质量因素 287
14.2.4 定向质量因素 288
14.2.5 过渡到量化观点 289
14.3 软件质量困境 289
14.3.1 “足够好”的软件 289
14.3.2 质量成本 290
14.3.3 风险 291
14.3.4 疏忽和责任 292
14.3.5 质量和安全 292
14.3.6 管理活动的影响 292
14.4 实现软件质量 293
14.4.1 软件工程方法 293
14.4.2 项目管理技术 293
14.4.3 质量控制 294
14.4.4 质量保证 294
14.5 小结 294
习题与思考题 294
推荐读物与阅读信息 295
第15章 评审技术 296
15.1 软件缺陷对成本的影响 297
15.2 缺陷放大和消除 297
15.3 评审度量及其应用 299
15.3.1 分析度量数据 299
15.3.2 评审的成本效益 300
15.4 评审:正式程度 301
15.5 非正式评审 301
15.6 正式技术评审 303
15.6.1 评审会议 303
15.6.2 评审报告和记录保存 304
15.6.3 评审指导原则 304
15.6.4 样本驱动评审 305
15.7 小结 306
习题与思考题 306
推荐读物与阅读信息 307
第16章 软件质量保证 308
16.1 背景问题 309
16.2 软件质量保证的要素 309
16.3 软件质量保证的任务、目标和度量 311
16.3.1 软件质量保证任务 311
16.3.2 目标、属性和度量 311
16.4 软件质量保证的形式化方法 312
16.5 统计软件质量保证 313
16.5.1 一个普通的例子 313
16.5.2 软件工程中的六西格玛 314
16.6 软件可靠性 314
16.6.1 可靠性和可用性的测量 315
16.6.2 软件安全 316
16.7 ISO 9000质量标准 316
16.8 SQA计划 317
16.9 小结 318
习题与思考题 318
推荐读物与阅读信息 319
第17章 软件测试策略 320
17.1 软件测试的策略性方法 321
17.1.1 验证与确认 321
17.1.2 软件测试的组织 322
17.1.3 软件测试策略—宏观 322
17.1.4 测试完成的标准 324
17.2 策略问题 324
17.3 传统软件的测试策略 325
17.3.1 单元测试 325
17.3.2 集成测试 327
17.4 面向对象软件的测试策略 331
17.4.1 面向对象环境中的单元测试 331
17.4.2 面向对象环境中的集成测试 332
17.5 WebApp的测试策略 332
17.6 确认测试 333
17.6.1 确认测试准则 333
17.6.2 配置评审 333
17.6.3 a测试与b测试 333
17.7 系统测试 334
17.7.1 恢复测试 335
17.7.2 安全测试 335
17.7.3 压力测试 335
17.7.4 性能测试 336
17.7.5 部署测试 336
17.8 调试技巧 337
17.8.1 调试过程 337
17.8.2 心理因素 338
17.8.3 调试策略 338
17.8.4 纠正错误 340
17.9 小结 340
习题与思考题 340
推荐读物与阅读信息 341
第18章 测试传统的应用系统 343
18.1 软件测试基础 344
18.2 测试的内部视角和外部视角 345
18.3 白盒测试 346
18.4 基本路径测试 346
18.4.1 流图表示 346
18.4.2 独立程序路径 347
18.4.3 导出测试用例 349
18.4.4 图矩阵 350
18.5 控制结构测试 351
18.5.1 条件测试 351
18.5.2 数据流测试 351
18.5.3 循环测试 352
18.6 黑盒测试 353
18.6.1 基于图的测试方法 353
18.6.2 等价类划分 354
18.6.3 边界值分析 355
18.6.4 正交数组测试 355
18.7 基于模型的测试 357
18.8 针对特定环境、体系结构和应用系统的测试 358
18.8.1 图形用户界面测试 358
18.8.2 客户/服务器体系结构测试 358
18.8.3 文档测试和帮助设施测试 359
18.8.4 实时系统的测试 360
18.9 软件测试模式 361
18.10 小结 362
习题与思考题 362
推荐读物与阅读信息 363
第19章 测试面向对象的应用系统 364
19.1 扩展测试的视野 364
19.2 测试OOA和OOD模型 365
19.2.1 OOA和OOD模型的正确性 365
19.2.2 面向对象模型的一致性 366
19.3 面向对象测试策略 367
19.3.1 面向对象环境中的单元测试 367
19.3.2 面向对象环境中的集成测试 368
19.3.3 面向对象环境中的确认测试 368
19.4 面向对象测试方法 368
19.4.1 面向对象概念的测试用例设计的含义 369
19.4.2 传统测试用例设计方法的可应用性 369
19.4.3 基于故障的测试 369
19.4.4 测试用例与类层次 370
19.4.5 基于场景的测试设计 370
19.4.6 表层结构和深层结构的测试 371
19.5 类级可应用的测试方法 372
19.5.1 面向对象类的随机测试 372
19.5.2 类级的划分测试 373
19.6 类间测试用例设计 373
19.6.1 多类测试 374
19.6.2 从行为模型导出的测试 374
19.7 小结 375
习题与思考题 376
推荐读物与阅读信息 376
第20章 测试Web应用系统 377
20.1 WebApp的测试概念 377
20.1.1 质量维度 378
20.1.2 WebApp环境中的错误 378
20.1.3 测试策略 379
20.1.4 测试策划 379
20.2 测试过程概述 380
20.3 内容测试 380
20.3.1 内容测试的目标 381
20.3.2 数据库测试 381
20.4 用户界面测试 383
20.4.1 界面测试策略 383
20.4.2 测试界面机制 383
20.4.3 测试界面语义 385
20.4.4 可用性测试 385
20.4.5 兼容性测试 386
20.5 构件级测试 387
20.6 导航测试 388
20.6.1 测试导航语法 388
20.6.2 测试导航语义 389
20.7 配置测试 390
20.7.1 服务器端问题 390
20.7.2 客户端问题 390
20.8 安全性测试 391
20.9 性能测试 392
20.9.1 性能测试的目标 392
20.9.2 负载测试 393
20.9.3 压力测试 393
20.10 小结 395
习题与思考题 396
推荐读物与阅读信息 396
第21章 形式化建模与验证 398
21.1 净室策略 399
21.2 功能规格说明 400
21.2.1 黑盒规格说明 401
21.2.2 状态盒规格说明 401
21.2.3 清晰盒规格说明 402
21.3 净室设计 402
21.3.1 设计求精 402
21.3.2 设计验证 403
21.4 净室测试 404
21.4.1 统计使用测试 404
21.4.2 认证 405
21.5 形式化方法的概念 406
21.6 应用数学表示法描述形式化规格说明 408
21.7 形式化规格说明语言 409
21.7.1 对象约束语言 409
21.7.2 Z规格说明语言 412
21.8 小结 414
习题与思考题 415
推荐读物与阅读信息 415
第22章 软件配置管理 417
22.1 软件配置管理概述 418
22.1.1 SCM场景 418
22.1.2 配置管理系统元素 419
22.1.3 基线 419
22.1.4 软件配置项 420
22.2 SCM中心存储库 421
22.2.1 中心存储库的作用 421
22.2.2 一般特征和内容 421
22.2.3 SCM特征 422
22.3 SCM过程 423
22.3.1 软件配置中的对象标识 424
22.3.2 版本控制 424
22.3.3 变更控制 425
22.3.4 配置审核 428
22.3.5 状态报告 428
22.4 WebApp配置管理 429
22.4.1 WebApp配置管理的主要问题 429
22.4.2 WebApp的配置对象 430
22.4.3 内容管理 430
22.4.4 变更管理 432
22.4.5 版本控制 434
22.4.6 审核和报告 435
22.5 小结 436
习题与思考题 436
推荐读物与阅读信息 437
第23章 产品度量 438
23.1 产品度量框架 439
23.1.1 测度、度量和指标 439
23.1.2 产品度量的挑战 439
23.1.3 测量原则 440
23.1.4 面向目标的软件测量 440
23.1.5 有效软件度量的属性 441
23.2 需求模型的度量 442
23.2.1 基于功能的度量 443
23.2.2 规格说明质量的度量 445
23.3 设计模型的度量 446
23.3.1 体系结构设计度量 446
23.3.2 面向对象设计度量 447
23.3.3 面向类的度量—CK度量集 448
23.3.4 面向类的度量—MOOD度量集 450
23.3.5 Lorenz与Kidd提出的面向对象度量 451
23.3.6 构件级设计度量 451
23.3.7 面向操作的度量 453
23.3.8 用户界面设计度量 453
23.4 WebApp的设计度量 453
23.5 源代码度量 455
23.6 测试的度量 456
23.6.1 用于测试的Halstead度量 456
23.6.2 面向对象测试的度量 457
23.7 维护的度量 457
23.8 小结 458
习题与思考题 459
推荐读物与阅读信息 459
第四部分 软件项目管理
第24章 项目管理概念 462
24.1 管理涉及的范围 463
24.1.1 人员 463
24.1.2 产品 463
24.1.3 过程 463
24.1.4 项目 464
24.2 人员 464
24.2.1 利益相关者 464
24.2.2 团队负责人 464
24.2.3 软件团队 465
24.2.4 敏捷团队 467
24.2.5 协调与沟通问题 468
24.3 产品 469
24.3.1 软件范围 469
24.3.2 问题分解 469
24.4 过程 470
24.4.1 合并产品和过程 470
24.4.2 过程分解 470
24.5 项目 471
24.6 W5HH原则 472
24.7 关键实践 473
24.8 小结 474
习题与思考题 474
推荐读物与阅读信息 474
第25章 过程度量和项目度量 477
25.1 过程领域和项目领域中的度量 478
25.1.1 过程度量和软件过程改进 478
25.1.2 项目度量 479
25.2 软件测量 480
25.2.1 面向规模的度量 481
25.2.2 面向功能的度量 482
25.2.3 调和代码行度量和功能点度量 482
25.2.4 面向对象的度量 484
25.2.5 面向用例的度量 485
25.2.6 Web应用项目度量 485
25.3 软件质量度量 486
25.3.1 测量质量 487
25.3.2 缺陷排除效率 488
25.4 在软件过程中集成度量 489
25.4.1 支持软件度量的论点 489
25.4.2 建立基线 490
25.4.3 度量收集、计算和评估 490
25.5 小型组织的度量 490
25.6 制定软件度量大纲 491
25.7 小结 493
习题与思考题 493
推荐读物与阅读信息 494
第26章 软件项目估算 496
26.1 对估算的观察 497
26.2 项目策划过程 498
26.3 软件范围和可行性 498
26.4 资源 499
26.4.1 人力资源 499
26.4.2 可复用软件资源 500
26.4.3 环境资源 500
26.5 软件项目估算 500
26.6 分解技术 501
26.6.1 软件规模估算 501
26.6.2 基于问题的估算 502
26.6.3 基于LOC估算的实例 503
26.6.4 基于FP估算的实例 505
26.6.5 基于过程的估算 505
26.6.6 基于过程估算的实例 506
26.6.7 基于用例的估算 507
26.6.8 基于用例的估算实例 508
26.6.9 协调不同的估算方法 508
26.7 经验估算模型 509
26.7.1 估算模型的结构 509
26.7.2 COCOMOⅡ模型 510
26.7.3 软件方程 511
26.8 面向对象项目的估算 512
26.9 特殊的估算技术 512
26.9.1 敏捷开发的估算 512
26.9.2 Web应用项目的估算 513
26.10 自行开发或购买的决策 514
26.10.1 创建决策树 514
26.10.2 外包 515
26.11 小结 517
习题与思考题 517
推荐读物与阅读信息 518
第27章 项目进度安排 519
27.1 基本概念 520
27.2 项目进度的安排 521
27.2.1 基本原则 522
27.2.2 人员与工作量之间的关系 522
27.2.3 工作量分配 524
27.3 为软件项目定义任务集 524
27.3.1 任务集举例 525
27.3.2 软件工程活动求精 525
27.4 定义任务网络 526
27.5 进度安排 527
27.5.1 时序图 528
27.5.2 跟踪进度 529
27.5.3 跟踪OO项目的进展 530
27.5.4 WebApp项目进度安排 530
27.6 挣值分析 533
27.7 小结 534
习题与思考题 534
推荐读物与阅读信息 535
第28章 风险管理 537
28.1 被动风险策略和主动风险策略 538
28.2 软件风险 538
28.3 风险识别 539
28.3.1 评估整体项目风险 540
28.3.2 风险因素和驱动因子 540
28.4 风险预测 541
28.4.1 建立风险表 542
28.4.2 评估风险影响 543
28.5 风险求精 545
28.6 风险缓解、监测和管理 545
28.7 RMMM计划 546
28.8 小结 548
习题与思考题 548
推荐读物与阅读信息 549
第29章 维护与再工程 550
29.1 软件维护 551
29.2 软件可支持性 552
29.3 再工程 552
29.4 业务过程再工程 553
29.4.1 业务过程 553
29.4.2 BPR模型 554
29.5 软件再工程 555
29.5.1 软件再工程过程模型 555
29.5.2 软件再工程活动 556
29.6 逆向工程 557
29.6.1 理解数据的逆向工程 558
29.6.2 理解处理的逆向工程 559
29.6.3 用户界面的逆向工程 559
29.7 重构 560
29.7.1 代码重构 560
29.7.2 数据重构 560
29.8 正向工程 561
29.8.1 客户/服务器体系结构的正向工程 562
29.8.2 面向对象体系结构的正向工程 563
29.9 再工程经济学 563
29.10 小结 564
习题与思考题 564
推荐读物与阅读信息 565
第五部分 软件工程高级课题
第30章 软件过程改进 568
30.1 什么是SPI 569
30.1.1 SPI的方法 569
30.1.2 成熟度模型 570
30.1.3 SPI适合每个人吗 571
30.2 SPI过程 571
30.2.1 评估和差距分析 572
30.2.2 教育和培训 573
30.2.3 选择和合理性判定 573
30.2.4 设置/迁移 574
30.2.5 评价 574
30.2.6 SPI的风险管理 574
30.2.7 关键的成功因素 575
30.3 CMMI 576
30.4 人员CMM 579
30.5 其他SPI框架 580
30.6 SPI的投资收益率 581
30.7 SPI趋势 582
30.8 小结 582
习题与思考题 583
推荐读物与阅读信息 583
第31章 软件工程的新趋势 584
31.1 技术演变 585
31.2 观察软件工程的发展趋势 586
31.3 识别“软趋势” 587
31.3.1 管理复杂性 588
31.3.2 开放世界的软件 589
31.3.3 意外需求 589
31.3.4 人才结构 590
31.3.5 软件构造块 590
31.3.6 对“价值”认识的转变 591
31.3.7 开源 591
31.4 技术方向 592
31.4.1 过程趋势 592
31.4.2 巨大的挑战 593
31.4.3 协同开发 594
31.4.4 需求工程 595
31.4.5 模型驱动的软件开发 595
31.4.6 后现代设计 596
31.4.7 测试驱动的开发 596
31.5 相关工具的趋势 597
31.5.1 顺应软趋势的工具 598
31.5.2 涉及技术趋势的工具 599
31.6 小结 599
习题与思考题 599
推荐读物与阅读信息 600
第32章 结束语 601
32.1 再论软件的重要性 601
32.2 人员及其构造系统的方式 602
32.3 表示信息的新模式 602
32.4 远景 603
32.5 软件工程师的责任 604
32.6 结束语 605
附录1 UML简介 607
附录2 面向对象概念 620
参考文献 625
......(更多)
理解4P-人员(people)、产品(product)、过程(process)、项目(project)。
Whittaker的书中包括了很重可以用于测试用例的设计指南的例子.其中所建议的一些最通用的指南包括: - 选择迫使系统生成所有错误消息的书输出. - 设计导致输入缓冲溢出的输入 - 多次同样的输入或输入序列 - 驱使生成非法的输出 - 驱使计算结果太大或者太小
可依赖性编程指南 1. 限制程序中信息的可见性 2. 检查所有输入的有效性 3. 为所有的异常提供处理程序 4. 尽可能使用不容易出错的结构 5. 提供重启功能 6. 检查数组边界 7. 调用外部构建时加上超时处理功能 8. 为每个表示现实世界的值的常量命名
......(更多)