1、敏 捷 开 发Agile developmentContents目录产生背景 敏捷开发敏捷框架总 结213401敏捷开发的产生背景敏捷开发的产生背景预定义的过程经验性过程管理软件开发引入过程控制使用已知的方法解决已知的问题不能够完全预先定义好,结果是不可预知的,生产过程是不可重复的.敏捷开发的产生背景需求变动需求总是在变动,反复变动,无限拖延。改不完的BUG开发工程师做出来的项目,bug不但多,而且经常改不好。常常是改了一个bug,出现另一个Bug。原本好的功能,反而会因为改Bug导致出现的问题更多。理解出现错误最后做出来的成品完全不是产品经理想要的样子。团队缺乏战斗力凝聚力Team的战斗力和
2、凝聚力不强,经常是对着干,对分配的任务总是各种抱怨,出现问题后第一反应是这个不管我的事,不是我的问题,是后端/前端设计的问题。传统的软件工程方法02敏捷开发详细介绍敏捷开发详细介绍12356概念开发宣言敏捷流程为什么采用它84十二原则敏捷VS传统适用范围7要求敏捷开发概念8敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法以人为核心迭代循序渐进敏捷开发敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代
3、的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。以人为核心迭代敏捷开发敏捷开发以人为核心10开发是技术,同时也是一门艺术。敏捷开发的艺术,就是以本设计团体为中心,和外界各类人员进行配合的艺术。一是开发设计者,即在软件整个项目中的程序分析、构建、设计和测试等等相关人员。他们是项目开发的最终实现者,对软件的质量、进度等起到决定性作用。二是客户。这里的客户不但是指软件最终用户,也可以指上级领导和大项目经理等这些本单位上层领导。敏捷开发迭代集成可使用可演示可运行软件项目构建子项目子阶段敏捷开发四个开发宣言可以工作的软件胜过面面俱到的文档个体和交互胜过过程和工具客户合作胜过合同谈判响应变
4、化胜过遵循计划1423开发宣言01020304我们最重要的目标,是通过及早和持续不断地交付有价值的软件使客户满意欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。经 常 地 交 付 可工 作 的 软 件,相 隔 几 星 期 或一 两 个 月,倾向 于 采 取 较 短的周期。业务人员和开发人员必须相互合作,项目中的每一天都不例外。敏捷开发十二原则敏捷开发十二原则05060708激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。不论团队内外,传 递 信 息 效 果最 好 效 率 也 最高 的 方 式 是 面对面交流可工作的软件是进度的首
5、要度量标准。敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。敏捷开发十二原则09101112坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。以简洁为本,它是极力减少不必要工作量的艺术。最好的架构、需求和设计出自自组织团队。团队定期地反思如何能提高成效,并依此调整自身的行为表现。敏捷开发传统开发的流程瀑布模型(预见性的方法)软件概念需求分析架构设计详细设计编码测试用户需求软件需求原型架构文档设计模型代码文件123固定的、没有弹性的基于文档的开发方式很难去达到互动需求没有完全的被了解或需要完全地改变,瀑布模型很难实现敏捷开发流程敏捷开发(迭代的方式)需求产品迭代01
6、02强调在获得最简短的可执行功能的部分,能够及早给予企业价值整个项目的生命周期里,可以持续的改善、增加未来的功能敏捷开发传统开发VS敏捷开发VS传统开发客 户 田 总 要 求 开 发 一 辆 上 班 用 的 交 通工 具,时 间 紧 迫,要 求 马 上 上 车生命周期直观对比开发过程对比传统开发过程敏捷开发过程互联网需要敏捷开发今年张小龙在WXG大会上提到:我们今天可以想一些与众不同的点子,然后我们可以很快就看到效果,因为我们可以很快把它上线了,然后可以去验证,如果不对就下线,如果还有改进余地,下个版本再去改它。这是一个能够持续实现你的想法的过程 张小龙所说的上线、验证、改进的持续循环流程实际
7、上就是一个快速试错和拥抱变化的过程。当今的互联网,市场变化日新月异,在不断变化的市场中取得成功就要拥有快速试错的能力。关键词:快速试错 拥抱变化 右面是滴滴打车最新的客户端截图。从图中可以看到,滴滴支持的全部车辆服务已经覆盖到了快车、单车、出租车、顺风车、专车等多达10种服务,而大众刚刚熟悉滴滴时,滴滴仅有出租车、快车和顺风车三种车型。试想如果滴滴从一开始就计划设计出10种车型再开始上线推广,那估计现在满街跑的就该是Uber或者快的或者什么滴而不是滴滴了。商机转瞬即逝,正是在一次次的上线中,从车主、用户及市场的反馈中不断调整迭代,才造就了今天的滴滴,而这正是敏捷思想的精髓所在。互联网需要敏捷开
8、发敏捷开发为什么采用敏捷开发(敏捷开发与传统开发的比较)敏捷开发 过程比传统开发要为项目和产品带来更低的风险(RISK)敏捷开发拥着比传统开发更大的透明度(VISIBILITY)敏捷开发模式使产品和团队自身都有很强的适应力(ADAPTABILITY)和生命力敏捷开发为什么采用敏捷开发更快的开发周期更强的灵活性来自终端用户的持续反馈持续反馈敏捷开发敏捷开发的要求1.敏捷开发强调开发团队不同功能的人员间紧密协同,而这需要较高的人员素质。2.敏捷开发强调人的核心作用替代文档,人员稳定性就成为了潜在的隐患。而且文档也并非一无是处,文档本身就有不可替代的价值。3.敏捷开发追求为终端用户提供更多的价值,持
9、续性的改进必然导致部分功能或配置过时或孤立。为了追寻有用价值而删除这些,反而有可能会使现有功能无法运行或出错。紧密协调人员稳定性功能或配置文档高素质敏捷开发适用范围0404开发人员可以参与决策高风险的项目实施0302项目经常发生变更01项目团队的人数不能太多03敏捷开发实践敏捷开发实践23ScrumXP极限编程4比较1开发工具敏捷开发实践开发工具XPCRYSTALKANBANDSDMLEANSCRUMFDDScrum介绍Scrum 是一个用于开发和维持复杂产品的框架,是一个增量的、迭代的开发过程,由Scrum团队及其相关的角色、活动、工件和规则组成。Scrum理解球场上在比赛每段的开始,双方都
10、要摆开阵势,并计划本段的进攻/防守路线和策略,教练和队长都可以参与计划。软件开发公司在每个迭代的开始,团队领导者都应该做好本迭代的计划,尤其是需求条目的优先级排序、选择本迭代的工作、设定必须完成的内容等。带 球 过 人 需 要 计 划!Scrum理解球场上当哨声响起,尽管队员们努力按照既定计划推进,然而场上瞬息万变,队员不可能实时按照教练或队长的指令亦步亦趋地行事,而是靠平时训练中形成的素养见机行事,达成目标。软件开发公司在每个迭代开始后,团队领导不可能也不需要事必躬亲地介入每件事情,而是应该由具体执行的人选择如何去做。团队领导要做好的是协调资源、解决困难、提供指导,以达成目标。带 球 过 人
11、 需 要 灵 活 应 变!Scrum中既有计划会、每日立会、评审会等计划和管理活动,又有迭代期内的灵活应变活动,是一种轻重结合的敏捷过程。Scrum 团队角色开发团队Scrum主管产品负责人123代表客户的意愿,从业务角度来说保证Scrum团队在做正确的事情。开发团队由组织构建并授权,来组织和管理他们的工作。Scrum Master 负责确保 Scrum 被理解并实施。Scrum 工件产品代办事项列表以用户故事形式表示的产品 需求列表,由产品负责人维护具体条目,开发团队估算工作量。定义了一个 Sprint 的开发目标,在 Sprint过程中不允许发生变更.燃尽图Sprint Burndown
12、Chart 显示了Sprint中累积剩余的工作量,它是一个反映工作量完成状况的趋势图。三大工件Sprint代办事项列表Scrum用户故事用户故事是一种表达产品需求的语言格式 产品经理通过用户故事来了解需求的细节,为Scrum团队合理制定任务优先级。最 优 项 的 用 户 故 事 将 进 入Sprint待办列表,剩下的继续评估优先级,交到下次Sprint中。Scrum用户故事ScrumSpring代办列表Scrum燃尽图燃尽图,用于展示整个Sprint待办列表的进度,当燃尽图曲线接近于0时,也就意味着这次Sprint即将完工。Scrum 活动每日站立会议持续集成Sprint评审会议产品待办事项列
13、表梳理Sprint计划会议迭代式软件开发Sprint回顾会议Scrum三大会议ScrumSprint计划会议Sprint计划会议,是产品经理、Scrum Master和开发团队碰头的会议,用于讨论用户故事并估算任务量。ScrumDaily Scrum每日例会,也称站会。整个团队会简述工作进度,并且讨论是否有任务需要搁置或是加派人手。团队往往会交流他们做完了什么,正在做什么,以及遇到的问题。ScrumSprint Review Sprint临近尾声时,我们会进行Sprint回顾会议。这时研发团队会向产品经理演示开发好的功能,然后整个团队讨论是否有需要改进的地方。Scrum 过程123开始 Scr
14、umSprint 迭代发布产品Scrum 迭代过程选择Sprint 结束需提交完成的需求项分解任务,记入 Sprint backlog 文档中进行每日 Scrum站立会议,绘制燃尽图认领任务,估计时间Sprint评审回顾 product backlog估计投入时间Scrum 回顾下一个 Sprint 做准备XP(ExtremeProgramming)极限编程XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。XP(ExtremeProgramming)极限编程321678459测试驱动开发改进设计持续集成集体代码所有权简单设计客户测试计划游戏完整团队XP结对编程
15、10集体代码所有权11隐喻12可持续的速度Scrum和XP的比较在迭代中,是否允许修改需求XP在一个迭代中,如果一个用户素材还没有实现,则可以用另外的需求将其替换,替换的原则是需求实现的时间量是相等的。Scrum是不允许这样做的迭代长度的不同XP的一个Sprint的迭代长度大致为12周,而Scrum的迭代长度一般为 2 4周软件的实施过程中,是否采用严格的工程方法,保证进度或者质量。在迭代中,User Story是否严格按照优先级别来实现XP是务必要遵守优先级别的 但Scrum在这点做得很灵活Scrum没有对软件的整个实施过程开出养个工程实践的处方。但XP对整个流程方法定义非常严格04总结总结
16、敏捷开发是一个过程,不是一个事件。在敏捷开发的各个过程中可能集合了很多种 传统软件开发方法,比如迭代、增量开发,甚至有瀑布、快速原型法的影子,也许还有更多。敏捷开发可理解为在原有软件开发方法基础上的整合取其精华,去其糟粕。因此敏捷开发继承了不少原有方法的优势。这也是为什么现在敏捷开发为很多工程师所推荐的方法。附录敏捷中国史关键节点1.2000 年 6 月,国务院印发鼓励软件产业和集成电路产业发展的若干政策,简称“国发 18 号文”,拉开了中国 IT 业十余年飞速发展的大幕。2.2000年 11 月,北大青鸟 APTECH 提出“培养软件产业工人”的理念,并首创“软件蓝领”的称谓。3.2001
17、年 2 月,美国犹他州雪鸟滑雪度假村,“敏捷软件开发联盟”成立,并签署“敏捷宣言”。仅仅几个月后,林星、石一楹等国内的先行者开始翻译引进与敏捷相关的资料。4.2001 年 12 月,程序员杂志用大篇幅介绍“代码重构”(即 Refactoring),这是中国的正式出版物首次刊载与敏捷软件开发相关的内容。5.2002 年 6 月,解析极限编程:拥抱变化中译本出版,这是国内第一本关于敏捷的专著。到 2003 年,敏捷软件开发自适应软件开发重构等敏捷基础著作都被翻译引进。6.2003 年 9 月,范凯成立“Hibernate 中文站”,即后来的“Java 视线”(JavaEye)网站。到 2011 年
18、,JavaEye 很可能是当时全球最大的在线 Java 技术社区。附录敏捷中国史关键节点7.2005 年 2 月,ThoughtWorks 在中国正式注册营业。同年6月,该公司首席科学家、敏捷宣言签署人、重构作者 Martin Fowler 访华,但因病错过了上海站活动,只出席了北京站“敏捷技术专家圆桌会”。8.2005 年底,整个诺基亚网络有 9 个项目在开展敏捷试点,其中一个在杭州研发中心,该试点项目的领导者Bas Vodde 和参与者吕毅、徐毅等后来都成为中国敏捷社区的重要推动者。9.2006 年 3 月,阿里妈妈开始使用 Scrum 方法,并结合了极限编程的一些实践。10.2006 年
19、 6 月,Martin Fowler 再度来华,出席首届“敏捷中国”开发者大会,大会的主题是“敏捷释放软件价值”。11.2006 年 11 月,ThoughtWorks 给腾讯提供为期 3 天的敏捷入门培训,促成腾讯管理层下定决心走敏捷这条道路。附录敏捷中国史关键节点12.2007 年,李国彪从加拿大回国创立了敏捷培训和咨询公司优普丰(UPerform)。13.2007 年 12 月,华为中央软件部下属的网管平台产品 iMAP 研发团队启动了华为在国内的首次敏捷试点,ThoughtWorks 派出的 3 人咨询团队为该试点项目提供教练服务。14.2008 年 5 月,优普丰在上海举办 Scru
20、m 认证公开课,开了国内 Scrum 认证培训的先河。15.2008 年,路宁在第三届“敏捷中国”大会上指出敏捷是在软件研发领域落地精益的实践,并提出用精益原则识别和消除软件研发中经常存在的浪费。16.2008 年 9 月,吕毅和李国彪发起中国第一次 Scrum Gathering 聚会。17.2009 年,华为全面推行敏捷,产品与解决方案总裁徐直军在一年中签发了 3 个与敏捷推行相关的发函。18.2009 年,熊妍妍开始牵头主办敏捷之旅在中国的系列活动。在影响力最盛的 2011 年至 2014 年间,敏捷之旅每年在十余个城市举办,参会人数超过 2000 人。附录敏捷中国史关键节点19.201
21、0 年,由中国软件行业协会系统与软件过程改进分会倡导,多家政府、企业及民间组织共同组建成立“中国敏捷软件开发联盟”。20.2011 年 9 月,乔梁和李剑在“敏捷中国”技术大会上做题为“持续交付”的演讲,随后几年中,持续交付和 DevOps 受到国内众多大型企业的重视。21.2012 年,为阿里巴巴网站,速卖通、1688、村淘 4 大网站提供支持的 B2B 质量保证部,开始打造一站式研发提效平台“云效”。到 2016 年,云效平台已经覆盖阿里 60%的事业部。22.2014 年,阿里钉钉产品团队成立,这支新成立的产品团队复制了来往团队的大部分敏捷管理与技术实践,并且以全功能子团队的形式改组了其
22、内部结构,由此折射出敏捷在阿里已经相当普及。附录敏捷中国史关键节点23.2016 年,徐毅在 Gdevops 全球敏捷运维峰会(杭州站)的演讲中,将设计思维、敏捷、DevOps 三者并列。24.2016 年,招商银行开始组织轻型化、精益化的改革,逐步建立了金融科技孵化平台,打造出高效的创新孵化流程与机制。25.2016 年,腾讯 TAPD 平台有超过 3000 个项目团队在使用,用户人数超过 30000。2017 年 5 月,腾讯将 TAPD 以云服务的形式对外开放,随后一年服务超过 120 万用户。26.2017 年 12 月,据云栖社区发布的2017 中国开发者调查报告,45.6%的项目采用“Scrum 敏捷开发”流程模式。敏捷已经成为行业主流。THANKS!