首页 > 代码库 > 柯南君: 教你看敏捷开发のScrum是怎样工作的?

柯南君: 教你看敏捷开发のScrum是怎样工作的?

                   柯南君 教你看敏捷开发のScrum是怎样工作的

     如今敏捷开发是越来越火,人人都在谈敏捷。人人都在学习Scrum和XP,柯南君的朋友“远哥”是一位项目leader。柯南君与远哥促膝长谈。远哥也毫不避讳。知无不言言无不尽。把自己对Scrum的理解和自己工作中的经验积累与柯南君分享,在这里柯南君取代远哥与大家分享一些经验。

     一、 什么是敏捷开发?

       敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。

怎么理解呢?首先。我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程。它会指导我们用规定的环节去一步一步完毕项目的开发;而这样的开发方式的主要驱动核心是人,它採用的是迭代式开发;

      二、为什么说是以人为核心?

      我们大部分人都学过瀑布开发模型(见备注),它是以文档为驱动的,为什么呢?由于在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发者都是根据文档进行开发的。一切以文档为根据;而敏捷开发它仅仅写有必要的文档,或尽量少写文档。敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心

       备注:

            ① 在这里儿。给大家普及一下基础知识的,什么是软件开发模型?对于开发模型知识点,要掌握软件生命周期的概念、各种开发模型的特点和应用场合。

主要是的开发模型有瀑布模型、增量模型、螺旋模型、喷泉模型、V模型、高速应用开发模型、构件组装模型、敏捷方法和统一过程等。            

       三、什么是迭代?

      迭代是指把一个复杂且开发周期非常长的开发任务,分解为非常多小周期可完毕的任务。这种一个周期就是一次迭代的过程;同一时候每一次迭代都能够生产或开发出一个能够交付的软件产品。

      四、 关于Scrum和XP

      前面说了敏捷它是一种指导思想或开发方式。可是它没有明白告诉我们究竟採用什么样的流程进行开发,而Scrum和XP就是敏捷开发的详细方式了。你能够採用Scrum方式也能够採用XP方式;Scrum和XP的差别是。Scrum偏重于过程,XP则偏重于实践,可是实际中,两者是结合一起应用的,这里我主要讲Scrum。

     1、什么是Scrum?

      技术分享

       Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum。我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完毕它,你一定会感到很兴奋的。

而Scrum就是这种一个开发流程,运用该流程。你就能看到你团队高效的工作

     2、 IT方法的採用率对照

      软件开发中有非常多过程方法能够使用。下图为Forrest Research 2009年调查的方法採用率对照,当中能够看到Scrum方法明显占有优势。本篇我将从IT方法论的角度来谈Scrum。

      技术分享

      3、Scrum与CMMI 

              暂无

      4、Scrum的特点

          ① 是一个敏捷开发流程

          ② 以团队为基础

          ③ 要求迅速变化情况下迭代和增量开发

          ④ 改善交流并最优化合作

          ⑤ 检測开发过程障碍并将其去除

          ⑥ 最大化生产率

          ⑦ 适用于单一的项目到整个组织

          ⑧ 能让參与者对工作贡献赶到惬意

      5、Scrum中的角色     

      技术分享

      技术分享

     1)Scrum Master——项目负责人、项目经理

          ① 保护团队不受外界干扰,是团队的领导和推进者,负责提升 Scrum 团队的工作效率,控制 Scrum 中的“检视和适应”周期过程。

          ② 与 Product Owner 一起将投资产出最大化,他确保全部的利益相关者都能够理解敏捷和尊重敏捷的理念。

        2)  Team——开发者、測试人员、美工设计、DBA等全职能性团队

          ① 团队负责交付产品并对其质量负责,团队与全部提出产品需求的人一起工作。包含客户和终于用户。并共同创建 Product Backlog 。

          ② 团队依照大家的共识来创建功能设计、測试 Backlog 条目交付产品。 

          ③ 自组织地完毕项目开发,使用一切可行手段保证进度和质量

        3) Product Owner——产品负责人、产品经理、运营人员

           ① 从业务角度驱动项目,传播产品的明白愿景,并定义其主要特性。

           ② Product Owner 的主要职责是确保团队仅仅开发对于组织最重要的 Backlog 条目,在 Sprint 中帮助团队完毕自己的工作,不干扰团队成员,并迅速提供团队须要的全部信息。

       4) User——终于用户、运营人员、系统使用人员

         ① 非常多人都可能成为终于用户,比方市场部人员、真正的终于用户、最好的领域专家。也可能是因其专业知识而被雇佣的资讯顾问。

         ② 终用户会依据自己的业务知识定义产品,并告知团队自己的期望,提出请求。

      5) Manager——管理层、投资人

         ① 管理层要为 Scrum 团队搭建良好的环境,以确保团队可以出色工作。必要的时候,他们也会与 Scrum Master 一起又一次组织结构和指导原则。

      6) Customer—— 户、系统使用人员、运营人员

         ①  客户是为 Scrum 团队提出产品需求的人,她会与组织签订合同。以开发产品。

         ② 一般来说,这些人是组织中的高级管理人员,负责从外部软件开发公司购买软件开发能力。

         ③   在为内部产品的公司中,负责批准项目预算的人就是客户。

       6、Scrum流程

      技术分享

     备注:

       ① Scrum的核心在于迭代。整个过程仅仅有三个角色。产品负责人的职责是利用产品backlog,督促团队优先开发具有价值的功能,并在其基础上继续 开发。产品负责人必须频繁检视产品代开发需求的优先级。以便将最具价值的功能安排在下一个迭代中完毕。团队的责任是开发软件功能,他们是自组织团队,团队全部成员对每一次迭代和整个项目共同负责,不单做考核。Scrum Master则须要对Scrum过程负责,向全部项目參与者讲授Scrum方法,负责实施Scrum,确保它既符合企业文化,又能交付预期利益。还需督促 全体成员遵从Scrum规则和实践。
  ② 启动Scrum项目所需的最简约计划包含:一份愿景及产品Backlog。愿景描写叙述项目开发原因和预期目标。

