《知行合一 实现价值驱动的敏捷和精益开发》是作者几十年从事软件工程教学、咨询和研究的一个总结,它从软件产品开发的“软”“易变”“非线性增长复杂度”“创新”等特点入手,系统讨论了软件工程自身的特殊性,清楚揭示了我们遵循几十年的借鉴传统行业开发模式的方法不能高效匹配软件开发,导致软件工程成为低效工程领域的原因。本书系统探讨了从瀑布模式到敏捷模式转型的成功实践,在特定企业环境下让敏捷在组织、团队、项目中落地,并使其价值*大化,摆脱常见的“形似神不似”的敏捷实施。本书关于CMMI和敏捷开发模式结合的内容对国内众多的CMMI企业有很好的现实意义,二者的互补性使其结合弥补了各自的不足,使企业能更好地提升其开发过程的能力。如何将新一代精益开发的原则、实践移植到软件开发中的内容是本书另一个亮点。
各类软件组织的管理人员、技术人员、质量控制人员和过程改进人员都可以从《知行合一 实现价值驱动的敏捷和精益开发》中获得所需的知识,《知行合一 实现价值驱动的敏捷和精益开发》也可以作为高校软件工程相关课程的教材。
无论是从大的框架角度、开发管理原则角度、具体实践角度,还是企业实施效果角度,敏捷和精益在软件实践中都已经形成了一套相对完整、具备指导意义、具备系统性的新一代软件开发方法。
真正的敏捷和精益方法会时刻把握住软件开发中核心的经济指标,避免盲目追求可能没有价值的替代度量指标,这是走出“形似神不似”的敏捷和精益实施误区的关键。
通过技术债务和质量债务的管理,追求健康迭代而不是带病迭代,敏捷和精益给我们带来了新的质量理念。
近年业界的经验证明,CMMI是敏捷开发的安全网,二者高度互补。CMMI环境下的敏捷实施能够更合理地平衡稳定度和敏捷度,从而给我们带来更大的价值。
支持创新的新一代精益开发方法完全可以移植到软件产品开发中,其原则、实践形成了精益软件工程的核心内容。它代表了软件开发的明天。
“知行合一”是导入敏捷和精益的自然之路。每个软件团队都有追求与众不同的权利,而执着找寻软件开发之钥的实践者们的不断努力才是完善敏捷和精益*重要的环节。
丛斌博士,早年毕业于南京大学,1984年公派留学去了美国,分别在杜克大学和德州大学获得硕士和博士学位。目前是美国加州州立大学软件工程终身教授,领导建立了全美排名前列的软件工程硕士学位课程。发表过100多篇论文,解决过一些经典的算法问题。作为国际知名的计算机和算法专家,丛斌博士也是CMMI研究院第一批高成熟度主任评估师、讲师之一。在产品开发体系建设及改进、敏捷和精益开发、质量控制及CMMI模型驱动改进等方面有丰富的理论知识及实战经验,曾为国内外许多知名企业,如雷神、华为等提供过软件开发方面的咨询、培训和评估。曾入选1997年国际IT名人录,也是加州州立大学富勒顿分校工学院2011年度杰出教授。
目录
第一部分 神形兼备的敏捷开发模式
第1章 从“先知后行”到“知行合一”——从传统开发模式到敏捷开发模式 2
1.1 重新审视项目成功的标准 3
1.1.1 传统的三要素不一定能客观度量项目的成功与否 3
1.1.2 新的项目管理铁三角 5
1.1.3 敏捷让我们实现价值驱动管理 8
1.2 重新审视瀑布模式为代表的传统开发方法 9
1.2.1 来自制造业的接力式开发模式 9
1.2.2 瀑布开发模式的不合理之处 11
1.3 复杂软件项目的共性:需求的不确定及技术的不确定 11
1.3.1 客户对自己真正需要的产品需要一个认识的过程 12
1.3.2 实现每个客户需求都有代价,但不是每个需求都有价值 13
1.3.3 技术平台的不确定性 14
1.3.4 团队一开始不了解自己的效率 15
1.3.5 传统方法不能高效解决这些不确定性带来的问题 15
1.4 从“先知后行”到“知行合一” 16
1.4.1 知行合一是自然的结论 16
1.4.2 敏捷就是在开发中学习、成长、调整和完善 18
1.4.3 敏捷是实现价值驱动管理的好方法 19
两个团队的故事 20
第2章 敏捷开发方法——摸着石头过河的智慧 24
2.1 经常被错误解读的敏捷宣言及敏捷原则 25
2.1.1 敏捷宣言是价值宣言 25
2.1.2 敏捷的12原则背后的故事 26
2.2 敏捷开发架构与Scrum:调整中增量开发 31
2.2.1 敏捷开发架构 31
2.2.2 用一分钟来解释一下Scrum以及Scrum中的3个角色、3个文档和5个会议 34
2.2.3 敏捷框架下看Scrum 38
2.2.4 Scrum和极限编程的结合使用 38
2.3 Scrum是一个实现敏捷价值及原则的开发管理架构 39
2.3.1 Scrum让敏捷价值的实现变得自然 39
2.3.2 Scrum是敏捷原则的具体体现 40
一个团队的两个故事 40
第3章 形神兼具——实现敏捷的核心价值 43
3.1 形似神不似的Scrum实施 44
3.1.1 Scrum不能保证解决问题,但能保证暴露问题 44
3.1.2 没有本地化的适配,敏捷过程很难落地生根 45
3.1.3 不要因为错误的原因引入Scrum,要明确引入敏捷的目的 45
3.2 使用Scrum的艺术 46
3.2.1 Scrum中的自我管理及实现方式 46
3.2.2 管理者从监控型到服务型的转变 48
3.2.3 追求问题的解决而不是最佳解决方案 49
3.2.4 对工程人员能力提升及自律的要求 50
3.2.5 Scrum实践的互补,完整的Scrum才最有价值 51
3.3 极限编程是Scrum最好的伙伴 54
3.3.1 技术债务:Scrum的杀手 55
3.3.2 极限编程的4个核心价值 55
3.3.3 极限编程的原则 57
3.3.4 极限编程的4个核心工程活动 58
3.3.5 极限编程的12条实践 59
3.3.6 极限编程+Scrum:1+1>2 60
3.4 引入Scrum等敏捷方法是一场需要勇气的变革 61
3.4.1 精益组织与敏捷团队 62
3.4.2 管理者的勇气:做有远见的智慧型领导者 63
3.4.3 工程人员的勇气:合奏与独奏 65
3.4.4 过程改进人员的勇气:找到你的定位 65
3.5 变革之路:从瀑布模式到敏捷模式的转化 66
3.5.1 瀑布模式到敏捷模式中人和组织的转化 66
3.5.2 瀑布模式到敏捷模式中企业文化及习惯的转化 67
3.5.3 瀑布模式到敏捷模式的转化过程 68
两个团队的故事 69
第二部分 建立以Scrum为框架的软件开发管理体系
第4章 布好自己的局——确定Scrum中的角色、文档和活动 76
4.1 敏捷转型的布局规划 76
4.2 建立自己的敏捷过程 76
4.2.1 建立一个端到端的敏捷过程 77
4.2.2 进入Scrum迭代的准备过程 79
4.2.3 敏捷迭代过程及验证过程 80
4.2.4 敏捷的改进过程 82
4.2.5 选择敏捷实践 82
4.3 确定Scrum的角色 84
4.3.1 猪和鸡合作创业的对话 85
4.3.2 选择Scrum产品经理 85
4.3.3 选择Scrum过程经理 88
4.3.4 选择Scrum团队成员 90
4.3.5 架构师在Scrum团队中的定位 91
4.3.6 Scrum of Scrum (大敏捷项目的管理)的安排 92
4.3.7 Scrum中的共享团队资源 95
4.4 敏捷过程对文档的要求 95
4.4.1 文档的价值及应用 95
4.4.2 敏捷文档制作指南 96
4.4.3 敏捷过程的需求文档 97
4.4.4 敏捷环境下的工程文档 99
4.4.5 必要的维护文档 99
4.4.6 敏捷(Scrum)的管理文档 100
4.5 建立一个成熟的Scrum过程 100
4.5.1 什么是成熟的敏捷过程 101
4.5.2 保证敏捷过程的执行力 101
4.5.3 保证敏捷过程的改进力 102
4.6 敏捷工具 102
两个敏捷角色的故事 103
第5章 迭代管理亦有道——执行Scrum项目管理 106
5.1 应对变化的敏捷计划:波浪式的版本规划 106
5.1.1 掌握你的团队速率 107
5.1.2 允许项目需求范围有一定的灵活性 109
5.1.3 遵循“最小有市场价值”原则制订产品版本计划 111
5.1.4 制订第一个版本计划 112
5.2 Scrum迭代中的管理:频繁反馈,及时调整 114
5.2.1 细化版本需求列表中的用户故事:准备好下一轮迭代的工作 114
5.2.2 计划下一轮迭代 116
5.2.3 开好每日站立会议 117
5.2.4 展示团队的迭代成果:开好迭代评审会议 119
5.2.5 不断完善Scrum过程:开好迭代回顾会议 120
5.3 建立、维护你的敏捷岛 122
5.3.1 迭代任务状态板块 122
5.3.2 其他信息板块 125
5.3.3 白板是最有效的沟通方式 128
5.4 Scrum中的风险管理 129
5.4.1 软件项目的5大风险来源 129
5.4.2 把握你的进度风险 130
5.4.3 把握好需求使之自然完善而不是遍地蔓生 131
5.4.4 建立一个T字型能力团队缓解团队不稳定风险 132
5.4.5 建立维护好产品规格 132
5.4.6 克服低效率风险的几个法宝 133
两个团队的故事 134
第6章 把握好敏捷的度——敏捷工程及质量控制实践 139
6.1 再议技术债务 139
6.1.1 技术债务的来源 140
6.1.2 管理技术债务 140
6.1.3 减少技术债务的实践 142
6.1.4 减少技术债务的具体步骤 143
6.1.5 技术债务的度量 144
6.2 敏捷中的需求开发及管理 145
6.2.1 敏捷四级产品计划 146
6.2.2 用户类型的识别过程 146
6.2.3 建立维护典型用户档案 148
6.2.4 从用例到用户故事 148
6.2.5 贯穿整个开发过程中的需求澄清:串讲及反串讲 149
6.3 敏捷中的设计和开发 150
6.3.1 简明设计原则 151
6.3.2 设计决策的时机 153
6.3.3 再议程序开发中的代码重构 154
6.3.4 敏捷中的评审 156
6.4 敏捷中的测试 157
6.4.1 测试驱动开发的价值及方法 158
6.4.2 持续集成:提高开发效率的重要保证 158
6.4.3 敏捷测试策略及方法 160
6.4.4 让发现的缺陷的价值最大化 162
6.5 健康迭代比速度更重要 163
两个团队的故事 165
第三部分 CMMI框架下的敏捷实施
第7章 盲人摸象——关于敏捷和CMMI的错误偏见 170
7.1 来自两个阵营的偏见 170
7.2 CMMI的核心和价值 172
7.3 CMMI+敏捷:解决软件开发问题之匙 175
7.4 来自敏捷宣言起草者及CMMI作者的最新声音 178
敏捷和CMMI的故事 180
第8章 建立敏捷的保护网——CMMI架构下的敏捷实施 187
8.1 从使用角度看CMMI 187
8.1.1 一个产品开发最佳实践的集合 187
8.1.2 CMMI的4条主线 188
8.1.3 正确解读CMMI评估 190
8.1.4 CMMI对工作产品(文档)的要求 191
8.2 完善Scrum实现CMMI项目管理的要求 192
8.2.1 需求管理和“Scrum+极限编程” 193
8.2.2 项目计划和“Scrum+极限编程” 194
8.2.3 项目监督与控制和“Scrum+极限编程” 195
8.2.4 供方协议管理和“Scrum+极限编程” 196
8.2.5 集成项目管理和“Scrum+极限编程” 197
8.2.6 风险管理和“Scrum+极限编程” 198
8.3 用敏捷实践实现CMMI工程活动的要求 199
8.3.1 需求开发和“Scrum+极限编程” 199
8.3.2 技术解决方案和“Scrum+极限编程” 201
8.3.3 产品集成和“Scrum+极限编程” 202
8.3.4 验证和“Scrum+极限编程” 203
8.3.5 确认和“Scrum+极限编程” 205
8.4 用敏捷手段实现CMMI支持活动的要求 206
8.4.1 敏捷环境下的过程与产品质量保证 206
8.4.2 敏捷环境下的配置管理 210
8.4.3 敏捷环境下的度量与分析 212
8.4.4 敏捷环境下的决策分析与解决 214
8.5 敏捷环境下实现CMMI过程管理的要求 215
8.5.1 敏捷环境下的组织级过程关注 215
8.5.2 敏捷环境下的组织级过程定义 217
8.5.3 Scrum环境下的组织级培训 218
8.6 敏捷环境下实现CMMI高成熟度的要求 219
8.6.1 敏捷下的量化管理:QPPO、基线及模型(OPP和QPM) 219
8.6.2 敏捷环境下过程优化管理:CAR和OPM 221
8.7 敏捷环境下的CMMI评估应关注的两个问题 224
8.7.1 实施选择还是模型要求 224
8.7.2 理解模型的目的 225
敏捷环境下的两个CMMI实施和评估故事 226
第四部分 新一代精益软件工程
第9章 敏捷不是解决软件开发问题的银弹 232
9.1 再议软件过程的特殊性 233
9.1.1 软件过程公理 233
9.1.2 软件过程体系应追求的价值 235
9.2 敏捷的局限及挑战 236
9.2.1 如何尽早获取有价值的用户反馈 236
9.2.2 如何设计软件架构支持快速迭代开发 237
9.2.3 缺乏具体有效方法实现敏捷原则 238
9.2.4 忽略了开发中的等待队列 238
9.2.5 忽略了开发过程中的变异管理 239
9.3 有效软件开发借鉴之源及应具备的特点 239
9.3.1 软件开发借鉴之源 239
9.3.2 有效软件开发模式应具备的特点 240
第10章 软件开发的新模式——新一代精益软件工程 242
10.1 初级软件精益开发模式:看板方法 243
10.2 精益软件开发框架 244
10.3 用经济指标指导软件开发 245
10.4 用基本队列理论、统计方法管理软件开发过程 247
10.4.1 管理好软件开发中的等待队列问题 248
10.4.2 软件开发过程中变异量的管理 251
10.5 两个关键关注点 254
10.5.1 控制好软件批量开发规模 255
10.5.2 控制好软件开发队列的WIP个数 256
10.6 精益管理控制实践 257
10.6.1 在充满不确定的环境下,尽可能保持流畅的软件开发通道 257
10.6.2 充分、及时、有效地利用开发过程中的反馈信息 259
10.6.3 软件开发中集中与分散协调控制机制 260
10.7 实践出真知 262
参考文献 264
收起全部↑