Scrum敏捷项目管理 中睿信息技术有限公司 鹿传明 QQ技术群: 106453775 1NoSilverBullet 23Scrum是什么? o Scrum是橄榄球运动的一个专业术语,表示“并列争球”。o 这里特指一种敏捷开发的模型.Scrum是一个迭代性、增量性的流程,适用于任何的产品开发以及工作管理。Scrum将软件开发团队比拟成橄榄球队,有明确的昀高目标,熟悉开发流程中所需具备的昀佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。 44Scrum目标ManageComplexity,UnpredictabilityandChangethroughVisibility,InspectionandAdaptation通过高透明性、检验和适应性来管理复杂性、不可预测性和变化5Scrum核心价值观 o 承诺(Commitment):承诺不只是把一项工作分配给团队,也不是简单的答应去完成。它是建立在目标之 上的来自内心的接受和应许,这里只有“做”和“不做”,没有“让我试试” o 专注(Focus):像邮件和不相关的会议就是很常见的一些分散注意力的事情,我们需要做得是不转移注意力,把精力全部集中在承诺的事务上 o 公开(Openness):保持一直让任何有兴趣的人员都可以在墙上、wiki页面或者仪表盘工具上获知项目当前状况,能够了解多少功能已经完成,哪些正在做,每次迭代和发布的目标是什么o 尊重(Respect):每个团队成员都必须被尊重的看待,大家一起指定工作规范(workingagreements)o 勇气(Courage):为了接受并负责任的交付产品,团队成员必须有足够的勇气来对大家说“不”,比如不能承诺时,对纳入sprint的故事说“不”等 66Scrum理论的三大支柱 o Scrum是以经验过程控制理论为依据,采用迭代、增量的方法来提高产品开发的可预见性并控制风险。o 高透明性(Transparency)n 高透明度确保管理结果的人看得到那些影响结果的过程方面。这些过程方面不仅要透明,而且那些被观察到的方面也必须被充分了解。o 检验(Inspection)n 开发过程中的各方面必须做到经常性的检验,以确保及时发现过程中的重大偏差。o 适应(Adaptation)n 如果检查员经检验发现过程中的一个或多个方面不满足可接受标准,并且昀终产品是不合格的,那么检查员就必须对过程进行调整。调整工作必须尽快实施以减少进一步的偏差。 77Scrum特点 o Scrum规定了一个非常简单的开发流程。 o Scrum是现有设计流程的总结。 o Scrum以团队为基础,是一种在需求迅速变化情况下迭代地、增量地开发系统和产品的方法。 o Scrum是一个控制由利益和需求冲突导致的混乱的流程。 o Scrum是改善交流并昀优化合作的方式。 o Scrum是一种检测产品开发和生产过程中障碍并将其去除的方式。 o Scrum是昀大化生产率的一种方法。 o Scrum适用于单一的项目到整个组织。Scrum可以控制并组织多个具有相关性的产品开发以及拥有超过千名开发者和执行者的项目实施过程。 o Scrum能让每个参与者都对自己所做的工作以及自己做出的贡献感到骄傲,并让他们发挥到昀佳水平。 88敏捷联盟宣言9敏捷实践原则 1. 我们昀优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2. 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。 3. 经常性的交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。 4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。5. 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。 6. 在团队内部,昀具有效果并且富有效率的传递信息的方法,就是面对面的交谈。 10敏捷实践原则 1. 工作的软件是首要的进度度量标准。 2. 敏捷过程提倡可持续的开发进度。责任人、开发者和用户应保持一个长期恒定的开发速度。3. 不断关注优秀的技能和好的设计会增强敏捷能力 4. 简单——使未完成的工作昀大化的艺术——是根本的。 5. 昀好的构架、需求和设计出自于自组织的团队。 6. 每隔一定时间,团队会在如何才能更有效的工作方面进行反省,然后相应地对自己的行为进行调整 11各种软件开发方法对比 1212各种敏捷过程 n SCRUM XP(eXtremeProgramming) TheAgileUnifiedProcess(AUP) FDD(FeatureDrivenDevelopment) DynamicSystemsDevelopmentMethod(DSDM) 13各种敏捷开发方法对比 1414ScrumVS.XP o XP与Scrum是敏捷方法中被业界采用昀为广泛采用的两种实践o Scrum注重的是管理和组织实践,而XP关注的是实际的编程实践,两者都聚焦于信息价值流和信息沟通,除了迭代长度稍有差别外,大多数Scrum实践与XP是兼容且相互补充o 组合使用Scrum和XP会有显著收获!XP的结对编程、测试驱动开发(TDD)、持续集成等昀佳实践仍然可以在Scrum中使用1515ScrumVS.XP 1616Scrumhasbeenusedby:• Microsoft• Yahoo• Google• ElectronicArts• HighMoonStudios• LockheedMartin• Philips• Siemens• Nokia• CapitalOne• BBC• Intuit• Intuit• NielsenMedia• FirstAmericanRealEstate• BMCSoftware• Ipswitch• JohnDeere• LexisNexis• Sabre• Salesforce.com• TimeWarner• TurnerBroadcasting• Oce17Scrumhasbeenusedfor:o Commercialsoftwareo In-housedevelopmento Contractdevelopmento Fixed-priceprojectso Financialapplicationso ISO9001-certifiedapplicationso Embeddedsystemso 24x7systemswith99.999%uptimerequirementso theJointStrikeFighter• Videogamedevelopment• FDA-approved,life-criticalsystems• Satellite-controlsoftware• Websites• Handheldsoftware• Mobilephones• Networkswitchingapplications• ISVapplications• Someofthelargestapplicationsinuse18Puttingitalltogether19迭代 vs.增量 o 迭代:在实现软件的每一功能时反复求精的过程,是提升软件质量的过程,是从模糊到清晰的过程;o 增量:在发布不同的版本时,每次都多发布一点点,是软件功能数量渐增地发布的过程。2020Scrum核心过程 21Scrumonapage 2222Sprints(冲刺)o Sprint的本意是指冲刺,在Scrum中,一个Sprint就是一个迭代,Scrum项目通过一系列的sprints来推进,Sprints类似于极限编程的迭代。o Sprint长度通常2-4周,它是一个时间箱,在项目进行过程中不允许延长或缩短Sprint长度。o 稳定的周期会带来更好的节奏 o Sprint由Sprint计划会议、开发工作(需求分析、设计、开发、测试、质量控制等)、每日站会、Sprint评审会议和Sprint回顾会议等活动组成。o Sprint一个紧跟一个进行,之间没有任何时间间隔。 23一个Sprint周期内需求不发生变更 o 计划Sprint周期的长度要依赖于你能在多长时间内保证在Sprint期间需求不发生变更 变更24有效的沟通 2525让Scrum团队坐在一起! o 让Scrum团队坐在一起! o “一起”意味着:n 互相听到:所有人都可以彼此交谈,不必大声喊,不必离开座位。n 互相看到:所有人都可以看到彼此,都能看到任务板——不用非得近到可以看清楚内容,但至少可以看到个大概。 n 隔离:如果整个团队突然站起来,自发形成一个激烈的设计讨论,团队外的任何人都不会被打扰到。 2626时间盒迭代(timeboxing) o 时间盒迭代(timeboxing/timeboxediterations)的核心思想:在预算时间内对完不成的功能进行删减或者延迟,而不是拖延预算的时间。o 如果在迭代进行中,开发团队发现进度落后,无法完成全部的迭代开发任务和计划的需求功能时,敏捷方法通常允许或要求开发团队与客户协商,减少开发任务或需求(可以放入下一次迭代中),以保证在既定的时间点提交高质量的成果(尽管这个成果可能不完整)。o 参考: 为什么时间盒迭代提倡删减需求任务?EssUP迭代核心——时间盒 Timeboxing2727ScrumFramework • 产品负责人• Scrum教练• 团队角色(Roles)• Sprint计划• Sprint评审• Sprint回顾• 每日scrum例会仪式(Ceremonies)• Productbacklog• Sprintbacklog• Burndowncharts燃尽图产出工件(Artifacts)28产品负责人(ProductOwner) o 定义产品特性 o 决定发布日期和内容 o 对产品收益负责(ROI)o 根据商业价值排定特性的优先级 o 根据需要在每个迭代中调整产品特性和优先级 o 接受或否决开发结果 29Scrum教练(ScrumMaster) o 对项目组来说代表管理层 o 负责制定Scrum价值观念和实践,确保每一个成员都认同Scrum价值观和遵守其游戏规则o 组织每天的DailyScrum会议 o 帮助ScrumTeam规划Sprint计划 o 清除障碍 o 确保团队功能完备富有效率 o 促进所有角色和职能的紧密协作 o 替团队抵御外部干扰 30Scrum团队 o 一般5-9人 o 跨部门:程序员,测试员,界面设计人员等等 o 成员必须是全职投入:可以有例外 (例如数据库管理员等)o 团队自我组织:理想情况下,团队成员是平等的,不分头衔 o 一个sprint中保持成员稳定 o 负责将ProductBacklog转化成Sprint中的工作项目 o 所有团队成员协调,合作完成Sprint中每一个规定的工作 o 所有团队成员和ScrumMaster负责每一个Sprint的成功 31• Productowner• ScrumMaster• TeamRolesScrumFramework• Product