愿景可能描写叙述商业运作方式将发生哪些改变,主 要特性和功能怎样为客户创造收益。以及对市场的预期影响。

产品backlog将定义交付愿景时,系统应满足的功能性和非功能性需求,它需事先划分优先级并经过初始预估(预估的目的是了解每一个需求自身及相对与其它需求的规模)。
  ③ 在Sprint第一天召开sprint计划会议,这个会议分为两部分,计划会议1由PO、SM和Team參加,主要是从产品backlog中挑选出须要放 到当前sprint下的既定产品backlog,然后由SM、Team參加计划会议2,把既定产品backlog的故事拆分成任务进行估算,PO也能够一 起參加这个部分来了解详细的开发细节。sprint周期在spirnt计划会议2正式開始。开发过程中,团队每天召开每日站会(Daily Scrum),沟通团队成员间工作进度和进行任务协调。Sprint周期结束时。须要召开Sprint评审会议,由团队向产品负责人和其它利益相关者展示当前sprint周期内的产品开发情况。

产品负责人依据团队这次 Sprint 所公布的版本号,评审相关的 Backlog 中的问题,检查是否已达到 Sprint 的目标。评审会议结束后会进行回想会议,通过总结以往的实践经验来提高团队生产力。

       技术分享


       7、Scrum 中的产出物

        1) Product Backlog——Backlog 待开发项,积压的任务。

              技术分享

           ① 产品 Backlog 包含了全部须要交付的内容,其内容依据业务需求的价值顺序排列,每一个 Backlog 的优先级是能够调整的。需求是能够增减的,因此产品 Backlog 将依据不断增长来持续驱动维护。

            ②  Product Backlog不是制定一次就完了的,它是动态的,须要持续的被修订。可能会出现故事的添加、删除和改动、合并或者拆分不论什么一个Backlog的目标都是:它应该足够短、级别足够高,无特殊情况不须要改动。如果Backlog改变了,那么我觉得你应该如果你的 Backlog错了,而不是需求变更了。

变更需求通常意味着Backlog太长或者太具体,比方把复杂算法和逻辑也写入了backlog中了。要不就是写 的太含糊不清了。须要花费太多的时间推測它到底讲的是什么。
            ③ prodcut Backlog有什么用?
                产品backlog依据用户价值罗列全部即将在产品中开发的功能,通过简洁的展示须要实现的功能,我们能够对项目进行规模上的估算,确定公布计划和迭代计划。

产品backlog能够帮助我们对将要做的事情有个总体的认识,以及能够知道我们如今的状态。假设没有backlog,我们将不知道如今和将来产品做成什么样子,因为对产品目标的不明白,当然也不知道什么时候能够公布产品,或者公布的产品能给客户带来什么价值。

           ④ 谁提供product backlog的需求?
               产品负责人与客户近期,他最清楚产品应该做什么样子,所以product backlog应该由Product Owner来制定。

里面的需求由产品负责人或者客户制定,有时候Team里的需求分析人员能够和产品负责人或客户一起定义需求。制定后,由Scrum master和Team协助产品负责人修订并进行初始评估,里面的需求在sprint计划会议将进行更进一步的讨论。


           ⑤ 什么时候会改动product backlog?
             假设一个列表太长或者内容陈旧,product backlog的浪费远大于价值本身,所以我们必须不断的维护产品backlog。

产品backlog由产品负责人提供,与Team进行规模估算时。可能会拆分合并或者加入删除故事。初始预计也由Team进行评估提供预计值。

