第1章 软件开发问题 1
1.1 软件危机 2
1.2 生产率的人为影响 7
1.3 敏捷对开发生产率的贡献 10
1.4 魔术弹 11
1.5 软件开发的约束因素 12
第2章 有效性公式 13
2.1 有效性公式 14
2.2 沟通的机理 15
2.2.1 信息对流 17
2.2.2 信息辐射 18
2.2.3 四条沟通戒律 18
2.3 文化问题 24
2.3.1 组织文化 24
2.3.2 舒适区 25
2.3.3 确认偏误 26
2.3.4 K-12现象 28
第3章 软件管理的重要性 31
3.1 历史回顾 32
3.2 霍桑效应 34
3.3 X理论/Y理论 36
3.4 敏捷软件开发 37
3.5 更多有效的生产率改进办法 38
3.5.1 技术 39
3.5.2 开发环境的信息流 40
第4章 从历史中我们学到了什么 42
4.1 潘多拉与魔瓶 42
4.2 技术带来的生产率增益 43
4.3 软件能力成熟度模型集成 47
4.4 最大与最小进度 49
4.5 更多思考 50
第5章 软件开发团队 52
5.1 软件开发团队 52
5.2 团队示例 53
5.2.1 Ad Hoc团队 54
5.2.2 首席程序员团队 54
5.2.3 结对编程团队 55
5.2.4 跨功能团队 60
5.2.5 老虎团队 62
5.3 团队的积极影响 63
5.4 团队规模 65
5.5 更多思考 67
第6章 组织能力度量 69
6.1 开发者能力概念的演变 70
6.2 有效性公式回归 73
6.2.1 分析师和程序员的能力 74
6.2.2 应用领域经验 77
6.2.3 现代实践方法的使用 79
6.2.4 现代工具的使用 83
6.2.5 终端响应时间 85
6.2.6 硬拷贝周转时间 85
6.3 组织能力评级 86
6.4 基本技术常量 89
第7章 完美软件公司案例研究 94
7.1 问题 94
7.2 完美软件公司 95
7.3 软件组件 96
7.3.1 任务规划 96
7.3.2 命令生成 97
7.3.3 通信模块 97
7.4 完美软件能力评级 98
7.4.1 分析师和程序员的能力 98
7.4.2 应用领域经验 99
7.4.3 现代实践方法 100
7.4.4 现代工具 100
7.4.5 终端响应时间 101
7.4.6 硬拷贝周转时间 101
7.4.7 完美软件能力评级 101
第8章 产品复杂度 103
8.1 量化复杂度值 103
8.2 完美软件复杂度案例 107
8.2.1 任务规划系统 107
8.2.2 命令生成系统 108
8.2.3 通信系统 108
第9章 人员配置问题 110
9.1 人员的有效使用 110
9.1.1 轻量级开发与重量级开发 113
9.1.2 瑞利开发模型 114
9.2 实践中的布鲁克斯定律 115
9.2.1 过度配置人员 116
9.2.2 固定配置人员 116
9.3 触摸现实 117
第10章 Seer软件模型介绍 119
10.1 介绍 120
10.2 软件方程 122
10.2.1 有效规模 126
10.2.2 有效技术常量 126
10.3 进度与成本估算 127
第11章 开发环境 129
11.1 经验因素 130
11.1.1 开发系统经验 131
11.1.2 编程语言经验 131
11.1.3 实践与方法经验 133
11.1.4 目标系统经验 134
11.2 不稳定性因素 135
11.2.1 开发系统不稳定性 135
11.2.2 实践与方法不稳定性 136
11.3 管理因素 136
11.3.1 多安全密级 137
11.3.2 多开发组织 137
11.3.3 多开发地点 138
11.3.4 资源支持位置 138
11.3.5 开发资源投入 139
第12章 产品特性 141
12.1 产品特性评估 142
12.1.1 特殊显示需求 142
12.1.2 应用移植需求 143
12.1.3 内存约束 143
12.1.4 质量保证需求 144
12.1.5 实时操作 145
12.1.6 需求不稳定性 146
12.1.7 软件安全需求 147
12.1.8 系统规格说明等级 148
12.1.9 要求的测试等级 149
12.1.10 系统CPU时间约束 149
12.1.11 目标系统不稳定性 149
12.2 有效技术常量 150
12.3 基本技术常量测算 150
第13章 开发进度与成本估算 153
13.1 瀑布开发模型 154
13.2 完美软件案例研究 155
13.2.1 任务规划 157
13.2.2 命令生成 161
13.2.3 通信模块 164
13.2.4 纵观全局 167
13.3 总结 169
第14章 有效规模估算 171
14.1 源代码的组成部分 172
14.1.1 黑盒和白盒 173
14.1.2 新增的源代码 174
14.1.3 修改的源代码 174
14.1.4 删除的源代码 174
14.1.5 复用的源代码 174
14.1.6 商用现成品软件 174
14.1.7 总源代码行 175
14.2 规模的不确定性 175
14.3 源代码行 176
14.3.1 可执行语句 177
14.3.2 数据声明 177
14.3.3 编译器指令 177
14.3.4 格式语句 177
14.4 有效源代码行 177
14.5 有效规模方程 180
14.5.1 设计因子 181
14.5.2 实现因子 181
14.5.3 测试因子 181
14.6 规模增长 182
14.7 规模估算风险 187
14.8 完美软件规模估算案例 188
14.8.1 任务规划 189
14.8.2 命令生成 189
14.8.3 通信系统 190
第15章 功能点规模估算 191
15.1 功能点计数 192
15.2 功能点的组成部分 192
15.2.1 应用软件边界 194
15.2.2 内部逻辑文件 195
15.2.3 外部接口文件 197
15.2.4 外部输入 197
15.2.5 外部输出 197
15.2.6 外部查询 198
15.2.7 变换 198
15.2.8 转换 199
15.3 未调整功能点计数 200
15.4 调整的功能点 201
15.4.1 数值调整因子 201
15.4.2 调整后功能点的计算 202
15.5 逆火分析 203
15.6 功能点与对象 204
15.7 零功能点问题 204
第16章 维护估算 206
16.1 介绍 206
16.2 软件增强 207
16.3 知识留存 208
16.4 稳态维护的工作量 209
16.5 维护示例 209
第17章 总结 211
17.1 有效性公式回顾 211
17.2 人—流程—项目三元组 213
17.3 沟通的价值 214
17.3.1 四个沟通戒律 215
17.3.2 确认偏误 215
17.4 管理与激励 216
17.5 团队 217
17.6 最后的思考 219
附录A 软件估算模型 221
附录B 参考读物 231
附录C 名词术语 237