敏捷开发注:DC7.0项目组二.敏捷核心价值&原则三.敏捷大致流程一.什么是敏捷开发?四.DC7.0敏捷提纲五.给敏捷版本的建议敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。一.什么是敏捷开发?1.为什么说是以人为核心、需求进化为核心?瀑布开发模型整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心;已需求为核心。2.什么是迭代?迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。3.循序渐进。强调的是持续改进,使得你的团队高效工作。二.敏捷四大核心价值2.可工作的软件高于理解文档4.变化响应高于计划遵循3.客户协作高于合同协商1.个人和互动高于流程和工具二.核心价值解读1.个人和互动高于流程和工具理解:工具和流程固然重要,只是不如高效的团队合作更重要。敏捷重在以人为本,强调互动交流的重要性。2.可工作的软件高于理解文档理解:文档工作有其实际意义:一些最终交付给用户的文档,例如,用户手册和操作说明实际上正是最终解决方案中不可或缺的部分,不过也只是一小部分而已。永远不要忘记作为IT开发团队的首要任务是开发出符合用户需求的解决方案,而不是文档。不然的话,软件开发就该改名为“文档开发”了,不是吗?二.核心价值解读3.客户协作高于合同协商客户协作==可理解为各种不同的项目利益相关者,包括最终用户、他们的上司、高级IT主管、公司战略负责人、运营人员、支持人员、合规审查人员以及其他各色人等理解:只有项目的利益相关者本人能够告诉你他的需求是什么他们可能无法很具体地描述解决方案他们第一次可能无法抓住重点在他们看到你的团队的实际工作成果后,可能会改变自己的想法二.核心价值解读4.变化响应高于计划遵循理解:所面临问题的理解会不断变化,有需求的变化、有关系人期望的变化、有环境因素的变化等等,变化是必然的。预先制定项目计划是必需的,但是项目计划必须是有灵活性的。二.敏捷12条原则1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意理解:规划迭代故事时必须按照优先级安排,为客户先提供最有价值的功能。通过频繁迭代能与客户形成早期的良好合作,及时反馈提高产品质量。二.敏捷12条原则2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。理解:敏捷过程参与者不怕变化,他们认为改变需求是好事情,因为这些改变意味着我们更了解市场需求。(不过还是要少变点好,折腾不起)二.敏捷12条原则3、经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。理解:保证交付的软件可以很好的工作,那么交付时间越短对产品质量就更有益二.敏捷12条原则4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。理解:软件项目不会依照之前设定的计划原路执行,中间对业务的理解、软件的解决方案肯定会存在偏差,所以客户、需求人员、开发人员以及涉众之间必须进行有意义的、频繁的交互,这样就可以在早期及时的发现并解决问题。(这点重点强点的是交互沟通的重要性)二.敏捷12条原则5、围绕被激励起来的人个来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作。理解:只要个人的目标和团队的目标一致,我们就需要鼓舞起每个人的积极性,以个人为中心构建项目,提供所需的环境、支持与信任。二.敏捷12条原则6、在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。理解:在十几或者二十几个人组成的大团队中,文档是一种比较合适的传递知识和交流的途径。而敏捷团队一般不会很多人(大团队实施敏捷时也会分成多个小的敏捷团队),所以大量的文档交流其实并不是很经济的做法。此时面对面的交谈反而更快速有效。二.敏捷12条原则7、工作的软件是首要进度度量标准。理解:衡量这个功能是否完成的首要标准就是这个功能可以工作了,对用户来说已经可以应用了。(关键点:完成标准要明确好,最好是可工作的软件)二.敏捷12条原则8、敏捷过程提可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。理解:很多人都认为软件开发中加班是很正常的,不加班反而不正常。敏捷过程应该摒弃拼拼的态度,下一个项目依旧会让你的组员再次突击。这时不知道有人会不会说,那我们就一直加班,也是“持续的开发速度”啊,这时可要注意了,持续加班只会导致人疲劳、厌倦,保持长期恒定的速度也只是一种理想而已。(关键点:sprint周期要恒定,任务安排要合理)二.敏捷12条原则9、不断地关注优秀的技能和好的设计会增强敏捷能力。理解:通过回顾总结,保留项目一些好的经验技能。通过一些好的技术实践可以加强产品敏捷能力,很多原则、模式和实践也可以增强敏捷开发能力。二.敏捷12条原则10、简单----使未完成的工作最大化的艺术----是根本的。理解:通过最简单的方法完成现在需要解决的问题二.敏捷12条原则11、最好的构架、需求和设计出自自组织的团队理解:自组织团队的第一个要素就是必须有一个团队,而不仅仅是一群人,更不是一个团伙。团队,共同完成一个伟大的使命;自我管理;高效完成二.敏捷12条原则12、每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。理解:持续改进三.敏捷大致流程1.什么是Scrum?敏捷流程有Scrum和xp。我们公司采用的是Scrum。Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。2.Sprint:一个Sprint就是一个迭代,从Sprint计划会议开始到Sprint回顾会议结束为一次迭代。Sprint有严格的时间控制,一般每次Sprint的周期为2-4周,时间到了Sprint就结束。三.敏捷大致流程3.三种角色【PO】产品负责人(ProductOwner)负责维护产品待办事项列表,确保每个成员明晰列表内容、明确哪些条目具有最高优先级,从而了解下个需要开发的条目。PO是非常重要的角色,他对客户需求有着很强的敏感性,清楚什么对客户最重要,做到什么程度能让客户满意,在TEAM遇到需求问题时都能给出解答或决策。【SM】ScrumMaster负责确保Scrum团队遵守Scrum价值、实践和规则;帮助Scrum团队和整个组织实施Scrum;通过指导和引导,教授Scrum团队更高效工作、生产出高质量的产品;帮助Scrum团队理解并采用自我管理---(教练)。【TEAM】团队负责在每个迭代将产品待办事项列表转化成为潜在可交付的功能增量。TEAM是自管理的,有实际的自主权,文化上要符合,基于激发人的主动性、避免受外界干涉。他们完全有权决定如何把需求转化成产品功能,比如是否要做设计,采用什么算法,如何做缺陷预防等。PO和SM都无权指挥TEAM怎么去实现需求,但TEAM必须承诺交付的功能是PO期望的。三.敏捷大致流程-如何进行Scrum开发?Sprint计划会议1.迭代计划会在每个迭代第一天召开2.理解最终用户到底要什么3.目的是选择和估算本次迭代的工作项Sprint评审会议团队在会议中向最终用户展示工作成果,团队成员希望得到反馈,并以之创建或变更Backlog条目站立会议(10分钟以内)1.昨天完成情况2.今天计划3.存在的风险和障碍反馈注:不要讨论具体的问题四.DC7.0敏捷项目之初,我们打算走的是瀑布模型,但工作量估算处理比较多,按照人力基本上要转集成就差不多6月份了,因此我们想走敏捷会不会解决我们人力确实的问题,让测试可以尽快的介入测试!我们基于什么走敏捷开发?1.框架。DC使用的插件化的编程思路,方便于任务的划分,预研阶段大体的框架已经初步形成。(这里体现的是什么2.查询统计页面功能也更比较独立的,相互依赖比较少。3.该覆盖率的单元测试和自动化于是我们把需求表和估算表整形成我们的PBL,走敏捷流程这里我们回顾一下,什么是迭代?迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务。---对,我们DC可切分成小任务开发,符合迭代概念!四.DC7.0敏捷于是我们把需求表和估算表整形成我们的PBL,走敏捷流程PBL:需求文档和估算表直接转换,形成了我们DC7.0PBL根据工作量,我们迭代分为6个sprint,每个迭代持续时间为3周3周,挂钩原则体现:第3点原则,经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好第8点原则,敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。(通过恒定的周期,能更好的评估组员的生产效率,更有利于恒定的开发速度)四.DC7.0敏捷每个sprint开始,我们就列出本迭代需要讨论的方案、需要评审的方案点挂钩原则:第6点,在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。挂钩核心价值:可以工作的软件胜过面面俱到的文档每天进行站立会议:挂钩原则:第4点,在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。(注:这里业务人员,我们当前没有直接面对客户,主要是我和规划面对面的沟通)挂钩核心价值:个体和交互胜过过程和工具四.DC7.0敏捷需求体验,直接提供IP给市场、客服、规划,可实时进行体验反馈挂钩原则:第1点,我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。挂钩核心价值:客户(利益关系人)合作胜过合同谈判sprint计划会议&评审会议&回顾会议挂钩原则:第12点,每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应的对自己的行为进行调整。(回顾、可持续改进)第9点,不断地关注优秀的技能和好的设计会增强敏捷能力。四.DC7.0敏捷挂钩原则:第7点,工作的软件是首要的进度度量标准。设定好每个task的完成标准,只有符合完成标准的才是真正的完成!开发设计完成标准从高处着眼,理清实现的思路,规避技术方案风险1、方案评审已完成2、设计文档已写完,定稿3、定稿评审已完成4、设计checklist已检查通过编码完成标准代码质量最基本的保证,避免后面还要花很多时间去补代码和改bugSprint标准(后台):3、自测检查没问题后签入代码UI完成标准(前端):和后台联调通过,没问题后签入代码(json已经定义好的前提下可以假数据模块)release标准(每个迭代提交测试前做,Sprint不用做):7、BVT案例执行通过BVT测试完成标准保证基本功能正常release标准(每个迭代提交测试前做,Sprint不用做):所有BVT发现的缺陷已修复并回归通过五.给敏捷版本的一些建议1.高覆盖率的自动化,做到可持续集成2.模块划分要可测试化(每个sprint的产出都是可测试的)3.要定义好完成标准4......讨论环节THEEND,谢谢~