产品全部者一般会向开发小组提出自己确定的优先级顺序,而小组也可能会请产品全部者依据他们对主题的评估对这个顺序作出少量调整。

            怎么写故事?
            一般依照轻量级的故事来进行描写叙述需求。用户故事是最主要的设计单元。它是从系统用户或者客户的角度出发对功能的一段简要描写叙述。用户故事的形式非常自由,没有什么强制性的语法。可是,依照大致符合这样一个形式来考虑 用户故事是比較故意的:“作为【用户的类型】,我希望能够【先这样做,然后那样做,就应该得到...的结果】以便【业务价值】。”以这种模作为样例,能够得到一个用户故事说:“作为购书者,我希望能够依据ISBN来找到一本书,以便能更快的找到正确的书。”在做用户故事时,须要注意每一个用户故事用的是用户的语言,它仅仅描写叙述一个功能(feature),并且每一个用户故事的开发周期不要太长(1-5天)我们不须要一開始对全部的故事都进行具体的描写叙述,但计划放在下一个sprint中的故事应该比較清楚。

           ⑥ 一般依照轻量级的故事来进行描写叙述需求。

        

             用户故事是最主要的设计单元,它是从系统用户或者客户的角度出发对功能的一段简要描写叙述。用户故事的形式非常自由,没有什么强制性的语法。

可是,依照大致符合这样一个形式来考虑 用户故事是比較故意的:“作为【用户的类型】,我希望能够【先这样做。然后那样做。就应该得到...的结果】以便【业务价值】。

”以这种模作为样例,能够得到一个用户故事说:“作为购书者。我希望能够依据ISBN来找到一本书,以便能更快的找到正确的书。”在做用户故事时,须要注意每一个用户故事用的是用户的语言。它仅仅描写叙述一个功能(feature),并且每一个用户故事的开发周期不要太长(1-5天)

====================================================================================================================================

            技术分享

            技术分享

            技术分享

            备注:

                       拆分故事:注意在这里不要把故事拆分到任务。故事是能够交 付的东西。是产品负责人所关心的。而任务是不可交付的东西。
                       优先级经济价值、开发成本、依赖关系、新知识、风险。

           ⑦ ID为一个唯一标识,确定后最好固定不变,在其它工作或者文档中想引用故事就使用这个ID来引用 Name2到10个字,通过简单的描写叙述来说明故事,假设要非常多字才干表达这个故事。那非常有可能这个故事太大,或者不清楚 重要性 这个优先级决定了sprint选择的故事,优先级越高的越早实现 初始估算 这个由Team来依据故事描写叙述内容来估算,产品负责人解说完故事后,Team对不清楚的进行询问。大概了解后进行粗略估算。从估算的角度出发,故事不应该太短。但也不能太过于具体,不须要把具体的规则和算法写进去。

How do demo 从用户视角,从操作层面进行解说这个故事怎样通过软件来演示,也能够作为一个简单的測试用例了。重要性高的backlog条目都要填写”怎样演示“。

Notes相关信息、解释说明和对其它资料的引用等。一般都很简短。
            ⑧ 怎么拆分故事?
                 故事非常大时,我们将非常难对它进行预计。

假设故事预计在N次迭代后才进行。那么大的故事非常正常。但假设预计预计在接下来的迭代中进行,那么我们就 可能会对大的故事进行拆分。非常大的故事基本上都能进行拆分,仅仅要确定每一个小故事莹然能够交付业务价值即可。注意在这里不要把故事拆分到任务,故事是能够交 付的东西,是产品负责人所关心的,而任务是不可交付的东西。产品负责人对它并不关心。任务是在sprint计划会议上拆分的。

       切割用户故事:1 依照用户故事所支持数据的边界来切割大型用户故事(比如导入GBQ文件、Excel等)
                     2 有些时候。能够从主用户故事中除去对例外或错误条件的处理(相当于用户的基本路径和扩展路径),从而把一个大型用户故事变小很多
                     3 依照操作边界切割,把大型用户故事切割成独立的建立、读取、更新和删除操作(比如预算二次导入。或者新增时须要向导、规则而比較复杂时也能够单独成一个故事来描写叙述)
                     4 考虑去除横切考虑(比如安全处理、日志记录、错误处理等),为用户故事建立两个版本号:一个具备对横切考虑的支持,还有一个不具备这样的支持
                     5 考虑功能性需求和非功能性需求隔离到不同的用户故事,从而切割大型用户故事(性能)在拆分故事时,我们有时也须要考虑组合故事的场景,如   把bug列入产品backlog时,能够把多个类似的bug组合成一个故事。
       ⑨怎么评定优先级

                 最简单的方法就是问问客户最希望在下一个迭代中最想看到的是哪一些功能。

从考虑的因素来看,我们能够从下面4个因素来考虑:                  A  获取这些功能带来的经济价值,价值越高的优先级越高。                  B  开发成本带来的影响。

