《软件项目管理原理与实践/21世纪高等学校规划教材·软件工程》全面而又系统地讲述了软件项目管理的相关思想、原理和实践,并提供来自业界最新的内容和进展。本书共11章,第1章是引言,第2~11章分别讲述了软件项目需求工程、软件项目成本估算、软件项目进度计划、软件项目风险管理、软件项目配置管理、软件项目合同管理、软件项目人力资源管理、Rational统一过程、敏捷项目管理、软件项目管理软件。
本书条理清晰、语言流畅、通俗易懂,在内容组织上力求自然、合理,循序渐进,并提供了丰富的实例和实践要点,更好地把握了软件工程学科的特点,使读者更容易理解所学的理论知识,掌握软件项目管理的应用之道。本书可作为高等学校的软件工程专业、计算机应用专业和相关专业的教材,成为软件开发工程师和项目经理的良师益友,并可作为其他各类软件工程技术人员的参考书。
在当今社会,一切都是项目,一切也将成为项目。美国项目管理专业人员资格(PMP)认证委员会主席Paul Grace最近这样断言道。
软件项目管理的实质,就是在复杂多变的软件环境中如何做好一件事。
今天,既然计算机软件开发正从个人英雄时代向着团队合作的时代迈进,那么,计算机软件项目的管理也从作坊式管理向着软件工厂式管理迈进。自从1968年软件危机以来,大规模软件工程,常被类比为困住恐龙的史前焦油坑,其复杂性一直难以控制。为此,软件项目超进度、超预算的例子数不胜数,低质量的软件也声名在外,其根本原因在于缺乏有效的软件管理过程。任何一个稍具规模的软件项目,都不能靠一个人完成,软件项目的背后必定会有一个团队的支持,体现出集体的智慧。软件专家们很早就发现,团队的生产力和个人的生产力的差距很大,都是以数量级为单位的。显而易见,人员和团队对项目成功举足轻重,员工希望有成长的空间,项目需要满足客户的需求。如何打造一个卓有成效的团队,让员工与项目和企业一起成长,是软件项目管理需要回答的问题。卓越的软件项目管理不仅产出成果,而且锻炼人员,并能开出美丽的团队之花。
软件项目管理提出的时间,是在20世纪70年代中期。当时,美国国防部专门研究了软件开发不能按时提交、预算超支、质量达不到用户要求的原因,结果发现,项目出现的70%的问题都是非技术原因,而是管理不善引起的。于是,如何改善软件项目管理,才在软件开发者中引起重视。为了管理好规模、复杂性都在不断增长的软件项目,软件工业一直在持续不断地改善软件项目管理的方法。21世纪,人类已经进入全球化的时代,很多事情的依赖程度越来越深,互动关系越来越重,使得软件项目管理不善的问题依然存在。软件工程的一个核心理念,是通过规范开发过程帮助提高开发效率和软件质量。在这个意义上,作为软件工程和项目管理的交叉学科,软件项目管理则是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而进行分析、管理的活动。
软件项目管理是一般项目管理的一个子集,但又不同于传统的项目管理,具有鲜明的、适应软件项目自身的特征。一方面,软件是纯知识产品,其开发速度和质量很难估计、度量,生产效率也难以预测、保证。另一方面,软件系统的复杂性,导致了开发过程中的各种风险难以预见、控制。在当今的软件项目中,项目管理的质量与软件产品的质量有着更加直接的对应关系。软件项目管理有利于将个人开发能力转化为企业的开发能力,企业的开发能力越高,表明该企业的软件生产越趋于成熟。随着信息技术的飞速发展,软件产品的规模也越来越庞大,各个软件企业都在积极将软件项目管理引入开发活动中,成功运作软件项目。
软件项目管理也是变理想为现实,化抽象为具体的一门科学和艺术。
到了21世纪,管理对象已经由普通员工变为知识型员工,员工的工作方式已经由手工、机械化转变为计算机、网络。作为软件工程的重要组成部分,软件项目管理的知识领域的相关过程、方法、工具随着软件工程学科的发展也经历了重大的变革。当然,软件开发是知识密集型活动,软件产品具备抽象性,因此软件项目管理的难度要比一般的工程项目管理的难度大。软件项目管理是一项十项全能运动,项目经理需要十八般武器样样精通,项目经理管理人员、技术、资源、风险的方法和技能,对软件项目的成败都有着至关重要的作用。软件项目管理对软件生产具有决定性的意义,它平衡了相互冲突的目标,管理了风险,克服了各种限制,以便成功地完成满足投资者和用户需要的软件。
全书由秦航任主编。第1、8章由秦航编写,第2、3章由林德树编写,第4、7章由邱林编写,第5、10章由徐杏芳编写,第6、9、11章由张健编写,全书由秦航负责统稿。借此机会,作者谨向为本书付出辛勤劳动和智慧的老师和全体同仁表示诚挚的谢意。
本书可作为高等院校“软件项目管理”相关课程的教材或教学参考书,也可供有一定实际经验的软件工程人员和需要进行软件项目管理的广大计算机用户阅读参考。由于作者水平有限,书中不当与疏漏之处在所难免,敬请读者和专家提出宝贵意见,以帮助作者不断地改进和完善。
编者
第1章引言
1.1项目和软件项目
1.1.1软件难做
1.1.2什么是项目
1.1.3软件项目及其产品特征
1.1.4软件工程层状模型和与时间相关的概念
1.2软件团队和项目目标
1.2.1软件开发中的各类问题
1.2.2设定目标
1.3管理和管理思想
1.3.1项目管理及其特点
1.3.2管理思想的发展
1.4项目管理的核心方法体系
1.4.1PMBOK
1.4.2PRINCE2
1.5项目经理和管理原则
1.5.1软件项目经理扮演的角色
1.5.2软件项目管理的原则
1.5.321世纪的管理者需要做什么
小结
思考题
第2章软件项目需求工程
2.1概述
2.1.1需求定义
2.1.2需求类型
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.4需求分析建模方法
2.4.1用例分析方法
2.4.2原型分析方法
2.4.3结构化分析方法
2.5需求管理工具
2.5.1需求管理工具的功能
2.5.2常用需求管理工具介绍
2.5.3需求管理工具的发展趋势
小结
思考题
第3章软件项目成本估算
3.1项目估算的挑战
3.2项目估算的基本内容
3.3规模估算
3.3.1德尔菲方法
3.3.2类比估算法
3.4工作量估算
3.4.1普特纳姆模型
3.4.2经验估算模型
3.4.3功能点分析的要素
3.4.4功能点计算
3.4.5开发阶段工作量估算
3.4.6实施阶段工作量估算
3.4.7维护阶段工作量估算
3.5开发工期估算
3.6成本估算方法
3.6.1咨询费
3.6.2建设费
3.6.3服务费
小结
思考题
第4章软件项目进度计划
4.1概述
4.2软件项目进度计划方法
4.2.1软件项目估算
4.2.2工作分解结构
4.2.3进度计划的技术方法
4.3案例研究: 某酒店管理系统的项目进度计划
小结
思考题
第5章软件项目风险管理
5.1风险概念
5.1.1项目风险带来的警示
5.1.2什么是风险管理
5.2风险管理模型
5.2.1玻姆模型
5.2.2SEI的CRM模型
5.2.3李维特模型
5.2.4CMU/SEI的CMMI风险管理模型
5.2.5微软的MSF风险管理模型
5.3风险管理计划
5.3.1风险管理计划的内容
5.3.2制定风险管理计划的工具与技术
5.3.3制定风险管理计划的输入、输出
5.4风险识别
5.4.1风险识别概述
5.4.2用于风险识别的方法
5.4.3风险识别的输入、输出
5.5风险分析
5.5.1定性风险分析
5.5.2定量风险分析
5.5.3定量风险分析的输入输出
5.5.4应对风险的基本措施
5.6风险监控
5.7案例研究: 风险管理实践
5.7.1公司背景简介
5.7.2实际项目分析
5.7.3实际的风险管理状况
5.7.4实施效果与总结分析
小结
思考题
第6章软件项目配置管理
6.1软件配置管理概览
6.1.1什么是软件配置管理
6.1.2软件配置管理的起源与发展
6.1.3软件配置管理能解决哪些问题
6.2软件配置管理的任务和活动
6.2.1软件和配置项
6.2.2标识
6.2.3变更控制
6.2.4状态报告
6.2.5配置审计
6.3软件配置管理的核心要素
6.3.1版本和版本树
6.3.2软件配置库
6.3.3工作空间
6.3.4变更请求与变更集
6.3.5软件配置管理工具
6.4软件配置管理的主要过程
6.4.1配置项标识与存储过程
6.4.2版本管理过程
6.4.3变更控制过程
6.4.4基线管理过程
6.5软件配置管理中的角色
6.5.1配置管理专职人员
6.5.2机构运营管理人员
6.5.3项目开发人员
6.6常用软件配置管理工具简介
6.6.1软件配置管理工具的发展历程
6.6.2面向文件的配置管理工具及功能
6.6.3面向变更集的配置管理工具及功能
6.6.4面向开发流程的配置管理工具及功能
6.7案例研究
小结
思考题
第7章软件项目合同管理
7.1合同管理概述
7.1.1合同的基本概念
7.1.2合同类型
7.1.3技术合同
7.2签订合同时应注重的问题
7.3软件项目合同条款分析
7.4合同管理
7.4.1合同管理概述
7.4.2合同收尾
7.5软件项目合同模板
小结
思考题
第8章软件项目人力资源管理
8.1软件企业中的人力资源
8.1.1软件企业经营管理透视
8.1.2管理者的管理技能
8.1.3管理体系与组织设计
8.2项目人员管理
8.2.1管理者和组织
8.2.2人力资源管理过程
8.2.3选择合适人选
8.2.4激励
8.3项目团队建设
8.3.1团队发展的阶段
8.3.2如何组建团队
8.3.3决策制定
8.3.4软件开发环境促进团队精神
8.3.5产品管理模式及组织结构
8.4沟通和协作
8.4.1沟通风格
8.4.2沟通计划
8.4.3合作依赖关系
8.4.4虚拟团队
8.5压力、心理资本、团队会议
8.5.1压力
8.5.2心理资本
8.5.3提升团队凝聚力
8.5.4团队会议
小结
思考题
第9章Rational统一过程
9.1软件过程模式定义
9.1.1几种典型的软件过程模式
9.1.2定义软件过程模式的意义
9.2Rational统一过程
9.2.1Rational简介
9.2.2RUP的二维结构
9.2.3阶段与里程碑
9.2.4RUP规程
9.2.5RUP模型、工件及信息流
9.3案例研究: 利用视图与用例来捕获和描述需求
小结
思考题
第10章敏捷项目管理
10.1概念及简介
10.1.1敏捷概述
10.1.2敏捷项目管理的焦点
10.1.3敏捷项目管理指导原则
10.1.4敏捷流程架构
10.2管理的角色与职责
10.2.1角色
10.2.2职责
10.3敏捷项目管理的特征
10.3.1敏捷方法的特点
10.3.2敏捷方法的核心思想
10.3.3敏捷型方法的含义及其特征
10.3.4敏捷方法的适用范围
10.3.5主要敏捷方法简介
10.4敏捷项目管理基础
10.5案例分析: 敏捷开发技术在电子商务软件中的应用
10.5.1说明
10.5.2项目组织机构
10.5.3项目实施过程
10.5.4项目实施效果
小结
思考题
第11章软件项目管理软件
11.1Project简介
11.1.1Project系列产品
11.1.2启动Project
11.1.3视图
11.1.4报表
11.1.5创建新项目计划
11.1.6设置非工作日
11.2创建任务列表
11.2.1输入任务
11.2.2估计工期
11.2.3输入里程碑
11.2.4分阶段组织任务
11.2.5链接任务
11.2.6记录任务
11.2.7检查任务工期
11.3设置资源
11.3.1设置人员资源
11.3.2设置设备资源
11.3.3设置材料资源
11.3.4设置成本资源
11.3.5输入资源费率
11.3.6为单个资源调整工作时间
11.3.7记录资源
11.4分配资源
11.4.1为任务分配工时资源
11.4.2为任务分配额外资源
11.4.3为任务分配材料资源
11.4.4为任务分配成本资源
小结
思考题
参考文献