《软件项目管理(原书第5版)》是经典的项目管理课程教材,采用步进式策划方法逐一分析了软件开发的各个环节。主要内容包括:项目评价、项目集管理、项目策划、选择合适的项目方法、软件工作量估计、活动策划、风险管理、资源分配、监督与控制、管理合同、人员管理、团队管理和软件质量等。书中附有大量的实例和辅助练习,并在附录中给出了练习的答案。
《软件项目管理(原书第5版)》不仅适合作为计算机及相关专业的本科生和研究生教材,而且适合软件项目管理人员和软件开发人员阅读,还特别适合作为BCS/ISEB专业考试的参考书。
《软件项目管理(原书第5版)》为了涵盖软件项目管理的新进展,本版进行了全面更新,新增和扩展的主题如下: ·沟通策划。 ·敏捷方法,包括XP(极限编程)、Scrum和DSDM COCOMO2. ·项目组合管理。 ·新增一章,主要是关于合作、分散和虚拟团队管理。 ·职业道德规范。
休斯(Bob Hugtles),曾在产业界和高等教育界担任各种职务,现在是英国布莱顿大学信息管理学院信息系统部的负责人。他还是BCS/ISEBI项目管理认证考试的主考官和相关培训课程的主讲老师。
考特莱尔(Mike Cotterell),曾是英国布莱顿大学信息管理学院的高级讲师。
廖彬山,先后就读干南京大学数学系和北京航空航天大学计算机科学与技术系。现在是美国CMU/SEI认证CMMI主任评估师(CMU/SEI-certified SCAMPI Lead .Appraiser),北京国信普道科技有限公司CMMI首席顾问,北京航空航天大学软件学院客座教授。目前主要从事CMMI的培训、咨询和评估工作及软件工程理论与方法的研究工作。迄今为止,成功地为几十家不同类型、不同规模、不同应用领域的企业进行了基于CMM和CMMI的咨询和评估工作,积累了丰富的实践经验,有效地解决了企业实际存在的问题;成功地为国内近百家企业提供了软件估算、软件度量与量化管理、功能点、统计过程控制、高成熟度组织的过程改进、个体软件过程(PSP)、团队软件过程(TSP)、需求工程、缺陷管理、软件测试、同行评审、持续风险管理、统一软件开发过程等专题培训,有效地提高了国内企业的项目管理和工程开发能力。
周卫华,先后就读于国防科技大学、同济大学计算机科学与技术专业,具有多年软件开发以及项目管理实践经验,近年来主要从事企业质量管理体系的建立和过程改进方面的工作。
出版者的话
译者序
译者简介
前言
第l章 软件项目管理引言
1.1 引言
1.2 为什么软件项目管理很重要
1.3 什么是项目
1.4 软件项目和其他类型的项目
1.5 合同管理和技术项目管理
1.6 软件项目管理覆盖的活动
1.7 计划、方法和方法学
1.8 软件项目的分类方式
1.8.1 强制使用用户和自愿使用用户
1.8.2 信息系统与嵌入式系统
1.8.3 目标与产品
1.9 利益相关者
1.10设定目标
1.10.1 子目标和目标
1.10.2 有效性度量
1.11 业务案例
1.12 项目成败
1.13 什么是管理
1.14 管理控制
1.15 小结
附件项目策划内容列表
1.1 6进一步的练习
第2章 项目评价和项目集管理
2.1 引言
2.2 业务案例
2.2.1 介绍和背景
2.2.2 提议项目
2.2.3 市场
2.2.4 组织和运营基础架构
2.2.5 效益
2.2.6 概括实施计划
2.2.7 成本
2.2.8 经济论证,
2.2.9 风险
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 投资回报率
2.5.4 净现值
2.5.5 内部回报率
2.6 风险评价
2.6.1 风险标识和排等级
2.6.2 风险和净现值
2.6.3 成本效益分析
2.6.4 风险剖面分析
2.6.5 使用决策树
2.7 项目集管理
2.7.1 商业周期项目集
2.7.2 战略项目集
2.7.3 基础设施项目集
2.7.4.研究和开发项目集
2.7.5 创新的伙伴关系
2.8 管理项目集内的资源分配
2.9 项目集管理策略
2.10 创建项目集
2.10.1 项目集命令
2.10.2 项目集摘要
2.10.3 构想陈述
2.10.4 蓝图
2.11 辅助项目集管理
2.11.1 依赖关系图
2.11.2 交付计划
2.12对项目集管理的保留意见
2.13收益管理
2.14小结
2.1 5进一步的练习
第3章 项目策划概述
3.1 步进式项目策划概述
3.2 第0步:选择项目
3.3 第1步:标识项目的范围和目标
3.3.1 步骤1.1 标识目标以及满足目标有效性的实用度量
3.3.2 步骤1.2 确立项目的全权管理者
3.3.3 步骤1.3 项目利益相关者分析——标识项目中所有的项目利益相关者以及他们的利益
3.3.4 步骤1.4 根据项目利益相关者的分析修改项目目标
3.3.5 步骤1.5 确定各部门之间的沟通方法
3.4 第2步:标识项目的基础设施
3.4.1 步骤2.1 确立项目和战略策划之间的关系
3.4.2 步骤2.2 标识安装标准和规程
3.4.3 步骤2.3 标识项目组的组织结构
3.5 第3步:分析项目的特征
3.5.1 步骤3.1 识别项目是目标驱动的还是产品驱动的
3.5.2 步骤3.2 分析项目的其他特征(包括基于质量的特征)
3.5 0步骤3.3 标识项目的高级别风险
3.5.4 步骤3.4 考虑关于实现方面的用户需求
3.5.5 步骤3.5 选择开发方法学和生命周期方法
3.5.6 步骤3.6 评审整体资源估计
3.6 第4步:标识项目的产品和活动
3.6.1 步骤4.1 标识和描述项目的产品(或可交付物)
3.6.2 步骤4.2 文档化共性产品流
3.6.3 步骤4.3 标识产品实例
3.6.4 步骤4.4 产生理想的活动网络图
3.6.5 步骤4.5 根据阶段和检查点的需要修改理想的活动网络
3.7 第5步:估算每个活动的工作置
3.7.1 步骤5.1 执行由底向上的估计
3.7.2 步骤5.2 修改策划创建可控制的活动
3.8 第6步:标识活动的风险
3.8.1 步骤6.1 标识和量化基于活动的风险
3.8.2 步骤6.2 计划合适的风险缓解和应急措施
3.8.3 步骤6.3 根据风险调整计划和估计
3.9 第7步:分配资源
3.9.1 步骤7.1 标识和分配资源
3.9.2 步骤7.2 根据资源约束修改计划和估计
3.10 第8步:评审/发布计划
3.10.1 步骤8.1 评审项目计划的质量
3.10.2 步骤8.2 文档化计划并取得一致意见
3.11 第9步和第10步:执行计划并进行较低层次的策划
3.12 小结
3.13 进一步的练习
第4章 选择合适的项目方法
4.1 引言
4.2 构建还是购买
4.3 选择方法学和技术
4.3.1 将项目标识为目标驱动的或产品
驱动的
4.3.2 分析其他项目特征
4.3.3 标识高级别项目风险
4.3.4 考虑与实现有关的用户需求
4.3.5 选择通用的生命周期方法
4.4 过程模型的选择
4.5 结构与交付速度
4.6 瀑布模型
4.7 螺旋模型
4.8 软件原型开发
4.9 分类原型的其他方法
4.9.1 要从原型中学到什么
4.9.2 原型要做到什么程度
4.9.3 哪些要进行原型化
4.9.4 在原型开发期间控制变更
4.10 增量式交付
4.10.1 优点
4.10.2 缺点
4.10.3 增量式交付计划
4.10.4 系统目标
4.10.5 开放的技术计划
4.10.6 增量式计划
4.10.7 增量示例
4.11 敏捷方法
4.12 Atern/动态系统开发方法
4.13 极限编程
4.13.1 策划活动
4.13.2 小规模发布软件
4.13.3 隐喻
4.13.4 简单设计
4.13.5 测试
4.13.6 重构
4.13.7 结对编程
4.13.8 集体所有
4.13.9 持续集成
4.13.10 每周40小时的工作时间
4.13.11 现场客户
4.13.12 编程标准
4.13.13 XP的局限性
4.14 管理迭代过程
4.15 选择最合适的过程模型
4.16 小结
4.17 进一步的练习
第5章 软件工作量估计
5.1 引言
5.2 在何处进行估计
5.3 估计过高和估计过低的问题
5.4 软件估计基础
5.4.1 需要历史数据
5.4.2 工作的度量
5.5 软件工作量估计技术
5.6 由底向上估计
5.7 自顶向下法和参数模型
5.8 专家判断
5.9 类比估计
5.10 Albrecht功能点分析
5.11 MarkII功能点
5.12 COSMIC全功能点
5.13 COCOMOII:参数化的生产率模型
5.14 小结
5.15 进一步的练习
第6章 活动策划
6.1 引言
6.2 活动策划的目的
6.3 何时计划
6.4 项目进度表
6.5 项目和活动
6.5.1 定义活动
6.5.2 标识活动
6.6 确定活动的次序和进度
6.7 网络策划模型
6.8 网络模型的公式化表示
6.8.1 构造优先网络
6.8.2 描绘滞后活动
6.8.3 集合活动
6.8.4 标注约定
6.9 增加时间维
6.10 正向遍历
6.1 l反向遍历
6.1 2标识关键路径
6.1 3活动缓冲期
6.1 4缩短项目周期
6.1 5标识关键活动
6.1 6活动一箭头网络
6.1 6.1 活动一箭头网络的规则和约定
6.1 6.2 使用虚活动
6.1 6.3 描绘滞后的活动
6.1 6.4 给活动加标签
6.1 6.5 网络分析
6.1 7小结
6.1 8进一步的练习
第7章风险管理
7.1 引言
7.2 风险
7.3 风险分类
7.4 处理风险框架
7.5 风险识别
7.6 风险评估
7.7 风险策划
7.7.1 接受风险
7.7.2 规避风险
7.7.3 降低风险
7.’7.4.转移风险
7.8 风险管理
7.8.1 应急
7.8.2 风险应对措施的决策
7.8.3 创建和维护风险记录
7.9 评价进度风险
7.10 应用PERT技术
7.10.1 使用PERT评价不确定性的影响
7.10.2 使用期望周期
7.10.3 活动标准偏差
7.10.4 满足目标的可能性
7.10.5 计算每个项目事件的标准偏差
7.10.6 计算z值
7.10.7 转换z值为概率
7.10.8 PERI的优点
7.11 蒙特卡洛仿真
7.12 关键链概念
7.12.1 获得最可能的活动周期
7.12.2 利用活动的最晚开始时间
7.12.3 插入项目和汇入缓冲期
7.12.4 一个样例
7.12.5 项目实施
7.13 小结
7.14 进一步的练习
第8章 资源分配
8.1 引言
8.2 资源的性质
8.3 标识资源需求
8.4 资源调度
8.5 创建关键路径
8.6 计算成本
8.7 特定的细节
8.8 发布资源进度表
8.9 成本进度
8.10 调度顺序
8.11 小结
8.12 进一步的练习
第9章 监督与控制
9.1 引言
9.2 创建框架
9.2.1 责任
9.2.2 进展评估
9.2.3 设置检查点
9.2.4 取快照
9.3 收集数据
9.3.1 局部完成报告
9.3.2 红黄绿交通灯报告
9.4 进展可视化
9.4.1 甘特图
9.4.2 延迟图
9.4.3 时间线
9.5 成本监督
9.6 挣值分析
9.6.1 基线预算
9.6.2 监督挣值
9.6.3 进度偏差
9.6.4 时间偏差
9.6.5 成本偏差
9.6.6 性能比
9.7 优先级控制
9.8 使项目返回目标
9.8.1 缩短关键路径
9.8.2 重新考虑优先需求
9.8.3 维护业务案例
9.8.4 异常计划
9.9 变更控制
9.9.1 变更控制规程
99.2 系统范围的变更
9.9.3 配置库管理员的职责
9.10 小结
9.11 进一步的练习
第10章 管理合同
10.1 引言
10.2 合同的种类
10.2.1 固定价格合同
10.2.2 时间和材料合同
10.2.3 每单位固定价格合同
10.2.4 公开的投标过程
10.2.5 受限制的投标过程
10.2.6 谈判规程
103合同部署阶段
10.3.1 需求分析
10.3.2 评估计划
10.3.3 邀请投标
10.3.4 评估提议
1014典型的合同条款
10.4.1 定义
10.4.2 协议的形式
10.4.3 供应的商品和服务
10.4.4 软件的所有权
10.4.5 环境
10.4.6 客户承诺
10.4.7 验收规程
10.4.8 标准
10.4.9 项目和质量管理
10.4.10 时间表
L0.4.11 价格和付款方式
10.4.12 其他法律上的需求
10.5 合同的管理
10.6 验收
10.7 小结
10.8 进一步的练习
第11章 人员管理
11.1 引言
11.2 理解行为
11.3 组织行为:背景
11.4 为工作选择合适人选
11.5 用最好的方法进行教育
11.6 激励
11.6.1 raylodst模型
11.6.2 Maslow的需求层次
11.6.3 Herzberg的双因素理论
11.6.4 工作热情的期待理论
11.7 Oldham-HackmanI作特征模型
11.8 压力
11.9 健康和安全
11.10 职业道德注意事项
11.11 小结
11.12 进一步的练习
第12章 团队管理
12.1 引言
12.2 组成团队
12.3 决策制定
12.3.1 制定正确决策的心理障碍
12.3.2 小组决策的制定
12.3.3 制定正确小组决策的障碍
12.3.4 减少小组决策制定的缺点的措施
12.3.5 团队精神
12.3.6 非自我编程
12.3.7 主程序员组
12.3.8 极限编程
12.3.9 Scrum
12.4 组织结构
12.4.1 组织结构与项目
12.4.2 正式的与非正式的结构
12.4 -3层次化的方法
12.4.4 员工与开发流程
12.4.5 部门化
12.5 合作依赖关系
12.6 分散或虚拟团队
12.7 沟通风格
12.7.1 在项目早期
12.7.2 项目中期的设计阶段
12.7.3 项目的实现阶段
12.8 沟通计划
12.9 领导能力
12.10 小结
12.11 进一步的练习
第13章 软件质量
13.1 引言
13.2 软件质量在项目策划中的位置
13.3 软件质量的重要性
13.4 定义软件质量
13.5 ISO9126
13.6 产品与过程质量管理
13.7 质量管理体系
13.7.1 BSEN:ISO9001:2000
13.7.2 BSEN:ISO9001:2000QMS需求概述
13.8 能力过程模型
13.8.1 ISO15504过程评估
13.8.2 实施过程改进
13.9 有助于提高软件质量的技术
13.9.1 审查
13.9.2 Fagan方法的基本原理
13.9.3 结构化编程和净室软件开发
13.9.4 形式化方法
13.9.5 软件质量循环
13.9.6 经验教训报告
13.10测试
13.11 质量计划
13.12 小结
13.13 进一步的练习
附录A.PRINCE2概述
附录B练习答案
进一步阅读材料
1.8 软件项目的分类方式
项目之间的区别可能是因为开发不同的技术产品导致的。因此需要识别项目的特征,这些特征会影响项目所采用的计划和管理的方式。下面讨论其他的因素。
1.8.1 强制使用用户和自愿使用用户
在工作场所中,有一些系统是员工完成工作(比如记录销售业务)必须使用的系统,然而有些系统的使用是自愿而非强制的,比如游戏软件。我们很难用一个业务系统从潜在客户那里引导出精确的需求。游戏软件的内容主要依靠开发人员丰富的创造力,以及市场调查、关注群体和原型评价等技术手段。
1.8.2 信息系统与嵌入式系统
信息系统与嵌入式系统之间存在着传统的区别。信息系统可以帮助员工完成事务处理操作,如库存管理系统。嵌入式(或过程控制)系统用于控制机器,比如建筑物的空调设备的控制系统。有些系统可能兼有二者的要素,例如上述库存管理系统也可以控制一个自动化仓库。
练习1.4 计算机操作系统是信息系统还是嵌入式系统?
1.8.3 目标与产品
要区别项目的目标是为了生产一种产品,还是为了满足一定目标。
项目可能是生产一种其细节由客户规定并负责证实的产品。
另一方面,项目可能是为了满足一定目标,这些目标可能有多种方法来达到。比如组织存在亟待解决的问题,可以通过咨询相关专家获得推荐的解决方案。
……