比如可能2个月后因为使用新技术仅仅须要2周,而如今做须要2个月,这时能够考虑把优先级放低一些获取新知识的重要性。                  C  在开发中会不断的产生一些项目和产品的新知识,及早了解和开发这些新知识能够降低不确定性,所以这类功能优先级会高些故事之间会存在依赖关系,这时候被依赖的优先级会更高,须要先完毕开发这些功能所降低的风险。

                               D 在开发过程中。会出现进度风险、成本风险、技术风险等,对于风险越高价值越大的我们须要首先处理,对风险高价值低的要尽量避免。能够通过下面图查看确定功能优先级时综合考虑风险和价值的关系


        2)Sprint Backlog——Sprint 本意为“冲刺”,指迭代周期,长度一般是一至六周

                    在 Sprint 開始前。定义本次 Sprint 要讨论的“Sprint Backlog”。从中产生本次 Sprint 要完毕的 “已定 Product Backlog”。

                     已定 Product Backlog Sprint 计划会议的产物,它定义了团队所接受的工作量,在整个 Sprint 过程中它将保持不变。

                 技术分享

                    技术分享

                 目标:定出 Sprint 目标,确定全部任务。

                备注:

          ① sprint计划会议1
               产品负责人和团队一起,在先前评估的成果基础上,定出 Sprint 目标和既定产品Backlog。

              【目标】              定出 Sprint 目标和既定产品 Backlog               【会议准备】                     邀请与会者:产品负责人、Scrum Master、团队全部成员                      已按优先级排列产品 Backlog 中各项问题                      已评估 Backlog 中的各项问题                      把产品 Backlog 公开给会议中的每一个人,保证其可被获取                     预期团队中有哪些人已明白会缺席(如度假)                     保证房间环境适合小组讨论                      每一个人都能够获取上次 Sprint 评审会议和 Sprint 回想会议的结果                      Sprint 时间表已经安排                      Sprint 计划会议 1 的时间安排                      Sprint 计划会议 2 的时间安排                      Sprint 的第一天已确定                      Sprint 的最后一天已确定                      Scrum 每日例会的时间安排                      Sprint 评审会议的时间安排                      Sprint 回想会议的时间安排                      (可选)为既定 Backlog 准备图钉板:一个至少 2x2 米的图钉板、卡片和贴纸、荧光笔                      (可选)用作计划纸牌的卡片                       会议进程(4 小时)                      把 Sprint 时间表公开给全部人                      把 Sprint 评审会议的结果公开给全部人                      把 Sprint 回想会议的结果公开给全部人                      产品负责人向团队产品阐述产品远景                      产品负责人和团队一起确定 Sprint 目标                      假设 Backlog 里有问题遗漏:产品负责人有权限往 Backlog 里加入问题                      假设产品 Backlog 全然未被评估:选择 Backlog 中您觉得是最小用例的问题,并指派其工作量为 2 个Story Point。以这个最小用例的工作量标准,分配 Backlog 中其它问题的 Story Point                      假设 Backlog 中的一些问题尚未被评估:依据其它问题工作量,评估这些问题的 Story Point 量                      假设产品 Backlog 中的各项还没能合理地按优先级排序:产品负责人对产品 Backlog 中的各项按优先级排序                      产品负责人和小组成员相互认可这 Sprint 目标和既定产品 Backlog          【会议结果】          为 Sprint 计划会议2的进行准备好既定产品 Backlog          sprint计划会议2            在 Sprint 计划会议 2 中。团队将既定产品 Backlog 中的每一项细化成多个任务。每一个任务完毕的时间限定在一天内。           【目标】          确定全部任务。生成 Sprint Backlog,确认 Sprint 目标

       3) User Story、Task——用户故事、任务

        用 User Story 来描写叙述 Sprint Backlog 里的项目,User Story 是从用户的角度对系统的某个功能模块所作的简短描写叙述。

一个 User Story 描写叙述了项目中的一个小功能,以及这个功能完毕之后将会产生什么效果,或者说能为客户创造什么价值。一个 User Story 的大小和复杂度应该以能在一个 Sprint 中完毕为宜。

