《软件估算 “黑匣子”揭秘》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)麦克康内尔著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2007
  • ISBN:7121052954
  • 页数:324 页
图书介绍:在《软件估算——黑匣子揭秘》一书中,著名的软件开发书籍的作者Steve McConnell揭开了围绕在软件估算周围的层层迷雾。作者在深入浅出地介绍了与软件估算有关的主要概念之后,深入、全面地介绍了与软件估算有关的多种估算方法。本书的主要内容包括:估算与计划和项目控制,以及估算与目标和承诺之间的关系;不确定性锥与估算中的误差来源以及影响估算的各种因素;先计数、再计算,无法可想时才依靠判断的基本估算原则;用于估算软件项目的三个重要部分——规模、工作量和进度估算的基本方法;与规模、工作量和进度估算有关的特殊问题;估算的概率论观点以及如何采用适当的方式来表达估算结果中的不确定性;如何进行与估算有关的沟通,从而使技术人员和非技术人员达成共识。本书主要面向软件开发项目中要进行估算的开发人员和技术管理人员。但本书所涉及的与软件估算有关的背景知识,以及有关估算谈判和表达方式的讨论,对于非技术人员出身的主管和项目的其他有关人员同样大有裨益。

第一部分 估算的关键概念 3

第1章 “估算”的含义 3

1.1 估算、目标和承诺 3

1.2 估算和计划的关系 4

1.3 有关估算、目标和承诺的沟通 5

1.4 以概率的方式表示估算结果 6

1.5 对“良好”估算的常见定义 9

1.6 估算与项目控制 11

1.7 估算的真正目的 13

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 使用较窄范围的压力来自何方? 18

2.2.4 该测验对真实软件估算的代表性 19

第3章 准确估算的价值 21

3.1 高估更好还是低估更好 21

3.1.1 反对高估的观点 21

3.1.2 反对低估的观点 22

3.1.3 权衡各种观点 23

3.2 软件行业估算情况的详细记录 24

3.2.1 项目会延误多少? 26

3.2.2 一个公司的经历 26

3.2.3 软件估算的系统性偏差 27

3.3 准确估算带来的好处 27

3.4 可预测性与项目其他属性的价值比较 29

3.5 常见估算方法的问题 30

3.6 其他资源 31

第4章 估算误差的来源 33

4.1 估算不确定性的来源 34

4.2 不确定性锥 35

4.3 混乱的开发过程 41

4.2.1 是否可以突破不确定性锥的限制? 37

4.2.2 锥形不会自行缩小 38

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 本书使用代码行表示规模的原因 56

5.1.2 规模不经济 56

5.1.3 何时可以安全地忽略规模不经济 60

5.1.4 软件估算中规模不经济的重要性 61

5.2 待开发软件的不同类型 61

5.3 人员因素 63

5.4 编程语言 64

5.5 影响项目的其他因素 65

5.6 再论规模不经济 70

5.7 其他资源 72

第二部分 基本估算方法 77

第6章 估算方法概述 77

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 通过计算把计数值转换成估算值 86

7.4 只把判断作为最后的手段 88

7.5 其他资源 89

第8章 估算校准和历史数据 91

8.1 历史数据可以提高准确度并带来其他益处 91

8.1.1 考虑开发组织的影响 92

8.1.2 避免主观性和无根据的乐观 93

8.1.3 减少估算中政策的影响 93

8.2 要收集的数据 95

8.2.1 与规模度量有关的问题 95

8.2.2 与工作量度量有关的问题 96

8.2.3 与日历时间度量有关的问题 97

8.2.4 与缺陷度量有关的问题 97

8.2.5 其他的数据收集问题 98

8.3 如何校准 98

8.4 使用项目数据精化估算值 99

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 计算准确的整体预期情况 113

10.1.1 大数法则 115

10.1.2 估算的小对象应小到什么程度? 116

10.2 通过基于活动的工作分解结构进行分解 117

10.3 累加最好情况和最差情况估算的危害 118

10.3.1 警告:接下来是数学问题! 119

10.3.2 问题的来源 119

10.4 建立有意义的总体最好情况和最差情况估算 120

10.4.1 对少量任务计算总体最好情况和最差情况(简单标准偏差公式) 121

10.4.2 对大量任务计算总体最好情况和最差情况(复杂标准偏差公式) 122

10.4.3 建立总体最好情况和最差情况估算值 124

10.4.4 有关百分比置信度估算的注意事项 126

10.5 其他资源 126

第11章 类比估算 127

11.1 类比估算的基本方法 127

11.1.1 步骤1:获取以前相似项目详细的规模、工作量和成本结果数据 128

11.1.2 步骤2:比较新项目和以前相似项目的规模 129

11.1.3 步骤3:根据新项目相对旧项目的比例估算其规模 130

