第1篇 软件项目评估介绍
第1章 介绍 3
1.1 软件项目评估工具的
工作原理 3
1.1.1 软件项目评估工具 3
1.1.2 软件项目评估的步骤 6
1.2 关于遗漏评估活动的警告 11
1.3 软件项目评估和其他
开发活动 12
参考文献 13
第2章 软件项目评估的起源 17
2.1 软件项目评估的早期历史 18
2.2 软件项目评估中功能度量的
使用及扩展 20
参考文献 23
第3章 软件项目评估的6种方法 25
3.1 手工软件评估方法简介 25
3.2 自动软件评估方法简介 27
3.3 大型软件项目中手工评估和
自动评估的比较 35
参考文献 36
第4章 软件项目评估工具以及
项目的成功率和失败率 39
4.1 项目成功和失败的差异 39
4.2 影响项目结果的因素 41
参考文献 44
第5章 软件项目评估错误的来源 45
5.1 判断软件项目评估的准确度 48
5.2 软件评估错误的种类 50
5.2.1 度量错误 50
5.2.2 规模错误 52
5.2.3 执行官和客户错误 53
5.2.4 规模评估错误 53
5.2.5 活动选择错误 53
5.2.6 分配范围错误 55
5.2.7 生产率错误 56
5.2.8 蔓延的用户需求 58
5.2.9 关键路径错误 59
5.2.10 人员筹备错误 60
5.2.11 技术调整错误 60
5.2.12 特殊情况 61
5.3 评估错误的影响范围 61
参考文献 63
第2篇 初步评估方法
第6章 手工软件评估方法 67
6.1 基于LOC度量的经验法则 67
6.2 基于比率和百分比的
经验法则 70
6.3 基于功能点度量的经验法则 73
6.3.1 关于功能点 73
6.3.2 功能点规模评估的
经验法则 75
6.3.3 进度、资源、成本的
经验法则 86
6.3.4 基于活动的成本分析的
经验法则 89
6.4 总结和结论 94
参考文献 95
第7章 源于敏捷项目和新环境的
手工评估方法 97
7.1 用于经验法则的度量 99
7.2 手工软件项目评估的
经验法则 103
7.2.1 敏捷软件开发 103
7.2.2 基于组件的开发 105
7.2.3 动态系统开发方法
(DSDM) 106
7.2.4 企业资源计划(ERP)
部署 108
7.2.5 极限编程(XP) 111
7.2.6 国际外包 113
7.2.7 面向对象(OO)开发 115
7.2.8 能力成熟度模型
(CMM) 117
7.3 仅有部分经验法则的
软件方法 121
7.3.1 净室开发 121
7.3.2 水晶开发方法 121
7.3.3 特征驱动开发(FDD) 122
7.3.4 ISO 9000—9004质量标准 122
7.3.5 迭代开发或增量开发 122
7.3.6 基于模式的软件开发 124
7.3.7 质量功能部署(QFD) 125
7.3.8 快速应用开发(RAD) 126
7.3.9 Scrum 126
7.3.10 软件六西格玛 128
7.3.11 螺旋软件开发 128
7.3.12 统一建模语言(UML) 129
7.3.13 软件需求用例 130
7.3.14 基于Web的软件 131
7.4 总结和结论 132
参考文献 133
第8章 基于最少数据的自动评估 135
8.1 阶段1:记录行政和
项目信息 135
8.1.1 软件分类法:定义项目的
本质、范围、种类和类型 137
8.1.2 工作模式、人员薪水和
间接费率 142
8.2 阶段2:主要交付产品的
初步规模评估 144
8.2.1 用户提供的软件
项目规模评估 145
8.2.2 自动近似规模评估法 149
8.2.3 蔓延需求影响的规模评估 154
8.3 阶段3:进行初步项目评估 157
8.4 总结和结论 160
参考文献 161
第3篇 软件交付产品规模评估
第9章 软件交付产品规模评估 165
9.1 主要交付产品规模评估的
基本原理 165
9.2 目前使用的规模评估方法 166
9.2.1 利用历史数据进行
模式匹配 167
9.2.2 利用历史数据预计
需求的增长 168
9.2.3 利用数学或统计方法,依据
不完整的需求评估
软件规模 168
9.2.4 增加偶然因子的
随机经验法则 169
9.2.5 在特定的时间点固化需求 170
9.2.6 仅对整个应用程序的子集
进行的正式项目评估 170
9.3 功能点变体 171
9.4 已有的功能点数据量 177
9.5 软件复杂度分析 178
9.6 包含可重用组件的
软件规模评估 186
9.7 软件规模评估度量的
基本形式简介 188
9.8 源代码规模评估 193
9.9 OO软件项目规模评估 197
9.10 基于文本的纸质
文档规模评估 199
9.11 图表规模评估 204
9.12 Bug或缺陷规模评估 206
9.13 测试用例规模评估 211
9.14 软件工作产品规模
评估的盲区 213
9.15 软件规模评估的优点和缺点 216
9.16 总结和结论 218
参考文献 218
第4篇 项目评估调整因素
第10章 薪酬和工作模式调整 223
10.1 手工和自动调整方法 223
10.2 常规软件项目评估中的
特例 227
10.3 确定软件项目评估的
初始条件 228
10.4 间接费率的差异 230
10.5 工作习惯和无偿
加班的差异 232
参考文献 236
第11章 活动模式调整因素 237
11.1 软件项目的25项
常见活动 237
参考文献 242
第12章 软件技术调整因素 245
12.1 调整因素和宏观评估工具 245
12.2 影响软件开发生产力的
因素 249
12.3 影响软件维护生产力的
因素 251
12.4 正面因素和负面因素的
模式 254
12.5 调整因素和微观评估工具 255
12.5.1 SPR获得调整数据的
示例 256
12.5.2 微观调整因素 258
参考文献 267
第5篇 基于活动的
软件项目评估
第13章 软件需求评估 271
13.1 功能点和软件需求 276
13.1.1 联合应用开发(JAD) 277
13.1.2 敏捷开发 278
13.1.3 原型 278
13.1.4 用例 278
13.1.5 变更控制委员会 278
13.1.6 质量功能配置(QFD) 279
13.1.7 每个功能点的滑动成本 279
13.2 软件需求的内容 280
13.2.1 软件需求的主要内容 280
13.2.2 软件需求的其他内容 281
13.3 正面和负面需求调整因素 282
13.3.1 正面需求因素 282
13.3.2 负面需求因素 282
13.4 不同软件的不同需求 284
13.4.1 需求和最终用户软件 284
13.4.2 需求和敏捷应用程序 284
13.4.3 需求和管理信息系统
(MIS)项目 284
13.4.4 需求和外包项目 285
13.4.5 需求和系统软件 285
13.4.6 需求和商品化软件 286
13.4.7 需求和军用软件项目 286
13.4.8 需求和基于Web的
应用程序 286
13.5 评价需求因素的
组合情况 287
参考资料 289
第14章 软件原型评估 291
14.1 可抛弃原型 293
14.2 时间盒原型 293
14.3 演化原型 294
14.4 可抛弃原型的评估
默认值 295
14.5 影响软件原型的正面和
负面因素 298
参考资料 300
第15章 软件规格说明和设计评估 303
15.1 正面设计调整因素 306
15.2 负面设计调整因素 307
参考资料 310
第16章 设计审查评估 313
16.1 与审查有关的文献 313
16.2 审查过程 314
16.3 审查的价值 316
16.4 影响设计审查的
调整因素 320
参考资料 322
第17章 编程或编码评估 323
17.1 可重用性对编程的影响 328
17.2 经验对编程的影响 330
17.3 Bug或错误对编程的影响 330
17.4 无偿加班对编程的影响 332
17.5 需求蔓延对编程的影响 333
17.6 代码结构和复杂度对
编程的影响 334
17.7 计划外干扰对编程的影响 335
17.8 应用程序规模对
编程的影响 335
17.9 办公空间和人体工效
因素对编程的影响 336
17.10 工具对编程的影响 337
17.11 编程语言对编程的影响 338
17.12 进度压力对编程的影响 341
参考资料 341
第18章 代码审查评估 343
18.1 代码审查的文献 343
18.2 代码审查的有效性 343
18.3 代码审查评估的
一些考虑因素 346
参考资料 349
第19章 软件配置控制和
变更管理评估 351
19.1 变更管理的文献 352
19.2 软件变更的测量 354
19.3 用户需求的变更 357
19.4 规格说明和设计的变更 358
19.5 与Bug或缺陷报告
有关的变更 358
19.6 总结和结论 359
参考资料 360
第20章 软件测试评估 363
20.1 通用软件测试 368
20.1.1 子程序测试 368
20.1.2 单元测试 368
20.1.3 新功能测试 369
20.1.4 回归测试 369
20.1.5 集成测试 369
20.1.6 整个应用程序的
系统测试 370
20.2 专用软件测试 370
20.2.1 压力或能力测试 370
20.2.2 性能测试 371
20.2.3 病毒及流氓插件
防护测试 371
20.2.4 安全性测试 371
20.2.5 平台测试 371
20.2.6 第三方测试 372
20.3 用户或客户参与的测试 372
20.3.1 可用性测试 372
20.3.2 现场(beta)测试 373
20.3.3 试验室测试 373
20.3.4 客户验收测试 373
20.3.5 净室统计测试 373
20.4 测试阶段的数量 374
20.5 不同行业、不同软件
类型的测试模式差异 375
20.5.1 最终用户软件 375
20.5.2 Web软件 375
20.5.3 MIS软件 375
20.5.4 外包软件 375
20.5.5 商品化软件 375
20.5.6 系统软件 376
20.5.7 军用软件 376
20.6 不同规模的应用程序的
测试模式差异 377
20.7 受到质量指控的软件的
测试阶段 378
20.8 用功能点评估测试用例数 378
20.9 用功能点评估测试
人员的数量 380
20.10 测试和缺陷清除率 381
20.11 用功能点评估测试
工作量和成本 382
20.12 开发人员或专业测
试人员进行的测试 384
20.13 测试用例覆盖率 386
20.14 影响测试性能的因素 386
参考资料 387
第21章 用户和项目文档评估 389
21.1 评估工具和软件文档 390
21.2 确定软件文档类型的
数量和规模 391
21.3 落后的项目和领先的项目
使用的软件文档化工具 396
参考资料 397
第22章 软件项目管理评估 399
22.1 软件项目管理中的角色 401
22.2 同时参与技术工作的
项目经理 403
22.3 软硬件混合项目的
项目管理 403
22.4 项目管理和外部进度压力 403
22.5 项目管理工具 404
22.6 有多名经理的大型系统的
项目管理 406
22.7 时间分割或同时管理
几个项目 407
22.8 控制范围或每名经理
管理的人员数量 408
22.9 管理多个专业组 409
22.10 是否设立大型系统
项目办公室 411
22.11 软件项目经理的
经验水平 411
22.12 项目经理选择的
质量控制方法 412
22.13 项目经理和度量 412
22.14 项目管理总结 413
参考资料 413
第6篇 软件维护和改进的评估
第23章 软件维护和改进的评估 417
23.1 软件维护和改进活动的
标称默认值 420
23.2 小型软件维护项目的
度量和测量问题 424
23.3 软件维护的最佳和
最差实践 425
23.4 软件的熵和总体拥有成本 428
23.5 软件维护和改进活动 429
23.5.1 安装来自软件开发商的
新版本和补丁 430
23.5.2 主要改进 430
23.5.3 次要改进 431
23.5.4 维护(缺陷修复) 432
23.5.5 保修修复 435
23.5.6 客户支持 435
23.5.7 易错模块的经济影响 436
23.5.8 强制变更 437
23.5.9 复杂度分析 437
23.5.10 代码重构和优化 438
23.5.11 性能优化 439
23.5.12 跨平台移植 440
23.5.13 转换为新的体系结构 440
23.5.14 逆向工程 440
23.5.15 再工程 441
23.5.16 死代码消除 441
23.5.17 休眠应用程序的消除 442
23.5.18 国际化 442
23.5.19 批量更新项目 442
23.5.20 应用的退役或撤销 443
23.5.21 现场服务 443
23.6 维护工作的组合与
并发进行 444
参考文献 447
第24章 软件项目评估研究的问题 449
24.1 度量转换 449
24.2 基于用户需求的
自动规模评估 451
24.3 敏捷项目、OO项目和Web
项目的基于活动的成本 452
24.4 软件应用程序的
复杂度分析 454
24.5 软件应用程序的价值分析 455
24.6 风险分析和软件项目评估 456
24.7 软件项目评估中的
专业人员 458
24.8 重用分析和软件项目评估 459
24.9 过程改进评估 463
24.10 方法分析和软件项目评估 466
24.11 关于软件评估研究的
总结和结论 468
附录 中英文词汇对照表 469