本书面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发方法框架和敏捷实践,企业敏捷转型参考框架,帮助企业回答为什么要进行敏捷转型,敏捷转型包含哪些内容和如何开展敏捷转型等问题。
序言
提到敏捷,人们想到的不是大套理论,而是一个个简洁有效的成功实践,可以说实践是敏捷的本质之一。不仅要学习国际上成功的敏捷实践,更要采集国内企业成功案例,这是中国敏捷联盟存在的重要价值,这也是来源于联盟对国内敏捷发展状况的判断: 当前正处于为什么做和怎么做敏捷实践的过渡时期,问为什么要敏捷和问怎么做敏捷的人并存。
所幸,经过近几年敏捷运动发展,国内一批应用敏捷的先行企业,已经有了不少实践经验,而且很多取得了明显的成效。把这些实践采集和编辑成册,将有助于回答很多疑问:
敏捷适用于哪些场景?敏捷能用于大型软件的交付吗?
敏捷有哪些主流实践?
敏捷实施需要的文化、制度和人才基础我们目前具备吗?
有了CMMI和项目管理,还需要敏捷吗?
实施敏捷真正有效果吗?
在这个时候,我们推出“中国敏捷软件开发成功实践案例集”,并以此为基础,提炼其中的共性方法,制定《敏捷软件开发知识体系》(ADBOK),无疑具有很大的积极意义。
成果的取得,离不开团队的协作,我很高兴向读者介绍这个精英团队: 工作组长宁德军(IBM Rational大中国区CTO)、工作组副组长张忠(用友股份研发总经理)、工作组副组长李春林(东软集团过程改善中心副主任),还有二十多位很棒的成员(具体名单参见编委名单),项目进行过程中,处处彰显出大家对敏捷的挚爱、对专业的热情、对行业工作的社会责任感,这些年轻的从业者所体现的精神,正是我们整个软件行业生机勃勃、精彩纷呈的原因。
也许,这些工作还有这样那样的不足,但是毕竟我们已经上路——不仅学习国际社区,而且通过自身的实践创新回馈国际社区。
我也借此机会,代表协会真诚欢迎各路精英参与到联盟平台上,共同精化和演进这些成果,推动中国敏捷软件开发运动快速前进,实现我们“以过程改进之能,助企业发展之力”的共同目标。
中国敏捷软件开发联盟秘书长 王钧
2013年4月
编者序
6年前在上海举办的首届世界游戏开发者大会(GDC 2007),使我第一次真正领略到了敏捷开发的魅力,数百个来自不同国家、讲不同语言的开发者围绕着游戏开发团队如何进行敏捷开发的主题展开热烈讨论,几场敏捷相关的演讲也场场爆满。通过那次的敏捷开发洗礼,骨子里流淌着软件工程思维的我开始对敏捷开发产生了浓厚的兴趣,上网浏览各种敏捷知识、阅读各种敏捷书籍,从XP、Scrum到OpenUP、精益开发,然而有一段时间我却有些迷失了……,太多的敏捷流派,太多的敏捷实践,我甚至不知道何为真正的敏捷!
后来,带着许多迷茫,我参加了敏捷教练的培训。从各种敏捷的基本知识,到Scrum Master的高级进阶,再到各种敏捷转型实战分享,我完成了一次非常系统的敏捷修炼之旅。通过和老师还有其他敏捷教练的交流,自己似乎有了豁然开朗的感觉!正是从那时起,我就有了编写敏捷开发知识体系的冲动,因为我知道并不是所有的人都像我一样幸运,有如此系统的培训机会; 我还知道会有越来越多的人步入敏捷的殿堂努力学习和感悟着敏捷。此外,我大部分时间的工作,就是帮助大型软件开发团队提高软件交付效率和质量。谈到敏捷,我被企业开发管理者们问得最多的两个问题就是我们的团队适合敏捷吗?敏捷转型需要哪些准备?
作为软件工程和敏捷开发的爱好者,我们能够做的和应该做的,不正是联合敏捷领域的爱好者和志愿者,尽快推出中国的敏捷开发知识体系,以便帮助更多的朋友能够更快掌握敏捷开发知识,完成敏捷开发的学习和思考过程; 帮助企业能够更好地实施敏捷转型,并从敏捷转型中不断获取价值。
因此本书的主要内容包括以下两个部分:
(1) 敏捷开发知识体系,包括敏捷开发的哲学理念、价值观、一系列敏捷开发方法框架和敏捷实践,目标是帮助喜欢敏捷的软件从业人员,更快地全面掌握敏捷开发相关知识。
(2) 企业敏捷转型参考框架,主要帮助企业回答为什么要进行敏捷转型,敏捷转型包含哪些内容和如何开展敏捷转型等问题,目标是帮助企业更快、更好地实施敏捷转型。
本书的主要目的,就是为了满足爱好敏捷开发的个人学习敏捷知识的要求,满足企业进行敏捷转型的需要,从而帮助个体更快地掌握敏捷开发知识,帮助企业更好实施敏捷转型。今天的成绩,只是一个起点,真心希望有越来越多的朋友加入到我们的行列,不断完善敏捷开发知识体系,不断提出您的建议和反馈,分享您的理解和思考!路漫漫其修远兮,吾将上下而求索,人生有涯,智慧无限!
在此,我要感谢所有为本书播洒汗水的朋友: 李春林、张忠、张克强、钱岭、廖靖斌、龙广宇、高航、邢雷、束文辉、袁斌、叶臻、董恒、庞建荣、姚冬、许舟平、许江渝、李晓炜、王庆付、吴文龙、王立杰、陈志波、刘德意、刘曙光、黄方、张传波、黄晓倩、赵静、廖钰、轻眉、刘嘉、刘江、程秋雯、黄群、管业筠和杨帆。
感谢周伯生教授、刘琴教授、陈忠教授、何新贵教授、杨芙清教授、居德华教授和孙昕、卢旭东、许娓、王亚沙等行业知名专家对本书提出的宝贵意见。
2013年5月
第1章 敏捷开发知识体系总体框架
1.1敏捷开发知识体系的核心
1.2敏捷开发方法框架
1.3敏捷开发管理实践
1.4敏捷开发工程实践
第2章 敏捷开发核心价值观和原则
2.1敏捷软件开发宣言
2.2敏捷开发的核心价值观
2.3敏捷开发的原则
2.3.1敏捷开发的目标
2.3.2敏捷开发原则的应用
第3章 敏捷开发方法框架
3.1敏捷开发方法框架之Scrum
3.1.1定义和特性说明
3.1.2主要角色
3.1.3主要活动和实践
3.1.4主要工件
3.1.5工作流程
3.2敏捷开发方法框架之极限编程(XP)
3.2.1定义和特性说明
3.2.2主要角色
3.2.3主要活动和实践
3.2.4主要工件
3.2.5工作流程
3.2.6谁适合使用极限编程
3.3敏捷开发方法框架之OpenUP
3.3.1定义和特性说明
3.3.2主要角色
3.3.3主要活动和实践
3.3.4主要工件
3.3.5工作流程
3.3.6谁适合使用OpenUP
3.4敏捷开发方法框架之精益开发
3.4.1定义和特性说明
3.4.2主要角色
3.4.3主要活动和实践
3.4.4工作流程
3.4.5谁更适合使用敏捷与精益相结合的方法
3.5敏捷开发方法框架之特征驱动开发
3.5.1定义和特性说明
3.5.2主要角色
3.5.3主要活动和实践
3.5.4主要工件
3.5.5工作流程
3.5.6谁适合使用特征驱动开发
3.6敏捷开发方法框架之水晶方法
3.6.1主要角色
3.6.2主要活动和实践
3.6.3主要工件
3.6.4主要流程
3.6.5谁适合使用透明水晶方法
第4章 敏捷开发之管理实践
4.1迭代式开发
4.1.1定义和特性说明
4.1.2应用说明
4.1.3案例说明
4.2多级项目规划
4.2.1定义和特性说明
4.2.2应用说明
4.2.3案例说明
4.3完整团队
4.3.1定义和特性说明
4.3.2应用说明
4.3.3案例说明
4.4确定冲刺计划
4.4.1定义和特性说明
4.4.2应用说明
4.4.3案例说明
4.5燃尽图
4.5.1定义和特性说明
4.5.2应用说明
4.5.3案例说明
4.6每日站立会议
4.6.1定义和特性说明
4.6.2应用说明
4.6.3案例说明
4.7任务板
4.7.1定义和特性说明
4.7.2应用说明
4.7.3案例说明
4.8故事点估算
4.8.1定义和特性说明
4.8.2应用说明
4.8.3案例说明
4.9应用生命周期管理概述
4.9.1定义与特性说明
4.9.2应用说明
4.9.3案例说明
4.10独立的敏捷服务团队
4.10.1定义和特性说明
4.10.2应用说明
第5章 敏捷开发之工程实践
5.1持续集成
5.1.1定义和特性说明
5.1.2应用说明
5.1.3案例说明
5.2验收测试驱动开发
5.2.1定义和特性说明
5.2.2应用说明
5.2.3案例说明
5.3结对编程
5.3.1定义和特性说明
5.3.2应用说明
5.3.3案例说明
5.4产品待办列表
5.4.1定义和特性说明
5.4.2应用说明
5.4.3案例说明
5.5用户故事
5.5.1定义和特性说明
5.5.2应用说明
5.5.3案例说明
5.6TDD(测试驱动开发)
5.6.1定义和特性说明
5.6.2应用说明
5.6.3案例说明
5.7单元测试
5.7.1定义和特性说明
5.7.2应用说明
5.8演进式架构
5.8.1定义和特性说明
5.8.2应用说明
5.8.3案例说明
5.9重构
5.9.1定义和特性说明
5.9.2重构的原则
5.9.3案例说明
第6章 企业敏捷转型参考框架
6.1企业敏捷转型参考框架总体介绍
6.2为什么采用敏捷方法
6.2.1敏捷思维
6.2.2企业敏捷转型主要收益说明
6.3基于现状选择敏捷方法和实践
6.3.1现状分析
6.3.2选择敏捷方法和实践
6.4如何实施敏捷转型
6.4.1统一认识
6.4.2明确敏捷转型模式
6.4.3选择敏捷工具
6.4.4改进组织和研发流程
附录A国外敏捷转型实践参考
附录B敏捷开发术语表
附录CSPI China服务介绍
附录D中国敏捷软件开发联盟
参考文献