标题：软件项目管理案例教程
内容简介
本书以案例的形式，讲述了软件项目管理的全过程，并辅以一个贯穿始终的案例。本书向软件项目管理人员传授项目管理的理论、方法以及技巧。通过本书学习，读者可以在短时间内掌握软件项目管理的基本知识和实践能力。本书不仅覆盖了PMBOK的主要内容而且强调了在软件这个特殊的领域如何进行项目管理。本书系统地讲述了软件项目管理的实施过程，共分15章，取材新颖，注重实效，讲授了软件项目经理的主要工作、职责和权利。其中贯穿本书的核心是如何开发软件项目计划和如何进行软件项目的跟踪管理。本书综合了多个学科领域，包括范围计划、成本计划、时间计划、质量计划、变更计划、风险计划、度量计划、沟通计划等计划的制定，以及项目实施过程中如何对项目进行跟踪控制。本书注重理论与实际的结合，通过实际工作中的案例说明帮助读者消化和理解所学的内容。 [1]
本书既适合作为高等院校计算机及相关专业高年级本科生和研究生的教材，也适合作为培训项目经理和广大软件技术人员的教材；同时对于希望了解软件开发项目管理的各类读者，本书也是一本较好的参考读物。 
本书不仅覆盖了PMBOK的9大知识领域，并且突出了软件项目的特殊性，同时也包括了SW-CMM的有关项目管理过程域，是系统、全面、有针对性的软件项目管理教材。本书有理论、有实践、有案例，不仅可以作为高校软件学院及相关专业的教材，而且也可作为专业技术人员学习软件项目管理知识的参考书。 
本书的特点如下： 
·内容全面系统：不仅覆盖了EMBOK的主要内容，而且强调了在软件这个特殊领域如何进行项目管理：同时，本书全面系统地讲述了软件项目管理的全过程。 
·结合国内实际： 北京邮电大学软件学院是国家教育部批准成立的第一批软件学院，经过几年的研究和实践，积累了许多经验。本书由软件学院院长宋茂强教授主审，韩万江、姜立新编著，是一本结合国内教学实际、汇集大量实践经验的心血之作。 
·实践性强： 采用案例形式来描述软件项目管理的全过程，以一个完整的案例贯穿全书，通过实际工作中的案例说明帮助读者消化和理解所学的内容，迅速提高实用能力。 
·为教师配有电子教案： 利用本书为教师配备的电子教案，可以减轻教师负担，提高教学质量。
编辑推荐
本书是国家示范性软件学院系列教材之一，是一部关于软件项目管理的实用教材，全书以案例的形式，讲述了软件项目管理的全过程，并辅以一个贯穿始终的案例。本书向软件项目管理人员传授项目管理的理论、方法以及技巧。通过本书学习，读者可以在短时间内掌握软件项目管理的基本知识和实践能力。本书适合高校计算机专业学生及软件开发管理人员参考学习。　
进入21世纪，人类社会进入了信息经济时代，信息技术已成为所有高新技术发展的支撑技术。同时，信息技术及网络的高速发展，极大地推动了社会、经济的进步和人的思想、观念、文化的变革。其中最为显著的变化是推动了经济的全球化；反过来，经济的全球化又对信息技术及网络提出了更高的要求。　在信息技术中，硬件技术的进步往往容易引起人们的重视和兴趣，而软件技术往往不被人们关注。20世纪微软公司等国际大型企业将软件技术的开发、生产和应用推向了高峰并使软件技术首次超越了硬件技术引起世人的关注。
目录
序 
前言 
第1章 项目管理与软件项目管理 1 
1.1 项目与软件项目 1 
1.1.1 项目及其特征 1 
1.1.2 项目群与项目、项目与子项目 的关系 2 
1.1.3 软件项目 3 
1.1.4 软件项目要素组成 3 
1.1.5 实现项目目标的制约因素 3 
1.2 项目管理 4 
1.2.1 项目管理背景 4 
1.2.2 项目管理定义 5 
1.2.3 项目管理主要内容 6 
1.2.4 软件项目管理的特征及重要性 6 
1.3 项目管理知识体系 7 
1.4 项目管理的范围 10 
1.4.1 项目管理的五要素 10 
1.4.2 从战术看 11 
1.4.3 从战略看 11 
1.5 过程管理与软件项目管理的关系 12 
.1.5.1 软件过程定义 12 
1.5.2 过程管理在软件项目中的作用 13 
1.5.3 过程管理与项目管理的关系 14 
1.6 软件项目管理过程 14 
1.6.1 项目启动 15 
1.6.2 项目规划 15 
1.6.3 项目跟踪控制 15 
1.6.4 项目结束 16 
1.7 本书的组织结构 16 
1.8 小结 16 
1.9 习题 17 
第2章 软件项目合同管理 18 
2.1 合同管理概述 18 
2.2 需方合同环境 20 
2.2.1 合同准备 20 
2.2.2 合同签署 22 
2.2.3 合同管理 23 
2.2.4 合同终止 24 
2.3 供方合同环境 24 
2.3.1 合同准备 25 
2.3.2 合同签署 26 
2.3.3 合同管理 26 
2.3.4 合同终止 29 
2.4 企业内部合同环境 29 
2.5 案例分析 29 
2.6 小结 36 
2.7 习题 37 
第3章 软件项目生存期模型 38 
3.1 软件项目生存期模型定义 38 
3.1.1 生存期的定义 39 
3.1.2 生存期的重要性 40 
3.1.3 生存期模型 40 
3.2 瀑布模型 41 
3.2.1 定义 41 
3.2.2 特点 41 
3.2.3 使用指南 41 
3.2.4 适合的项目类型 42 
3.3 v型模型 42 
3.3.1 定义 42 
3.3.2 特点 42 
3.3.3 使用指南 43 
3.3.4 适合的项目类型 43 
3.4 原型模型 43 
3.4.1 定义 43 
3.4.2 特点 43 
3.4.3 使用指南 44 
3.4.4 适合的项目类型 44 
3.5 增量式模型 44 
3.5.1 定义 44 
3.5.2 特点 45 
3.5.3 使用指南 45 
3.5.4 适合的项目类型 45 
3.6 螺旋式模型 45 
3.6.1 定义 45 
3.6.2 特点 45 
3.6.3 使用指南 46 
3.6.4 适合的项目类型 46 
3.7 快速应用开发模型 46 
3.7.1 定义 47 
3.7.2 特点 47 
3.7.3 使用指南 47 
3.7.4 适合的项目类型 48 
3.8 渐进式阶段模型 48 
3.8.1 定义 49 
3.8.2 特点 49 
3.8.3 使用指南 49 
3.8.4 适合的项目类型 50 
3.9 其他模型说明 50 
3.10 案例说明 50 
3.11 小结 54 
3.12 习题 54 
第4章 软件项目需求管理 55 
4.1 软件项目需求概述 55 
4.1.1 需求定义 56 
4.1.2 需求类型 57 
4.1.3 需求管理的重要性 57 
4.2 需求管理过程 58 
4.2.1 需求获取 59 
4.2.2 需求分析 60 
4.2.3 需求规格 61 
4.2.4 需求验证 64 
4.2.5 需求变更 65 
4.2.6 需求管理与项目管理的关系 67 
4.3 需求建模的基本方法 68 
4.3.1 原型分析方法 68 
4.3.2 结构化分析方法 68 
4.3.3 用例分析方法 71 
4.3.4 功能列表方法 79 
4.3.5 其他方法 81 
4.4 案例说明 81 
4.5 小结 84 
4.6 习题 84 
第5章 软件项目任务分解 85 
5.1 任务分解定义 86 
5.2 任务分解的类型 86 
5.2.1 清单类型 86 
5.2.2 图表类型 87 
5.3 任务分解的过程 87 
5.3.1 基本步骤 88 
5.3.2 分解的标准 89 
5.3.3 分解结果的检验 90 
5.4 任务分解的注意事项 90 
5.5 任务分解的意义 91 
5.6 案例说明 91 
5.7 小结 92 
5.8 习题 92 
第6章 软件项目规模成本估算 93 
6.1 关于估算的概念 93 
6.1.1 项目规模与成本的关系 94 
6.1.2 成本估算的定义 94 
6.1.3 规模成本估算的目标 94 
6.2 估算的过程 95 
6.2.1 估算输入 95 
6.2.2 估算处理 96 
6.2.3 估算输出 96 
6.3 估算的方法 96 
6.3.1 代码行、功能点及对象点 96 
6.3.2 类比估算法 100 
6.3.3 自下而上估算法 100 
6.3.4 参数估算法 100 
6.3.5 专家估算法 102 
6.3.6 猜测估算法 102 
6.4 估算方法综述 102 
6.5 估算的误差度 104 
6.5.1 估算的准确度 104 
6.5.2 估算不准的主要原因 104 
6.5.3 对付估算误差的方法 105 
6.6 案例说明 106 
6.7 小结 108 
6.8 习题 108 
第7章 软件项目进度计划 109 
7.1 项目进度中的基本概念 109 
7.1.1 软件项目进度定义 110 
7.1.2 软件活动定义 110 
7.1.3 活动之间的关系 110 
7.1.4 活动之间关系的依据 111 
7.2 进度管理图示 111 
7.2.1 网络图 111 
7.2.2 甘特图 113 
7.2.3 里程碑图 114 
7.2.4 资源图 115 
7.3 项目进度估算 115 
7.3.1 基于规模的进度估算 116 
7.3.2 工程评价技术 117 
7.3.3 关键路径法 118 
7.3.4 专家估算方法 119 
7.3.5 类推估算方法 119 
7.3.6 模拟估算方法 119 
7.3.7 进度表估算方法 119 
7.3.8 基于承诺的进度估算方法 123 
7.3.9 jones的一阶估算准则 123 
7.4 进度计划编制 123 
7.4.1 关键路径法（cpm） 123 
7.4.2 时间压缩法 128 
7.4.3 资源调整尝试法 130 
7.4.4 成本预算 131 
7.4.5 项目管理软件 131 
7.4.6 项目进度计划的优化 131 
7.4.7 渐进式的项目计划 131 
7.5 案例说明 132 
7.6 小结 137 
7.7 习题 137 
第8章 软件项目质量计划 138 
8.1 质量概述 138 
8.1.1 软件质量 139 
8.1.2 软件质量与硬件质量的比较 140 
8.1.3 软件质量的重要性 141 
8.1.4 软件质量管理的发展过程 141 
8.2 质量管理过程 141 
8.2.1 软件项目的质量计划 142 
8.2.2 质量保证 142 
8.2.3 质量控制 145 
8.2.4 质量保证与质量控制的关系 149 
8.3 质量成本 149 
8.4 质量计划制定 150 
8.4.1 质量计划的要求 150 
8.4.2 质量计划的编写 151 
8.4.3 软件质量改善的建议 152 
8.5 质量体系 153 
8.6 案例说明 154 
8.7 小结 157 
8.8 习题 158 
第9章 软件项目配置管理计划 159 
9.1 软件配置管理概述 159 
9.1.1 配置管理定义 160 
9.1.2 配置管理的目标 160 
9.1.3 配置管理在软件开发中的作用 161 
9.2 配置管理的相关概念 162 
9.2.1 配置项 162 
9.2.2 基线 163 
9.2.3 配置控制委员会 164 
9.3 配置管理过程 164 
9.3.1 配置项标识、跟踪 165 
9.3.2 配置管理环境的建立 166 
9.3.3 基线变更管理 168 
9.3.4 配置审核 171 
9.3.5 配置状态统计 172 
9.3.6 配置管理的其他作用 172 
9.4 配置管理工具 174 
9.5 配置管理计划 175 
9.5.1 配置管理计划过程 175 
9.5.2 配置管理计划的主要内容 175 
9.5.3 配置管理建议 176 
9.6 案例说明 177 
9.7 小结 180 
9.8 习题 180 
第10章 软件项目风险管理计划 181 
10.1 软件项目风险管理概述 181 
10.1.1 风险概念 182 
10.1.2 风险类型 183 
10.1.3 风险的基本性质 184 
10.1.4 风险管理概述 184 
10.1.5 风险管理的意义 185 
10.2 风险识别 185 
10.2.1 概念 186 
10.2.2 德尔菲方法 186 
10.2.3 头脑风暴法 186 
10.2.4 情景分析法 187 
10.2.5 风险条目检查表 187 
10.2.6 其他方法 193 
10.2.7 风险识别的结果 193 
10.3 风险评估 194 
10.3.1 概念 194 
10.3.2 定性风险评估 194 
10.3.3 定量风险评估 195 
10.3.4 风险分析结果表 197 
10.4 风险规划 199 
10.4.1 概念 199 
10.4.2 回避风险 199 
10.4.3 转移风险 199 
10.4.4 损失控制 200 
10.4.5 自留风险 200 
10.4.6 风险规划结果 200 
10.5 风险控制 201 
10.6 风险管理的建议 201 
10.7 案例说明 202 
10.8 小结 202 
10.9 习题 202 
第11章 软件项目团队管理 203 
11.1 软件项目团队管理概述 203 
11.1.1 团队定义 204 
11.1.2 团队管理意义 204 
11.1.3 团队管理过程 204 
11.2 项目经理确定 205 
11.2.1 项目经理定义 205 
11.2.2 项目经理的角色 205 
11.2.3 项目经理的职责 205 
11.2.4 项目经理的权利 205 
11.2.5 项目经理的能力 206 
11.2.6 项目经理的政治环境 206 
11.2.7 项目经理的职业道德 207 
11.3 项目组织形式 208 
11.3.1 组织结构定义 208 
11.3.2 职能型组织结构 208 
11.3.3 项目型组织结构 209 
11.3.4 矩阵型组织结构 210 
11.4 团队建设 212 
11.4.1 选择人员 212 
11.4.2 项目成员的培训 214 
11.4.3 项目成员的激励 214 
11.4.4 团队管理的方法 217 
11.5 沟通管理 218 
11.5.1 项目沟通管理概述 219 
11.5.2 项目沟通的方式 219 
11.5.3 编制项目沟通计划 219 
11.6 案例说明 220 
11.7 小结 221 
11.8 习题 222 
第12章 软件项目度量管理 223 
12.1 软件度量概述 224 
12.1.1 度量定义 224 
12.1.2 度量的类型 225 
12.1.3 度量的作用 225 
12.1.4 度量的成本 226 
12.2 度量体系 226 
12.3 度量技术 227 
12.3.1 gqm技术 227 
12.3.2 psm技术 228 
12.4 度量管理过程 229 
12.4.1 标识目标 229 
12.4.2 选择度量指标 229 
12.4.3 定义数据收集 230 
12.4.4 分析度量 231 
12.4.5 改进度量过程 232 
12.5 度量计划 232 
12.5.1 度量计划的构成 232 
12.5.2 度量计划的实施 234 
12.6 度量指标选择 235 
12.6.1 psm信息分类组 235 
12.6.2 sei度量指标 237 
12.6.3 psp度量 240 
12.6.4 sel的度量指标 241 
12.7 软件度量的建议 242 
12.8 案例说明 243 
12.9 小结 244 
12.10 习题 244 
第13章 软件项目集成计划 245 
13.1 软件项目的集成管理 245 
13.2 项目集成计划 246 
13.3 案例分析 252 
13.4 小结 259 
13.5 习题 259 
第14章 软件项目跟踪控制 260 
14.1 项目跟踪控制 260 
14.1.1 项目跟踪控制概念 261 
14.1.2 项目跟踪控制的范围 262 
14.1.3 项目跟踪控制的重要性 263 
14.1.4 项目跟踪控制的标准 263 
14.2 建立项目跟踪控制的标准 264 
14.3 建立项目监控和报告体系 264 
14.3.1 跟踪采集的过程 264 
14.3.2 建立跟踪采集对象 265 
14.4 项目跟踪控制过程 265 
14.4.1 项目范围的跟踪控制 265 
14.4.2 项目进度、成本（资源）的跟踪控制 266 
14.4.3 项目质量的跟踪控制 275 
14.4.4 项目风险的跟踪控制 277 
14.4.5 其他方面的监控 278 
14.4.6 利用工具分析项目性能 279 
14.5 项目评审 279 
14.5.1 项目评审概述 279 
14.5.2 评审准备 280 
14.5.3 评审过程 280 
14.5.4 评审报告过程 281 
14.5.5 问题跟踪列表 282 
14.6 项目计划修改 283 
14.7 案例分析 283 
14.8 小结 287 
14.9 习题 288 
第15章 软件项目结束过程 289 
15.1 项目结束概述 289 
15.1.1 项目终止 289 
15.1.2 项目成功与失败的标准 290 
15.1.3 项目关闭必须完成的任务 290 
15.2 项目结束过程 290 
15.2.1 项目结束计划 290 
15.2.2 项目收尾的内容 290 
15.2.3 项目最后评审 291 
15.2.4 项目总结 291 
15.3 项目管理过程总结 291 
15.4 项目管理的建议 292 
15.5 案例分析 293 
15.6 小结 295 
15.7 习题 295 
结束语 296 
附录 pmbok的9个知识领域简介 297 
参考文献 302
前言
随着信息技术的飞速发展，软件产品的规模也越来越庞大，各软件企业都在积极将软件项目管理引入到开发活动中，对软件项目实行有效的管理。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成而进行分析和管理的活动。另外，进行软件项目管理有利于将个人开发能力转化成企业的开发能力，企业的软件开发能力越高，表明这个企业的软件生产越趋向于成熟，企业越能够稳定发展。 
软件项目管理的提出是在20世纪70年代中期的美国，当时美国国防部专门研究了软件开发不能按时提交、预算超支和质量达不到用户要求的原因，结果发现70%的项目出现问题是因为管理不善引起的，而非技术原因。于是，软件开发者开始逐渐重视软件开发中的各项管理。到了20世纪90年代中期，软件项目管理不善的问题仍然存在。软件项目管理和其他的项目管理相比有相当的特殊性。首先，软件是纯知识产品，其开发进度和质量很难估计和度量，生产效率也难以预测和保证。其次，软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。因此，项目管理对软件生产具有决定性的意义。特别是在当今的软件项目中，项目管理的质量与软件产品的质量有着直接的对应关系。因此，提高项目管理的能力对于软件组织生产力的提高是极为重要的。 
软件项目超进度超预算的例子举不胜举，而且低质量的软件也名声在外。其重要的原因是没有有效的软件管理过程，项目开发过程基本是依赖于个人的能力，而不是企业的能力，如果软件企业建立了良好的软件项目管理体系，人员得到了良好的培训，那么软件质量将会得到保证，可以通过提高项目管理水平来提高软件产品的质量，这是不依赖于个人的能力，而依赖于企业的能力的。项目管理是一门艺术，它平衡了相互冲突的目标，管理了风险，克服了各种限制，以便成功地完成满足投资者和用户需要的软件。 
本书结合当今软件项目管理的实际情况和积累多年的实践经验，同时也注意与理论的结合，对软件项目管理进行了系统的总结。本书是一本系统的、有针对性的、具有实效性的书籍，对于从事软件项目的各类人员以及所有项目管理者，都会起到非常好的借鉴作用。 
韩万江
序言
进入21世纪，人类社会进入了信息经济时代，信息技术已成为所有高新技术发展的支撑技术。同时，信息技术及网络的高速发展，极大地推动了社会、经济的进步和人的思想、观念、文化的变革。其中最为显著的变化是推动了经济的全球化；反过来，经济的全球化又对信息技术及网络提出了更高的要求。 
在信息技术中，硬件技术的进步往往容易引起人们的重视和兴趣，而软件技术往往不被人们关注。20世纪微软公司等国际大型企业将软件技术的开发、生产和应用推向了高峰并使软件技术首次超越了硬件技术引起世人的关注。传统的软件开发、生产一直是依赖软件开发者的个体劳动，没有形成工业化的生产，从而制约了软件业的发展，也影响了信息技术的发展。尤其是软件的开发进度、质量和成本、风险的控制都是软件业的软肋。 
软件项目管理技术的产生正是为了解决这一问题。近年来出现了许多有关软件项目管理技术的研究报告和专业书籍，它们都从不同的领域和角度对软件项目管理进行了介绍。我国的软件产业起步比较晚，相比世界先进国家有较大差距，甚至和印度相比也有不小的差距。在软件开发的水平、软件产品的大规模高速高质量生产、软件产品的出口等方面，我国都是后进者。究其原因在于我国缺乏大批高质量的专业软件人才，尤其是缺乏高水平的软件业管理人才和掌握专业技能的软件产业工人。专业的软件产业人才的教育培养是中国软件业乃至信息业的当务之急。两年前，在国家教育部的领导下，一些大学成立了软件学院，开展软件专业人才的培养。但是，大学的教材几乎都是国外教材的翻译或改编，从国外引进教材无疑是一条捷径，可以吸收别人的成果避免走弯路，站在巨人的肩膀上前进。但是，国外的教材总是缺乏结合国内实际的内容，这是困扰我国软件专业人才培养的难题。 
北京邮电大学软件学院是教育部批准成立的第一批软件学院，经过几年的研究和实践，积累了许多经验。将这些经验和成果积集成书，教授给学生，无疑对我国软件业的发展具有重要意义。本书由北京邮电大学软件学院院长宋茂强教授主审，韩万江、姜立新编著，描述了软件项目管理的全过程，以一个完整的案例贯穿全书，将软件项目管理的理论、方法、技巧综合在一起。读者在学习本书时有如身历其境，通过对案例的分析、实验、讨论，能很好掌握软件项目管理的各种知识和技巧。本书是目前比较优秀的一本软件项目管理教材。全书深入浅出、图文并茂，每章后面都附有习题，便于读者掌握本章的内容，同时，本书的结构和内容适应面宽，可供不同层次的读者从中选择自己所需的知识。 
期望本书的出版能对我国软件专业人才的培养发挥其应有的作用！ 
北京邮电大学经济管理学院 
教授/博导 舒华英 
2004年10月29日