Scrum敏捷开发过程
首先来说一下什么是敏捷开发:
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;
解释一下以人为核心:
我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。
那什么又是迭代呢?
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
什么是Scrum?
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。
而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
下面说一下开发流程中的三大角色:
产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
为什么要用到这种开发模式呢?必要的来说一下他的重要性:
Scrum英文翻译过来是橄榄球里的“争球”的意思,Scrum是一个框架,基于这一框架模型,人们可以采用适合自己的方法解决复杂问题,同时帮助帮助开发团队实现价值最大化,比如提高成产能力,加大团队的创造力等等。随着Scrum的深化发展,它不只是用来管理项目开发,还被用于运维团队的维护,以及企业的计划管理。
Scrum的代名词是“简单”、“轻量级”、“对复杂工作的把控”。在Scrum框架中,开发人员可以设计复杂项目的管理流程,包括产品规划管理、软件开发预期结果等。并且,我们还可以对和所有过程相关的要素进行持续改进,包括产品、团队和工作环境等。Scrum框架主要包括四个部分,即角色、事件、工件和规则,每一个组件都为Scrum最终目标服务。从最初为管理者和产品负责人而设计,到后来被用于全球范围内的市场、技术和产品研发。今天,Scrum框架已经被应用于更广泛的领域,包括各类软件产品开发、产品发布以及云产品(包括公有云、私有云、混合云)的构建等。
从具体的应用场景看,Scrum被用于软件、硬件开发,无人车的自动驾驶,学校、政府里面的市场营销、运营,以及个人在社会生活中的日常行为规划等。
那么问题来了,如何把这个敏捷开发方法用于实践当中呢?
尽管,IT技术正在快速迭代,市场上也出现了各种各样的新理念,但是Scrum一直是众多企业最理想选择。Scrum属于渐进式、迭代式,开发人员可逐步优化预期目标,并且能控制风险。借助过往经验,对过程进行控制,是Scrum一直被高度认可的最根本原因。
至于,何时用Scrum?不同的公司会有不同的选择。大体来看,开发团队最佳规模是小到足以保持敏捷性,大到足以完成重要工作,这样的团队基本是6-10人的团队。并且,整个团队已经有了一定的经验沉淀。另外,团队成员中要有一个Scrum master,作为整个团队的组织者和管理者,他是Team Leader和Product owner的粘合剂,可以及时地为团队成员提供帮助。
如何对整个过程进行控制?Scrum 采用迭代、增量的方法来优化可预见性并控制风险。
具体而言,主要通过三大支柱支撑起每个过程控制的实现:
1、透明性:透明度是指,在软件开发过程的各个环节保持高度的可见性,所有参与人员都保持共同的过程认知。也就是说,当某个人在检验一个过程,并确信某一个任务已经完成时,这个完成必须让所有人对已完成过程同步知晓。
2、检验:整个团队必须不断检查Scrum工件,并朝着sprint冲刺目标前进,用以识别重大偏差。这一过程应于熟悉整个流程的人来执行。
3、适应:如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品是不合格的,那么便需要对过程或是材料进行调整。调整工作必须尽快实施,以减少进一步的偏差。
上述所有检查和调整可通过Sprint计划、每日例会、Sprint冲刺评审、Sprint冲刺回顾来实现。
Scrum的核心价值观是:承诺、勇气、集中注意力、开放和尊重。整个团队由产品负责人、开发团队和管理员组成。团队成员可以是自行组织,也可以跨职能、跨部门。这种团队组成形式为项目开发提供了更大的灵活性和便利性。自行组织的团队可以避免不了解项目的人来领导,而跨职能、跨部门的组织架构,每个人都是团队中最重要成员,更能体现以项目为核心的理念,大大提高了生产力和创造性。
总之,Scrum 敏捷就是一种不停尝试、不停调整、不停优化的状态。它能把复杂的项目拆分成易于实践的任务,从而持续高效地帮助项目落地。当然,任何 一个撇开实践谈敏捷的理论都是“耍流氓”,要想让Scrum发挥最大价值,还要结合软件开发的实际情况,具体问题具体分析。先从一点入手,然后过度到最佳状态。
引用:
http://blog.itpub.net/31547898/viewspace-2213471/
https://www.cnblogs.com/qixuejia/p/5863216.html
Scrum敏捷开发过程的更多相关文章
- 了解Scrum敏捷开发过程的优点
Scrum 1. 我们的团队 1.1 团队名称 开发小分队&7号 1.2 团队成员 徐棒 彭康明 刘鹏芝 罗樟 王小莉 胡广健 沈兴艳 1.3 我在团队中位置 需求实现团队(负责将需求模块实现 ...
- Scrum敏捷精要
本文抽取Scrum中的一些重要思想和概念,对Scrum敏捷执行的主题流程进行精要的介绍. 一.基本思想 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 ...
- 产品经理-需求分析-用户故事-敏捷开发 详解 一张图帮你了解Scrum敏捷流程
产品经理-需求分析-用户故事-敏捷开发 详解 用户故事是从用户的角度来描述用户渴望得到的功能.一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能.2. 活动:需要完成什么样的功能.3. 商业价 ...
- 浅谈Scrum敏捷开发:4个输入/输出、3个关键物、3个会议
文章对Scrum敏捷开发流程进行系统的分析,希望借此文能够加深你对敏捷开发的认知,更好的展开产品工作. Scrum敏捷开发,是一种敏捷开发框架,是一个增量的.迭代的开发过程,具备可视.可集成和可运行使 ...
- Scrum敏捷项目管理精要
1. 简介: 敏捷项目管理在我们国家起步比较晚,成功运用的项目不多 百分之六十五的敏捷项目用户为scrum 2.互联网时代的特征,雷军的话: 专注,极致,口碑,快(敏捷项目开发就是要快速) 3.敏捷开 ...
- XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化
XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化 我们现在用的就是典型的XP+devOps模式,已经放弃scrum了 现在还很多公司弄docker虚拟化docker非常复杂,当然 ...
- Scrum敏捷开发简介
Agile 敏捷开发实践中,强调团队的自我管理.在 Scrum 中,自我团队管理体现在每天的 Scrum 会议中和日常的协同工作,在每天的 Scrum 例会中,团队成员一般回答一下几个问题 : 昨天完 ...
- scrum敏捷开发
团队PM:袁佩佩 scrum敏捷开发计划制定: 确定项目实施具体阶段目标 确定项目相关任务分解 确定每日站立会议进行计划 确定项目计划总结日程 确定风险解决方案
- 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 采用Sc ...
随机推荐
- 2.【SELinux学习笔记】概念
1.强制类型的安全上下文 在SELinux中,訪问控制属性叫做安全上上下文.不管主体还是客体都有与之关联的安全上下文.通常安全上下文是由三部分组成:用户:角色:类型. 如: $id -Z j ...
- java封装AES加密算法
在实际coding中会常常遇到往数据库存入密码时加密.URL传參时的加密.由此简单封装了下java中的AES加密算法. 0.import类 import java.security.SecureRan ...
- C语言数组和函数实例练习(二)
1.C语言中不允许函数的嵌套定义,但可以使用函数的嵌套调用. 例1:输入4个整数,找出其中最大的数. #include <stdio.h> #include <stdlib.h> ...
- Redis各种数据类型的使用场景
Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据 ...
- oc1
// zs.h #ifndef __day11__zs__ #define __day11__zs__ #include <stdio.h> int sum(int v1, int v2) ...
- day63-webservice 09.jquery调用ajax
WebService可以有很多种调用方式,除了之前说的,还可以有jquery.拿原生的Ajax做调用,拿jquery怎么调用啊?原生的能调,jquery指定也能调.原生的Ajax是通过网页直接点HTM ...
- Kaggle爆文:一个框架解决几乎所有机器学习问题
上周一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Proble ...
- BZOJ 1061费用流
思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西 我们发现 等式左边的加起来=0 可以把每个方程看成一个点 正->负 连边 跑费用流即可 //By SiriusRen ...
- python ansible api
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : test2.py # @Author: Anthony.waa # @Date : 20 ...
- 学习环境搭建1——安装python
操作系统:windows7 64bit 下载地址python :https://www.python.org/ 下载Windows x86-64 executable installer 安 ...