软件工程:实践者的研究方法(原书第7版)自近30年前第1版问世以来,在软件工程界始终发挥着巨大而深远的影响,其权威性是公认的、无可置疑的。第7版绝不是前一版的简单更新,它包含了很多新的内容,而且调整了全书的结构,以改进教学顺序,同时更加强调一些新的、重要的软件工程过程和软件工程实践知识。全书分软件过程、建模、质量管理、软件项目管理和软件工程高级课题五个部分,系统地论述了软件工程领域最新的基础知识,包括新的概念、原则、技术、方法和工具,同时提供了大量供读者进一步研究探索的参考信息。
软件工程:实践者的研究方法(原书第7版)适合作为本科生和研究生的软件工程及相关课程的教材,新版中五个部分的划分有利于教师根据学时和教学要求安排教学,同时也适合作为软件专业人员的工作指南,即使是资深专业人员,阅读本书也能获益匪浅。
目录
- 出版者的话
- 译者序
- 前言
- 作者简介
- 第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