第1章 项目管理概述 1
1.1 简介 2
1.1.1 项目管理的历史 2
1.1.2 项目管理的职业道德规范 5
1.2 什么是项目 6
1.2.1 项目属性 6
1.2.2 软件项目的特殊性 8
1.3 什么是项目管理 9
1.3.1 为什么要管理IT项目 10
1.3.2 项目管理的三大约束 12
1.3.3 什么是项目管理 14
1.3.4 项目成功的要素 16
1.3.5 项目干系人 18
1.3.6 项目管理知识领域 20
1.3.7 项目管理工具和技术 21
1.3.8 项目管理软件 22
1.4 系统的思想 23
1.4.1 系统方法 23
1.4.2 系统管理的模型 25
1.5 组织的影响 25
1.5.1 组织的构成要素 26
1.5.2 组织结构 27
1.5.3 组织文化 31
1.5.4 组织对项目干系人的影响 32
1.5.5 高层主管支持的重要性 33
1.5.6 组织对信息技术的重视 34
1.5.7 组织标准 34
1.6 项目经理对项目管理的作用 35
1.6.1 项目经理的位置 37
1.6.2 项目经理的工作职能 38
1.6.3 IT项目经理的重要技能 39
1.6.4 领导才能的重要性 40
1.7 项目生命周期 41
1.7.1 项目生命周期的特征 41
1.7.2 产品生命周期与项目生命周期的关系 42
1.7.3 项目阶段 43
1.7.4 系统开发生命周期 45
1.7.5 项目阶段评审的重要性 45
1.8 IT项目环境 46
1.8.1 IT项目的本质 46
1.8.2 IT项目团队成员的特征 47
1.8.3 技术的多样性 47
1.9 项目管理过程 47
1.10 把过程组映射到知识领域 50
1.11 开发IT项目管理方法 51
1.12 软件项目管理 52
1.12.1 软件项目计划 52
1.12.2 项目控制 53
1.12.3 组织模式 54
1.12.4 配置管理 55
1.12.5 风险管理 56
1.12.6 能力评估 58
1.13 小结 59
1.14 习题 60
第2章 可行性分析和项目范围管理 62
2.1 可行性分析 63
2.1.1 操作可行性 64
2.1.2 技术可行性 65
2.1.3 经济可行性 65
2.1.4 进度可行性 66
2.2 项目选择 71
2.2.1 项目成因 71
2.2.2 识别潜在的项目 72
2.2.3 选择项目的方法 73
2.2.4 项目章程 78
2.3 初步的范围说明书 80
2.4 项目管理计划 82
2.4.1 制定项目管理计划 82
2.4.2 项目管理计划的内容 83
2.5 项目范围管理 85
2.5.1 什么是项目范围管理 85
2.5.2 项目范围管理计划 86
2.5.3 项目范围说明书 87
2.5.4 工作分解结构 88
2.5.5 项目范围确认 94
2.5.6 项目范围变更控制 95
2.5.7 使用软件辅助项目范围管理 97
2.6 初步调查 97
2.6.1 与管理人员和用户交流 98
2.6.2 规划初步调查 98
2.7 小结 105
2.8 习题 105
第3章 开发方法选择 107
3.1 选择技术 109
3.1.1 识别项目是目的驱动还是产品驱动 109
3.1.2 分析其他项目特征 110
3.1.3 识别重要的项目风险 110
3.1.4 考虑与实现有关的用户需求 111
3.1.5 选择生命周期方法 111
3.1.6 技术计划 112
3.2 选择过程模型 113
3.3 交付速度 113
3.4 边做边改模型 114
3.5 瀑布模型 114
3.6 瀑布模型的变种 116
3.6.1 生鱼片模型 116
3.6.2 包含子项目的瀑布模型 117
3.6.3 可以降低风险的瀑布模型 118
3.7 螺旋模型 118
3.8 原型开发 120
3.9 分类原型的其它方面 122
3.9.1 要从原型中学到什么 122
3.9.2 原型要做到什么程度 122
3.9.3 哪些要进行原型化 123
3.9.4 在原型开发期间控制变更 123
3.10 渐进原型 123
3.11 增量交付 124
3.11.1 优点 125
3.11.2 缺点 125
3.11.3 增量交付计划 125
3.11.4 系统目标 125
3.11.5 开放的技术计划 126
3.11.6 增量 126
3.11.7 增量示例 127
3.12 阶段交付 127
3.13 面向进度的设计 128
3.14 渐进交付 129
3.15 快速应用开发模型 129
3.16 并发开发模型 130
3.17 面向开发工具的设计 131
3.18 动态系统开发方法 132
3.19 极限编程 133
3.20 领域驱动设计 134
3.21 成品软件 135
3.22 管理迭代过程 135
3.23 选择最合适的生命周期 137
3.24 小结 143
3.25 习题 144
第4章 需求开发和需求管理 146
4.1 从一幅幽默画看到的需求问题 147
4.1.1 每个项目都有需求 148
4.1.2 需求是软件项目成收的关键 149
4.1.3 软件需求的定义 149
4.2 需求管理的困难性 150
4.3 管理需求的层次 152
4.4 需求工程 153
4.5 如何获取需求 155
4.5.1 客户的需求观 155
4.5.2 与客户协商 156
4.5.3 需求获取技术 157
4.5.4 需求获取 157
4.5.5 需求分析 158
4.6 需求规格说明 161
4.6.1 软件需求规格说明的特性 161
4.6.2 软件需求规格说明模板 162
4.6.3 编写需求文档的原则 163
4.6.4 需求验证 164
4.7 需求管理 166
4.7.1 需求与其它项目过程的联系 167
4.7.2 需求管理的步骤 168
4.7.3 需求规格说明的版本控制 168
4.7.4 度量需求管理的效果 169
4.7.5 变更控制过程 170
4.7.6 需求跟踪 171
4.7.7 需求跟踪能力矩阵 173
4.7.8 需求管理工具 173
4.8 小结 177
4.9 习题 177
第5章 软件项目成本估算 179
5.1 软件项目估算概述 180
5.1.1 软件项目估算的概念 180
5.1.2 软件项目估算的意义 182
5.1.3 软件项目估算的时机 182
5.1.4 软件项目估算的方法 184
5.1.5 软件项目估算的步骤 184
5.2 软件项目规模估算 185
5.2.1 软件生产率 186
5.2.2 LOC估算法 187
5.2.3 FP估算法 189
5.3 软件项目成本估算方法 204
5.3.1 类推估算法 205
5.3.2 专家判定估算法 205
5.3.3 参数模型估算法 206
5.4 软件项目成本估算模型 207
5.4.1 COCOMO模型 207
5.4.2 COCOMOⅡ模型 213
5.4.3 Putnam模型 217
5.4.4 成本模型的评价准则 219
5.5 小结 227
5.6 习题 228
第6章 软件项目进度管理 229
6.1 软件项目进度管理概述 232
6.1.1 软件项目进度延期的主要原因 233
6.1.2 软件项目进度管理的概念和意义 236
6.1.3 软件项目进度管理的过程 237
6.2 软件项目进度安排图示方法 241
6.2.1 甘特图 241
6.2.2 网络图 242
6.2.3 里程碑图 243
6.3 软件项目进度估算方法 244
6.3.1 基于规模的进度估算法 244
6.3.2 PERT估算法 245
6.3.3 关键路径法 248
6.3.4 参数模型估算法 260
6.3.5 蒙特卡罗估算法 261
6.3.6 进度表估算法 262
6.3.7 Jones的一阶估算准则 265
6.4 软件项目进度计划编制 265
6.4.1 进度计划编制的目标 266
6.4.2 进度计划编制的依据 266
6.4.3 进度计划编制的输出 267
6.4.4 进度计划的修正和优化 268
6.5 软件项目进度跟踪和控制 274
6.5.1 软件项目进度跟踪 274
6.5.2 软件项目进度控制 275
6.6 小结 281
6.7 习题 281
第7章 软件项目资源管理与分配 284
7.1 项目活动资源概述 285
7.1.1 项目活动资源的概念 286
7.1.2 为什么要进行资源分配 286
7.2 项目资源的性质 287
7.2.1 项目资源的分类 287
7.2.2 项目活动资源的特点 288
7.2.3 项目资源需求的特点 289
7.2.4 项目活动资源数量的影响 289
7.2.5 项目活动资源质量的影响 291
7.3 确定资源需求 291
7.3.1 确定资源需求要考虑的因素 293
7.3.2 确定项目活动资源需求的方法 295
7.4 资源调度与平衡 297
7.5 关键路径的变更 301
7.6 资源分配和限制 302
7.7 发布资源进度表 304
7.8 成本进度 305
7.8.1 成本监督 307
7.8.2 挣值分析 308
7.9 复杂的调度关系 312
7.10 小结 314
7.11 习题 315
第8章 软件项目风险管理 317
8.1 软件项目风险管理概述 318
8.1.1 风险概述 318
8.1.2 软件项目风险来源及分类 320
8.1.3 软件项目风险管理概述 322
8.2 风险管理规划 326
8.2.1 风险管理规划的任务 326
8.2.2 风险管理规划的过程及其活动 327
8.2.3 风险管理规划的主要结果 329
8.2.4 风险应对策略 330
8.3 风险识别 332
8.3.1 风险识别概述 332
8.3.2 风险识别过程及其活动 333
8.3.3 风险识别方法 334
8.3.4 风险识别结果 341
8.4 风险评估 342
8.4.1 风险评估概述 342
8.4.2 风险评估过程及其活动 342
8.4.3 风险评估方法 344
8.5 风险监控 351
8.5.1 风险监控概述 351
8.5.2 风险监控过程及其活动 351
8.5.3 风险监控方法 352
8.6 小结 361
8.7 习题 361
第9章 软件项目质量保证 363
9.1 软件质量管理基础 365
9.1.1 软件质量 366
9.1.2 软件质量需求与质量特征 368
9.1.3 软件质量管理 372
9.2 软件质量保证 376
9.2.1 建立SQA小组 377
9.2.2 确定软件质量保证活动 377
9.2.3 软件质量保证计划 378
9.3 软件质量控制 379
9.3.1 常见软件项目的质量问题 379
9.3.2 软件质量的原则 379
9.3.3 软件质量控制过程 380
9.3.4 软件质量控制的活动 380
9.4 软件质量度量 383
9.4.1 软件质量度量的分类 383
9.4.2 软件质量度量的过程 383
9.5 软件质量体系 384
9.5.1 ISO 9000系列标准 385
9.5.2 软件能力成熟度模型CMM 386
9.6 小结 396
9.7 习题 396
第10章 团队管理和沟通 398
10.1 软件项目团队概述 399
10.1.1 软件项目团队 399
10.1.2 软件项目团队管理 400
10.2 软件项目团队建设 402
10.2.1 制度建立与执行 402
10.2.2 目标和分工角色管理 404
10.2.3 团队人员的获取 406
10.2.4 工作氛围 408
10.2.5 激励 410
10.2.6 团队精神 413
10.2.7 无我编程团队 414
10.2.8 主程序员团队 414
10.2.9 极限编程团队 417
10.2.10 Scrum团队 417
10.3 决策制定 420
10.3.1 制定正确决策的心理障碍 421
10.3.2 小组决策的制定 421
10.3.3 制定正确小组决策的障碍 421
10.3.4 减少小组决策制定缺点的措施 421
10.4 沟通风格 422
10.4.1 项目早期阶段 424
10.4.2 项目中期的设计阶段 424
10.4.3 项目的实现阶段 424
10.5 沟通和协作 424
10.5.1 有效沟通原则 424
10.5.2 消除沟通障碍 427
10.5.3 沟通双赢 429
10.5.4 沟通计划 430
10.5.5 领导能力 432
10.6 小结 433
10.7 习题 434
第11章 软件项目合同管理 436
11.1 项目采购 437
11.2 合同类型 441
11.2.1 固定价格合同 441
11.2.2 时间和材料合同 442
11.2.3 固定单价合同 442
11.2.4 公开的投标过程 444
11.2.5 受限制的投标过程 445
11.2.6 谈判的规程 445
11.3 合同管理 445
11.3.1 合同准备 446
11.3.2 合同谈判 447
11.3.3 合同签署 449
11.3.4 合同履行 449
11.3.5 合同变更和解除 451
11.3.6 合同争议 452
11.3.7 合同终止 454
11.4 软件外包 454
11.5 小结 461
11.6 习题 462
第12章 软件配置管理 463
12.1 什么是软件配置管理 464
12.1.1 配置管理需求分析 464
12.1.2 配置管理的作用 466
12.2 软件配置管理的相关概念 467
12.2.1 软件配置项 467
12.2.2 基线 469
12.2.3 版本 471
12.2.4 配置数据库 472
12.3 软件配置管理的活动 474
12.3.1 配置标识 475
12.3.2 版本控制 477
12.3.3 变更控制 480
12.3.4 状态报告 484
12.3.5 配置审计 485
12.4 软件配置管理组织 487
12.4.1 软件配置管理组织构成 487
12.4.2 软件配置管理组织方针 488
12.5 配置管理工具 489
12.5.1 配置管理工具的选择标准 489
12.5.2 主要配置管理工具简介 491
12.5.3 常用配置管理工具比较 493
12.6 小结 502
12.7 习题 503
附录 软件项目管理经验总结 504
A.1 软件过程改善 504
A.2 开发规范的制定 506
A.3 合理的项目人员构成及管理 506
A.4 团队开发的前提与实施 507
A.5 软件质量的保证 508
A.6 严格控制开发进度 511
A.7 软件开发的思维与方法 512
A.8 成功的项目管理经验 513
参考文献 516