Scrum一个轻量级的软件开发方法

Scrum一个轻量级的软件开发方法

Scrum是一个敏捷开发框架,是一个增量迭代的开发过程.。在这个框架整个开发周期由若干个小的迭代周期,每个小的的迭代周期称为一个Sprint,每个Sprint的长度2到4周。在每个Sprint中,Scrum的开发团队拿到一个排列好优先级的需求列表,我们称它为用户故事或者叫Sprint backlog, 所以我们先开发的是对客户具有较高价值的需求。  在每个迭代结束后,都会开发完成可交付的产品。
一个简单的框架

Scrum由三个角色,三种活动,3种交付物组成:

三个角色:

Product Owner

Scrum Master

Scrum Team

三种活动:

the sprint planning meeting

daily scrum meetings

sprint review meetings

3种产物:

the product backlog

the sprint backlog

a burndown chart
一个经历过时间考验的开发过程

Scrum最早由Jeff Sutherland在1993年提出,Ken Schwaber 在1995年OOPSLA会议上形式化了Scrum开发过程,并向业界公布。

之后,Scrum成为领先的敏捷开发方法之一,目前世界上有超过500家公司在使用Scrum。



Scrum的特点:

    * Scrum是一个敏捷的流程,可用于管控研发工作。
    * Scrum是现有设计流程的总结。
    * Scrum以团队为基础,是一种在需求求迅速变化情况下迭代地、增量地开发系统和产品的方法。
    * Scrum是一个控制由利益和需求冲突导致的混乱的流程。
    * Scrum是改善交流并最优化合作的方式。
    * Scrum是一种检测产品开发和生产过程中障碍并将其去除的方式。
    * Scrum是最大化生产率的一种方法。
    * Scrum适用于单一的项目到整个组织。Scrum可以控制并组织多件具有相关性的产品开发以及拥有超过千名开发者和执行者的项目实施过程。
    * Scrum能让每个参与者都对自己所做的工作以及自己做出的贡献感到骄傲,并让他们发挥到最佳水平。





      二 Scrum较传统开发模型的优点

      Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。下面的图片使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低。


      下图是Scrum模型和传统模型的对比:
            
      


Scrum有3个角色: Product Owner, ScrumMaster, and Scrum Team.

Product Owner的职责:

    * 确定产品的功能。
    * 决定发布的日期和发布内容。
    * 为产品的profitability of the product (ROI)负责。
    * 根据市场价值确定功能优先级。
    * 在30天内调整功能和调整功能优先级。
    * 接受或拒绝接受开发团队的工作成果。

Product Owner参与Scrum planning。

ScrumMaster 作为team leader和Product owner紧密地工作在一起,他可以及时地为团队成员提供帮助。他必须:

    * 保证团队资源完全可被利用并且全部是高产出的。
    * 保证各个角色及职责的良好协作。
    * 解决团队开发中的障碍。
    * 做为团队和外部的接口,屏蔽外界对团队成员的干扰。
    * 保证开发过程按计划进行,组织 Daily Scrum, Sprint Review and Sprint Planning meetings。

ScrumMaster 除了主持Daily Scrum meeting之外,还有三个主要职责:

   1.
      Scrummaster需要知道什么任务已经完成,哪些任务已经开始,哪些新的任务已发现,和哪些估计可能已经发生变化。Scrummaster需要根据以上的情况更新反映每天完成的工作量以及还有多少没有完成的Burndown Chart。
      scrummaster还必须仔细考虑进展中的开放任务数,进展中的工作需要得到最小化,以实现精益生产率的收益。
   2.
      该scrummaster需要找出阻碍 Scrum的障碍和依赖。他们需要的优先次序和跟踪。根据优先级指定计划解决这些障碍。其中有些问题可以在团队内部解决,有些则要团队之间的协调,还有的要管理层的介入来解决,甚至有些是公司的问题阻碍了团队达到他们的生产力。比如:一个电信公司最近实施了Scrum,但后来发现只有两个问题和scrum team有关,其他的全是公司的问题需要管理层关注。
   3.
      最后但并非最不重要, scrummaster可能会注意到,个人问题或冲突在Scrum里是需要解决的。这些都需要被澄清,或通过内部的沟通解决,或向管理层和HR寻求帮助解决。Scrum Master 必须注意去确保团队资源完全可被利用并且全部是高产出的。

Scrum Team:

    * 具有不同特长的团队成员,人数控制在7个左右
    * 确定Sprint目标和具体说明的工作成果。
    * 在项目向导范围内有权利做任何事情已确保达到Sprint的目标。
    * 高度的自我管理能力。
    * 向Product Owner演示产品功能。

Scrum有三个仪式:Sprint规划会,Sprint评审会,Scrum每日站会
Sprint Planning Meeting(Sprint规划会)

根据Product Owner制定的产品或项目计划在Sprint的开始时做准备工作。Product Owner可以是客户或者客户代表或代理。对于产品型的公司,客户就是市场,Product Owner扮演市场代理的角色。一个Product Owner需要一个确定产品最终目标的远景,规划出今后一段时间产品发展的路线图,以及根据对投资回报的贡献确定的产品特性。他要准备一个根据商业价值排好序的客户需求列表。这个列表就是Prodct Backlog,一个最终会交付给客户的产品特性列表,它们根据商业价值来排列优先级。

当为一个Sprint定义好足够多的Product Backlog,并且排列好优先级后Scrum就可以开始了,Sprint规划会是用来细化当前跌打得开发计划的。规划会开始的时候,Product Owner会和Scrum team一起评审版本,路线图,发布计划,及Product Backlog。Scrum Team会评审Product Backlog中功能点的时间估计并确认这些估计尽可能的准确。Scrum Team会根据资源情况看有多少feature可以放在当前的Sprint中。Scrum Team按照优先级的高低来确定开发的先后是很重要的。

当Sprint backlog确定后,ScrumMaster带领Scrum Team去分解这些功能点,细化成Sprint的一个个任务. 这些任务就是细化的来实施这些功能点的活动. Sprint Planning的这个阶段需要控制在4个小时。
Daily Scrum Meeting(每日站会)

一旦计划阶段结束,30天周期的Sprint就开始了。ScrumMaster需要组织团队成员每天开站会. 这个会议是用15分钟的时间来让大家过一下scrum的状态。在会上,每个团队成员需要问3个问题:我昨天做了什么,今天做什么,遇到哪些障碍。谁都可以参加这个会议,但只有Scrum团队成员有发言权。这个会议的目标是得到一个项目的全局观,用于发现任何新的依赖,定位项目成员的要求,实时的调整当天开发计划.
Sprint Review Meeting(Sprint评审会)

在Sprint结束的时候召开Sprint评审会. 这个会议最多不超过4个小时.会议的前一半时间用来演示在这个Sprint中开发的产品功能给Product Owner. Produc Owner会组织这阶段的会议并且邀请相关的利益相关者参加。 业务,市场,技术都要做相关的评审。有Product Owner来决定Product Backlog中的哪些功能已经开发完成 ,还要和Scrum Team及相关的利益相关者讨论下个Sprint中Product Backlog的优先级。下个Sprint的目标在这个时候被确定下来。

会议的下半部分,是由Scrum Master和Scrum Team一起回顾当前的Sprint。团队评估大家在一起的工作方式,找出好的方式以后继续发扬,找出需要做的更好的地方,想办法提升。

Sprint评审会结束后,新一轮的迭代又继续开始,迭代会一直继续,直到开发了足够多的功能去交付一个产品。

你可能感兴趣的:(工作,框架,敏捷开发,项目管理,活动)