《2022年Scrum敏捷软件开发过程 .pdf》由会员分享,可在线阅读,更多相关《2022年Scrum敏捷软件开发过程 .pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1Scrum 敏捷软件开发过程目录?什么是敏捷软件开发??敏捷方法的项目计划?敏捷项目管理和传统项目管理?为什么使用敏捷??Scrum 概述?Scrum 的角色?Scrum 实践和工作产品?敏捷开发中的估计方法?测试驱动开发?Scrum 应用?支持工具和模版?一些常见的误解敏捷开发方法什么是敏捷软件开发?敏捷软件开发是软件项目的一个概念框架.?有许多建立在敏捷概念上的方法,如Scrum 和 Extreme Programming(XP).?与僵化的、重量级的、官僚式的方法形成对照,比如瀑布模型(指纯粹形式的)?最大限度地降低短期固定时间的迭代式软件的开发风险.敏捷宣言(2001 年)?人和交互
2、胜过过程和工具.?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、地约束,诚信与否是有效实施敏捷过程的最大限制名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 22 页 -2使用敏捷方法的项目计划敏捷项目管理和传统项目管理?传统项目管理:?事先对整个项目进行估计、计划、分析?反对变更;变更需要重新估计、重新规划?严密的合同来减少风险,如果改变需求要走CR流程.?项目作为一个“黑盒子”,对客户与供应商的可视性差.?产品化和测试阶段是分离的.?文档和计划驱动的方法.?软件交付时间晚,意识到风险的时间晚.?敏捷项目管理:?对整个项目做一个粗略的估计,每一次迭代都有详细的计划.?鼓励变化,客户价值驱动开发.?信任和赋予权力;合约使变更变得简单,增加价值.
4、?客户和开发人员之间是紧密的连续的合作关系?每次迭代都产生可交付的软件?专注于交付软件.?第一次迭代就可交付能工作的版本,风险发现的早.为什么采用敏捷?预期的收益?采用敏捷方法得当的话,可以:?更加透明;随时跟踪项目的状态和进展情况,及早发现问题和风险.?快速交付,每次迭代都能交付可运行的软件.?最高风险和最高优先级的需求,最优先进行开发.?改善应对变更能力,减少大量的重计划.?改善项目沟通.?更好的客户参与,避免错误的假设.?总之:?提高了生产率;减少“浪费”(不需要的文档,重复工作等),项目的每次迭代都有明名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 22 页 -3确的目标
5、.?提高客户满意度;短期内产生成效,按预期交付软件,每次迭代结束产生可以运行的软件.?改善员工的满意度;团队精神,减少官僚,能够规划和管理自己的工作,减少“恐慌”,稳定的工作量(可持续的步伐).敏捷方法何时有效??公司和客户一致认为应当使用敏捷方法,双方都能理解敏捷方法.?敏捷方法对需求不完整以及经常变换的项目比较有效.?项目可以划分成固定时间间隔的迭代,并且可以冻结正在进行的迭代的范围?公司和客户都有能力担当角色尤其是Product Owner 和 Scrum Master.?项目的人员结构能够分成6 到 10 人的团队,最好每个工作地点一个小组.?团队成员能够以自组织的方式工作.?项目的合
6、同允许变更.?固定价格的项目可以使用敏捷,但应当尽量避免。?最好在按时间和材料付费或者按月付费的项目中进行使用?变更项目的范围不需要高级管理层的批准.Scrum 概述Scrum 概述(1/3)?Scrum 是管理软件项目的一个轻量级的敏捷方法,名字来源于橄榄球运动中的scrum 过程?简单,但高度的纪律性?依赖迭代和增量的敏捷方法.?Scrum 是一种工作管理的方法,不仅仅限于软件开发,可以用来管理其它活动.?Scrum 不包含技术方法或实践.Scrum 概述(2/3)项目的阶段?项目分成增量的迭代过程,在Scrum 中称为迭代任务清单,通常持续2-4 周的时间.?Sprint 的时间是限定好
7、的;不能从外部改变正在进行中的sprint 持续时间和范围.?每个 sprint 都可以产生可交付的迭代,即测试过并具备文档的的功能点?原则上,当产品开发到一定程度时,如实现了足够的客户价值,项目可以在任何一个sprint 后结束.?如同任何项目,敏捷的项目有三个主要阶段:?产品定义(规划);运行 Sprints 所需要的准备、规划、技术分析.?执行 Sprints(执行):在增量时间段内实现需求(产品需求清单).?结束:准备最终发布,结束项目Scrum 概述(3/3)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 22 页 -4Scrum 的流程1、将整个产品Backlog 分
8、解成 Sprint Backlog,按照目前的人力物力条件可以完成的。2、召开Sprint 计划会议,划分、确定这个Sprint 内需要完成的任务,标注任务的优先级并分配给每个成员。注意这里的任务是以小时计算的,并不是按人天计算,长度不超过8 小时。3、进入 Sprint 开发周期,每个 Sprint 迭代周期为连续30 个日例日(2-4 周)。在这个周期内,每天需要召开每日Scrum 简会,时间为 15 分钟。在会议中每个团队成员仅就以下三点发言:自上次 Scrum 会议后你做了什么?从现在到下次Scrum 会议的时间里你准备做什么?你在工作中遇到了哪些困难?4、整个 Sprint 周期结束
9、,召开 Sprint 评审会议(Sprint review meeting),将成果演示给Product Owner,该会议限定时间为4 小时。5、团队成员最后召开冲刺回顾会议(Sprint retrospective meeting),总结问题和经验,该会议限定时间为 3 小时。6、这样周而复始,按照同样的步骤进行下一次Sprint。Scrum角色、实践和工作产品Scrum 中的三种角色?Product Owner-产品所有者?个人:代表所有的干系人?Scrum Master:?个人:负责指导过程的执行?Scrum Team Scrum 团队:?承诺完成工作,向干系人交付产品价值Scrum
10、角色 Scrum 团队名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 22 页 -5?Scrum 团队是 Scrum 的中心角色,产品交付要依靠团队.?Scrum 团队自我组织、自我管理?Scrum 团队是职能交叉的,包含产品交付的所有角色:开发人员、测试人员、build managers,文档编写,界面设计人员.?Scrum 团队中的角色是不分等级的;不应当出现“我是开发人员我不作测试”.?团队按照最有利于项目的原则来分担责任(如组件的所有权等).?敏捷是建立在信任和授权的基础上,因此团队是自发组织的,组员选择自己的任务,而不是别人强制加以分配的.?另一方面,Scrum 团队有
11、交付的责任,他们需要能够自我激励和对工作目标进行承诺.?团队最佳规模:6-10 人?主要职责?参与迭代任务清单的创建?执行为干系人创造价值的工作?根据团队的承诺完成所需的各项任务?将工作中的各项障碍迅速与Scrum Master 进行沟通?全面参与所有的各项会议?更新任务状态?自发选择任务?标识任务的完成?标识发现的新的任务?与其它团队共同进行工作Scrum 角色 Scrum Master?Scrum Master 不是一个管理者,而是一个教练和推动者-Scrum团队是一种自发的组织,是自我管理的.?Scrum Master 的角色通常由项目组的成员担当,组长或者项目经理。Scrum Mast
12、er 应当是项目中的成员.?主要职责:?评价过程的健康状况?加强过程?消除障碍?促进过程改进?支持团队开发?Scrum Master 的主要工作是做决策、消除障碍,保证团队能顺利交付产品?Scrum Master 还有如下责任?与其它角色配合.?训练团队,提高生产率.?培训产品所有者和干系人,确保Scrum 流程的执行?确保一切工作按照既定的规范来运行.?规划并进行必要的改进.?推动会议的召开.?维护障碍列表?维护 Scrum 过程改进列表?优秀的Scrum Master 应当是专注的,、有决心的、有领导才能.Scrum 角色 Product Owner?产品所有者代表投资方的利益,确保交付的
13、产品与期望的一致(提供更好的投资回报).?Product Owner 决定产品具有哪些功能.名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 22 页 -6?Product Owner s的主要责任是创建和维护产品需求清单,即管理项目的范围.?Product Owner 不断的把产品需求清单按优先级进行排序,使得最重要的功能能优先实现.?对于团队来说,只有一个需求集。所有的需求申请都归口到Product Owner?管理商业价值(投资回报)?Product Owner 还有如下责任:?计划项目的发布,什么时间、向什么人等.?对每次 Sprint 的结果进行评审和批准?参与 Scru
14、m 会议?迭代计划会议?团队进展跟踪会议?迭代评审和回顾会议?能够随时回答团队工作中产生的各项和产品/业务相关的问题?Product Owner 的角色一般由客户担当,作为服务提供商的公司无法设定优先级.Scrum 角色 客户与管理层?客户和管理的角色是可选的,需要时才设立?客户:?是产品的最终用户?通过Product Owner 来设定对产品的期望?把当前的业务传达给项目.?管理层:?公司高级管理层,代表公司在项目中的利益.?通过 Product Owner 来传达公司的利益和优先级(priorities)产品需求清单Product Backlog 概论?基本上,产品需求清单是为了实现产品的
15、功能所需要的工作的列表,包括:?功能方面的需求;功能点.?非功能方面的需求,如性能改进.?要修改的Bug;上一版本的已知错误.?新技术,如支持新的操作系统或者平台.?问题;日后的不确定项,如新的功能.?产品需求清单是不断完善的.?Product Owner 在项目进行过程中可以随时更新:增加、删除、修改功能,变更优先级等.?下一次迭代中要包含较高优先级的需求.?产品需求清单也可称为User Stories(用例),因为它们能够给产品的用户带来价值.?在一次迭代中要能够实现产品需求清单,如果不能全部实现要进行分解.构成?Product Owner 负责创建最初的产品需求清单,一开始是不完整的.?
16、最初的清单应当包含足够的需求.?清单应当包含多少需求,取决于定价模型(black-box,更多的计划时间).?产品需求清单来源于:?客户;标书,需求规格说明等.?Scrum 团队的想法;增强型新功能等.?现有产品的迭代增量;已知错误,技术问题等.名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 22 页 -7?比较好的做法是Product Owner、Scrum 团队、客户/管理以及其它相关方(如相关的Scrum团队)举行一次或者多次研讨会?Scrum Master 或者Product Owner 来促成会议的召开,必须要有人来做.?要有效率、要围绕主题、沟通良好、避免不同的假设,
17、?承诺并且共通合作,确定优先级.估计?Scrum 团队对产品需求清单的每一项的规模提供初步的估计,通常采用事件点作为单位Story Points(模糊的).?也可采用人天或者人小时作为单位,但容易混淆:a)实际的规模b)时间的单位.?精确的估计值可以在Sprint 规划时给出,当前阶段没有足够的信息.?规模的相对值才有意义.?这个估计值有助于确定优先级;优先级?优先级是产品需求清单中的主要问题.?优先级不但反映了客户的价值也反映了风险.?产品所有者-PO 设定优先级.?清单中的每一项的优先级是唯一的,但可以对它们进行分类?优先级可以在项目的任何时候进行更改;如新的重要的功能可以直接给较高的优先
18、级.?确定优先级考虑:?价值?风险?依赖关系示例版本发布计划?在 Scrum 中,不是 每个 Sprints 都要发布一个版本.?迭代的结果主要是要实现功能的演示,不一定就是发布的版本.?版本发布计划决定了每次迭代应当包含产品需求清单的哪些功能.?根据现有的信息制定的项目总体的长期的计划.?根据产品需求清单和团队的进度来决定(实施的范围/迭代,e.g.in Story Points).?Scrum 团队参与版本发布计划的制定;架构、风险、依赖性决定了可行的实现顺序.?版本发布计划很大程度上依赖于客户的时间表和发布周期,即什么时候客户的产品需要包含我们的模块(交付物).?版本发布计划不是一成不变
19、的;每个迭代结束后都可以更改.名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 22 页 -8完成的定义?当迭代任务清单上的任务都完成时,变为“已完成”状态?定义“已完成”的含义是非常重要的,例如:?如何记录软件的变化.?使用什么样的代码分析工具,发现的问题应当如何处理.?进行了什么样的测试,结果是如何记录的,通过标准(如覆盖率、修正的错误)是什么.?定义“已完成”意味着定义质量上的需求.?“已完成”是0/1 变量:完成或者未完成.所有的任务(task)都完成了迭代任务才算完成.?在第一个迭代开始之前应该定义好,因为它会影响工作量,而且必须文档化,这样团队和产品所有者的理解是一致的
20、.?完成的范围随着团队的成熟程度会逐渐发生变化完成的定义-Example?完成的定义?遵循编码规范?能在模拟器上演示?使用 PCLint 进行静态代码分析?具有 EUnit 测试套件的通过率和执行率.?或者使用结对编程,或者进行代码走查迭代任务清单Sprint Backlog 总论?迭代任务清单规划的主要目的是从产品任务清单中挑选高优先级的任务包含在下一次迭代中,即确定迭代的范围.?至于能够包含多少产品任务清单中的任务取决于Scum团队能够承诺完成多少.?承诺总是来自于内部,不能从外部强加.?迭代不应当有空闲时间,因此规划迭代范围时要保证工作量是稳定的(进度是持续的速度).?依赖多个因素;团队
21、的能力,技术的成熟度,当前迭代增量的情况等.?迭代的范围在迭代任务清单中描述;团队设定优先级.?产品所有者PO 定义每个迭代的任务说明(mission statement),目标(sprint goal),使迭代更具有针对性,如.“实现一个可扩展的列表控件,其项目是可以选择的”输入和输出名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 22 页 -9逻辑?迭代任务清单规划是“铁三角”法则的另一个例子?在 Scrum,边界是一个变量,因为:?资源(Scrum 团队)是确定的.?进度表(迭代的时间)是不能变的.?质量是无法协商的?团队在一个迭代内能完成的任务,可以用团队进度来衡量(St
22、ory Points/Sprint).?如果可能的话利用同一个团队上个迭代的进度,“yesterday s weather”.规划会议?召开迭代任务清单规划会议的目的是确定迭代的边界.?时间是限定的,最长时间是一个工作日(对持续4 个星期的迭代,迭代持续的时间越短,用在规划上的时间也应该越少.?由 Scrum Master 推动会议.?由于会议时间有限,Product Owner 和 Scrum 团队都应该事前进行准备.?前提:产品需求清单是有效的(valid);最新的,标注了优先级并且表述清楚.?规划会议要解决两个问题:?下次迭代要做什么.?确定迭代的目标,包含产品需求清单上高优先级的功能.
23、?给 Bug 修改留一定的余地?怎么样实现下次增量所需要的功能.?改进设计以实现产品需求清单上的功能.名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 22 页 -10工作流程?产品所有者向团队介绍起草的产品需求清单和迭代目标.?产品所有者传达迭代的起止日期.?Scrum 团队 从产品需求清单中选取高优先级的功能作为迭代的任务,如果有必要,更新其规模估计.?Scrum 团队改进架构和设计以便能够实现提出的产品需求.?Scrum 团队把产品需求清单的每一项划分成小的任务,并估算每个任务要花费的小时数.?“扑克规划”方法是估算工作量的有效方法.?Scrum 团队决定一个迭代中能够实现产
24、品需求清单的多少功能?产品所有者和Scrum 团队明确了各自要承担的义务.Sprint Backlog 示例执行迭代任务清单?执行迭代任务清单意味着团队在迭代期间自行开发.?团队清楚要达到什么的目标以及怎样达到目标.?每人每一时间只有一个任务?团队是自发组织的;成员自己挑选任务,Scrum Master 提供指导并清除障碍.?不能从外部改变迭代的范围或者迭代的周期.?为了达到迭代的目标,团队可以增加、删除任务或者改变其优先次序.?如果要重新设定迭代的范围时需要产品所有者的配合.?迭代周期短,意味着工期紧;应该把重点放在剩余的工作和风险的消除,要区分任务的优先级,重要的事情应当先做.?迭代应当达
25、到项目的质量要求(definition of“done”);没有独立的测试阶段.迭代进度图-Burndown Chart?Scrum 注重成果,它关心的是要花多少时间达到目标,而不是已经花费的时间;.名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 22 页 -11?团队能否在既定的时间达到迭代的目标,可以查看要完成产品需求清单的功能所剩余的工作?Remaining work=Estimate to Complete(ETC).?描述剩余工作量和时间关系的图表称为Sprint Burndown 图,是 Scrum 中非常重要的控制方法(control measure).?给 Sc
26、rum 团队和产品所有者提供直观的信息.?术语burndown 表明 Scrum 团队在迭代过程中消耗剩余工作的能力;迭代结束时其值为0.?每个任务(task)的工作量由Scrum 团队来估计.?每天都要进行估计,以便进行跟踪.?可以使用电子表格或者专门的工具(如ScrumWorks)Scrum 每日例会小鸡和猪的故事?A chicken and a pig are together when the chicken says,Lets start a restaurant!“?The pig thinks it over and says,What would we call this re
27、staurant?“?The chicken says,Ham n Eggs!“?The pig says,No thanks.Id be committed,but youd only be involved!“?In a Daily Sprint,only Scrum Master and Scrum Team are committed,and thus allowed to speak.Others are only involved.概述?例会最长15 分钟,在整个迭代过程中每天的同一时间召开.?团队成员之间交流信息.?了解项目的真实的进展情况?交流风险和存在的问题.?面对面的会议加
28、强了承诺.?Scrum Master 负责整个会议(会议地点,邀请等).?其他人可以参与,但只允许Scrum Master 和 Scrum 团队成员讲话(小鸡和猪).?例会之前团队要更新工作量估计,使进度表保持最新.形式?为使会议简短而富有成效,要遵循严格的规程?每个成员向其他人汇报以下内容:?上次会议以后所做的工作?名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 22 页 -12?下次会议之前要做的工作?工作中是否有什么障碍?如果出现其它的问题(如设计的问题),应当在会议后处理.?纪录会议纪要,例如wiki.?要养成良好的会议习惯障碍?基本上,任何阻止团队正常工作的,都可称之
29、为障碍,例如:?无法访问信息系统.?所需要的信息不能及时提供或者提供的不正确,如界面规格或者其它软件模块不到位或不正确?开发环境或者原型系统出现问题?其他的任务分配:培训,售前支持?缺乏必要的信息或者相应的知识?对于团队提出的各项障碍,Scrum Master 要以列表形式进行记录,谁来清除障碍??每个人?自我管理、自我组织的团队?Scrum Master?产品所有者?管理层?其他相关的干系人?Scrum Master 负责确定障碍已经清除,不一定亲自自己清除清除障碍?某些障碍是浪费?部分地完成工作?额外的过程?额外的功能?任务转换?等待名师资料总结-精品资料欢迎下载-名师精心整理-第 12
30、页,共 22 页 -13?缺陷?清除障碍的过程是团队和组织学习的过程浪费产生的原因?多问几个“为什么”?对于每个标识的障碍或者浪费,问一问“为什么”浪费会存在?多问几个“为什么”,找到造成浪费的根本原因迭代中的同步工作?每次迭代不是小的瀑布项目?而是,每件事情同时都做一点迭代的非正常终止?在 Scrum 中,结束正在进行的迭代是一种极端的行为,只有在万不得以的情况下才能这么做.?有时候确实需要停下来重新规划,而不是一味的蛮干(banging your head against the wall).?迭代终止可能由下面的人发起:?Scrum 团队,如果他们认为达不到目标或者目标不清楚.名师资料总
31、结-精品资料欢迎下载-名师精心整理-第 13 页,共 22 页 -14?Scrum Master,如果迭代没有进展,或者无法克服某个困难.?客户/管理层,如果目标已经陈旧/过时(目标产品被取消,平台过时),或者其它的原因(资源问题等).?迭代终止以后,启动新迭代的计划.?导致迭代终止的原因不应该在新的迭代中再次出现.?要考虑到合同方面的问题,如时间表的变更等.迭代评审会议概述?迭代评审,在迭代结束后进行,展示迭代的成果(功能运行).?确保成果与预期的一致,收集反馈?为项目提供一个参考点,根据目前的位置计划下一期的旅程?为下次迭代提供输入(改正、修改、新的想法可以由产品所有者添加到产品需求清单.
32、?与其它Scrum 会议一样,Scrum Master 主持迭代评审会议,Scrum 团队负责演示.?参加会议的其他人包括:产品所有者Product Owner(必须参加)、客户、管理人员,以及其它感兴趣的人,例如其他Scrum 团队(注意保密协议的要求).?评审会议的时间是固定的:最长 4 个小时.?评审会议应当是非正式的、创造性的,不用幻灯片等正式的东西.迭代评审流程?在评审会议召开之前,团队要做好准备:?有组织、有效地进行演示,不要超过4 个小时.?谁来演示,演示什么,怎样演示?计划准备的时间不要超过一个小时.?迭代评审流程的一个例子:?Scrum Master 介绍本次迭代的总体情况.
33、?目标和清单vs.实际的结果,如果存在差距,原因是什么.?Scrum 团队简要介绍所涉及的技术问题,如架构及其变更.?Scrum 团队演示已经实现的功能:?演示并进行功能说明?在场的人能够亲自尝试使用不同的功能.?Scrum Master 推动自由讨论,集思广益.?迭代评审应当是互动的;有问题提出,问题解答,并欢迎提出想法和建议.迭代评审可能的措施?产品所有者根据评审的结果可能采取如下行动:?更新产品需求清单,重新设定优先级:?包含没有按计划实现的功能(进度比预期的要慢,任务未完成).?不在计划中当却已经实现的功能(进度比预期的快).?迭代评审中出现的新的想法.?与 Scrum Master
34、一起解决团队的变动问题.?要求把演示的功能,或者把上次迭代的功能,作为一个版本发布给客户.?决定项目不再持续下去,不再进行迭代;认为产品已完备.?要求把产品需求清单授权给另外的团队来一起工作.?名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 22 页 -15迭代回顾会议Sprint Retrospective?回顾的目的是评价本次迭代并酝酿改进,使得下一个迭代进行的更好.?类似于项目的最终评审,但经常举行.?障碍列表具有很好的参考价值!?Scrum Master 主持召开,持续半天,Scrum团队参加(产品所有者也可参加).?简单流程:?Scrum Master 总结本次迭代;
35、迭代任务清单,重要的事情和决策,预期的/实际进度.?每个组员陈述迭代中那些方法进行的较好、哪些需要改进,Scrum Master 进行记录.?对重要的问题计划相应的措施:团队自己解决,或者提交给公司的管理层.Scrum方法应用扑克 Poker 方法敏捷开发中使用扑克Poker 方法进行估计(1/3)?尽管名字有好笑,但却非常可靠和有效.?可以来估算产品需求清单中每项的规模(规模估算:用例点 story point)以及迭代任务清单中任务的估计(工作量估算:人时).?Scrum Master 推动活动的进行,一个以上的专家参与估算,而且最好是项目团队中的人.?估算时使用卡片:写有一系列的离散数据
36、,如0,1,2,3,5,8,13,?(无法估计).敏捷开发中使用扑克Poker 方法进行估计(2/3)?前提条件:提前准备好要估算的任务、User Stories 等;迭代任务清单和产品需求清单都已经起草好.?对某个任务最有经验的开发者做一个简短的概述.可以通过简短的讨论澄清任务的具体含义,找出存在的风险以及不确定性.?各自对任务进行估计,所有的人将写有各自估计数据的扑克/卡片扣上。(单位事先进行约定:工时、事件点).?大家同时把扑克/卡片翻过来.?如果扑克/卡片上的数差距比较明显(如一个 13,2 个 5,一个 1),就要讨论一下为什么会出现这么大的差距,估计值所基于的假定要进行澄清.?如果
37、差距较小(如三个 8 两个 5),主持人帮助确定最终的估值.?对于不确定性,估算数据中可以多包含一些余量.?不断的重复该过程直到达成一致.?将这些估值记录到相应的文档中(产品需求清单,迭代任务清单).名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 22 页 -16敏捷开发中使用扑克Poker 方法进行估计(3/3)?为什么使用离散的数字?比使用任意数字更加容易进行估算.?在整个项目中或者迭代中,每个人估计值的错误会相互抵消掉.?对每个任务,16 小时是上限,不确定性会随着规模的增加而增加.?为什么要有“?”.?将较大的任务进行分解,帮助更加精确的估计同时减少不确定性.?为什么要
38、“讨论并重复”?弄清不同的假设(利用重用代码或者重新编码)和可能的误解更为可靠的估计.?对于那些偏离平均值的估计,即使由有经验的人给出的,也必须要有充分的理由.测试驱动开发Test Driven Development?什么是测试驱动??一种能够支持Scrum 的敏捷实践方法,开发满足DoD 的软件?首先创建测试用例,然后开发软件通过测试(在开发代码前,首先编写测试代码)?一种设计软件的方法,而不仅仅是一种测试方法?所创建的测试用例用来指导和约束项目中的各项工作,对未来的各项工作提供一个安全的保护?不需要测试的工作不需要完成?所创建的测试用例通常替代详细的业务和技术需求定?测试也有效地驱动设计
39、,使设计更加趋向于可行的设计?通常情况下需要自动测试的支持(EUnit,JUnit etc.).?对于 UI 软件应用TDD方法有一定的困难名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 22 页 -17测试驱动开发 TDD?测试用例的作用:?确定所要完成的工作?沟通工具?产生一致的结果?对软件开发提供一个安全的保障Scrum 的核心?反馈?检查名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 22 页 -18?接受Scrum的应用概述?基本原则:不能只挑自己喜欢的,不管其它的?Scrum 非常简单,为了有效地发挥作用,应当具备:?所有的角色.?所有的实践.?所有
40、的产品.?Scrum 可以进行裁剪,但应当明白裁剪对工程的影响需要经验和仔细考虑.大型/跨地域项目?6 到 10 人在同一房间进行工作时,Scrum 能够发挥最大效用.?Scrum 也可应用在大型的跨地域的项目.?一些指导原则:?将大的项目分成多个团队,每个团队6 到 10 人,有各自的Scrum Master.?对跨地域的项目,尽量不要把一个Scrum 团队分到多个地方,一个Scrum 团队就在一个地方,有自己的Scrum Master.?但是,如果团队的跨地域是不可避免的,可以使用网络工具远程召开Scrum例会.?划分团队时,团队之间应该有一个“自然界面”,如为避免混乱,不同的团队负责产品
41、的不同部分.?对于整个项目/产品:一个产品/项目只能有一个产品所有者和产品需求清单.?团队之间的协调利用Scrum of Scrums 方法名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 22 页 -19Scrum of Scrums 固定价格的项目?Scrum 不鼓励固定价格的项目?每次迭代时进行项目预算,产品需求清单可以根据当前的优先级进行调整.?某些项目中,客户需要我们对整个项目给一个报价或者预算.?价格固定限制了灵活性(对变化的响应):?如果价格和进度是固定的,那么整个项目的范围也是固定的(PB).?必须对项目所有的迭代都进行详细的计划和规模估计.?变更项目的范围,以及
42、随之而来的预算/进度的变更需要提交CR.?当然可以改变产品需求清单的优先级,或者不改变工作量前提下把其中的某一项换成另一项.?仍然可以使用Scrum,并从中获益名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 22 页 -20支持工具和模版一些常见的误解?敏捷是拯救任何项目的银弹.?敏捷方法只有运用得当才有效果.?敏捷意味着ad-hoc hacking,不需要任何文档.?敏捷是有严格要求的,也是面向质量的?根据沟通的需要产生相应的文档.?敏捷只是开发者的问题?基本的开发方法与传统相比有显著不同,影响项目的各个方面:合同,角色,定价模型,项目管理等.?采用敏捷方法的开发组/项目不需
43、要制定计划?敏捷项目需要经常制定计划,但是不需要试图超前制定项目计划,通常这也是不可能的.?敏捷项目的范围可以随时改变.?变更可以等到下一次迭代开始,当前正在进行中的迭代不能变更?只对小项目适用?在中型和大型的项目中一样取得了成功敏捷开发各阶段的主要活动项目生命周期?主要包含三个阶段:?产品定义(计划):进行迭代所需要的项目准备、项目计划和技术分析?迭代开发(执行):在固定时间的迭代中实现需求(产品需求清单中的项目)?结束:准备最终的发布,结束项目(ramp down)产品定义阶段?通常称为“Sprint Zero”?也使用 Scrum 的实践,例如每日会议名师资料总结-精品资料欢迎下载-名师
44、精心整理-第 20 页,共 22 页 -21?目标:进行项目准备(just enough)。在计划阶段进行的计划和技术分析是为了使迭代以一种受控的方式进行?所需的活动和详细程度取决于软件的复杂程度、质量要求、项目规模、项目设置和重用的要求等?如果没有适当的计划就进入首次迭代会有很大的风险?通常情况下由核心团队完成,由专家进行项目的计划?项目在正式迭代开始之前全力进行准备(ramped up)产品定义阶段的主要活动?定义产品需求清单?项目需求及其验收准则,初始的规模估计(Story Points)及其优先级?迭代的长度,每个产品需求清单项目所处的迭代,发布计划?由产品负责人负责进行起草,并和Sc
45、rum 团队共同进行讨论?重用计划?将要在本项目中重用的内容:第三方软件或OSS等?计划在本项目中开发,可以为其他项目所重用的内容?所需的可行性分析(对于OSS来说,必须进行)?对于工作量/规模估算的影响分析(需要包含研究、测试用例的编写、测试和文档化的工作)?架构设计?根据实际需要的充分程度,进行产品的架构设计-on sufficient level?计划的需求如何实现?通过技术研究和技术分析,更好地进行项目计划,?根据要求的指南和模版进行架构设计?其他需要考虑的问题,包括:?重要的架构需求?系统分解(模块/界面)?各个部分的特性及其之间的相互关联关系?非功能特性(性能、本地化的要求等)?设
46、计指南?进行 UI 概念设计,即产品UI 设计的基本方法?UI 风格?主画面(Main views.)?交互风格?UI 设计指南?验证架构?如果有时间,已经计划的架构应该通过基本的运行框架验证?验证架构是否满足已计划的特征、性能测试的要求和扩展需求等迭代开发阶段的主要活动?计划方法?制订完成的定义,即质量需求?考虑来自客户需求,如果没有来自客户的需求,要首先制定可行性建议?DoD 对于迭代计划有重大的影响?根据完成的定义,计划所需的工具和方法,例如:评审,静态/动态代码分析,测试等名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 22 页 -22?计划需要交付的工作产品和文档?建
47、立需要的工具和系统?SCM,测试管理工具,BUG管理工具和文档管理工具等?根据定义的Scrum 方法进行迭代计划?迭代目标:本地迭代的任务说明(mission statement)?迭代任务清单,以及每个任务的工作量?迭代执行:按照优先级的顺序执行迭代任务清单中的任务?根据完成的定义,软件的每一变更都是已设计的,已实现的、已验证的和已文档化的。没有单独的测试阶段?根据实际需要执行测试驱动的开发,自动测试和持续集成?同一部分代码也许会持续发生变更-再工程?随着项目的扩展,测试的工作量也越来越大?根据计划进行测试和bug 报告结束阶段的主要活动?验收测试:?通常情况下,在项目/产品交付后,客户需要进行30 天的验收测试?根据实际的项目计划进行验收测试?回归测试?与客户进行项目/产品交接?支持和培训:根据计划进行支持和培训的相关工作?软件产品化:产品最终发布,帮助文件,本地化的相关工作,以及最终的技术文档等相关工作?项目归档和结束:?项目文档归档(最终版本)?项目总结报告?其他经验教训总结名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 22 页 -