11.1.4 步骤4:根据新项目规模相对旧项目规模的情况计算工作量估算值 131

11.1.5 步骤5:检查两个项目中的假设是否一致 131

11.2 有关Triad估算中的不确定性的说明 132

估算中的不确定性、计划和承诺 133

第12章 基于代理的估算 135

12.1 模糊逻辑 136

12.1.1 如何获得平均规模数值 136

12.1.2 如何对新功能进行分类 137

12.1.3 模糊逻辑不能解决的问题 137

12.1.4 对模糊逻辑的扩展 138

12.2 标准组件 138

12.2.1 按照百分点使用标准组件 140

12.2.2 标准组件的局限 141

12.3 故事点 142

有关尺度的警告 143

12.4 “T恤衫”式规模估算 145

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 何时采用宽带Delphi法 154

13.3 其他资源 155

第14章 软件估算工具 157

14.1 使用软件估算工具可以完成而手工无法完成的事 157

14.2 校准工具时所需的数据 162

14.3 即使采用工具也不应做的事 162

14.4 可用工具概述 163

14.5 其他资源 164

第15章 使用多种估算方法 165

其他资源 169

第16章 获得良好估算的软件项目中的估算流程 171

16.1 未获得良好估算的项目中的单个估算流程 171

16.2 获得良好估算的项目中的单个估算流程 172

16.3 按照时间顺序描述的项目估算流程 173

16.3.1 大型项目的估算流程 174

16.3.2 小型项目的估算流程 175

16.4 估算的精化 175

16.5 如何向项目的其他干系人提供重估结果 176

16.5.1 何时进行重估 177

16.5.2 管理层不允许重估怎么办? 178

16.6 一个获得良好估算的项目视图 179

第17章 标准化估算规程 181

17.1 标准化规程的常用要素 181

17.2 采用阶段—门槛过程进行估算 182

17.3 顺序式项目的标准化估算规程 185

17.4 迭代式项目的标准化估算规程 188

17.5 一个高级开发组织的标准化估算规程 190

17.6 改进标准化规程 192

17.7 其他资源 193

第三部分 特定的估算挑战 197

第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 使用和历史项目的非正规比较来计算工作量估算值 209

19.2.2 估算值中包括哪类工作量? 210

19.3 使用估算学方法计算工作量估算值 210

19.4 行业平均工作量图 210

19.5 ISBSG方法 216

19.6 比较工作量估算值 218

19.7 其他资源 219

第20章 进度估算中的特殊问题 221

20.1 基本进度公式 221

20.2 使用与历史项目的非正式比较来计算进度 223

20.3 Jones的一阶估算实践 224

20.4 使用估算学方法计算进度估算值 225

20.5 进度压缩和最短的可能进度 226

20.6 进度和工作量之间的折衷 228

进度压缩和团队规模 229

20.7 进度估算和人员限制 230

20.8 比较不同方法的结果 231

20.9 其他资源 232

第21章 计划参数的估算 233

21.1 对分解的项目活动进行估算 233

21.1.1 估算分配给不同技术活动的工作量 233

21.1.2 估算需求的工作量 234

21.1.3 估算管理工作量 235

21.1.4 估算所有活动 235

21.1.5 根据项目类型进行调整 236

21.1.6 给活动分配工作量的例子 237

21.1.7 开发人员与测试人员的比例 237

21.2 估算不同活动的进度 238

21.3 把估算工作量(理想工作量)转换成计划工作量 239

21.4 成本估算 241

21.4.1 加班 241

21.4.2 项目成本是直接成本、全额负担成本还是其他形式的成本? 241

21.4.3 其他直接成本 241

21.5 对缺陷的产生和排除情况进行估算 241

21.5.1 估算缺陷排除情况 242

21.5.2 估算缺陷排除效率的例子 243

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 使用(各种类型的)范围 256

22.3.1 以范围表示的估算结果的用途 256

22.3.2 范围和承诺 257

22.4 其他资源 257

第23章 政治、谈判和解决问题 259

23.1 主管们的特点 259

23.2 对估算有影响的政治因素 260

23.2.1 外部约束 260

23.2.2 预算和日期 261

22.2.3 对估算值还是对承诺进行谈判 261

23.2.4 如果估算值不被接受该怎么办? 262

23.2.5 技术人员要教育非技术干系人 262

23.3 解决问题和原则谈判法 263

23.3.1 近似谈判的问题解决法 264

23.3.2 把人和问题隔离开 264

23.3.3 关注利益而不是立场 265

23.3.4 创造可以共同获利的选项 266

23.3.5 坚持使用客观标准 268

23.4 其他资源 270

附录A 估算合理性检查 271

附录B 第2章“你的估算水平如何?”测验的答案 273

附录C 软件估算提示 275

参考文献 287

索引 295