摘要:   瀑布模型是软件工程中最初的经典模型。这种方法对于那些在初期需求就很完整清晰,并且在开发过程中不会有太多变化的项目非常适用。但是,大多数情况下在 软件开发过程中需求会不断变化,而瀑布式开发很难适应这种变化。针对瀑布模型的这一不足,随后涌现了许多开发模式,比如螺旋模型和统一过程开发(RUP) 模型。尽管与瀑布模型相比,这两种模型有了很大改进,但它们应用起来依然显得比较沉重,无法适应快速的需求变化。这正是以Scrum为代表的敏捷开发方法 所力图解决的核心问题之一。

瀑布模型是软件工程中最初的经典模型。这种方法对于那些在初期需求就很完整清晰,并且在开发过程中不会有太多变化的项目非常适用。但是,大多数情况 下在软件开发过程中需求会不断变化,而瀑布式开发很难适应这种变化。针对瀑布模型的这一不足,随后涌现了许多开发模式,比如螺旋模型和统一过程开发 (RUP)模型。尽管与瀑布模型相比,这两种模型有了很大改进,但它们应用起来依然显得比较沉重,无法适应快速的需求变化。这正是以Scrum为代表的敏捷开发方法所力图解决的核心问题之一。

  快速迭代以响应需求的变化

  Scrum采用时间更短的迭代周期,这种迭代周期称为Sprint。一个Sprint通常为2~4周。每个Sprint只开发价值最高 的产品需求部分,并且每个Sprint周期可能包含全部的开发阶段,如需求分析、设计、编写代码、测试、整合以及产品部署。每个短暂的Sprint周期过 后,都能产生一个可以被审查、展示且可被用户使用的软件。用户使用后的反馈和当前的需求变化整理后可以在以后的Sprint周期中得以实现。这样就产生了 一个快速的反馈循环,它可以动态管理实现用户频繁的需求变化。Scrum提倡让客户全程参与到开发过程中。客户的高度参与能有效提高Scrum项目的成功 率。客户的代表需要平衡项目利益相关者之间的利益,从而能够管理产品需求、调整需求的优先级、 完善需求描述,让开发团队有一个清晰的方向,以获得最大的投资回报率。与此同时,Scrum这一模式也涉及诸如团队、流程、沟通等其他方面的元素,这些元 素共同发展规范了整个Scrum框架结构。

  精益(Lean)软件开发模式来源于汽车制造业。它的主要思想是分析所有的流程,以查明和消除浪费,不断提高效率。为了达到这个目 的,精益模式提出了一些概念和实用的工具。但大部分的工具都面向制造业而不能直接应用于软件开发,精益软件开发主要借鉴思想。在精益软件开发中经常会提及 两个概念。一个是拉式系统(pull system)。在拉式系统中,一个流水线上任何一个环节的任务完成后,都会从前一个环节自动提取下一个任务。该模式以客户的需求而不是市场预测来推动工 作进程。另一方面,通过精益模式可以最小化未完成工作以及半成品的数量。它们通常被认为是开发过程中的浪费。除了拉式系统,价值流图(value stream mapping)也经常被应用于软件开发过程中。价值流图能够有效地帮助识别过程中的浪费。

  像其他敏捷方法一样,Scrum同样专注于管理需求变化和团队潜能的发挥,同时它提出了一套比较完整的短开发周期的操作规程。而精 益则更多地提供一种思维模式,帮助形成具有精益思维和习惯的开发团队。将Scrum的框架与精益的思想结合起来,可以使它们互相补充形成我们前面提到的一 个相对完整并能不断完善的敏捷开发体系。我们在一些项目中尝试实现了这种结合。在我们的敏捷协作平台GScrum上,一种称为WIP的特殊周期把 Scrum的框架和精益开发中的拉式系统很好地结合了起来,可以适应更快的需求变化。

  Scrum的三种角色和四个会议

  Scrum框架主要包括三种角色和四个会议。其中三种角色有:

  ●  产品拥有者: 该角色负责产品的远景规划,平衡各方面的利益,确定不同的产品需求积压的优先级等。它是开发团队和客户或最终用户之间的联络点。

  ●  Scrum专家: Scrum专家负责指导开发团队进行Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。

  ●  团队成员: 即项目开发人员。

  四个会议包括:

  ●  周期计划会: 在产品拥有者和团队之间对下个周期要完成的需求达成一致,并对其进行规划.

  ●  每天例会: 每天15分钟,团队成员之间互相交流进展、问题和下一步计划。

  ●  周期展示会: 向产品拥有者和相关人员展示新完成的需求并收集反馈意见。

  ●  周期回顾会: 总结上个周期的经验和教训。

  把精益思想融入Scrum

  Scrum、精益开发模式以及其他的敏捷方法与传统的软件工程或项目管理理论与实践相比有一个共同的优点: 简单。不过,在实际运用过程却也并不容易。

  首先,变化对许多人来说是难以接受的。初次使用敏捷开发的团队都有一个从接受到真正应用的过程。一些敏捷开发实践如测试驱动开发、结对 编程以及每天的Scrum会议都需要一段时间让开发团队逐渐适应。因此,公司领导的强力支持和对团队的培训,是让敏捷模式给一个公司真正带来回报的重要因 素。

  其次,在Scrum实践中,Scrum专家(Scrum Master)是一个核心的角色。该角色从字面上很容易被理解为一个在Scrum开发团队中拥有极高权力,同时管理所有成员的人。实际上,这个角色并未被赋予行政职权,但他必须拥有很强的软力量及社交技巧。根据我们的实践经验,Scrum专家需要理解团队中的每个成员,将所有人团结起来。同时,Scrum专家还必须在团队效率与开发人员的感受之间取得平衡。

  对于采用Scrum方法的团队,还可能遭遇许多技术性的问题。敏捷开发团 队的一大挑战是如何能够不断改进开发过程。刚开始,敏捷开发对于整个开发团队来说可能还是比较新鲜的。但是开发团队很快就会对敏捷方式,特别是每天的 Scrum会议感到乏味。一旦感到乏味并开始松懈,开发团队要么会放弃敏捷模式回到原有的开发模式上,要么会停留在对敏捷开发的肤浅应用层次上。这样一 来,团队的积极性和创造性会受到打击,停滞不前。此时,结合精益开发方法能有效解决这个问题。

  精益模式提倡持续不断地改进、减少流程中的浪费。这个概念应该被注入到整个团队中,让团队形成精益的思维和长期的习惯,这样一来,不断的改进和提高会让团队保持高昂的士气和热情。运用精益开发模式相对比较抽象,而最佳的应用精益软件开发的途径是从简单入手,理解其思想,然后针对团队情况摸索创新,应用一些精益的有效工具,让整个团队习惯精益的思维模式和行为。当然,请有相关经验的专家或顾问指导、交流会事半功倍。

