第1章 规范、敏捷和困惑 1
目录 1
1.1 困惑之源 4
1.1.1 多重定义 4
1.1.2 区分方法的正确使用和误用 4
1.1.3 从最为突出的实例引出过度一般化 5
1.1.4 普遍适用的承诺 5
1.1.5 初期的成功事例 5
1.1.7 澄清困惑 6
1.2 两种方法 6
1.1.6 纯粹主义论断 6
1.2.1 计划驱动方法 7
1.2.2 敏捷方法 11
1.3 找出中间方法 15
参考文献 17
第2章 方法的对比及各自的擅长领域 19
2.1 应用特征 20
2.1.1 主要目标 20
2.1.2 规模 21
2.1.3 环境 22
2.2 管理特征 23
2.2.1 客户关系 23
2.2.2 计划和控制 25
2.2.3 项目沟通 26
2.3 技术特征 27
2.3.1 需求 27
2.3.2 开发 29
2.3.3 测试 30
2.4 人员特征 31
2.4.1 客户 32
2.4.2 开发人员 33
2.4.3 文化 35
2.5.1 擅长领域 36
2.5 总结 36
2.5.2 误解 38
2.5.3 5个关键要素 39
参考文献 41
第3章 项目开发中的一天 43
3.1 典型的一天 43
3.2 使用PSP/TSP的典型的一天* 44
3.2.1 培训 44
3.2.2 工具和环境 45
3.2.3 项目计划 45
3.2.4 状态 46
3.2.5 当天的活动 47
3.3.1 培训 50
3.3 使用极限编程的典型的一天* 50
3.3.2 工具和环境 51
3.3.3 项目计划 51
3.3.4 状态 52
3.3.5 当天的活动 52
3.4 危机时期 54
3.4.1 PSP/TSP对危机的处理 55
3.4.2 XP对危机的处理 56
3.5 总结 56
3.5.1 不同点 57
3.5.2 相似点 57
参考文献 58
E.3 敏捷方法和计划驱动方法的试验与研究 1 58
3.5.3 观察结果 58
第4章 拓展擅长领域:两个案例分析 59
4.1 使用计划来扩大敏捷方法的应用规模:出租管理的例子 59
4.1.1 假设1:开发或修改一个素材所需的工作量不会随时间和素材数的增加而增长 60
4.1.2 假设2:在固定时间表和规模不经济的情况下,同样可以相信人能够按时完成一切事情 61
4.1.3 假设3:简单设计和YAGNI可以轻松扩展到大型项目 62
4.1.4 扩大敏捷方法的使用规模:总结 63
4.2 利用敏捷来简化计划驱动方法:USAF/TRW CCPDS-R示例 63
4.2.1 个体和交互胜过过程和工具:CCPDS-R 64
4.2.2 可以工作的软件胜过面面俱到的文档:CCPDS-R 65
4.2.3 客户协作胜过合同谈判:CCPDS-R 65
4.2.4 响应变更胜过遵循计划:CCPDS-R 66
4.3 总结 67
参考文献 69
第5章 使用风险平衡敏捷和规范 70
5.1 方法概述 70
5.2 应用实例系列:基于代理的计划系统 74
5.3 中型应用:供应链管理 75
5.3.1 步骤1:SupplyChain.com项目风险评估 76
5.3.2 步骤2:对比敏捷和计划驱动风险 77
5.3.3 步骤4a:单独的风险解决策略 79
5.3.4 步骤4b:SupplyChain.com基于风险的系统开发策略 82
5.4 小型应用:活动计划 85
5.4.1 步骤1:活动计划项目风险评估 85
5.4.2 步骤2:比较敏捷风险和计划驱动风险 85
5.4.3 步骤4a、4b:Event Managers基于风险的系统开发策略 88
5.5 超大型应用:国家危机管理信息系统(NISCM) 89
5.5.1 步骤1:NISCM项目风险评估 90
5.5.2 步骤2:比较敏捷风险和计划驱动风险 92
5.5.3 步骤3和4:基于风险的NISCM系统开发策略 94
5.6 结论 99
参考文献 101
第6章 结论 103
6.1 最重要的六条结论 103
6.1.1 敏捷方法和计划驱动方法都不是银弹 104
6.1.2 敏捷方法和计划驱动方法的擅长领域 105
6.1.3 未来的应用既需要敏捷又需要规范 105
6.1.6 少关注方法——多关注人、价值观、沟通和期望管理 106
6.1.4 平衡敏捷和规范的方法正在出现 106
6.1.5 逐步建立你的方法——不要自上而下裁剪 106
6.2 关于敏捷和规范的平衡,下一步怎么做 109
6.3 软件开发中平衡敏捷和规范的步骤 110
参考文献 112
后记 114
附录A 方法之间的比较 115
A.1 Scrum方法 117
A.1.1 简要描述 117
A.1.2 评注 117
A.2 自适应软件开发 118
A.2.1 简要描述 118
参考文献 118
A.2.2 评注 119
参考文献 119
A.3 简约开发 119
A.3.1 简要描述 119
A.3.2 评注 120
参考文献 120
A.4 Crystal 120
A.4.2 评注 121
参考文献 121
A.4.1 简要描述 121
A.5 极限编程 122
A.5.1 简要描述 122
参考文献 123
A.6 动态系统开发方法 123
A.6.1 简要描述 123
A.5.2 评注 123
A.6.2 评注 124
参考文献 124
A.7.2 评注 125
A.7.1 简要描述 125
A.7 Rational统一过程 125
A.8 团队软件过程(TSP) 126
A.8.1 简要描述 126
参考文献 126
A.8.2 评注 127
参考文献 128
A.9 特征驱动开发 128
A.9.1 简要描述 128
A.9.2 评注 129
参考文献 129
A.10.1 简要描述 130
A.10 能力成熟度模型集成 130
A.11.1 简要描述 131
A.10.2 评注 131
A.11 软件能力成熟度模型 131
参考文献 131
A.11.2 评注 132
参考文献 132
A.12 个体软件过程 133
A.12.1 简要描述 133
A.13 净室 134
A.13.1 简要描述 134
参考文献 134
A.12.2 评注 134
参考文献 135
A.14 方法对比表 135
A.13.2 评注 135
附录B 敏捷软件开发宣言 137
B.1 敏捷宣言遵循的原则 137
附录C 能力成熟度模型 139
C.1 CMM发展简史 139
C.2 CMM的概念 140
C.3 使用模型改进过程 142
注释 143
附录D 平衡敏捷与规范的工具 144
D.1 螺旋模型锚点里程碑 144
D.2 利益实现分析和DMR效果链 147
D.2.1 利益实现 147
D.2.2 效果链 147
D.3 进度自变量 148
D.3.1 共同愿景和期望管理 149
D.3.2 特性优先级化 149
D.3.3 时间表范围估算 150
D.3.4 确定架构和核心功能 150
D.3.5 增量开发 150
参考文献 151
D.3.6 变更和进度监控 151
附录E 经验信息 153
E.1 变更的成本:经验结果 153
E.2 做多少架构工作才够?一次COCOMOII分析 155
E.3.1 项目规模的大体分布 159
E.3.2 过程改进 159
E.3.3 团队软件过程和敏捷方法 161
E.3.4 结对编程 163
E.3.5 敏捷/计划驱动混和方法 164
参考文献 164
平衡是成熟的开始 167