Scrum敏捷软件开发过程课件.ppt
《Scrum敏捷软件开发过程课件.ppt》由会员分享,可在线阅读,更多相关《Scrum敏捷软件开发过程课件.ppt(85页珍藏版)》请在三一办公上搜索。
1、Scrum敏捷软件开发过程,2008-12-03,Jinghua LiQuality ManagerTietoEnator CorporationT&M MDR MID,2,目录,什么是敏捷软件开发?敏捷方法的项目计划敏捷项目管理和传统项目管理为什么使用敏捷?Scrum概述 Scrum的角色 Scrum实践和工作产品 敏捷开发中的估计方法测试驱动开发Scrum应用支持工具和模版一些常见的误解,敏捷开发方法,4,什么是敏捷软件开发?,敏捷软件开发是软件项目的一个概念框架.有许多建立在敏捷概念上的方法,如 Scrum 和 Extreme Programming(XP).与僵化的、重量级的、官僚式的
2、方法形成对照,比如瀑布模型(指纯粹形式的)最大限度地降低短期固定时间的迭代式软件的开发风险.,5,敏捷宣言(2001年),人和交互胜过过程和工具.Individuals and interactions over processes and tools可以工作的软件胜过完备的文档.Working software over comprehensive documents客户协作胜过合同谈判.Customer collaboration over contract negotiation随时应对变化胜过遵循计划.Responding to change over following a plan
3、,6,敏捷过程的限制,敏捷软件开发过程包含过程、原则、工具,和最重要的-人因此 诚信是基础没有过程能够对诚信进行有效地约束 诚信与否是有效实施敏捷过程的最大限制,7,使用敏捷方法的项目计划,Product Backlog(Features),521385832,Initial SizeEstimatesAs Story Points,Long term planning(best guess at the moment):32 SP of functionality,Team Velocity 8 SP/Sprint 4 SprintsTarget Sprint for each PBL it
4、em set,feasible implementationOrder.,Sprint Backlog(Tasks),“Sprintful”of top-priority PBL to thenext Sprint,More accurate estimatesas man hours,Short term planning(commitment by Team):,May be constantlyupdated,Scope frozen new PBL items to next Sprint,8,敏捷项目管理和传统项目管理,传统项目管理:事先对整个项目进行估计、计划、分析反对变更;变更需
5、要重新估计、重新规划严密的合同来减少风险,如果改变需求要走 CR 流程.项目作为一个“黑盒子”,对客户与供应商的可视性差.产品化和测试阶段是分离的.文档和计划驱动的方法.软件交付时间晚,意识到风险的时间晚.,敏捷项目管理:对整个项目做一个粗略的估计,每一次迭代都有详细的计划.鼓励变化,客户价值驱动开发.信任和赋予权力;合约使变更变得简单,增加价值.客户和开发人员之间是紧密的连续的合作关系每次迭代都产生可交付的软件专注于交付软件.第一次迭代就可交付能工作的版本,风险发现的早.,9,为什么采用敏捷?预期的收益,采用敏捷方法得当的话,可以:更加透明;随时跟踪项目的状态和进展情况,及早发现问题和风险.
6、快速交付,每次迭代都能交付可运行的软件.最高风险和最高优先级的需求,最优先进行开发.改善应对变更能力,减少大量的重计划.改善项目沟通.更好的客户参与,避免错误的假设.总之:提高了生产率;减少“浪费”(不需要的文档,重复工作等),项目的每次迭代都有明确的目标.提高客户满意度;短期内产生成效,按预期交付软件,每次迭代结束产生可以运行的软件.改善员工的满意度;团队精神,减少官僚,能够规划和管理自己的工作,减少“恐慌”,稳定的工作量(可持续的步伐).,10,敏捷方法何时有效?,公司和客户一致认为应当使用敏捷方法,双方都能理解敏捷方法.敏捷方法对需求不完整以及经常变换的项目比较有效.项目可以划分成固定时
7、间间隔的迭代,并且可以冻结正在进行的迭代的范围公司和客户都有能力担当角色尤其是Product Owner 和 Scrum Master.项目的人员结构能够分成6到10人的团队,最好每个工作地点一个小组.团队成员能够以自组织的方式工作.项目的合同允许变更.固定价格的项目可以使用敏捷,但应当尽量避免。最好在按时间和材料付费或者按月付费的项目中进行使用、变更项目的范围不需要高级管理层的批准.,11,警告!,敏捷开发过程是一个艰苦的过程Agile Work is Hard Work这种状态也许会存在很长时间!不舒服疑惑有挫折感,Scrum 概述,13,Scrum 概述(1/3),Scrum是管理软件项
8、目的一个轻量级的敏捷方法,名字来源于橄榄球运动中的scrum 过程简单,但高度的纪律性依赖迭代和增量的敏捷方法.Scrum 是一种工作管理的方法,不仅仅限于软件开发,可以用来管理其它活动.Scrum 不包含技术方法或实践.,14,Scrum 概述(2/3)项目的阶段,项目分成增量的迭代过程,在Scrum中称为迭代任务清单,通常持续2-4周的时间.Sprint 的时间是限定好的;不能从外部改变正在进行中的sprint持续时间和范围.每个sprint都可以产生可交付的迭代,即测试过并具备文档的的功能点原则上,当产品开发到一定程度时,如实现了足够的客户价值,项目可以在任何一个sprint后结束,.如
9、同任何项目,敏捷的项目有三个主要阶段:产品定义(规划);运行Sprints 所需要的准备、规划、技术分析.执行Sprints(执行):在增量时间段内实现 需求(产品需求清单).结束:准备最终发布,结束项目,15,Scrum 概述(3/3),Sprint Planning Meeting:Next Sprint GoalSprint BacklogUpdated Product Backlog,Daily Scrum meetings:What did you do yesterdayWhat will you do today?What obstacles are in your way?,S
10、ource:,Daily Scrum,SprintRetrospective,ShippableProduct Increment,Scrum角色、实践和工作产品,17,Scrum中的三种角色,Product Owner-产品所有者个人:代表所有的干系人Scrum Master:个人:负责指导过程的执行Scrum Team Scrum团队:承诺完成工作,向干系人交付产品价值,18,Scrum 角色 Scrum 团队,Scrum 团队是Scrum的中心角色,产品交付要依靠团队.Scrum 团队自我组织、自我管理Scrum 团队是职能交叉的,包含产品交付的所有角色:开发人员、测试人员、build
11、managers,文档编写,界面设计人员.Scrum 团队中的角色是不分等级的;不应当出现“我是开发人员我不作测试”.团队按照最有利于项目的原则来分担责任(如组件的所有权等).敏捷是建立在信任和授权的基础上,因此团队是自发组织的,组员选择自己的任务,而不是别人强制加以分配的.另一方面,Scrum团队有交付的责任,他们需要能够自我激励和对工作目标进行承诺.团队最佳规模:6-10 人,19,Scrum 角色 Scrum 团队,主要职责参与迭代任务清单的创建执行为干系人创造价值的工作根据团队的承诺完成所需的各项任务将工作中的各项障碍迅速与Scrum Master 进行沟通全面参与所有的各项会议更新任
12、务状态自发选择任务标识任务的完成标识发现的新的任务与其它团队共同进行工作,20,Scrum 角色 Scrum Master,Scrum Master不是一个管理者,而是一个教练和推动者-Scrum团队是一种自发的组织,是自我管理的.Scrum Master的角色通常由项目组的成员担当,组长或者项目经理。Scrum Master 应当是项目中的成员.主要职责:评价过程的健康状况加强过程消除障碍促进过程改进支持团队开发Scrum Master 的主要工作是做决策、消除障碍,保证团队能顺利交付产品,21,Scrum 角色 Scrum Master,Scrum Master 还有如下责任与其它角色配合
13、.训练团队,提高生产率.培训产品所有者和干系人,确保Scrum流程的执行确保一切工作按照既定的规范来运行.规划并进行必要的改进.推动会议的召开.维护障碍列表维护Scrum过程改进列表优秀的 Scrum Master 应当是专注的,、有决心的、有领导才能.,22,Scrum 角色 Product Owner,产品所有者代表投资方的利益,确保交付的产品与期望的一致(提供更好的投资回报).Product Owner决定产品具有哪些功能.Product Owners的主要责任是创建和维护产品需求清单,即管理项目的范围.Product Owner不断的把产品需求清单按优先级进行排序,使得最重要的功能能优
14、先实现.对于团队来说,只有一个需求集。所有的需求申请都归口到Product Owner管理商业价值(投资回报)Product Owner 还有如下责任:计划项目的发布,什么时间、向什么人等.对每次Sprint的结果进行评审和批准,23,Scrum 角色 Product Owner,参与Scrum会议迭代计划会议团队进展跟踪会议迭代评审和回顾会议能够随时回答团队工作中产生的各项和产品/业务相关的问题Product Owner 的角色一般由客户担当,作为服务提供商的公司无法设定优先级.,24,Scrum 角色 客户与管理层,客户和管理的角色是可选的,需要时才设立客户:是产品的最终用户 通过 Pro
15、duct Owner来设定对产品的期望把当前的业务传达给项目.管理层:公司高级管理层,代表公司在项目中的利益.通过Product Owner来传达公司的利益和优先级(priorities),25,产品需求清单 Product Backlog(1/4)概论,基本上,产品需求清单是为了实现产品的功能所需要的工作的列表,包括:功能方面的需求;功能点.非功能方面的需求,如性能改进.要修改的Bug;上一版本的已知错误.新技术,如支持新的操作系统或者平台.问题;日后的不确定项,如新的功能.产品需求清单是不断完善的.Product Owner 在项目进行过程中可以随时更新:增加、删除、修改功能,变更优先级等
16、.下一次迭代中要包含较高优先级的需求.产品需求清单也可称为User Stories(用例),因为它们能够给产品的用户带来价值.在一次迭代中要能够实现产品需求清单,如果不能全部实现要进行分解.,26,产品需求清单(2/4)构成,Product Owner负责创建最初的产品需求清单,一开始是不完整的.最初的清单应当包含足够的需求.清单应当包含多少需求,取决于定价模型(black-box,更多的计划时间).产品需求清单来源于:客户;标书,需求规格说明等.Scrum团队的想法;增强型新功能等.现有产品的迭代增量;已知错误,技术问题等.比较好的做法是Product Owner、Scrum团队、客户/管理
17、以及其它相关方(如相关的Scrum团队)举行一次或者多次研讨会Scrum Master 或者 Product Owner 来促成会议的召开,必须要有人来做.要有效率、要围绕主题、沟通良好、避免不同的假设,承诺并且共通合作,确定优先级.,27,产品需求清单(3/4)估计,Scrum团队对产品需求清单的每一项的规模提供初步的估计,通常采用事件点作为单位Story Points(模糊的).也可采用人天或者人小时作为单位,但容易混淆:a)实际的规模 b)时间的单位.精确的估计值可以在Sprint 规划时给出,当前阶段没有足够的信息.规模的相对值才有意义.这个估计值有助于确定优先级;,所需时间,团队速度
18、,产品规模,28,产品需求清单(4/4)优先级,优先级是产品需求清单中的主要问题.优先级不但反映了客户的价值也反映了风险.产品所有者-PO 设定优先级.清单中的每一项的优先级是唯一的,但可以对它们进行分类优先级可以在项目的任何时候进行更改;如新的重要的功能可以直接给较高的优先级.确定优先级考虑:价值风险依赖关系,29,产品需求清单 示例,Priority,ID,like in any requirements document,Description of the item=User Story,These will likely endup in the first Sprint,30,版本
19、发布计划,在 Scrum中,不是 每个Sprints 都要发布一个版本.迭代的结果主要是要实现功能的演示,不一定就是发布的版本.版本发布计划决定了每次迭代应当包含产品需求清单的哪些功能.根据现有的信息制定的项目总体的长期的计划.根据产品需求清单和团队的进度来决定(实施的范围/迭代,e.g.in Story Points).Scrum团队参与版本发布计划的制定;架构、风险、依赖性决定了可行的实现顺序.版本发布计划很大程度上依赖于客户的时间表和发布周期,即什么时候客户的产品需要包含我们的模块(交付物).版本发布计划不是一成不变的;每个迭代结束后都可以更改.,31,完成的定义,当迭代任务清单上的任务
20、都完成时,变为“已完成”状态定义“已完成”的含义是非常重要的,例如:如何记录软件的变化.使用什么样的代码分析工具,发现的问题应当如何处理.进行了什么样的测试,结果是如何记录的,通过标准(如覆盖率、修正的错误)是什么.定义“已完成”意味着定义质量上的需求.“已完成”是0/1变量:完成或者未完成.所有的任务(task)都完成了迭代任务才算完成.在第一个迭代开始之前应该定义好,因为它会影响工作量,而且必须文档化,这样团队和产品所有者的理解是一致的.,32,完成的定义,完成的范围随着团队的成熟程度会逐渐发生变化,潜在的可交付的软件,33,完成的定义-Example,完成的定义 遵循编码规范能在模拟器上
21、演示 使用PCLint 进行静态代码分析具有EUnit 测试套件的通过率 和执行率.或者使用结对编程,或者进行代码走查,34,迭代任务清单规划(1/5)总论,迭代任务清单规划 的主要目的是从产品任务清单中挑选高优先级的任务包含在下一次迭代中,即确定迭代的范围.至于能够包含多少产品任务清单中的任务取决于Scum团队能够承诺完成多少.承诺总是来自于内部,不能从外部强加.迭代不应当有空闲时间,因此规划迭代范围时要保证工作量是稳定的(进度是持续的速度).依赖多个因素;团队的能力,技术的成熟度,当前迭代增量的情况等.迭代的范围在迭代任务清单中描述;团队设定优先级.产品所有者 PO 定义每个迭代的任务说明
22、(mission statement),目标(sprint goal),使迭代更具有针对性,如.“实现一个可扩展的列表控件,其项目是可以选择的”,35,Sprint 迭代计划(2/5)输入和输出,Sprint PlanningMeeting,Sprint Backlog,Product Owner,Scrum Team,Management,Customers,Sprint Goal,36,迭代任务清单规划(3/5)逻辑,迭代任务清单规划 是“铁三角”法则的另一个例子在Scrum,边界是一个变量,因为:资源(Scrum团队)是确定的.进度表(迭代的时间)是不能变的.质量是无法协商的团队在一个迭
23、代内能完成的任务,可以用团队进度来衡量(Story Points/Sprint).如果可能的话利用同一个团队上个迭代的进度,“yesterdays weather”.,30-day sprint 20 work days1 day for planning,1 for review/retrospective=18 work days5 persons in team 90 theoretical man days7.5-hour working day,average 85%to project work90*7.5*0.85=574 man hours 5%reserved for re-
24、estimation and re-planning 545 man hours,37,迭代任务清单规划(4/5)规划会议,召开迭代任务清单规划会议的目的是确定迭代的边界.时间是限定的,最长时间是一个工作日(对持续4个星期的迭代,迭代持续的时间越短,用在规划上的时间也应该越少.由 Scrum Master推动会议.由于会议时间有限,Product Owner 和Scrum 团队都应该事前进行准备.前提:产品需求清单是有效的(valid);最新的,标注了优先级并且表述清楚.规划会议要解决两个问题:下次迭代要做什么.确定迭代的目标,包含产品需求清单上高优先级的功能.给Bug修改留一定的余地怎么样实
25、现下次增量所需要的功能.改进设计以实现产品需求清单上的功能.,38,迭代任务清单规划(5/5)工作流程,产品所有者向团队介绍起草的产品需求清单和迭代目标.产品所有者传达迭代的起止日期.Scrum 团队 从产品需求清单中选取高优先级的功能作为迭代的任务,如果有必要,更新其规模估计.Scrum 团队改进架构和设计以便能够实现提出的产品需求.Scrum团队把 产品需求清单的每一项划分成小的任务,并估算每个任务要花费的小时数.“扑克规划”方法是估算工作量的有效方法.Scrum 团队决定一个迭代中能够实现产品需求清单的多少功能产品所有者和Scrum团队明确了各自要承担的义务.,39,Sprint Bac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Scrum 敏捷 软件 开发 过程 课件
链接地址:https://www.31ppt.com/p-5447640.html