第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.10每周40小时的工作时间 70
4.13.11现场客户 70
4.13.12编程标准 70
4.13.13 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.10小结 213
12.11进一步的练习 214
第13章 软件质量 215
13.1引言 215
13.2软件质量在项目策划中的位置 215
13.3软件质量的重要性 216
13.4定义软件质量 217
13.5 ISO 9126 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