第1章 软件项目管理引言 1
1.1 引言 1
1.2 为什么软件项目管理很重要 1
1.3 什么是项目 2
1.4 软件项目和其他类型的项目 3
1.5 合同管理和技术项目管理 3
1.6 软件项目管理覆盖的活动 4
1.7 计划、方法和方法学 6
1.8 软件项目的分类方式 7
1.8.1 强制使用用户和自愿使用用户 7
1.8.2 信息系统与嵌入式系统 7
1.8.3 目标与产品 7
1.9 利益相关者 8
1.10 设定目标 8
1.10.1 子目标和目标 9
1.10.2 有效性度量 9
1.11 业务案例 10
1.12 项目成败 10
1.13 什么是管理 11
1.14 管理控制 11
1.15 小结 13
附件 项目策划内容列表 13
1.16 进一步的练习 14
第2章 项目评价和项目集管理 15
2.1 引言 15
2.2 业务案例 15
2.2.1 介绍和背景 16
2.2.2 提议项目 16
2.2.3 市场 16
2.2.4 组织和运营基础架构 16
2.2.5 效益 16
2.2.6 概括实施计划 16
2.2.7 成本 16
2.2.8 经济论证 17
2.2.9 风险 17
2.3 项目组合管理 17
2.3.1 项目组合定义 17
2.3.2 项目组合管理 18
2.3.3 项目组合优化 18
2.3.4 项目组合管理的问题 18
2.4 单个项目评估 18
2.4.1 技术评估 18
2.4.2 成本效益分析 18
2.4.3 现金流预测 19
2.5 成本效益评价技术 20
2.5.1 净利润 20
2.5.2 回收期 20
2.5.3 投资回报率 21
2.5.4 净现值 21
2.5.5 内部回报率 23
2.6 风险评价 23
2.6.1 风险标识和排等级 24
2.6.2 风险和净现值 24
2.6.3 成本效益分析 24
2.6.4 风险剖面分析 25
2.6.5 使用决策树 25
2.7 项目集管理 26
2.7.1 商业周期项目集 27
2.7.2 战略项目集 27
2.7.3 基础设施项目集 27
2.7.4 研究和开发项目集 27
2.7.5 创新的伙伴关系 27
2.8 管理项目集内的资源分配 27
2.9 项目集管理策略 28
2.10 创建项目集 28
2.10.1 项目集命令 28
2.10.2 项目集摘要 29
2.10.3 构想陈述 29
2.10.4 蓝图 29
2.11 辅助项目集管理 30
2.11.1 依赖关系图 30
2.11.2 交付计划 31
2.12 对项目集管理的保留意见 32
2.13 收益管理 32
2.14 小结 34
2.15 进一步的练习 34
第3章 项目策划概述 36
3.1 步进式项目策划概述 36
3.2 第0步:选择项目 38
3.3 第1步:标识项目的范围和目标 39
3.3.1 步骤1.1 标识目标以及满足目标有效性的实用度量 39
3.3.2 步骤1.2 确立项目的全权管理者 39
3.3.3 步骤1.3 项目利益相关者分析——标识项目中所有的项目利益相关者以及他们的利益 39
3.3.4 步骤1.4 根据项目利益相关者的分析修改项目目标 40
3.3.5 步骤1.5 确定各部门之间的沟通方法 40
3.4 第2步:标识项目的基础设施 40
3.4.1 步骤2.1 确立项目和战略策划之间的关系 40
3.4.2 步骤2.2 标识安装标准和规程 41
3.4.3 步骤2.3 标识项目组的组织结构 41
3.5 第3步:分析项目的特征 42
3.5.1 步骤3.1 识别项目是目标驱动的还是产品驱动的 42
3.5.2 步骤3.2 分析项目的其他特征(包括基于质量的特征) 42
3.5.3 步骤3.3 标识项目的高级别风险 42
3.5.4 步骤3.4 考虑关于实现方面的用户需求 42
3.5.5 步骤3.5 选择开发方法学和生命周期方法 42
3.5.6 步骤3.6 评审整体资源估计 43
3.6 第4步:标识项目的产品和活动 43
3.6.1 步骤4.1 标识和描述项目的产品(或可交付物) 43
3.6.2 步骤4.2 文档化共性产品流 45
3.6.3 步骤4.3 标识产品实例 46
3.6.4 步骤4.4 产生理想的活动网络图 46
3.6.5 步骤4.5 根据阶段和检查点的需要修改理想的活动网络 46
3.7 第5步:估算每个活动的工作量 47
3.7.1 步骤5.1 执行由底向上的估计 47
3.7.2 步骤5.2 修改策划创建可控制的活动 47
3.8 第6步:标识活动的风险 48
3.8.1 步骤6.1 标识和量化基于活动的风险 48
3.8.2 步骤6.2 计划合适的风险缓解和应急措施 48
3.8.3 步骤6.3 根据风险调整计划和估计 48
3.9 第7步:分配资源 49
3.9.1 步骤7.1 标识和分配资源 49
3.9.2 步骤7.2 根据资源约束修改计划和估计 49
3.10 第8步:评审/发布计划 50
3.10.1 步骤8.1 评审项目计划的质量 50
3.10.2 步骤8.2 文档化计划并取得一致意见 50
3.11 第9步和第10步:执行计划并进行较低层次的策划 50
3.12 小结 50
3.13 进一步的练习 51
第4章 选择合适的项目方法 52
4.1 引言 52
4.2 构建还是购买 52
4.3 选择方法学和技术 54
4.3.1 将项目标识为目标驱动的或产品驱动的 54
4.3.2 分析其他项目特征 55
4.3.3 标识高级别项目风险 56
4.3.4 考虑与实现有关的用户需求 56
4.3.5 选择通用的生命周期方法 57
4.4 过程模型的选择 57
4.5 结构与交付速度 58
4.6 瀑布模型 59
4.7 螺旋模型 60
4.8 软件原型开发 60
4.9 分类原型的其他方法 62
4.9.1 要从原型中学到什么 62
4.9.2 原型要做到什么程度 62
4.9.3 哪些要进行原型化 62
4.9.4 在原型开发期间控制变更 63
4.10 增量式交付 63
4.10.1 优点 63
4.10.2 缺点 64
4.10.3 增量式交付计划 64
4.10.4 系统目标 65
4.10.5 开放的技术计划 65
4.10.6 增量式计划 65
4.10.7 增量示例 66
4.11 敏捷方法 66
4.12 Atern/动态系统开发方法 67
4.13 极限编程 68
4.13.1 策划活动 69
4.13.2 小规模发布软件 69
4.13.3 隐喻 69
4.13.4 简单设计 69
4.13.5 测试 69
4.13.6 重构 70
4.13.7 结对编程 70
4.13.8 集体所有 70
4.13.9 持续集成 70
4.13.1 0每周40小时的工作时间 70
4.13.1 1现场客户 70
4.13.1 2编程标准 70
4.13.1 3 XP的局限性 70
4.14 管理迭代过程 71
4.15 选择最合适的过程模型 72
4.16 小结 72
4.17 进一步的练习 73
第5章 软件工作量估计 74
5.1 引言 74
5.2 在何处进行估计 75
5.3 估计过高和估计过低的问题 77
5.4 软件估计基础 77
5.4.1 需要历史数据 77
5.4.2 工作的度量 77
5.5 软件工作量估计技术 78
5.6 由底向上估计 78
5.7 自顶向下法和参数模型 80
5.8 专家判断 81
5.9 类比估计 81
5.10 Albrecht功能点分析 81
5.11 Mark Ⅱ功能点 83
5.12 COSMIC全功能点 85
5.13 COCOMO Ⅱ:参数化的生产率模型 86
5.14 小结 90
5.15 进一步的练习 90
第6章 活动策划 92
6.1 引言 92
6.2 活动策划的目的 92
6.3 何时计划 93
6.4 项目进度表 93
6.5 项目和活动 95
6.5.1 定义活动 95
6.5.2 标识活动 95
6.6 确定活动的次序和进度 98
6.7 网络策划模型 99
6.8 网络模型的公式化表示 100
6.8.1 构造优先网络 100
6.8.2 描绘滞后活动 102
6.8.3 集合活动 103
6.8.4 标注约定 103
6.9 增加时间维 103
6.10 正向遍历 104
6.11 反向遍历 105
6.12 标识关键路径 106
6.13 活动缓冲期 107
6.14 缩短项目周期 108
6.15 标识关键活动 108
6.16 活动-箭头网络 108
6.16.1 活动-箭头网络的规则和约定 109
6.16.2 使用虚活动 110
6.16.3 描绘滞后的活动 112
6.16.4 给活动加标签 112
6.16.5 网络分析 112
6.17 小结 114
6.18 进一步的练习 115
第7章 风险管理 117
7.1 引言 117
7.2 风险 117
7.3 风险分类 118
7.4 处理风险框架 120
7.5 风险识别 120
7.6 风险评估 121
7.7 风险策划 124
7.7.1 接受风险 124
7.7.2 规避风险 124
7.7.3 降低风险 124
7.7.4 转移风险 125
7.8 风险管理 125
7.8.1 应急 125
7.8.2 风险应对措施的决策 126
7.8.3 创建和维护风险记录 126
7.9 评价进度风险 126
7.10 应用PERT技术 127
7.10.1 使用PERT评价不确定性的影响 127
7.10.2 使用期望周期 128
7.10.3 活动标准偏差 129
7.10.4 满足目标的可能性 129
7.10.5 计算每个项目事件的标准偏差 130
7.10.6 计算z值 130
7.10.7 转换z值为概率 130
7.10.8 PERT的优点 131
7.11 蒙特卡洛仿真 131
7.12 关键链概念 132
7.12.1 获得最可能的活动周期 133
7.12.2 利用活动的最晚开始时间 134
7.12.3 插入项目和汇入缓冲期 134
7.12.4 一个样例 135
7.12.5 项目实施 136
7.13 小结 136
7.14 进一步的练习 136
第8章 资源分配 139
8.1 引言 139
8.2 资源的性质 139
8.3 标识资源需求 141
8.4 资源调度 142
8.5 创建关键路径 146
8.6 计算成本 147
8.7 特定的细节 147
8.8 发布资源进度表 148
8.9 成本进度 149
8.10 调度顺序 150
8.11 小结 151
8.12 进一步的练习 152
第9章 监督与控制 154
9.1 引言 154
9.2 创建框架 154
9.2.1 责任 154
9.2.2 进展评估 156
9.2.3 设置检查点 156
9.2.4 取快照 156
9.3 收集数据 156
9.3.1 局部完成报告 157
9.3.2 红黄绿交通灯报告 158
9.4 进展可视化 158
9.4.1 甘特图 158
9.4.2 延迟图 159
9.4.3 时间线 160
9.5 成本监督 161
9.6 挣值分析 162
9.6.1 基线预算 163
9.6.2 监督挣值 164
9.6.3 进度偏差 165
9.6.4 时间偏差 165
9.6.5 成本偏差 165
9.6.6 性能比 165
9.7 优先级控制 166
9.8 使项目返回目标 167
9.8.1 缩短关键路径 167
9.8.2 重新考虑优先需求 168
9.8.3 维护业务案例 168
9.8.4 异常计划 168
9.9 变更控制 169
9.9.1 变更控制规程 169
9.9.2 系统范围的变更 170
9.9.3 配置库管理员的职责 170
9.10 小结 171
9.11 进一步的练习 171
第10章 管理合同 172
10.1 引言 172
10.2 合同的种类 173
10.2.1 固定价格合同 173
10.2.2 时间和材料合同 174
10.2.3 每单位固定价格合同 174
10.2.4 公开的投标过程 176
10.2.5 受限制的投标过程 176
10.2.6 谈判规程 176
10.3 合同部署阶段 177
10.3.1 需求分析 177
10.3.2 评估计划 177
10.3.3 邀请投标 178
10.3.4 评估提议 179
10.4 典型的合同条款 180
10.4.1 定义 180
10.4.2 协议的形式 180
10.4.3 供应的商品和服务 180
10.4.4 软件的所有权 181
10.4.5 环境 181
10.4.6 客户承诺 181
10.4.7 验收规程 181
10.4.8 标准 181
10.4.9 项目和质量管理 182
10.4.10 时间表 182
10.4.11 价格和付款方式 182
10.4.12 其他法律上的需求 182
10.5 合同的管理 182
10.6 验收 183
10.7 小结 183
10.8 进一步的练习 184
第11章 人员管理 185
11.1 引言 185
11.2 理解行为 185
11.3 组织行为:背景 187
11.4 为工作选择合适人选 188
11.5 用最好的方法进行教育 190
11.6 激励 190
11.6.1 Taylorist模型 190
11.6.2 Maslow的需求层次 191
11.6.3 Herzberg的双因素理论 191
11.6.4 工作热情的期待理论 192
11.7 Oldham-Hackman工作特征模型 192
11.8 压力 193
11.9 健康和安全 194
11.10 职业道德注意事项 195
11.11 小结 196
11.12 进一步的练习 196
第12章 团队管理 198
12.1 引言 198
12.2 组成团队 200
12.3 决策制定 202
12.3.1 制定正确决策的心理障碍 202
12.3.2 小组决策的制定 202
12.3.3 制定正确小组决策的障碍 202
12.3.4 减少小组决策制定的缺点的措施 203
12.3.5 团队精神 203
12.3.6 非自我编程 203
12.3.7 主程序员组 204
12.3.8 极限编程 204
12.3.9 Scrum 204
12.4 组织结构 205
12.4.1 组织结构与项目 205
12.4.2 正式的与非正式的结构 205
12.4.3 层次化的方法 206
12.4.4 员工与开发流程 206
12.4.5 部门化 206
12.5 合作依赖关系 207
12.6 分散或虚拟团队 208
12.7 沟通风格 209
12.7.1 在项目早期 210
12.7.2 项目中期的设计阶段 211
12.7.3 项目的实现阶段 211
12.8 沟通计划 211
12.9 领导能力 212
12.1 0小结 213
12.1 1进一步的练习 214
第13章 软件质量 215
13.1 引言 215
13.2 软件质量在项目策划中的位置 215
13.3 软件质量的重要性 216
13.4 定义软件质量 217
13.5 ISO9126 218
13.6 产品与过程质量管理 223
13.7 质量管理体系 225
13.7.1 BS EN ISO 9001:2000 225
13.7.2 BS EN ISO 9001:2000 QMS需求概述 225
13.8 能力过程模型 227
13.8.1 ISO 15504过程评估 227
13.8.2 实施过程改进 228
13.9 有助于提高软件质量的技术 231
13.9.1 审查 231
13.9.2 Fagan方法的基本原理 232
13.9.3 结构化编程和净室软件开发 232
13.9.4 形式化方法 233
13.9.5 软件质量循环 233
13.9.6 经验教训报告 234
13.10 测试 234
13.11 质量计划 237
13.12 小结 237
13.13 进一步的练习 237
附录A PRINCE 2概述 239
附录B 练习答案 248
进一步阅读材料 277