Scrum敏捷软件开发过程ppt课件.ppt_第1页
Scrum敏捷软件开发过程ppt课件.ppt_第2页
Scrum敏捷软件开发过程ppt课件.ppt_第3页
Scrum敏捷软件开发过程ppt课件.ppt_第4页
Scrum敏捷软件开发过程ppt课件.ppt_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Scrum敏捷软件开发过程 2008 12 03 JinghuaLiQualityManagerTietoEnatorCorporationT MMDRMIDjinghua 2 目录 什么是敏捷软件开发 敏捷方法的项目计划敏捷项目管理和传统项目管理为什么使用敏捷 Scrum概述Scrum的角色Scrum实践和工作产品敏捷开发中的估计方法测试驱动开发Scrum应用支持工具和模版一些常见的误解 敏捷开发方法 4 什么是敏捷软件开发 敏捷软件开发是软件项目的一个概念框架 有许多建立在敏捷概念上的方法 如Scrum和ExtremeProgramming XP 与僵化的 重量级的 官僚式的方法形成对照 比如瀑布模型 指纯粹形式的 最大限度地降低短期固定时间的迭代式软件的开发风险 5 敏捷宣言 2001年 人和交互胜过过程和工具 Individualsandinteractionsoverprocessesandtools可以工作的软件胜过完备的文档 Workingsoftwareovercomprehensivedocuments客户协作胜过合同谈判 Customercollaborationovercontractnegotiation随时应对变化胜过遵循计划 Respondingtochangeoverfollowingaplan 6 敏捷过程的限制 敏捷软件开发过程包含过程 原则 工具 和最重要的 人因此诚信是基础没有过程能够对诚信进行有效地约束诚信与否是有效实施敏捷过程的最大限制 7 使用敏捷方法的项目计划 ProductBacklog Features 5213858 32 InitialSizeEstimatesAsStoryPoints Longtermplanning bestguessatthemoment 32SPoffunctionality TeamVelocity8SP Sprint 4SprintsTargetSprintforeachPBLitemset feasibleimplementationOrder SprintBacklog Tasks Sprintful oftop priorityPBLtothenextSprint Moreaccurateestimatesasmanhours Shorttermplanning commitmentbyTeam Maybeconstantlyupdated Scopefrozen newPBLitemstonextSprint 8 敏捷项目管理和传统项目管理 传统项目管理 事先对整个项目进行估计 计划 分析反对变更 变更需要重新估计 重新规划严密的合同来减少风险 如果改变需求要走CR流程 项目作为一个 黑盒子 对客户与供应商的可视性差 产品化和测试阶段是分离的 文档和计划驱动的方法 软件交付时间晚 意识到风险的时间晚 敏捷项目管理 对整个项目做一个粗略的估计 每一次迭代都有详细的计划 鼓励变化 客户价值驱动开发 信任和赋予权力 合约使变更变得简单 增加价值 客户和开发人员之间是紧密的连续的合作关系每次迭代都产生可交付的软件专注于交付软件 第一次迭代就可交付能工作的版本 风险发现的早 9 为什么采用敏捷 预期的收益 采用敏捷方法得当的话 可以 更加透明 随时跟踪项目的状态和进展情况 及早发现问题和风险 快速交付 每次迭代都能交付可运行的软件 最高风险和最高优先级的需求 最优先进行开发 改善应对变更能力 减少大量的重计划 改善项目沟通 更好的客户参与 避免错误的假设 总之 提高了生产率 减少 浪费 不需要的文档 重复工作等 项目的每次迭代都有明确的目标 提高客户满意度 短期内产生成效 按预期交付软件 每次迭代结束产生可以运行的软件 改善员工的满意度 团队精神 减少官僚 能够规划和管理自己的工作 减少 恐慌 稳定的工作量 可持续的步伐 10 敏捷方法何时有效 公司和客户一致认为应当使用敏捷方法 双方都能理解敏捷方法 敏捷方法对需求不完整以及经常变换的项目比较有效 项目可以划分成固定时间间隔的迭代 并且可以冻结正在进行的迭代的范围公司和客户都有能力担当角色尤其是ProductOwner和ScrumMaster 项目的人员结构能够分成6到10人的团队 最好每个工作地点一个小组 团队成员能够以自组织的方式工作 项目的合同允许变更 固定价格的项目可以使用敏捷 但应当尽量避免 最好在按时间和材料付费或者按月付费的项目中进行使用 变更项目的范围不需要高级管理层的批准 11 警告 敏捷开发过程是一个艰苦的过程AgileWorkisHardWork这种状态也许会存在很长时间 不舒服疑惑有挫折感 Scrum概述 13 Scrum概述 1 3 Scrum是管理软件项目的一个轻量级的敏捷方法 名字来源于橄榄球运动中的scrum过程简单 但高度的纪律性依赖迭代和增量的敏捷方法 Scrum是一种工作管理的方法 不仅仅限于软件开发 可以用来管理其它活动 Scrum不包含技术方法或实践 14 Scrum概述 2 3 项目的阶段 项目分成增量的迭代过程 在Scrum中称为迭代任务清单 通常持续2 4周的时间 Sprint的时间是限定好的 不能从外部改变正在进行中的sprint持续时间和范围 每个sprint都可以产生可交付的迭代 即测试过并具备文档的的功能点原则上 当产品开发到一定程度时 如实现了足够的客户价值 项目可以在任何一个sprint后结束 如同任何项目 敏捷的项目有三个主要阶段 产品定义 规划 运行Sprints所需要的准备 规划 技术分析 执行Sprints 执行 在增量时间段内实现需求 产品需求清单 结束 准备最终发布 结束项目 15 Scrum概述 3 3 SprintPlanningMeeting NextSprintGoalSprintBacklogUpdatedProductBacklog DailyScrummeetings WhatdidyoudoyesterdayWhatwillyoudotoday Whatobstaclesareinyourway Source DailyScrum SprintRetrospective ShippableProductIncrement Scrum角色 实践和工作产品 17 Scrum中的三种角色 ProductOwner 产品所有者个人 代表所有的干系人ScrumMaster 个人 负责指导过程的执行ScrumTeam Scrum团队 承诺完成工作 向干系人交付产品价值 18 Scrum角色 Scrum团队 Scrum团队是Scrum的中心角色 产品交付要依靠团队 Scrum团队自我组织 自我管理Scrum团队是职能交叉的 包含产品交付的所有角色 开发人员 测试人员 buildmanagers 文档编写 界面设计人员 Scrum团队中的角色是不分等级的 不应当出现 我是开发人员我不作测试 团队按照最有利于项目的原则来分担责任 如组件的所有权等 敏捷是建立在信任和授权的基础上 因此团队是自发组织的 组员选择自己的任务 而不是别人强制加以分配的 另一方面 Scrum团队有交付的责任 他们需要能够自我激励和对工作目标进行承诺 团队最佳规模 6 10人 19 Scrum角色 Scrum团队 主要职责参与迭代任务清单的创建执行为干系人创造价值的工作根据团队的承诺完成所需的各项任务将工作中的各项障碍迅速与ScrumMaster进行沟通全面参与所有的各项会议更新任务状态自发选择任务标识任务的完成标识发现的新的任务与其它团队共同进行工作 20 Scrum角色 ScrumMaster ScrumMaster不是一个管理者 而是一个教练和推动者 Scrum团队是一种自发的组织 是自我管理的 ScrumMaster的角色通常由项目组的成员担当 组长或者项目经理 ScrumMaster应当是项目中的成员 主要职责 评价过程的健康状况加强过程消除障碍促进过程改进支持团队开发ScrumMaster的主要工作是做决策 消除障碍 保证团队能顺利交付产品 21 Scrum角色 ScrumMaster ScrumMaster还有如下责任与其它角色配合 训练团队 提高生产率 培训产品所有者和干系人 确保Scrum流程的执行确保一切工作按照既定的规范来运行 规划并进行必要的改进 推动会议的召开 维护障碍列表维护Scrum过程改进列表优秀的ScrumMaster应当是专注的 有决心的 有领导才能 22 Scrum角色 ProductOwner 产品所有者代表投资方的利益 确保交付的产品与期望的一致 提供更好的投资回报 ProductOwner决定产品具有哪些功能 ProductOwner s的主要责任是创建和维护产品需求清单 即管理项目的范围 ProductOwner不断的把产品需求清单按优先级进行排序 使得最重要的功能能优先实现 对于团队来说 只有一个需求集 所有的需求申请都归口到ProductOwner管理商业价值 投资回报 ProductOwner还有如下责任 计划项目的发布 什么时间 向什么人等 对每次Sprint的结果进行评审和批准 23 Scrum角色 ProductOwner 参与Scrum会议迭代计划会议团队进展跟踪会议迭代评审和回顾会议能够随时回答团队工作中产生的各项和产品 业务相关的问题ProductOwner的角色一般由客户担当 作为服务提供商的公司无法设定优先级 24 Scrum角色 客户与管理层 客户和管理的角色是可选的 需要时才设立客户 是产品的最终用户通过ProductOwner来设定对产品的期望把当前的业务传达给项目 管理层 公司高级管理层 代表公司在项目中的利益 通过ProductOwner来传达公司的利益和优先级 priorities 25 产品需求清单ProductBacklog 1 4 概论 基本上 产品需求清单是为了实现产品的功能所需要的工作的列表 包括 功能方面的需求 功能点 非功能方面的需求 如性能改进 要修改的Bug 上一版本的已知错误 新技术 如支持新的操作系统或者平台 问题 日后的不确定项 如新的功能 产品需求清单是不断完善的 ProductOwner在项目进行过程中可以随时更新 增加 删除 修改功能 变更优先级等 下一次迭代中要包含较高优先级的需求 产品需求清单也可称为UserStories 用例 因为它们能够给产品的用户带来价值 在一次迭代中要能够实现产品需求清单 如果不能全部实现要进行分解 26 产品需求清单 2 4 构成 ProductOwner负责创建最初的产品需求清单 一开始是不完整的 最初的清单应当包含足够的需求 清单应当包含多少需求 取决于定价模型 black box 更多的计划时间 产品需求清单来源于 客户 标书 需求规格说明等 Scrum团队的想法 增强型新功能等 现有产品的迭代增量 已知错误 技术问题等 比较好的做法是ProductOwner Scrum团队 客户 管理以及其它相关方 如相关的Scrum团队 举行一次或者多次研讨会ScrumMaster或者ProductOwner来促成会议的召开 必须要有人来做 要有效率 要围绕主题 沟通良好 避免不同的假设 承诺并且共通合作 确定优先级 27 产品需求清单 3 4 估计 Scrum团队对产品需求清单的每一项的规模提供初步的估计 通常采用事件点作为单位StoryPoints 模糊的 也可采用人天或者人小时作为单位 但容易混淆 a 实际的规模b 时间的单位 精确的估计值可以在Sprint规划时给出 当前阶段没有足够的信息 规模的相对值才有意义 这个估计值有助于确定优先级 所需时间 团队速度 产品规模 28 产品需求清单 4 4 优先级 优先级是产品需求清单中的主要问题 优先级不但反映了客户的价值也反映了风险 产品所有者 PO设定优先级 清单中的每一项的优先级是唯一的 但可以对它们进行分类优先级可以在项目的任何时候进行更改 如新的重要的功能可以直接给较高的优先级 确定优先级考虑 价值风险依赖关系 29 产品需求清单 示例 Priority ID likeinanyrequirementsdocument Descriptionoftheitem UserStory ThesewilllikelyendupinthefirstSprint 30 版本发布计划 在Scrum中 不是每个Sprints都要发布一个版本 迭代的结果主要是要实现功能的演示 不一定就是发布的版本 版本发布计划决定了每次迭代应当包含产品需求清单的哪些功能 根据现有的信息制定的项目总体的长期的计划 根据产品需求清单和团队的进度来决定 实施的范围 迭代 e g inStoryPoints Scrum团队参与版本发布计划的制定 架构 风险 依赖性决定了可行的实现顺序 版本发布计划很大程度上依赖于客户的时间表和发布周期 即什么时候客户的产品需要包含我们的模块 交付物 版本发布计划不是一成不变的 每个迭代结束后都可以更改 31 完成的定义 当迭代任务清单上的任务都完成时 变为 已完成 状态定义 已完成 的含义是非常重要的 例如 如何记录软件的变化 使用什么样的代码分析工具 发现的问题应当如何处理 进行了什么样的测试 结果是如何记录的 通过标准 如覆盖率 修正的错误 是什么 定义 已完成 意味着定义质量上的需求 已完成 是0 1变量 完成或者未完成 所有的任务 task 都完成了迭代任务才算完成 在第一个迭代开始之前应该定义好 因为它会影响工作量 而且必须文档化 这样团队和产品所有者的理解是一致的 32 完成的定义 完成的范围随着团队的成熟程度会逐渐发生变化 潜在的可交付的软件 33 完成的定义 Example 完成的定义遵循编码规范能在模拟器上演示使用PCLint进行静态代码分析具有EUnit测试套件的通过率和执行率 或者使用结对编程 或者进行代码走查 34 迭代任务清单规划 1 5 总论 迭代任务清单规划的主要目的是从产品任务清单中挑选高优先级的任务包含在下一次迭代中 即确定迭代的范围 至于能够包含多少产品任务清单中的任务取决于Scum团队能够承诺完成多少 承诺总是来自于内部 不能从外部强加 迭代不应当有空闲时间 因此规划迭代范围时要保证工作量是稳定的 进度是持续的速度 依赖多个因素 团队的能力 技术的成熟度 当前迭代增量的情况等 迭代的范围在迭代任务清单中描述 团队设定优先级 产品所有者PO定义每个迭代的任务说明 missionstatement 目标 sprintgoal 使迭代更具有针对性 如 实现一个可扩展的列表控件 其项目是可以选择的 35 Sprint迭代计划 2 5 输入和输出 SprintPlanningMeeting SprintBacklog ProductOwner ScrumTeam Management Customers SprintGoal 36 迭代任务清单规划 3 5 逻辑 迭代任务清单规划是 铁三角 法则的另一个例子在Scrum 边界是一个变量 因为 资源 Scrum团队 是确定的 进度表 迭代的时间 是不能变的 质量是无法协商的团队在一个迭代内能完成的任务 可以用团队进度来衡量 StoryPoints Sprint 如果可能的话利用同一个团队上个迭代的进度 yesterday sweather 30 daysprint 20workdays1dayforplanning 1forreview retrospective 18workdays5personsinteam 90theoreticalmandays7 5 hourworkingday average85 toprojectwork90 7 5 0 85 574manhours5 reservedforre estimationandre planning545manhours 37 迭代任务清单规划 4 5 规划会议 召开迭代任务清单规划会议的目的是确定迭代的边界 时间是限定的 最长时间是一个工作日 对持续4个星期的迭代 迭代持续的时间越短 用在规划上的时间也应该越少 由ScrumMaster推动会议 由于会议时间有限 ProductOwner和Scrum团队都应该事前进行准备 前提 产品需求清单是有效的 valid 最新的 标注了优先级并且表述清楚 规划会议要解决两个问题 下次迭代要做什么 确定迭代的目标 包含产品需求清单上高优先级的功能 给Bug修改留一定的余地怎么样实现下次增量所需要的功能 改进设计以实现产品需求清单上的功能 38 迭代任务清单规划 5 5 工作流程 产品所有者向团队介绍起草的产品需求清单和迭代目标 产品所有者传达迭代的起止日期 Scrum团队从产品需求清单中选取高优先级的功能作为迭代的任务 如果有必要 更新其规模估计 Scrum团队改进架构和设计以便能够实现提出的产品需求 Scrum团队把产品需求清单的每一项划分成小的任务 并估算每个任务要花费的小时数 扑克规划 方法是估算工作量的有效方法 Scrum团队决定一个迭代中能够实现产品需求清单的多少功能产品所有者和Scrum团队明确了各自要承担的义务 39 SprintBacklog示例 Personsworkingonthetask Descriptionofthetask Effortestimate Taskblockedbyanimpediment Sprintgoal Meetsthedefinitionofdone 40 执行迭代任务清单 执行迭代任务清单意味着团队在迭代期间自行开发 团队清楚要达到什么的目标以及怎样达到目标 每人每一时间只有一个任务团队是自发组织的 成员自己挑选任务 ScrumMaster提供指导并清除障碍 不能从外部改变迭代的范围或者迭代的周期 为了达到迭代的目标 团队可以增加 删除任务或者改变其优先次序 如果要重新设定迭代的范围时需要产品所有者的配合 迭代周期短 意味着工期紧 应该把重点放在剩余的工作和风险的消除 要区分任务的优先级 重要的事情应当先做 迭代应当达到项目的质量要求 definitionof done 没有独立的测试阶段 41 迭代进度图 BurndownChart Scrum注重成果 它关心的是要花多少时间达到目标 而不是已经花费的时间 团队能否在既定的时间达到迭代的目标 可以查看要完成产品需求清单的功能所剩余的工作Remainingwork EstimatetoComplete ETC 描述剩余工作量和时间关系的图表称为SprintBurndown图 是Scrum中非常重要的控制方法 controlmeasure 给Scrum团队和产品所有者提供直观的信息 术语burndown表明Scrum团队在迭代过程中消耗剩余工作的能力 迭代结束时其值为0 每个任务 task 的工作量由Scrum团队来估计 每天都要进行估计 以便进行跟踪 可以使用电子表格或者专门的工具 如ScrumWorks 42 迭代进度图 BurndownChart Idealburndown Actualburndown Remainingworkincreasing Tasksunderestimatedand orworkremainingnotupdated TasksremovedfromtheSprintBacklogtomeetSprintGoal fasterdecline Sumofremainingwork h foralltasksintheSprintBacklogonaparticularday Initialestimate 752h InthebeginningoftheSprint 43 迭代进度图 BurndownChart 44 Scrum每日例会 1 4 小鸡和猪的故事 Achickenandapigaretogetherwhenthechickensays Let sstartarestaurant Thepigthinksitoverandsays Whatwouldwecallthisrestaurant Thechickensays Hamn Eggs Thepigsays Nothanks I dbecommitted butyou donlybeinvolved InaDailySprint onlyScrumMasterandScrumTeamarecommitted andthusallowedtospeak Othersareonlyinvolved 45 Scrum每日例会 2 4 概述 例会最长15分钟 在整个迭代过程中每天的同一时间召开 团队成员之间交流信息 了解项目的真实的进展情况交流风险和存在的问题 面对面的会议加强了承诺 ScrumMaster负责整个会议 会议地点 邀请等 其他人可以参与 但只允许ScrumMaster和Scrum团队成员讲话 小鸡和猪 例会之前团队要更新工作量估计 使进度表保持最新 46 Scrum每日例会 3 4 形式 为使会议简短而富有成效 要遵循严格的规程每个成员向其他人汇报以下内容 上次会议以后所做的工作 下次会议之前要做的工作 工作中是否有什么障碍 如果出现其它的问题 如设计的问题 应当在会议后处理 纪录会议纪要 例如wiki 要养成良好的会议习惯 47 Scrum每日例会 4 4 48 障碍 基本上 任何阻止团队正常工作的 都可称之为障碍 例如 无法访问信息系统 所需要的信息不能及时提供或者提供的不正确 如界面规格或者其它软件模块不到位或不正确开发环境或者原型系统出现问题其他的任务分配 培训 售前支持缺乏必要的信息或者相应的知识对于团队提出的各项障碍 ScrumMaster要以列表形式进行记录 49 谁来清除障碍 每个人自我管理 自我组织的团队ScrumMaster产品所有者管理层其他相关的干系人ScrumMaster负责确定障碍已经清除 不一定亲自自己清除 50 清除障碍 某些障碍是浪费部分地完成工作额外的过程额外的功能任务转换等待缺陷 清除障碍的过程是团队和组织学习的过程 51 浪费产生的原因 多问几个 为什么 对于每个标识的障碍或者浪费 问一问 为什么 浪费会存在多问几个 为什么 找到造成浪费的根本原因 52 迭代中的同步工作 每次迭代不是小的瀑布项目 而是 每件事情同时都做一点 53 迭代的非正常终止 在Scrum中 结束正在进行的迭代是一种极端的行为 只有在万不得以的情况下才能这么做 有时候确实需要停下来重新规划 而不是一味的蛮干 bangingyourheadagainstthewall 迭代终止可能由下面的人发起 Scrum团队 如果他们认为达不到目标或者目标不清楚 ScrumMaster 如果迭代没有进展 或者无法克服某个困难 客户 管理层 如果目标已经陈旧 过时 目标产品被取消 平台过时 或者其它的原因 资源问题等 迭代终止以后 启动新迭代的计划 导致迭代终止的原因不应该在新的迭代中再次出现 要考虑到合同方面的问题 如时间表的变更等 54 迭代评审 概述 迭代评审 在迭代结束后进行 展示迭代的成果 功能运行 确保成果与预期的一致 收集反馈为项目提供一个参考点 根据目前的位置计划下一期的旅程为下次迭代提供输入 改正 修改 新的想法 可以由产品所有者添加到产品需求清单 与其它Scrum会议一样 ScrumMaster主持迭代评审会议 Scrum团队负责演示 参加会议的其他人包括 产品所有者ProductOwner 必须参加 客户 管理人员 以及其它感兴趣的人 例如其他Scrum团队 注意保密协议的要求 评审会议的时间是固定的 最长4个小时 评审会议应当是非正式的 创造性的 不用幻灯片等正式的东西 55 迭代评审 流程 在评审会议召开之前 团队要做好准备 有组织 有效地进行演示 不要超过4个小时 谁来演示 演示什么 怎样演示 计划准备的时间不要超过一个小时 迭代评审流程的一个例子 ScrumMaster介绍本次迭代的总体情况 目标和清单vs 实际的结果 如果存在差距 原因是什么 Scrum团队简要介绍所涉及的技术问题 如架构及其变更 Scrum团队演示已经实现的功能 演示并进行功能说明在场的人能够亲自尝试使用不同的功能 ScrumMaster推动自由讨论 集思广益 迭代评审应当是互动的 有问题提出 问题解答 并欢迎提出想法和建议 56 迭代评审 可能的措施 产品所有者根据评审的结果可能采取如下行动 更新产品需求清单 重新设定优先级 包含没有按计划实现的功能 进度比预期的要慢 任务未完成 不在计划中当却已经实现的功能 进度比预期的快 迭代评审中出现的新的想法 与ScrumMaster一起解决团队的变动问题 要求把演示的功能 或者把上次迭代的功能 作为一个版本发布给客户 决定项目不再持续下去 不再进行迭代 认为产品已完备 要求把产品需求清单授权给另外的团队来一起工作 57 迭代回顾会议SprintRetrospective 回顾的目的是评价本次迭代并酝酿改进 使得下一个迭代进行的更好 类似于项目的最终评审 但经常举行 障碍列表具有很好的参考价值 ScrumMaster主持召开 持续半天 Scrum团队参加 产品所有者也可参加 简单流程 ScrumMaster总结本次迭代 迭代任务清单 重要的事情和决策 预期的 实际进度 每个组员陈述迭代中那些方法进行的较好 哪些需要改进 ScrumMaster进行记录 对重要的问题计划相应的措施 团队自己解决 或者提交给公司的管理层 Scrum方法应用 59 敏捷开发中使用扑克Poker方法进行估计 1 3 尽管名字有好笑 但却非常可靠和有效 可以来估算产品需求清单中每项的规模 规模估算 用例点storypoint 以及迭代任务清单中任务的估计 工作量估算 人时 ScrumMaster推动活动的进行 一个以上的专家参与估算 而且最好是项目团队中的人 估算时使用卡片 写有一系列的离散数据 如0 1 2 3 5 8 13 无法估计 60 敏捷开发中使用扑克Poker方法进行估计 2 3 前提条件 提前准备好要估算的任务 UserStories等 迭代任务清单和产品需求清单都已经起草好 对某个任务最有经验的开发者做一个简短的概述 可以通过简短的讨论澄清任务的具体含义 找出存在的风险以及不确定性 各自对任务进行估计 所有的人将写有各自估计数据的扑克 卡片扣上 单位事先进行约定 工时 事件点 大家同时把扑克 卡片翻过来 如果扑克 卡片上的数差距比较明显 如一个13 2个5 一个1 就要讨论一下为什么会出现这么大的差距 估计值所基于的假定要进行澄清 如果差距较小 如三个8两个5 主持人帮助确定最终的估值 对于不确定性 估算数据中可以多包含一些余量 不断的重复该过程直到达成一致 将这些估值记录到相应的文档中 产品需求清单 迭代任务清单 61 敏捷开发中使用扑克Poker方法进行估计 3 3 为什么使用离散的数字 比使用任意数字更加容易进行估算 在整个项目中或者迭代中 每个人估计值的错误会相互抵消掉 对每个任务 16小时是上限 不确定性会随着规模的增加而增加 为什么要有 将较大的任务进行分解 帮助更加精确的估计同时减少不确定性 为什么要 讨论并重复 弄清不同的假设 利用重用代码或者重新编码 和可能的误解 更为可靠的估计 对于那些偏离平均值的估计 即使由有经验的人给出的 也必须要有充分的理由 62 练习 在一个小时之内编写一个三只小猪的连环画册使用Scrum实践自组织团队迭代每日Scrum会议产品需求清单迭代任务清单 63 练习 进度安排 5分钟 迭代目标团队与产品所有者共同协作 从产品需求列表中选择本次迭代要完成的项目5分钟 迭代任务清单团队从所选择的产品需求列表中产生任务10分钟 第一天团队完成任务和产品需求列表中的项目产品所有者负责回答问题5分钟 每日 Scrum会议每个人回答三个问题 10分钟 第二天团队继续完成任务和产品需求列表中的项目产品所有者负责回答问题5分钟 每日 Scrum会议每个人回答三个问题10分钟 第三天团队完成产品的一个版本产品所有者负责回答问题每组5分钟 演示团队向产品所有者展示完成的连环画册 64 练习 给出优先级的产品需求清单 展示基本的故事用铅笔画展示的故事每页图画配有说明给出写有标题的封面故事用9页进行说明展示版权信息添加色彩广告教小孩数数1 2 3寓教于乐 坚固的重要性封皮吸引人硬的封皮3D效果的卡通形象展示所有的故事内容 产品所有者 ProductOwner充分考虑市场情况 对产品进行规划并进行简要地说明规划当前该产品如何占有更多的市场份额规划今后该产品的发展前景Scrum团队根据产品所有者的产品规划进行开发 65 测试驱动开发TestDrivenDevelopment 什么是测试驱动 一种能够支持Scrum的敏捷实践方法 开发满足DoD的软件首先创建测试用例 然后开发软件通过测试 在开发代码前 首先编写测试代码 一种设计软件的方法 而不仅仅是一种测试方法所创建的测试用例用来指导和约束项目中的各项工作 对未来的各项工作提供一个安全的保护不需要测试的工作不需要完成所创建的测试用例通常替代详细的业务和技术需求定测试也有效地驱动设计 使设计更加趋向于可行的设计通常情况下需要自动测试的支持 EUnit JUnitetc 对于UI软件应用TDD方法有一定的困难 66 测试驱动开发 TDD 测试用例的作用 确定所要完成的工作沟通工具产生一致的结果对软件开发提供一个安全的保障 67 Scrum的核心 反馈检查接受 68 应用 1 4 概述 基本原则 不能只挑自己喜欢的 不管其它的Scrum非常简单 为了有效地发挥作用 应当具备 所有的角色 所有的实践 所有的产品 Scrum可以进行裁剪 但应当明白裁剪对工程的影响 需要经验和仔细考虑 69 应用 2 4 大型 跨地域项目 6到10人在同一房间进行工作时 Scrum能够发挥最大效用 Scrum也可应用在大型的跨地域的项目 一些指导原则 将大的项目分成多个团队 每个团队6到10人 有各自的ScrumMaster 对跨地域的项目 尽量不要把一个Scrum团队分到多个地方 一个Scrum团队就在一个地方 有自己的ScrumMaster 但是 如果团队的跨地域是不可避免的 可以使用网络工具远程召开Scrum例会 划分团队时 团队之间应该有一个 自然界面 如为避免混乱 不同的团队负责产品的不同部分 对于整个项目 产品 一个产品 项目只能有一个产品所有者和产品需求清单 团队之间的协调利用ScrumofScrums方法 70 应用 3 4 ScrumofScrums ScrumTeam6 10persons ScrumTeam6 10persons ScrumTeam6 10persons ScrumofScrums ScrumonTeamLevel 1 3times week orondemand Eachteamrepresentedbydedicatedpersons onlyoneifnoissuestoescalate ProjectdividedtoScrumteamsbasedonprojectsizeorgeographicallocationScrumTeamshaveDailyScrummeetings ScrumofScrumscanbeheldlessfrequently Teleandvideoconferencingutilizedasneeded 71 应用 4 4 固定价格的项目 Scrum不鼓励固定价格的项目每次迭代时进行项目预算 产品需求清单可以根据当前的优先级进行调整 某些项目中 客户需要我们对整个项目给一个报价或者预算 价格固定限制了灵活性 对变化的响应 如果价格和进度是固定的 那么整个项目的范围也是固定的 PB 必须对项目所有的迭代都进行详细的计划和规模估计 变更项目的范围 以及随之而来的预算 进度的变更需要提交CR 当然可以改变产品需求清单的优先级 或者不改变工作量前提下把其中的某一项换成另一项 仍然可以使用Scrum 并从中获益 72 支持工具和模版 Tasksnotstarted Tasksinprogress Taskscompleted done Priority SprintGoal SprintBurndownChart Tasks DescriptionResponsiblepersonWorkremaining 73 一些常见的误解 敏捷是拯救任何项目的银弹 敏捷方法只有运用得当才有效果 敏捷意味着ad hochacking 不需要任何文档 敏捷是有严格要求的 也是面向质量的根据沟通的需要产生相应的文档 敏捷只是开发者的问题基本的开发方法与传统相比有显著不同 影响项目的各个方面 合同 角色 定价模型 项目管理等 采用敏捷方法的开发组 项目不需要制定计划敏捷项目需要经常制定计划 但是不需要试图超前制定项目计划 通常这也是不可能的 敏捷项目的范围可以随时改变 变更可以等到下一次迭代开始 当前正在进行中的迭代不能变更只对小项目适用在中型和大型的项目中一样取得了成功 74 敏捷开发各阶段的主要活动 JinghuaLiQualityManagerTietoEnatorCorporationT MMDRMIDjinghua 76 项目生命周期 主要包含三个阶段 产品定义 计划 进行迭代所需要的项目准备 项目计划和技术分析迭代开发 执行 在固定时间的迭代中实现需求 产品需求清单中的项目 结束 准备最终的发布 结束项目 rampdown 77 产

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论