软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。本书分为基础篇、管理篇和实践篇。基础篇介绍了软件产业和软件项目管理导论,使读者从整体上了解软件项目管理的产生背景和概貌。管理篇以项目管理知识体系(PMBOK)为核心,围绕着软件项目的开发全过程,从软件项目需求管理、软件项目成本管理、软件项目进度管理、软件项目风险管理、软件项目配置管理、软件项目资源管理、软件项目质量管理等方面对软件项目中的管理问题进行探讨。实践篇将需求管理、成本管理、进度管理、风险管理、配置管理、资源管理和质量管理等相对独立的领域融合在软件过程框架中,介绍了在软件项目实践中如何集中使用相关理论和技术。其中包括Rational统一过程、敏捷软件开发和6σ软件开发。
本书可作为高等学校信息、软件、计算机科学与技术等专业的学生的教材,也可供从事软件项目管理工作的人员参考。
第2版前言
软件及信息产业的发展将带动传统产业的发展与改造,促进国民经济持续、健康地发展,增强国际竞争力。因而,软件产业快速、良性的发展具有重要意义。早在2001年,我国政府就明确提出“力争在2010年使我国软件产业的研究开发和生产能力达到或接近国际先进水平”。2009年国务院通过的《电子信息产业调整振兴规划》更是把“提高软件产业自主发展能力”确定为振兴我国电子信息产业的三大重点任务之一。
20世纪60年代,软件和硬件之间的发展的不平衡导致的软件危机的产生,也是软件产业面临的一个亟待解决的难题,随着科学的进步和软件开发技术的逐步成熟,管理在软件产业中的地位突显出来,变得越来越重要,学者们提出了用工业界工程化的思想,即软件工程的思想去解决软件发展中的一些问题。同样,针对软件产业中的管理问题,采用了工程中项目管理的思想,由此促使了软件项目管理学科的出现。
软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。与一般的工程项目相比,软件项目有其特殊性,主要体现在软件产品的抽象性上。因此,软件项目管理的难度要比一般的工程项目管理的难度大。
自第1版付印以来,软件项目管理思想和方法有了一些新的发展; 作者对软件项目管理的认识也更加深入; 教学过程中也得到一些有价值的反馈信息。为了全面反映软件项目管理的发展,作者对第1版的结构和内容作了较大篇幅的调整与更新,完成了本书第2版。
第2版分为基础篇、管理篇和实践篇。将第1版的第1章、第8章整合为基础篇,介绍了软件产业和软件项目管理导论,使读者从整体上了解软件项目管理的产生背景和概貌。管理篇以项目管理知识体系(PMBOK)为核心,围绕着软件项目的开发全过程,从软件项目需求管理、软件项目成本管理、软件项目进度管理、软件项目风险管理、软件项目配置管理、软件项目资源管理、软件项目质量管理等方面对软件项目中的管理问题进行探讨。其中,第1版的第3章拆分为软件项目成本管理和软件项目进度管理两章; 第1版第6章的CMM进化为第2版第8章的CMMI。实践篇将需求管理、成本管理、进度管理、风险管理、配置管理、资源管理和质量管理等相对独立的领域融合在软件过程框架中,介绍了在软件项目实践中如何集中使用相关理论和技术。其中包括Rational统一过程、敏捷软件开发和6σ软件开发。对第1版的大部分内容,结合技术的最新发展也进行了全面的更新。
丰富的案例故事和案例分析也是第2版的一个特色。管理篇的每章都通过一个案例故事引出本章主要内容,并将案例故事的解析穿插在理论介绍中,理论结合实践。全书的每一章都包含多个完整的案例分析,有正面的成功案例,也有反面的失败案例。通过案例分析,强化每一章的理论知识,吸取经验,反思教训。
在本书的编写过程中,得到了清华大学信息学院、软件学院、计算机科学与技术系、西安交通大学计算机科学与技术系、电子商务研究所、计算机软件研究所许多教师的支持和指教; 同时也得到了清华大学出版社的大力支持。我们在此表示衷心的感谢。本书的编写参考了大量的文献和互联网资源,我们对所有这些文献著作者和网站版权所有者表示真诚的谢意。
本书由覃征教授确定研究内容和整体结构并审核,第一、二篇由唐晶编写,第三篇由徐文华编写并统稿,韩毅博士也参加了本书的编写与审核工作。
由于水平有限,加之软件产业的发展非常迅速,书中难免有疏漏和不妥之处,敬请读者批评指正。
编者
2009年6月于清华园
目录
第一篇基础篇
第1章软件项目管理导论
1.1软件市场
1.1.1软件商品特征
1.1.2软件的成本
1.1.3软件的定价
1.1.4软件市场的垄断现象
1.1.5软件市场的发展现状
1.2软件产业
1.2.1软件产业的特点
1.2.2软件产业在国民经济中的地位
1.2.3国外软件产业发展策略
1.2.4资料: 印度新经济产业
1.2.5对我国软件产业发展策略的认识
1.3软件工程
1.3.1软件工程定义
1.3.2软件工程框架
1.3.3软件工程模型
1.4项目管理框架
1.4.1项目与项目管理
1.4.2项目管理知识体系
1.4.3项目管理学科的发展
1.5软件项目管理
1.5.1软件项目产品的特点
1.5.2软件项目失控的原因
1.5.3软件项目管理的内容
1.6小结
第二篇管理篇
第2章软件项目需求管理
案例故事
2.1需求工程
2.1.1软件需求概念
2.1.2软件需求层次
2.1.3软件需求质量评价
2.1.4需求工程发展历程
2.1.5需求工程研究内容
2.2需求开发
2.2.1需求开发活动
2.2.2需求获取
2.2.3需求分析
2.2.4编写需求文档
2.2.5需求验证
2.2.6案例: 某公司“船代”项目的需求开发
2.3需求管理
2.3.1需求管理的必要性
2.3.2需求管理的困难性
2.3.3需求管理的目标和原则
2.3.4需求管理活动
2.3.5需求变更管理
2.3.6需求状态
2.3.7需求文档版本控制
2.3.8需求跟踪
2.3.9案例: 需求变更的代价
2.4案例故事解析
2.4.1需求开发的注意事项
2.4.2需求管理的注意事项
2.5小结
第3章软件项目成本管理
案例故事
3.1概述
3.1.1成本
3.1.2成本管理
3.1.3成本估算的时机
3.2软件项目规模估算
3.2.1WBS
3.2.2LOC估计
3.2.3FP估计
3.2.4PERT估计
3.3软件项目成本估算
3.3.1软件生产率估算
3.3.2软件项目成本估算方法
3.3.3软件项目成本估算模型
3.3.4软件项目成本估算步骤
3.3.5软件项目成本预算制订
3.3.6案例: 过分乐观的估算
3.4软件项目成本监控
3.4.1成本管理常见问题
3.4.2软件项目成本监控要素
3.4.3赢得值分析法
3.4.4案例: 某项目第4月度成本控制状态报告
3.5案例: 精确到螺丝钉的成本控制
3.6案例故事解析
3.7小结
第4章软件项目进度管理
案例故事
4.1概述
4.1.1时间管理原则
4.1.2时间管理技巧
4.1.3软件项目进度管理内容
4.1.4项目活动定义
4.2项目活动排序和历时估计
4.2.1确定活动顺序
4.2.2网络图
4.2.3甘特图
4.2.4项目历时估计
4.2.5案例: 应用PERT估算项目历时
4.3制订项目计划
4.4项目进度监控
4.5案例: 某软件研发的项目计划和进度控制
4.6案例故事解析
4.7小结
第5章软件项目风险管理
案例故事
5.1概述
5.1.1风险
5.1.2软件风险
5.1.3软件项目风险管理
5.1.4软件项目风险管理的意义
5.2风险识别
5.2.1风险识别依据
5.2.2常见软件风险
5.2.3风险识别过程
5.2.4风险识别方法与技术
5.2.5案例: 英达公司用TOP10法识别项目风险
5.3风险分析
5.3.1风险分析过程
5.3.2风险分析技巧与工具
5.3.3风险分析的成果
5.4风险跟踪与应对
5.4.1风险跟踪的目标和依据
5.4.2风险跟踪的成果
5.4.3风险跟踪的过程
5.4.4风险应对策略
5.4.5风险应对过程
5.4.6案例: 金融行业使用容灾系统有效应对突发事件
5.5风险管理验证
5.6案例: 风险管理保障奥运场馆建设
5.7案例故事解析
5.8小结
第6章软件项目配置管理
案例故事
6.1概述
6.1.1基本概念
6.1.2软件配置管理定义
6.1.3软件配置管理过程
6.1.4软件配置管理过程活动
6.2配置管理策划
6.2.1软件配置管理组织
6.2.2软件配置管理职责
6.2.3软件配置管理文件体系
6.2.4配置管理计划的大纲
6.3配置管理功能
6.3.1配置标识
6.3.2版本控制
6.3.3变更管理
6.3.4配置状态报告
6.3.5案例: Kevin团队使用配置管理加快开发速度
6.4配置审核
6.4.1配置审核概念
6.4.2配置审核内容
6.4.3配置审核的种类
6.4.4软件交付
6.4.5软件配置管理的功能表
6.5基于构件的配置管理
6.5.1软件复用
6.5.2软件构件技术
6.5.3基于构件的版本管理
6.5.4基于构件的配置管理
6.5.5案例: 河电集团某研究所的系统集成
6.6案例故事解析
6.7小结
第7章软件项目资源管理
案例故事
7.1人力资源管理
7.1.1人力资源管理概念
7.1.2人力资源分析与策划
7.1.3人力资源的获取
7.1.4团队组织和分工
7.1.5团队建设
7.1.6人力资源评估
7.1.7案例: 诺基亚如何建设优秀团队
7.2软件资源管理
7.2.1软件资源基本概念
7.2.2软件资源的复用方式
7.2.3软件复用的粒度
7.2.4可复用软件资源的管理
7.2.5CASE工具及其管理
7.3硬件资源管理
7.3.1硬件资源管理概念
7.3.2硬件设备的经济管理
7.3.3硬件设备的技术管理
7.4案例故事解析
7.5小结
第8章软件项目质量管理
案例故事
8.1质量管理的概念
8.1.1软件质量
8.1.2软件产品质量与过程质量
8.1.3软件质量保证
8.2软件评审
8.3软件测试
8.3.1软件测试的概念
8.3.2软件测试类型
8.3.3测试的原则
8.3.4测试计划
8.3.5测试用例的开发
8.3.6测试的执行与报告
8.3.7案例: 微软的软件测试技术
8.4软件缺陷跟踪
8.5软件缺陷预防
8.5.1问题的提出
8.5.2缺陷预防的原则
8.5.3缺陷预防的步骤
8.6ISO 9000:2000质量认证体系
8.6.1ISO 9000的概念
8.6.2ISO 9000标准的8项质量管理原则
8.6.3获得ISO 9000认证的条件和程序
8.7能力成熟度集成模型CMMI
8.7.1CMM的提出
8.7.2CMM的基本内容
8.7.3从CMM到CMMI
8.7.4CMMI的表示
8.7.5CMMI过程的可视性
8.7.6CMMI的实施
8.7.7CMMI的评估
8.8案例故事解析
8.9小结
第三篇实践篇
第9章Rational统一过程
9.1什么是Rational统一过程
9.2核心概念
9.2.1架构
9.2.2工作流程
9.2.3角色
9.2.4活动
9.2.5步骤
9.2.6工件
9.36个最佳实践
9.3.1迭代式的软件开发
9.3.2需求管理
9.3.3使用基于构件的架构,以架构为中心的过程
9.3.4可视化软件建模
9.3.5验证软件质量
9.3.6控制软件变更
9.3.7案例: 利用视图和用例来捕获和描述需求
9.4RUP的二维结构
9.4.1动态结构: 阶段和迭代时间轴
9.4.2静态结构: 工作流程轴
9.5核心工作流程
9.5.1业务建模工作流程
9.5.2需求工作流程
9.5.3分析和设计工作流程
9.5.4实现工作流程
9.5.5测试工作流程
9.5.6部署工作流程
9.5.7配置和变更管理工作流程
9.5.8项目管理工作流程
9.5.9环境工作流程
9.6小结
第10章敏捷软件开发
10.1敏捷软件开发的诞生
10.2敏捷软件开发宣言
10.3敏捷宣言遵循的原则
10.4对比其他的方法
10.5敏捷软件开发的适用性
10.6极限编程概述
10.6.1价值观
10.6.2原则
10.6.3行为
10.6.4实践
10.6.5极限编程小结
10.7Scrum
10.7.1一个简单的框架
10.7.2Scrum过程
10.7.33个角色
10.7.43项活动
10.7.53种工具
10.7.6自适应的项目管理
10.7.7Scrum较传统开发模型的优点
10.7.8案例: Scrum在开发中的应用
10.8小结
第11章将6σ管理引入软件开发
11.16σ的故事
11.26σ理论基础
11.2.1平均值屏蔽了问题,波动成了焦点
11.2.2“波动”问题的数学描述
11.2.36σ的数学含义
11.2.4其他术语
11.36σ管理
11.4使用6σ改善软件开发过程
11.4.1项目启动和问题定义阶段
11.4.2系统分析
11.4.3系统设计
11.4.4构造
11.4.5测试和质量保证
11.4.6交付和维护
11.5案例: 如何实施DMAIC过程
11.5.1定义阶段
11.5.2度量阶段
11.5.3分析阶段
11.5.4改进阶段
11.5.5控制阶段
11.6小结
附录A可行性分析报告
附录B需求规格说明书
附录C项目开发计划
附录D概要设计说明书
附录E详细设计说明书
附录F用户操作手册
附录G测试计划
附录H测试分析报告
附录I程序维护手册
附录J项目总结报告
附录KISO 9001:2000标准的内容
参考文献