`
bjxagu
  • 浏览: 165285 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

敏捷软件开发模型--SCRUM

阅读更多

一 什么是Scrum?

Scrum (英式橄榄球争球队), 软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。

Scrum的基本假设是:

开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。

Scrum 开发流程通常以 30 天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于 30 天后交付成果,团队每天用 15 分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。

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

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


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

三 Scrum模型

一)  有关Scrum的几个名词

backlog: 可以预知的所有任务, 包括功能性的和非功能性的所有任务。

sprint:一次跌代开发的时间周期,一般最多以30天为一个周期.在这段时间内,开发团队需要完成一个制定的backlog,并且最终成果是一个增量的,可以交付的产品。

sprint backlog:一个sprint周期内所需要完成的任务。

scrumMaster: 负责监督整个Scrum进程,修订计划的一个团队成员。

time-box: 一个用于开会时间段。比如每个daily scrum meeting的time-box为15分钟。

sprint planning meeting: 在启动每个sprint前召开。一般为一天时间(8小时)。该会议需要制定的任务是:产品Owner和团队成员将backlog分解成小的功能模块,  决定在即将进行的sprint里需要完成多少小功能模块,确定好这个Product Backlog的任务优先级。另外,该会议还需详细地讨论如何能够按照需求完成这些小功能模块。制定的这些模块的工作量以小时计算。

Daily Scrum meeting:开发团队成员召开,一般为15分钟。每个开发成员需要向ScrumMaster汇报三个项目:今天完成了什么? 是否遇到了障碍? 即将要做什么?通过该会议,团队成员可以相互了解项目进度。

Sprint review meeting:在每个Sprint结束后,这个Team将这个Sprint的工作成果演示给Product Owner和其他相关的人员。一般该会议为4小时。

Sprint retrospective meeting:对刚结束的Sprint进行总结。会议的参与人员为团队开发的内部人员。一般该会议为3小时。



二)实施Scrum的过程简单介绍

1) 将整个产品的backlog分解成Sprint Backlog,这个Sprint Backlog是按照目前的人力物力条件可以完成的。
2) 召开sprint planning meeting,划分,确定这个Sprint内需要完成的任务,标注任务的优先级并分配给每个成员。注意这里的任务是以小时计算的,并不是按人天计算。
3) 进入sprint开发周期,在这个周期内,每天需要召开Daily Scrum meeting。
4) 整个sprint周期结束,召开Sprint review meeting,将成果演示给Product Owner.
5) 团队成员最后召开Sprint retrospective meeting,总结问题和经验。
6) 这样周而复始,按照同样的步骤进行下一次Sprint.

整个过程如下图所示:




The diagrams in this article are all from web site: http://www.controlchaos.com.  Thanks very much!

参考:
http://www.controlchaos.com/about/
http://www.microsoft.com/Taiwan/msdn/columns/200311softdev.htm

<script type="text/javascript"></script>

分享到:
评论

相关推荐

    敏捷软件开发模型--Scrum

    敏捷软件开发模型--Scrum知识点详解: 一、敏捷开发与Scrum 敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。敏捷宣言中提出的四大价值观是敏捷开发的核心,即个体和互动高于流程和工具,可用的软件高于...

    敏捷软件开发模型-Scrum

    敏捷软件开发模型Scrum是一种以迭代和增量方式开发软件的框架,强调灵活性、协作和快速响应变化。这一模型源于1986年竹内弘高和野中郁次郎提出的一种整体性方法,并在1995年由斯科特·萨瑟兰和杰夫·施瓦伯在OOPSLA ...

    Scrum敏捷软件开发

    《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近...

    敏捷软件开发模型SCRUM介绍.doc

    "敏捷软件开发模型SCRUM介绍" SCRUM是敏捷开发中的一种典型模型,越来越广泛地应用于日常软件开发实践中。SCRUM模型的基本假设是:开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发...

    敏捷软件开发模型—Scrum.pdf

    ### 敏捷软件开发模型——Scrum概览 #### Scrum 的起源与发展 Scrum作为敏捷软件开发模型的一种,其历史可追溯至1986年。这一年,竹内弘高和野中郁次郎提出了一种全新的整体方法,并将其与橄榄球运动中的“Scrum”...

    火星人敏捷开发手册 2012-12-31(修正了页眉)

    敏捷开发是一种强调快速响应变化、注重团队协作、持续交付高质量产品的软件开发方法论。它提倡通过短周期迭代的方式,使产品能够更快地适应市场需求的变化,并且鼓励团队成员之间的紧密合作以及与客户的频繁交流。 ...

    火星人敏捷开发手册 2012-12-25

    与传统的瀑布式开发模型不同,Scrum采用迭代和增量的方式推进项目,每个迭代周期(Sprint)通常持续2至4周,专注于交付一小部分可工作的软件功能。 #### Scrum中的角色与工作产品 在Scrum框架下,有三个关键角色:...

    Scrum敏捷软件开发过程

    Scrum敏捷软件开发过程 敏捷软件开发是软件项目的一个概念框架. 有许多建立在敏捷概念上的方法,如 Scrum 和 Extreme Programming (XP). 与僵化的、重量级的、官僚式的方法形成对照,比如瀑布模型(指纯粹形式的) ...

    敏捷开发 SCRUM PPT

    Scrum是一种基于敏捷开发原则的项目管理框架,特别适用于复杂且需求不明确的软件开发项目。Scrum的核心要素包括: #### 角色 - **产品负责人(Product Owner)**:负责定义产品需求和优先级,维护产品待办事项列表...

    Scrum敏捷开发方法

    Scrum敏捷开发方法是一种以人为核心、迭代和增量式的软件开发框架,旨在提高团队的灵活性...Scrum和XP等敏捷方法的引入,是对传统瀑布模型僵化开发流程的一种革新,更好地适应了现代软件开发中不断变化的需求和复杂性。

    Scrum敏捷式开发团队培训

    瀑布模型的主要缺陷: 程序的维护成本会越来越高(需要很多人) 团队氛围压抑(感受不到激情) 不方便做需求变更(引起客户不满) ...敏捷式开发是一种从90年代开始逐渐引起广泛关注的些新型软件开发方法。

    scrum敏捷软件开发方法介绍

    ### Scrum敏捷软件开发方法介绍 #### 敏捷宣言及原则 敏捷开发是一种以人为本、适应变化的软件开发方法论。其核心价值观体现在敏捷宣言中,包括以下四个方面: 1. **个体和交互胜过过程和工具**:强调人的作用...

    敏捷软件开发模型

    ### 敏捷软件开发模型详解 #### 一、敏捷软件开发概述 敏捷软件开发是一种以人为本、灵活高效的方法论,强调快速响应变化、持续交付高质量软件。这种方法论的核心价值观体现在四个对比之中: 1. **个体与交互** ...

    敏捷软件开发之Scrum实践

    ### 敏捷软件开发之Scrum实践 #### 一、引言 随着市场和技术的快速发展,传统的瀑布式软件开发模式已经难以满足当前项目管理和产品迭代的需求。为了应对日益增加的变化和不确定性,一种更加灵活和高效的开发模式...

    Scrum 敏捷开发ppt 实用篇

    敏捷开发(Agile Development)是一种以人为本、迭代式的开发方法论,旨在通过一系列灵活的管理策略和技术实践,提高软件开发团队的效率和响应市场变化的能力。相较于传统瀑布模型,敏捷开发更加强调团队成员之间的...

Global site tag (gtag.js) - Google Analytics