质量保证系列课件——敏捷项目过程介绍——2011年3月Confidential©2010iSoftStoneGroup.AllRightsReserved.21.敏捷核心理念•1.1敏捷宣言•1.2.敏捷原则•1.3.敏捷理念•1.4.瀑布、迭代和敏捷的区别2.敏捷优秀实践3.敏捷流程介绍目录Confidential©2010iSoftStoneGroup.AllRightsReserved.1.1敏捷宣言3敏捷宣言本质是揭示一种更好的软件开发方式,启迪人们重新思考软件开发中的价值和如何更好的工作。我们认为左项具有更大的价值--当然这并不意味着右项没有价值个体和交互过程和工具胜过可以工作的软件面面俱到的文档胜过客户合作合同谈判胜过响应变化遵循计划胜过Confidential©2010iSoftStoneGroup.AllRightsReserved.1.2敏捷原则41.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。4.可以工作的软件是首要的进度度量标准。5.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。6.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。7.在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。9.不断地关注优秀的技能和好的设计会增强敏捷能力。10.简单—使未完成的工作最大化的艺术—是根本的。11.最好的构架、需求和设计出自于“自组织”的团队。12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后响应地对自己的行为进行调整。Confidential©2010iSoftStoneGroup.AllRightsReserved.敏捷=理念+优秀实践+应用理念(核心思想)应用1.3敏捷理念优秀实践(经验积累)5Confidential©2010iSoftStoneGroup.AllRightsReserved.1.3.1Value:聚焦客户价值,消除浪费6Source:《如何提升软件开发效率》08年统计华为:研发版本废弃特性07.1-08.6年某产品线所有产品中重要特性无应用的比例达22%(需求变更和分析不足占63%)重要特性无应用原因占比需求分析不全面不深入,25%大T需求变更,38%过渡技术,但一线强烈要求,4%竞标特性,8%方案缺陷客户无法实施,25%软件业:45%的软件特性客户没有使用Source:StandishGroup来自5万个软件开发项目的调查可以工作的软件面面俱到的文档胜过客户合作合同谈判胜过Confidential©2010iSoftStoneGroup.AllRightsReserved.1.3.2Team:激发团队潜能,加强协作7•团队是价值的真正创造者,应加强团队协作、激发团队潜能。•软件开发是一种团队活动,首先应做到提升沟通效率降低交流成本。效率流行度文档录制的视频录制的音频2人邮件沟通2人白板沟通2人电话沟通业界调查:50人团队,每人平均30%时间用于编码,70%的时间用于与其他成员交流。需求变更降低比例补充场景数TR4前发现缺陷比例版本周期缩短(周数)无线49.36%8855.90%2.82核心网45%19045.18%3.5网络31%33042.5%2.6业软30%30048.15%2.1公司平均38.84%90847.93%2.76华为试点调查:开发测试拉通,效率质量改善明显个体和交互过程和工具胜过Confidential©2010iSoftStoneGroup.AllRightsReserved.1.3.3Adapting:不断调整以适应变化8•能够结合自身灵活应用才是真正敏捷,•不断的根据经验调整,最终交付达到业务目标的产品软件开发是复杂不可预测的经验控制过程随软件规模增长,需求变化呈非线性增长响应变化遵循计划胜过Confidential©2010iSoftStoneGroup.AllRightsReserved.1.4瀑布、迭代和敏捷的区别9•瀑布:开发模型–重量级:所有需求统一步伐,全部分析完毕后再开始设计,全部设计完毕后再启动编码…–重过程:有明显的过程,每个过程不重叠,界线清晰—SRS、HLD、LLD、Coding、UT、IT、ST,开发完毕后集中转测试。•迭代:开发模型–中量级:需求分成多批,每批一轮迭代,每轮内都是小瀑布;每轮迭代出一个版本交付测试。–没有明显的过程。•敏捷:开发模式–轻量级:需求分解成更小粒度,每个小粒度需求1~3天实现,并立即转测试。从瀑布、迭代到敏捷,是量变引起质变。(每轮迭代结束时出版本并不是测试的开始,更多的是开发和测试共同结束点)–过程:在一个过程框架下,嵌入了很多敏捷实践,并由很强的原则进行约束。–开发模式之外,更是一种思想、理念、文化!Confidential©2010iSoftStoneGroup.AllRightsReserved.101.敏捷核心理念2.敏捷优秀实践•2.1.迭代开发•2.2.持续集成•2.3.Story驱动•2.4.站立会议•2.5.完整团队•2.6.可视化管理•2.7.结对编程•2.8.TDD•2.9.RCA•2.10.演示3.敏捷流程介绍目录Confidential©2010iSoftStoneGroup.AllRightsReserved.2.1.迭代开发11什么是迭代开发迭代开发是将整个软件开发生命周期分成多个小的阶段(一般2-4周),每个阶段都开展需求分析、设计、实现和测试,每个阶段都可以生成一个稳定和被验证过的软件版本。通过将高技术风险的需求在早期迭代里实现,有助于尽早暴露问题和及时消除风险。通过提供功能渐增的产品,持续获得客户反馈,根据反馈及时调整,使产品更加符合客户需要。确保每次迭代交付质量,避免形成技术债务,每一次迭代都必须建立在稳定的质量基础上,并做为下一轮迭代的基线,整个系统的功能随着迭代稳定地增长并不断完善。每次迭代要邀请用户代表(外部或内部)验收,提供需求是否满足的反馈。如果迭代周期已到,无论任务是否结束,也要求终止当前迭代,未完成任务放到下次迭代再做。迭代开发的好处迭代开发的关键点Confidential©2010iSoftStoneGroup.AllRightsReserved.2.2.持续集成12持续集成(CI)要求团队成员经常集成他们的工作,以验证新合入的变化没有造成任何破坏,通常每人每天至少集成一次,每次集成通过自动化构建完成。维护单一的代码配置库,每个人每天将对代码的改动提交配置库。实现构建自动化--自动的度量、检查和测试,减少了重复的人力活动持续集成要尽量快,最好快到5分钟内能完成本地构建,30分钟内完成产品提交构建,8小时内完成每日构建。持续集成的问题是项目组最高优先解决的问题。构建成功率和频率是衡量CI效果的重要指标。每个人都较容易得到最新可正常运行的软件。持续集成实现“无事件”局面,尽早发现项目存在的问题,减少返工。降低风险,在缺陷引入的时候即被发现,缺陷容易修复给频繁的应用部署提供帮助,随时都可能发布软件。持续集成的好处持续集成操作关键点解决问题单源码CheckIn源码Update自动编译/代码静态检查自动单元测试打包,安装盘(二进制文件,配置文件,帮助文件等)包FTP自动部署自动验证自动发布源码管理编译/测试部署随时随时每天一次每月一次发布版本发布人工自动工具自动工具自动工具生成构建报告自动工具支撑人工验证验证每周一次内部测试版本构建人工自动自动邮件发送报告什么是持续集成Confidential©2010iSoftStoneGroup.AllRightsReserved.2.3.Story驱动13Story驱动是指以Story为交付单元进行开发、测试、发布Story是能够独立交付,能够被用户感知的最小需求UserStory是Story开发的基准,它从客户的角度描述Story所需要实现的功能传统项目:所有功能Story驱动项目:测试测试Story…测试…Story1StoryN只一个开发周期,所有功能开发完成后,集成进行测试每个Story为一个开发周期,每完成一个Story即转入测试状态,并与已完成的Story不断集成需求设计CODE测试Confidential©2010iSoftStoneGroup.AllRightsReserved.2.4站立会议团队成员的例行沟通机制,每天固定时间、固定地点、不超过15分钟,Team成员全体站立参加:从上次会议之后完成了哪些工作?在下次会议之前准备完成哪些工作?在工作进行中存在哪些障碍?有哪些好的实践或学到了哪些教训?14增加团队凝聚力,产生积极的工作氛围,及时暴露风险和问题。整个团队都清楚团队内部所发生的事情。每日跟进工作进展,快速解决问题或提供帮助。会议中禁止针对问题的讨论,如果需要讨论,将在会后进行。会议提出的问题必须被记录,并在会后铲除障碍。团队是在互相汇报和交流情况,并不是向PO、项目经理或敏捷教练汇报。站立会议的好处站立会议关键点Confidential©2010iSoftStoneGroup.AllRightsReserved.2.4站立会议案例15•目的:通过站立会议实现团队自我管理•陈述昨天开展什么工作时,以Story为中心,从工作对象、进展和工作质量等方面进行总结。–比如“昨天我开展测试”==》“昨天我开展哪个Story测试,测试了多少用例,发现了多少问题,其中哪些问题比较严重值得关注”;–比如“昨天我编码完成”==》“完成Story代码写作,findbugs全部清零,自测试通过,合入服务器,编码过程中,我发现某两个类有重复代码,可以优化…”•每个人都要把觉得对团队有价值的想法说出来;昨天做了什么事情,或是想到什么事情对团队有帮助;你知道哪些事情是大家需要知道的。•切忌对别人的话漠不关心、描述从燃烧图上就能看到的进度,比如昨天做某个Story,今天计划做某个Story等,会后又发现很多问题。Confidential©2010iSoftStoneGroup.AllRightsReserved.Team:系统、开发、测试、资料在一个团队内,并且全程参与项目团队之间采用最高效的沟通方式——面对面的沟通角色主要职责POProductOwner(产品所有者),负责将客户的需求信息化并传递给项目组,代表利益相关人(如用户、Marketing、用服、管理者等),对产品投资回报负责•Story分解和澄清,确保需求理解一致•项目组内维护架构、确保设计思路一致•划分Story并输出迭代backlog,随时澄清需求•参与showcase、验收storyMaster•团队的教练和组织者,帮助团队正确应用敏捷实践,引导团队建立并遵守规则•组织开工会、站立会议、回顾会议•监控整个项目的进度、质量、风险CI-COCICoordinator(持续集成协调员),负责持续集成的正常运转2.5.完整团队16HSS质量部PM开发测试资料CMO(兼)CI-CO(兼)MasterPOQA质量保证项目组Confidential©2010iSoftStoneGroup.AllRightsReserved.2.6.可视化管理故事墙(展示Story进度)缺陷走势图(展示缺陷解决进展)特性墙项目组计划墙燃尽图(BurnDownChart)17可视化管理的好处简单,一目了然,降低管理成本;实时状态显示,及时暴露问题;信息同源,使团队理解一致,提升团队凝聚力;激励先进,鞭策后进,增强团队进取心。可视化管理形式举例Confidential©2010iSoftStoneGroup.AllRightsReserved