假设 User Story 太大。可能会导致对它的开发横跨几个 Sprint,此时就应该将这个 User Story 分解。

        为了可以及时。高效地完毕每一个 Story,Scrum 团队会把每一个 Story 分解成若干个 Task。每一个Task 的时间最好不要超过8小时。保证在1个工作日内完毕,假设 Task 的时间超过了8个小时,就说明Task的划分有问题。须要特别注意。

        障碍 Backlog——问题列表,积压的待处理事务。

        列举了全部团队内部和团队相关的和阻碍项目的进度的问题。Scrum Master 须要确保全部的障碍 Backlog 中的问题都已分配并能够得到解决。

       注意: 通用会议规则

        基本要求

  • 每次会议都要准时開始、准时结束。
  • 每次会议都採取开放形式。全部人都能够參加。

        会前准备

  • 提前邀请所有必须參会的人。让他们有时间准备。
  • 发送带有会议目标和意图的会议纲要。
  • 预订会议所需的所有资源:房间、投影仪、挂图、主持设备。以及此会议须要的其它东西。
  • 会前24小时发送提醒。
  • 准备带有会议规则的挂图。

        会议推进

  • 展开讨论时,会议的推进人必须在场。他不能參与到详细讨论中,可是他须要注意讨论进程,假设讨论參与者失去重点。他还要将讨论带回正规。
  • 推进人展示会议的目标和意图。
  • 有必要时,推进人能够商定由某个撰写会议记录。
  • 推进人能够记录团队的意见。或是教授团队怎样自己记录文档。并且推进人可能会在挂图上进行记录,将对话可视化。

  • 推进人会对会议进行收尾,并进行很简短的回想。

        会议输出

  • 使用手写或挂图说明来记录文档,给白板和挂图上的内容拍照。
  • 必须传达会议记录和大家对会议结果的明白共同认知。

        让团队坐在一起!

  • 大家都懒的动。尽量让“产品负责人”和“全功能团队”都坐在一起!

  • 互相听到:全部人都能够彼此交谈,不必大声喊。不必离开座位。

  • 互相看到:全部人都能够看到彼此。都能看到任务板——不用非得近到能够看清楚内容。但至少能够看到个大概。
  • 隔离:假设你们整个团队突然站起来,自发形成一个激烈的设计讨论,团队外的不论什么人都不会被打搅到。反之亦然。

        团队建设

  • Scrum 团队最佳人数控制在“5~9”人。
  • 全职能性团队:开发组(后台开发、前端开发、測试人员——3~8人)、Scrum Master(项目经理)、产品负责人
  • 兼职团队成员:美工、DBA、运维

        每日立会(Daily Standup Meeting)——建议下班前開始

        会议目的

  • 团队在会议中作计划,协调其每日活动。还可以报告和讨论遇到的障碍。
  • 任务板可以帮助团队聚焦于每日活动之上。要在这个时候更新任务板和燃尽图。

        构成部分

  • 任务板、即时贴、马克笔
  • 提示:ScrumMaster 不要站在团队前面或是任务板旁边,不要营造类似于师生教学的气氛。

        基本要求

  • 成员:团队、Scrum Master
  • 无法出席的团队成员要由同伴代表。

  • 持续时间/举办地点:每天15分钟,相同一时候间,相同地点。
  • 提示:团队成员在聆听他人发言时,都应该想这个问题:“我该怎么帮他做得更快?”

        会议输出

  • 团队彼此明白知道各自的工作,最新的工作进度图。
  • 得到最新的“障碍 Backlog”
  • 得到最新的“Sprint Backlog”

        会议过程

  • 团队聚在故事板旁边,能够围成环形。
  • 从左边第一个開始。向团队伙伴说明他到如今完毕的工作。

  • 然后该成员将任务板上的任务放到正确的列中。
  • 假设能够的话,该成员能够选取新的任务,交将其放入“进行中工作”列。
  • 假设该成员遇到问题或障碍,就要将其报告给 Scrum Master。

  • 每一个团队成员反复步骤2到步骤5。

        每一个人三个问题:

  • 上次会议时的任务哪些已经完毕?:把任务从“正在处理”状态转为“已完毕”状态。——今天完毕了什么?
  • 下次会议之前,你计划完毕什么任务?:假设任务状态为“待处理”,转为“正在处理”状态。假设任务不在 Sprint Backlog 上。则加入这个任务。

    假设任务不能在一天成。把这任务细分成多个任务。假设任务能够在一天内完毕。把任务状态设为“正在处理”。假设任务状态已经是“正在 处理”,询问是否存在阻碍任务完毕得问题。——明天做什么?

  • 有什么问题阻碍了你的开发?:假设有阻碍你的开发进度的问题,把该障碍加入到障碍 Backlog中。——今天遇到了什么问题?

        注意事项

  • 不要迟到
  • 不要超出限制时间
  • 不要讨论技术问题
  • 不要转变会议话题
  • 不要在没有准备的情况下參加
  • Scrum Master 不要替团队成员移动任务卡片,不要替团队更新燃尽图。

  • Scrum Master 不要提出问题,团队成员不要向 Scrum Master 或管理层人员报告。

  • 假设不能出席会议,须要通知团队。并找一名代表參加。

        任务板

  • 任务板集合了选择好的 Product Backlog 和 Sprint Backlog,并以可视化方式展示。
  • 任务板仅仅能由团队维护,使用不同颜色的“即时贴”来区分开发者,或者在“即时贴”写上接受任务的姓名。
  • 尽量使用大白板,也能够使用软件。

        任务板有4列:

  • 选择好的 Product Backlog:依照优先级,将团队在当前 Sprint 中要着手的 Product Backlog 条目或是故事放在该列中。
  • 待完毕的任务:要完毕一个故事,你得完毕一些任务。

    在 Sprint 规划会议中,或是在进行当前 Sprint 中,收集全部特定 Backlog 条目须要完毕的新任务,并将它们放入该列。

  • 进行中的工作:当团队成员開始某个任务后。他会将该任务相应的卡片放到“进行中的工作”列中。从上个每日 Scrum 例会開始。没有完毕的任务都会放在该列中,并在上面做标记(一般是个红点)。假设某个任务在“待完毕任务”列中所处时间超过一天。就尽量将该任务分为更小 的部分,然后把新任务放到那一列,移除其所属大任务卡片。假设一个新任务由于某个障碍无法完毕。就会得到一个红点标记,Scrum Master 就会记下一个障碍。

  • 完毕:当一个任务卡完毕后。完毕此任务的成员将其放入“完毕”列。并開始选取下一张任务卡。
            技术分享=技术分享

  燃尽图(Burn Down Chart)

  • 跟踪进度要由团队来完毕。燃尽图的横轴表示整个Sprint 的总时间,纵轴表示 Sprint 中全部的任务,其单位能够是小时。人天等。一般来说,燃尽图有”Sprint燃尽图”和”Release燃尽图”之分。
  • 团队每天更新燃尽图。
  • 假设燃尽图一直是上升状态,或当 Sprint 进行一段时间之后,Sprint 燃尽图上的Y值仍然与 Sprint 刚開始时相差无几,就说明这个 Sprint 中的 Story 过多。要拿掉一些 Story 以保证这个 Sprint 能顺利完毕。 假设Sprint 燃尽图下降得非常快。比如 Sprint 刚过半时Y值已经接近0了。则说明这个 Sprint 分配的任务太少。还要多加一些任务进来。在 Sprint 计划会议上,假设团队对即将要做的任务理解和认识不充分,就非常可能导致这两种情况的出现。(锻炼团队人员的自我估算时间)
  • 燃尽图要便于团队更新。不是必需让它看起来非常炫,也不要过于复杂,难以维护。

      Release 燃尽图:记录整个Scurm项目的进度,它的横轴表示这个项目的全部Sprint, 纵轴表示各个Sprint開始前。尚未完毕的工作,它的单位能够是个(Story 的数量),人天等。

     技术分享

    

    Sprint 规划会议——第一部分(上午)

        会议目的

  • 该会议的工作以分析为主,目的是要具体理解终于用户究竟要什么,产品开发团队可以从该会议中具体了解终于用户的真实须要。在会议的结束,团队将会决定他们可以交付哪些东西。
  • 产品负责人在会前准备:条目化的需求(用户故事)。优先级排序,近期1~2个迭代最希望看到的功能。会前准备至关重要。可帮助产品负责人理清头绪,不至于在迭代期内频繁提出变更、添加或删除故事。

        基本要求

  • 迭代计划会在每一个迭代第一天召开。目的是选择和估算本次迭代的工作项。

  • 仅仅有团队成员才干决定团队在当前 Sprint 中可以领取多少个 Backlog 条目的工作。

        构成部分:

  • 经过估算和排序的 Product Backlog。
  • 挂图、马克笔、剪刀、胶水、即时贴、白板、铅笔和蜡笔。
  • 假期计划表、重要人员的具体联系信息。
  • 參会成员:团队成员、Scrum Master、产品负责人

        持续时间:在 Sprint 中,每周该会议占用时间为 60 分钟,在早上召开该会议。这样还有可能在同一天召开 Sprint 规划会议的第二部分。

        会议输出

  • 选择好的 Product Backlog 条目。
  • 各个 Backlog 条目的需求。
  • 各个 Backlog 条目的用户验收測试。

        会议过程

  • 从第一个 Product Backlog 条目(故事)開始。
  • 讨论该 Product Backlog 条目,以深入理解。
  • 分析、明白用户验收測试。

  • 找到非功能性需求(性能、稳定性...)
  • 找到验收条件。
  • 弄清晰须要“完毕”到何种水平。
  • 获得 Backlog 条目各个方面的清晰了解。
  • 绘制出所需交付物的相关图表。包含流程图、UML图、手绘草图、屏幕 UI 设计等。

  • 回到步骤1。选取下一个 Backlog 条目。

        流程检查:询问团队是否能高速回答下列问题,仅仅须要简要回答就可以:“我们能 在这个 Sprint 中完毕第一个 Backlog 条目吗?”假设能得到肯定的回答,那么继续询问下一个 Backlog 条目,一直到已经分析完的最后一个 Backlog 条目。——接下来,歇息一下。在歇息后,对下一个 Backlog 条目展开上述流程。

        结束流程:

  • 在 Sprint 规划会议第一部分结束前留出 20 分钟。
  • 再次提问——这次要更加严肃、正式:“你们是否能完毕第一个 Backlog 条目,...第二个,...?”
  • 假设团队觉得他们不能再接受很多其它的 Backlog 条目。那就停下来。
  • 如今是很重要的一步:送走 Product Owner,除了团队和 Scrum Master 之外的全部人。都得离开。
  • 当其它人都离开后,再询问团队:“说真的——你们相信自己能够完毕这个列表?”
  • 希望团队如今能短暂讨论一下,看看他们究竟觉得自己能完毕多少工作。

  • 将结果与 Product Owner 和终于用户沟通。

        注意事项:不要改变 Backlog 条目大小,不要估算任务。

        Sprint 规划会议——第二部分(下午)

        会议目的

  • 该会议的工作以设计为主,产品开发团队能够为他们要实现的解决方式完毕设计工作,在会议结束后,团队知道怎样构建他们在当前 Sprint 中要开发的功能。

        基本要求

  • 仅仅有产品开发团队才干制定解决方式,架构师或其它团队之外的人仅仅是受邀帮助团队。

        构成部分:

  • 可以帮助团队在该 Sprint 中构建解决方式的人,比方厂商或是来自其它团队的人员。
  • 选择好的 Product Backlog 条目。

  • 挂图......

        注意事项:不要估算任务,不要分配任务。

        会议输出

  • 应用设计、架构设计图、相关图表
  • 确保团队知道应该怎样完毕任务!

        会议过程

  • 从第一个 Backlog 条目開始。

  • 查看挂图。确定对于客户的需求理解正确。
  • 环绕该 Backlog 条目进行设计,并基于下列类似问题:
    • 我们须要编写什么样的接口?
    • 我们须要创建什么样的架构?
    • 我们须要更新哪些表?
    • 我们须要更新或是编写哪些组件?
    • ......

        当团队明白知道自己应该怎样开发该功能后。就能够转向下一个 Backlog 条目了。在会议的最后 10 分钟,团队成员使用即时贴写出初步的任务。

