更新时间:2023-12-25 19:26
《软件估算》是2007年12月电子工业出版社出版的图书,作者是(美)麦克康内尔(SteveMcConnell),译者是宋锐。
在《软件估算——“黑匣子”揭秘》一书中,著名的软件开发书籍的作者Steve McConnell揭开了围绕在软件估算周围的层层迷雾。作者在深入浅出地介绍了与软件估算有关的主要概念之后,深入、全面地介绍了与软件估算有关的多种估算方法。
本书的主要内容包括:估算与计划和项目控制,以及估算与目标和承诺之间的关系;不确定性锥与估算中的误差来源以及影响估算的各种因素;先计数、再计算,无法可想时才依靠判断的基本估算原则;用于估算软件项目的三个重要部分——规模、工作量和进度估算的基本方法;与规模、工作量和进度估算有关的特殊问题;估算的概率论观点以及如何采用适当的方式来表达估算结果中的不确定性;如何进行与估算有关的沟通,从而使技术人员和非技术人员达成共识。
本书主要面向软件开发项目中要进行估算的开发人员和技术管理人员。但本书所涉及的与软件估算有关的背景知识,以及有关估算谈判和表达方式的讨论,对于非技术人员出身的主管和项目的其他有关人员同样大有裨益。
Steve Mc Connell是Construx Software公司的首席软件工程师,负责监督该公司的软件工程实践。Steve是软件工程知识体(SWEBOK,Software Engineering Body of Knowledge)项目的构造知识领域(Construction Knowledge Area)的负责人。Steve在微软、波音以及西雅图地区的其他公司也从事过软件项目方面的工作。他是Construx Estimate和SPC Estimate Professional项目开发的负责人,后一个项目获得过Software Development杂志的生产力大奖(Productivity Award)。
Steve是Rapid Development(1996)、Software Project Survival Guide(1998)、Professional Software Development(2004)和Code Complete,Second Edition(2004,《代码大全,第2版》)等书的作者。他的著作曾两次获得过Software Development杂志的年度卓越软件开发书籍震撼大奖(JoltProduct Excellence Award)。Steve还是SPC Estimate Professional的开发负责人,该产品获得了软件开发生产力大奖(Software Development Productivity Award)。1998年,Software Development杂志的读者们把Steve选为软件行业最有影响力的三个人之一,另外两人分别是Bill Gates(微软公司的创办人)和Linus Torvalds(Linux的作者)。
Steve在惠特曼学院获得了学士学位,在西雅图大学获得了软件工程硕士学位。他现在居住在华盛顿州的贝尔维尤市。
第一部分 估算的关键概念
第1章 “估算”的含义 3
1.1 估算、目标和承诺 3
1.2 估算和计划的关系 4
1.3 有关估算、目标和承诺的
1.3 沟通 5
1.4 以概率的方式表示估算
1.4 结果 6
1.5 对“良好”估算的常见
1.4 定义 9
1.6 估算与项目控制 11
1.7 估算的真正目的 13
1.8 对“良好的估算”的初步
1.8 定义 14
1.9 其他资源 14
第2章 你的估算水平如何 15
2.1 简单的估算测验 15
2.2 关于测验结果的讨论 16
2.2.1 “90%置信度”的置信度 16
2.2.2 估算的范围应该取多宽? 18
2.2.3 使用较窄范围的压力来自
2.2.3 何方? 18
2.2.4 该测验对真实软件估算的
2.2.4 代表性 19
第3章 准确估算的价值 21
3.1 高估更好还是低估更好 21
3.1.1 反对高估的观点 21
3.1.2 反对低估的观点 22
3.1.3 权衡各种观点 23
3.2 软件行业估算情况的详细
3.2 记录 24
3.2.1 项目会延误多少? 26
3.2.2 一个公司的经历 26
3.2.3 软件估算的系统性偏差 27
3.3 准确估算带来的好处 27
3.4 可预测性与项目其他属性
3.4 的价值比较 29
3.5 常见估算方法的问题 30
3.6 其他资源 31
第4章 估算误差的来源 33
4.1 估算不确定性的来源 34
4.2 不确定性锥 35
4.3 混乱的开发过程 41
4.2.1 是否可以突破不确定性锥
4.2.1 的限制? 37
4.2.2 锥形不会自行缩小 38
4.2.3 在软件估算中考虑不确定性
4.2.3 锥的影响 39
4.2.4 不确定性锥和承诺的关系 40
4.2.5 不确定性锥和迭代开发 40
4.4 不稳定的需求 42
对需求增长的估算 43
4.5 遗漏的活动 44
4.6 没有理由的乐观主义 46
4.7 主观性和偏差 47
4.8 即兴估算 49
4.9 无根据的精度 51
4.10 其他的误差来源 52
4.11 其他资源 53
第5章 影响估算的因素 55
5.1 项目规模 55
5.1.1 本书使用代码行表示规模的
5.1.1 原因 56
5.1.2 规模不经济 56
5.1.3 何时可以安全地忽略规模不
5.1.3 经济 60
5.1.4 软件估算中规模不经济的
5.1.4 重要性 61
5.2 待开发软件的不同类型 61
5.3 人员因素 63
5.4 编程语言 64
5.5 影响项目的其他因素 65
5.6 再论规模不经济 70
5.7 其他资源 72
第二部分 基本估算方法
第6章 估算方法概述 77
6.1 选择估算方法时考虑的
6.1 问题 77
6.1.1 待估算的内容 77
6.1.2 项目规模 78
6.1.3 软件开发方式 78
6.1.4 开发阶段 80
6.1.5 可能的准确度 80
6.2 估算方法适用性表 81
第7章 计数、计算和判断 83
7.1 首先计数 84
7.2 计数的对象 85
7.3 通过计算把计数值转换成
7.3 估算值 86
7.4 只把判断作为最后的手段 88
7.5 其他资源 89
第8章 估算校准和历史数据 91
8.1 历史数据可以提高准确度
8.1 并带来其他益处 91
8.1.1 考虑开发组织的影响 92
8.1.2 避免主观性和无根据的
8.1.2 乐观 93
8.1.3 减少估算中政策的影响 93
8.2 要收集的数据 95
8.2.1 与规模度量有关的问题 95
8.2.2 与工作量度量有关的问题 96
8.2.3 与日历时间度量有关的
8.2.3 问题 97
8.2.4 与缺陷度量有关的问题 97
8.2.5 其他的数据收集问题 98
8.3 如何校准 98
8.4 使用项目数据精化估算值 99
8.5 使用行业的平均数据进行
8.5 校准 100
8.6 小结 102
8.7 其他资源 102
第9章 专家的个人判断 105
9.1 有组织的专家判断 106
9.1.1 由谁进行估算? 106
9.1.2 粒度 106
9.1.3 使用范围 107
9.1.4 公式 108
9.1.5 检查表 110
9.2 比较估算值和实际值 110
9.3 其他资源 112
第10章 分解和重组 113
10.1 计算准确的整体预期
10.1 情况 113
10.1.1 大数法则 115
10.1.2 估算的小对象应小到
10.1.2 什么程度? 116
10.2 通过基于活动的工作分解
10.2 结构进行分解 117
10.3 累加最好情况和最差情况
10.3 估算的危害 118
10.3.1 警告:接下来是数学
10.3.1 问题! 119
10.3.2 问题的来源 119
10.4 建立有意义的总体最好
10.4 情况和最差情况估算 120
10.4.1 对少量任务计算总体最好情况和最差情况(简单标准偏差公式) 121
10.4.2 对大量任务计算总体最好情况和最差情况(复杂标准偏差公式) 122
10.4.3 建立总体最好情况和最差情况估算值 124
10.4.4 有关百分比置信度估算
10.4.4 的注意事项 126
10.5 其他资源 126
第11章 类比估算 127
11.1 类比估算的基本方法 127
11.1.1 步骤1:获取以前相似
11.1.1 项目详细的规模、工作
11.1.1 量和成本结果数据 128
11.1.2 步骤2:比较新项目和
11.1.2 以前相似项目的规模 129
11.1.3 步骤3:根据新项目相对
11.1.3 旧项目的比例估算其
11.1.3 规模 130
11.1.4 步骤4:根据新项目规模
11.1.4 相对旧项目规模的情况
11.1.4 计算工作量估算值 131
11.1.5 步骤5:检查两个项目中
11.1.5 的假设是否一致 131
11.2 有关Triad估算中的不
11.2 确定性的说明 132
估算中的不确定性、计划和承诺 133
第12章 基于代理的估算 135
12.1 模糊逻辑 136
12.1.1 如何获得平均规模数值 136
12.1.2 如何对新功能进行分类 137
12.1.3 模糊逻辑不能解决的
12.1.3 问题 137
12.1.4 对模糊逻辑的扩展 138
12.2 标准组件 138
12.2.1 按照百分点使用标准
12.2.1 组件 140
12.2.2 标准组件的局限 141
12.3 故事点 142
有关尺度的警告 143
12.4 “T恤衫”式规模估算 145
12.5 基于代理的估算方法的
12.5 其他用途 147
12.6 其他资源 147
第13章 专家小组判断法 149
13.1 小组评审 149
13.2 宽带Delphi法 150
13.2.1 宽带Delphi法的有效性 152
13.2.2 “原来如此” 154
13.2.3 何时采用宽带
13.2.3 Delphi法 154
13.3 其他资源 155
第14章 软件估算工具 157
14.1 使用软件估算工具可以
14.1 完成而手工无法完成
14.1 的事 157
14.2 校准工具时所需的数据 162
14.3 即使采用工具也不应
14.3 做的事 162
14.4 可用工具概述 163
14.5 其他资源 164
第15章 使用多种估算方法 165
其他资源 169
第16章 获得良好估算的软件项目中的估算流程 171
16.1 未获得良好估算的项目
16.1 中的单个估算流程 171
16.2 获得良好估算的项目中
16.2 的单个估算流程 172
16.3 按照时间顺序描述的
16.3 项目估算流程 173
16.3.1 大型项目的估算流程 174
16.3.2 小型项目的估算流程 175
16.4 估算的精化 175
16.5 如何向项目的其他干系
16.5 人提供重估结果 176
16.5.1 何时进行重估 177
16.5.2 管理层不允许重估
16.5.2 怎么办? 178
16.6 一个获得良好估算的项目
16.6 视图 179
第17章 标准化估算规程 181
17.1 标准化规程的常用要素 181
17.2 采用阶段-门槛过程
17.2 进行估算 182
17.3 顺序式项目的标准化
17.3 估算规程 185
17.4 迭代式项目的标准化
17.4 估算规程 188
17.5 一个高级开发组织的
17.5 标准化估算规程 190
17.6 改进标准化规程 192
17.7 其他资源 193
第三部分 特定的估算挑战
第18章 规模估算中的特殊问题 197
18.1 软件规模估算中的挑战 197
代码行在规模估算中的作用 198
18.2 功能点估算 200
把功能点转换成代码行 202
18.3 简化的功能点方法 203
18.3.1 Dutch方法 203
18.3.2 GUI元素 204
18.4 规模估算方法小结 205
18.5 其他资源 206
第19章 工作量估算中的特殊问题 207
19.1 影响工作量的因素 207
19.2 根据规模计算工作量 209
19.2.1 使用和历史项目的非
19.2.1 正规比较来计算工作
19.2.1 量估算值 209
19.2.2 估算值中包括哪类
19.2.2 工作量? 210
19.3 使用估算学方法计算
19.3 工作量估算值 210
19.4 行业平均工作量图 210
19.5 ISBSG方法 216
19.6 比较工作量估算值 218
19.7 其他资源 219
第20章 进度估算中的特殊问题 221
20.1 基本进度公式 221
20.2 使用与历史项目的非正
20.2 式比较来计算进度 223
20.3 Jones的一阶估算实践 224
20.4 使用估算学方法计算
20.4 进度估算值 225
20.5 进度压缩和最短的可能
20.5 进度 226
20.6 进度和工作量之间的折衷 228
进度压缩和团队规模 229
20.7 进度估算和人员限制 230
20.8 比较不同方法的结果 231
20.9 其他资源 232
第21章 计划参数的估算 233
21.1 对分解的项目活动进行
21.1 估算 233
21.1.1 估算分配给不同技术
21.1.1 活动的工作量 233
21.1.2 估算需求的工作量 234
21.1.3 估算管理工作量 235
21.1.4 估算所有活动 235
21.1.5 根据项目类型进行调整 236
21.1.6 给活动分配工作量的
21.1.6 例子 237
21.1.7 开发人员与测试人员的
21.1.7 比例 237
21.2 估算不同活动的进度 238
21.3 把估算工作量(理想工作量)转换成计划工作量 239
21.4 成本估算 241
21.4.1 加班 241
21.4.2 项目成本是直接成本、
21.4.2 全额负担成本还是其
21.4.2 他形式的成本? 241
21.4.3 其他直接成本 241
21.5 对缺陷的产生和排除情况
21.5 进行估算 241
21.5.1 估算缺陷排除情况 242
21.5.2 估算缺陷排除效率的
21.5.2 例子 243
21.6 对风险和意外缓冲进行
21.6 估算 245
21.7 其他经验规则 247
21.8 其他资源 247
第22章 估算结果的表达方式 249
22.1 就估算假设进行沟通 249
22.2 表达不确定性 251
22.2.1 正负修饰量 251
22.2.2 量化风险 251
22.2.3 置信度因子 252
22.2.4 基于场景的估算 254
22.2.5 约略的日期时段 255
22.3 使用(各种类型的)
22.3 范围 256
22.3.1 以范围表示的估算结果
22.3.1 的用途 256
22.3.2 范围和承诺 257
22.4 其他资源 257
第23章 政治、谈判和解决问题 259
23.1 主管们的特点 259
23.2 对估算有影响的政治
23.2 因素 260
23.2.1 外部约束 260
23.2.2 预算和日期 261
22.2.3 对估算值还是对承诺
22.2.3 进行谈判 261
23.2.4 如果估算值不被接受
23.2.4 该怎么办? 262
23.2.5 技术人员要教育非技术
23.2.5 干系人 262
23.3 解决问题和原则谈判法 263
23.3.1 近似谈判的问题解决法 264
23.3.2 把人和问题隔离开 264
23.3.3 关注利益而不是立场 265
23.3.4 创造可以共同获利的
23.3.4 选项 266
23.3.5 坚持使用客观标准 268
23.4 其他资源 270
附录A 估算合理性检查 271
附录B 第2章“你的估算水平
附录B 如何?”测验的答案 273
附录C 软件估算提示 275
参考文献 287
索引 295