敏捷开发-Scrum与精益相得益彰相关推荐

  1. 敏捷开发scrum学习笔记(更新中)

    敏捷开发宣言.原则和方法(20/05/12更新) 开发宣言 个体和交互胜于过程和工具 可以工作的软件过程胜过面面俱到的文档 用户合作胜过合同谈判 响应变化胜过遵循变化 在每组对比中,后者并非全无价值, ...

  2. 浅谈敏捷开发scrum工具leangoo(三)

    之前两篇有说到敏捷开发及Scrum的一些概念及实施,现在再来记录下我们在敏捷开发实施中使用的一些工具,主要说下leangoo 工具不是敏捷开发及Scrum的必须品,但有了工具,可以让敏捷开发更好的实施 ...

  3. 敏捷开发Scrum及其适用场景

    敏捷和线性的本质区别 如上文所说,个人认为冲探索轻预测是敏捷和线性开发方式的本质区别.如下所示: 敏捷开发:关照不确定性→探索式,注重应变→价值中心 线性开发:关照确定性→遵守规程,注重良好设计→过程 ...

  4. 什么是敏捷开发Scrum

    瀑布式开发的流程如下图所示: 这种开发流程存在着一个问题,就是在开发的过程中,如果市场的需求出现了变动亦或者在计划阶段没有很好的理解需求,就意味着产品可能会需要从头开始进行开发,亦或者为了增加新的功能 ...

  5. 敏捷开发-Scrum过程模型

    Scrum过程模型 Scrum过程: Scrum的三个主要元素:角色(role).活动(activity).产出物(artifact) 三个角色: 1. Product Owner(PO) 定义产品需 ...

  6. 敏捷开发Scrum学习

    官方:http://baike.baidu.com/link?url=VGFzdJpuHX3g90kIX6l1QABWMmBNyf30sTGuEcJ6OJVMq0Cot1G9Imbu1gls-xpI6 ...

  7. 【系统分析与设计】软件开发模式之敏捷开发(Scrum)分析

    文章目录 1 敏捷开发 2 传统的开发模式和敏捷开发模式的对比 2.1 瀑布模型: 2.2 敏捷模型: 3 敏捷开发scrum的实施 4 敏捷工作件 5 敏捷管理实践 1 敏捷开发 敏捷开发以用户的需 ...

  8. 敏捷开发系列学习总结(9)——10大流行编程方法

    过去,几乎所有的软件开发项目都采用瀑布模型.这种编程方法酷似工厂装配线,要求开发人员完成一个开发阶段,之后才能进入到下一个阶段.这种方法高度结构化,但是项目需求有变化时,它就不适用了. 近些年来,开发 ...

  9. 单团队敏捷开发项目管理示例

    概述 单团队敏捷开发主要是针对10人以下.只有一个Scrum团队的小型产品或项目的敏捷开发. 对于小型团队来说,在Leangoo中创建一个单团队敏捷开发项目就可以很好地支持团队产品或项目的开发. 适用 ...

最新文章

  1. C#基础全接触分类:asp.net技术
  2. postman中设置关联点
  3. Ceph BlueStore 和双写问题
  4. ubuntu安装perl模块
  5. 把3000行代码重构成15行的牛逼操作!!!
  6. ai里怎么做阴影效果_使用ai制作出文字阴影效果的详细方法
  7. html5和Css3 的参考手册(中文chm版)
  8. nnet3-compute计算chain前向传播概率矩阵(声学模型输出)
  9. 排列组合、伯努利试验
  10. [jzoj 4226] 【五校联考3day2】A {简单题}
  11. 绕开JS验证的方法汇总
  12. 达梦数据库key文件更换
  13. 固定表头和第一列、内容可滚动的table表格
  14. python中forward(200)什么意思_Python中的Phyllotaxis模式| 算法植物学的一个单位
  15. 10部令人泣不成声的经典电影
  16. 微信订阅号发送模板消息
  17. PHP_40+开发工具推荐
  18. Build A City——Floorplan
  19. 期末ppt:week1 , 2
  20. python设计石头剪刀布游戏_用python制作剪刀石头布游戏

热门文章

  1. python入门到实践-Python编程从入门到实践(基础入门)
  2. python入门教程 官方-Python 入门指南
  3. python输出数据到excel-python实现数据导出到excel的示例--普通格式
  4. python软件是免费的吗-7年程序员贡献出来的10大Python开源免费工具!
  5. 解决opencv错误AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
  6. python人脸识别、人脸关键点检测、性别检测
  7. redux-thunk的简单使用
  8. LeetCode Find All Duplicates in an Array
  9. 2018年安卓绿色联盟数据报告
  10. 基于Windows下使用Docker 部署Redis