这能帮助团队成员知道接下来的工作从哪里开展,将这些任务放在任务板上。

        持续时间:在 Sprint 规划会议第一部分完毕后,召开该会议。能够将午餐作为两次会议的一个更长久的歇息。可是要在同一天完毕 Sprint 规划第一部分,在 Sprint 中,每周该会议占用时间为 60 分钟。

        估算会议——依据项目情况合并到 Sprint 第二部分会议

        会议目的

  • 要做好战略规划,你须要知道 Backlog 中各项的大小,这是版本号规划的必要输入;假设想知道团队在一个 Sprint 中可以完毕多少工作,这个数据也是必须的。
  • 团队成员可以从会议中知道项目接下来的阶段会发生哪些事情。

        基本要求

  • 仅仅有团队才干作估算。Product Owner(产品负责人)须要在场。以帮助判定某些用户故事是否能拆分为更小的故事。

        构成部分:

  • Product Owner 依据业务价值排定 Product Backlog 各项顺序。
  • 须要參加的人员:Team、Product Owner、User、Scrum Master

        注意事项:

  • 不要估算工作量大小——仅仅有团队能这么做。
  • Product Owner 不參与估算。

        会议过程

  • Prodcut Owner 展示她希望得到估算的 Product Backlog 条目。

  • 团队使用规划扑克来估算 Backlog 条目。
  • 假设某个 Backlog 条目过大,须要放到下一个或是兴许的 Sprint 中,团队就会将该大 Backlog 条目划分为较小的几个 Backlog 条目,并对新的 Backlog 条目使用规划扑克进行估算。
  • 又一次估算 Backlog 中当前没有完毕、可是可能会在接下来三个 Sprint 中要完毕的条目。

        持续时间:该会议时间限制为不超过90分钟。

