本书以案例的形式,讲述了软件项目管理的全过程,并辅以一个贯穿始终的案例。本书向软件项目管理人员传授项目管理的理论、方法以及技巧。通过本书学习,读者可以在短时间内掌握软件项目管理的基本知识和实践能力。本书不仅覆盖了PMBOK的主要内容而且强调了在软件这个特殊的领域如何进行项目管理。本书系统地讲述了软件项目管理的实施过程,共分15章,取材新颖,注重实效,讲授了软件项目经理的主要工作、职责和权利。其中贯穿本书的核心是如何开发软件项目计划和如何进行软件项目的跟踪管理。本书综合了多个学科领域,包括范围计划、成本计划、时间计划、质量计划、变更计划、风险计划、度量计划、沟通计划等计划的制定,以及项目实施过程中如何对项目进行跟踪控制。本书注重理论与实际的结合,通过实际工作中的案例说明帮助读者消化和理解所学的内容。本书既适合作为高等院校计算机及相关专业高年级本科生和研究生的教材,也适合作为培训项目经理和广大软件技术人员的教材;同时对于希望了解软件开发项目管理的各类读者,本书也是一本较好的参考读物。本书不仅覆盖了PMBOK的9大知识领域,并且突出了软件项目的特殊性,同时也包括了SW-CMM的有关项目管理过程域,是系统、全面、有针对性的软件项目管理教材。本书有理论、有实践、有案例,不仅可以作为高校软件学院及相关专业的教材,而且也可作为专业技术人员学习软件项目管理知识的参考书。本书的特点如下:·内容全面系统:不仅覆盖了EMBOK的主要内容,而且强调了在软件这个特殊领域如何进行项目管理:同时,本书全面系统地讲述了软件项目管理的全过程。·结合国内实际:北京邮电大学软件学院是国家教育部批准成立的第一批软件学院,经过几年的研究和实践,积累了许多经验。本书由软件学院院长宋茂强教授主审,韩万江、姜立新编著,是一本结合国内教学实际、汇集大量实践经验的心血之作。·实践性强:采用案例形式来描述软件项目管理的全过程,以一个完整的案例贯穿全书,通过实际工作中的案例说明帮助读者消化和理解所学的内容,迅速提高实用能力。·为教师配有电子教案:利用本书为教师配备的电子教案,可以减轻教师负担,提高教学质量。 随着信息技术的飞速发展, 软件产品的规模也越来越庞大, 各软件企业都在积极将软件项目管理引入到开发活动中, 对软件项目实行有效的管理. 软件项目管理是为了使软件项目能够按照预定的成本. 进度. 质量顺利完成而进行分析和管理的活动. 另外, 进行软件项目管理有利于将个人开发能力转化成企业的开发能力, 企业的软件开发能力越高, 表明这个企业的软件生产越趋向于成熟, 企业越能够稳定发展. 软件项目管理的提出是在20世纪70年代中期的美国, 当时美国国防部专门研究了软件开发不能按时提交. 预算超支和质量达不到用户要求的原因, 结果发现70%的项目出现问题是因为管理不善引起的, 而非技术原因. 于是, 软件开发者开始逐渐重视软件开发中的各项管理. 到了20世纪90年代中期, 软件项目管理不善的问题仍然存在. 软件项目管理和其他的项目管理相比有相当的特殊性. 首先, 软件是纯知识产品, 其开发进度和质量很难估计和度量, 生产效率也难以预测和保证. 其次, 软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制. 因此, 项目管理对软件生产具有决定性的意义. 特别是在当今的软件项目中, 项目管理的质量与软件产品的质量有着直接的对应关系. 因此, 提高项目管理的能力对于软件组织生产力的提高是极为重要的. 软件项目超进度超预算的例子举不胜举, 而且低质量的软件也名声在外. 其重要的原因是没有有效的软件管理过程, 项目开发过程基本是依赖于个人的能力, 而不是企业的能力, 如果软件企业建立了良好的软件项目管理体系, 人员得到了良好的培训, 那么软件质量将会得到保证, 可以通过提高项目管理水平来提高软件产品的质量, 这是不依赖于个人的能力, 而依赖于企业的能力的. 项目管理是一门艺术, 它平衡了相互冲突的目标, 管理了风险, 克服了各种限制, 以便成功地完成满足投资者和用户需要的软件. 本书结合当今软件项目管理的实际情况和积累多年的实践经验, 同时也注意与理论的结合, 对软件项目管理进行了系统的总结. 本书是一本系统的. 有针对性的. 具有实效性的书籍, 对于从事软件项目的各类人员以及所有项目管理者, 都会起到非常好的借鉴作用. 本书案例由北京科力拓技术发展有限公司提供, 更多详细信息可以登录www.Qualitytd.com.cn查询, 或者发Email到Info@Qualitytd.com.cn咨询. 当然, 由于作者水平有限, 难免有疏漏之处, 诚请各位读者批评指正, 并希望将你们在实际工作中如何运用本书的体会告诉我, 以便我在下一版中进行完善. 另外, 我还会陆续出版有关软件项目管理过程中更加详细的案例指导说明, 希望读者关注. 我的Email是:casey_han@263.net. 韩万江序 进入21世纪, 人类社会进入了信息经济时代, 信息技术已成为所有高新技术发展的支撑技术. 同时, 信息技术及网络的高速发展, 极大地推动了社会. 经济的进步和人的思想. 观念. 文化的变革. 其中最为显著的变化是推动了经济的全球化, 反过来, 经济的全球化又对信息技术及网络提出了更高的要求. 在信息技术中, 硬件技术的进步往往容易引起人们的重视和兴趣, 而软件技术往往不被人们关注. 20世纪微软公司等国际大型企业将软件技术的开发. 生产和应用推向了高峰并使软件技术首次超越了硬件技术引起世人的关注. 传统的软件开发. 生产一直是依赖软件开发者的个体劳动, 没有形成工业化的生产, 从而制约了软件业的发展, 也影响了信息技术的发展. 尤其是软件的开发进度. 质量和成本. 风险的控制都是软件业的软肋. 软件项目管理技术的产生正是为了解决这一问题. 近年来出现了许多有关软件项目管理技术的研究报告和专业书籍, 它们都从不同的领域和角度对软件项目管理进行了介绍. 我国的软件产业起步比较晚, 相比世界先进国家有较大差距, 甚至和印度相比也有不小的差距. 在软件开发的水平. 软件产品的大规模高速高质量生产. 软件产品的出口等方面, 我国都是后进者. 究其原因在于我国缺乏大批高质量的专业软件人才, 尤其是缺乏高水平的软件业管理人才和掌握专业技能的软件产业工人. 专业的软件产业人才的教育培养是中国软件业乃至信息业的当务之急. 两年前, 在国家教育部的领导下, 一些大学成立了软件学院, 开展软件专业人才的培养. 但是, 大学的教材几乎都是国外教材的翻译或改编, 从国外引进教材无疑是一条捷径, 可以吸收别人的成果避免走弯路, 站在巨人的肩膀上前进. 但是, 国外的教材总是缺乏结合国内实际的内容, 这是困扰我国软件专业人才培养的难题. 北京邮电大学软件学院是教育部批准成立的第一批软件学院, 经过几年的研究和实践, 积累了许多经验. 将这些经验和成果积集成书, 教授给学生, 无疑对我国软件业的发展具有重要意义. 本书由北京邮电大学软件学院院长宋茂强教授主审, 韩万江. 姜立新编著, 描述了软件项目管理的全过程, 以一个完整的案例贯穿全书, 将软件项目管理的理论. 方法. 技巧综合在一起. 读者在学习本书时有如身历其境, 通过对案例的分析. 实验. 讨论, 能很好掌握软件项目管理的各种知识和技巧. 本书是目前比较优秀的一本软件项目管理教材. 全书深入浅出. 图文并茂, 每章后面都附有习题, 便于读者掌握本章的内容, 同时, 本书的结构和内容适应面宽, 可供不同层次的读者从中选择自己所需的知识. 期望本书的出版能对我国软件专业人才的培养发挥其应有的作用! 北京邮电大学经济管理学院 教授/博导舒华英 2004年10月29日 序 前言 第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