假设 Sprint 持续时间长于一周,那么每一个 Sprint 举行两次估算会议比較合适。

        会议输出

  • 经过估算的 Product Backlog。
  • 更小的 Backlog 条目。

        扑克牌估算(Planning Poker)

        详细步骤:

  • 每一个人各自估算后独立出暗牌。听口令一起开牌。

  • 数值最大者与最小者PK。其它人旁听也可參考。
  • 讨论结束后又一次出牌和开牌。
  • 反复上述过程,直到结果比較接近。

        常见问题

        1、为什么任务要分给组而不是个人?

        答:由于怕出错了牌又说不出所以然,这样即使日后他不做这个功能,也对这个功能非常了解。

        2、为什么不让最后领任务的人自己估算?

        答:由于他非常可能由于不知道某代码可用、不知道某软件不行....而选择了错误的实现方法。

        3、为什么不让师傅估算大家採纳。他不是最厉害吗?

        答:师傅的想法经常是徒弟们理解不了的,比方为什么不留在女儿国而偏偏去西天取经之类的,共同估算就是让大家在思考中对比自己的实现方法和师傅差异的过程。

        Sprint 评审会议(Review Meeting)——依据项目须要举行

        会议目的

  • Scrum 团队在会议中向终于用户展示工作成果,团队成员希望得到反馈,并以之创建或变更 Backlog 条目。

        基本要求

  • Sprint 复审会议同意全部的參与者尝试由团队展示的新功能。

        构成部分

  • 有可能公布的产品增量。由团队展示。

        会议输出

  • 来自终于用户的反馈。
  • 障碍 Backlog 的输入。

  • 团队 Backlog 的输入。
  • 来自团队的反馈为 Product Backlog 产生输入。

        持续时间:90分钟,在 Sprint 结束时进行。

        会议过程

  • Product Owner 欢迎大家来參加 Sprint 复审会议。
  • Product Owner 提醒大家关于本次 Sprint 的目的:Sprint 目标、Scrum 团队在本次 Sprint 中选定要开发的故事。

  • 产品开发团队展示新功能。并让终于用户尝试新功能。
  • Scrum Master 推进会议进程。
  • 终于用户的反馈将会由 Product Owner 和/或 Scrum Master 记录在案。

        注意事项:

  • 不要展示不可能公布的产品增量。
  • Scrum Master 不要负责展示结果。
  • 团队不要针对 Product Owner 展示。

  • Sprint 反思会议(Retrospective Meetin)——依据项目须要举行

        会议目的

  • 该会议的相应隐喻:医疗诊断。其目的不是为了找到治愈方案,而是要发现哪些方面须要改进。

        构成部分

  • 參与人员:团队成员、Scrum Master

        基本要求

  • 从过去中学习。指导将来。
  • 改进团队的生产力。

        注意事项

  • 不要让管理层人员參与会议。
  • 不要在团队之外讨论找到的东西。

        会议输出

  • 障碍 Backlog 的输入。
  • 团队 Backlog 的输入。

        持续时间:90分钟,在 Sprint 评审会议结束后几分钟開始。

        会议过程

  • 准备一个写着“过去哪些做的不错?”的挂图。
  • 准备一个写着“哪些应该改进?”的挂图。

  • 绘制一条带有開始和结束日期的时间线。
  • 给每一个团队成员发放一叠即时贴。
  • 開始回想。
  • 做一个安全练习。

  • 收集事实:发放即时贴,用之构成一条时间线。

    每一个团队成员(包含 Scrum Master)在每张即时贴上写上一个重要的事件。

  • “过去哪些做的不错?”:採取收集事实相同的过程,只是这次要把即时贴放在准备好的挂图上。

  • 做一个分隔,以区分“过去哪些做的不错”和接下来要产出的东西。
  • “哪些应该改进?”:像“过去哪些做的不错”那样进行。

  • 如今将即时贴分组:
  • 我们能做什么》团队 Backlog 的输入。

  • 哪些不在我们掌控之内?》障碍 Backlog 的输入。
  • 依据团队成员的意见对两个列表排序。

  • 将这两个列表作为下个 Sprint 的 Sprint 规划会议第一部分和 Sprint 规划会议第二部分的输入,并决定到时候要怎样处理这些发现的信息。
       技术分享技术分享

   8、最后说一下 Scrum的核心价值观

      

在 Agile Software Development with Scrum 一书中指出,Scrum 的核心价值观是:承诺、专注、公开、敬重和勇气。它提倡自我管理、涌现机制、可视性和评估/适应循环的根本原则。这些价值观对个人管理依旧很有效。  
1)  承诺(Commitment):我们是否常常暗下决心,要做好某件些。比方要戒掉游戏、学习英语,一定要完毕这个任务,可是最后结果却大打折扣。假设你有这样的现象,那么你须要做的就是自己对自己承诺。自己相信自己,假设自己都不能相信自己,那么谁又能相信你呢? 
2)  专注(Focus) :要事第一,对一件事情投入100%去做好。
3)  公开(Openness): 有人说。能力就像怀孕一样,时间久了才干看出来,你个人的学习、个人的Open都须要公开的表达才干让别人知道。比方刚组建的团队,个人要公开地表达自己的能力和特长,在团队交流或讨论问题时才干找正确的人解决这个问题。
4)  敬重(Respect):三人行必有我师。空杯心态,尊重每个人,向不同的学习。
5)  勇气(Courage):为了接受并负责任的交付产品,团队成员必须有足够的勇气来对大家说“不”,比方不能承诺时,对纳入sprint的故事说“不”等,做这些决定事实上是须要非常大的勇气的,由于前面并不一定是平坦之路,但对自己要绝对自信。

 

        
      

     










柯南君: 教你看敏捷开发のScrum是怎样工作的?