最近和两个朋友一起组织了SEMP沙龙的一次活动,讨论Agile和CMMI一起工作的可能性。在讨论到需求变更管理时,有疑问说,敏捷是宣称拥抱变化的,可是Scrum的实施指导中,又要求在一个Sprint内的需求是不变的,这不是矛盾的吗?在这里,想就这个问题,简单的探讨一下。

其实,我们说拥抱变化,并不等于说毫无章法的变化,如果朝令夕改,也是无法确保项目成功的。在这一点上,无论是采用什么样的方法,都是一样的。

传统的瀑布式,由于其开发方式是序列式的,每一步都是建立在上一步的基础上,因此对上一步的输出,就会要求尽可能准确,完整,而当后期发生任何的变化,无论是需求还是设计,都会对整个项目的风险和成本,造成很大的影响,所以,一般都会设置严格的审批流程,评估风险和成本,以决定是否接受变化,越是后期,对于变化的评估就越是严格,越是不容易接受变化。另外,传统的开发模式,需求大多数是通过详细的需求说明文档来管理的,无论是Use Case,还是遵循IEEE 830的标准,或者ISO标准,都是对需求有非常具体详细的记录,而且很多的需求是从系统运行的角度来描述,很多时候,很难进行优先级的排序。例如:

  1. 手机应该有一个显示屏幕
  2. 手机应该有一个输入键盘
  3. 手机应该有一块电池
  4. 手机应该有一个通讯模块

这样的需求描述,如果我们让客户来决定那个更重要,应该是不可能完成的,客户会说,“这些对我来说都最重要”

Scrum,作为敏捷的一种实践,其需求管理的方式具备以下的优势。

能够很方便的决定需求优先级

Scrum中,需求是通过用户故事(User Story)和产品清单(Product Backlog)来维护的,是一个从用户角度,希望软件应该具备的功能列表,而且,用户故事的组织是没有层次关系的,因此,用户很容易决定哪一个功能对于他们来说更重要,例如

  1. 作为手机使用者,我要能够打电话
  2. 作为手机使用者,我要能够发短信
  3. 作为手机使用者,我要能够更换电池
  4. 作为手机使用者,我要能够拍照
  5. 作为手机使用者,我要能够上网

这样的方式,用户是比较容易决定哪一个功能更加重要,也就可以快速的确定优先级。这样,用户就可以根据现实情况,灵活的调整实现的顺序。因此,当任何需求的变更出现的时候,用户只需要通过设置合适的优先级,就可以将新的变更应用于系统中。

有利于迭代式的开发

Scrum是采用迭代的方式开发,而用户故事和产品清单,和迭代开发是完美的结合。这种需求管理方式,可以帮助团队更加专注于实现最重要的功能,在技术方案上,不必急于完成所有的技术细节的设计,从而帮助他们“延迟决定”,采用演进式的设计,逐步达到最优的技术方案。这种方式,会促使团队根据当前确定的需求,通过持续的重构,获得最好的技术方案,不会因为在信息不完整的情况下,匆匆作出重大的但错误的技术决定,而导致在后期进行大规模重构带来的巨大风险和成本。因此,这样可以从技术实现方面,帮助团队更容易的接受变化。

那么,为什么在一个Sprint内,不希望需求变更呢?这是不是和拥抱变化相矛盾呢?如前所述,拥抱变化并不是允许毫无章法的变化,软件开发是一个类似于马拉松是的长跑,需要整个团队保持一个健康的节奏,这样才能顺利的跑到终点,如果节奏总是被不断的破坏,项目是很难最终成功的。而Sprint就是Scrum的节奏,如果在一个Sprint的过程中,团队不断的被新的要求干扰,就很难培养出对整个团队能力的感觉,也就会对项目的规划和估算带来很大的影响。另外,Sprint的长度往往是2~4周,也就是说,响应用户变化的周期是2~4周,任何新的重要变更,最长就是在2~4周后,就可以被响应和实现,这种频度,对于大多数的项目来说,是可以满足用户的变更要求的。所以在一个Sprint内保持需求的相对稳定是必要的,也是可以接受的,如果用户的需求变更频率更高,可以缩短Sprint的长度,以提高响应速度。

综上所述,任何无序的变化,都是需要通过一定的方式,转化为有序的变化,才能够有利于项目的成功。Scrum中,通过设置合理的需求的优先级,以及合适的Sprint的长度来将需求的变化更加有序,通过迭代的开发和演进式的设计,来帮助团队更加容易的接受和适应变化,因此,相对于传统的瀑布式的开发模式,它更贴近用户,更加灵活,变更的成本和风险更低。

转载于:https://www.cnblogs.com/RelaxTintin/archive/2010/08/29/1811876.html

Scrum如何拥抱变化相关推荐

  1. 《拥抱变化——社交网络时代的企业转型之道》一构筑社会信任

    本节书摘来异步社区<拥抱变化--社交网络时代的企业转型之道>一书中的第1章,作者: [美]Sandy Carter 译者: 侯德杰 责编: 赵轩, 更多章节内容可以访问云栖社区" ...

  2. 云栖科技评论 | 传统产业的数字化转型 破除“肌肉记忆” 拥抱变化与未知

    过去一周,分属三类不同领域的人们,受到了来自同一原因引发的职业挑战: 在德国,总理默克尔和她的政府同僚们,正在努力学习数字经济时代的知识,随着全球快速迈向数字经济时代,德国和欧洲的步伐明显落后于中美两 ...

  3. 拥抱变化——从Atlas到ASP.NET AJAX(1):下载安装总览

    序 在前面的帖子(Atlas新版本的发布对我而言无疑是一个晴天霹雳)中,我曾说到第一本书(<ASP.NET Atlas程序设计:第I卷 服务器端>初稿完成)夭折的事情.该文章发布之后,得到 ...

  4. Istio 1.5 发布——拥抱变化,爱上单体

    北京时间 2020 年 3 月 6 日凌晨,我们期待已久的 Istio 1.5 发布了,发布公告见 https://istio.io/news/releases/1.5.x/announcing-1. ...

  5. 云栖专辑 | 阿里开发者们的第11个感悟:拥抱变化,用正确的方法对待工作

    2015年12月20日,云栖社区上线.2018年12月20日,云栖社区3岁. 阿里巴巴常说"晴天修屋顶". 在我们看来,寒冬中,最值得投资的是学习,是增厚的知识储备. 所以社区特别 ...

  6. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件

    阅读本文之前,您需要安装完成Microsoft ASP.NET AJAX v1.0 Beta(详见拥抱变化--从Atlas到ASP.NET AJAX(1):下载安装总览).安装完成之后,Visual ...

  7. 如何编写出拥抱变化的代码

    摘要:编写高效优质的代码一直是程序员所追求的目标之一,那么什么样的代码才叫优质呢?其中最重要的莫过于易维护.易修改.本文作者从面向对象和SOLID两大方面,非常详细地总结了如何编写出易修改的代码,绝对 ...

  8. 《拥抱变化——社交网络时代的企业转型之道》一第1章 助力社交商务成功的AGENDA体系...

    本节书摘来异步社区<拥抱变化--社交网络时代的企业转型之道>一书中的第1章,第1.1节,作者: [美]Sandy Carter 译者: 侯德杰 责编: 赵轩, 更多章节内容可以访问云栖社区 ...

  9. 极限编程-拥抱变化阅读感想(二)

    接上文------------------------- 针对开发团队,XP同样提出了四个准则:沟通.简单.反馈.勇气     项目中出现的问题无一例外总是出自那些不愿与别人探讨重要问题的家伙身上.沟 ...

  10. 极限编程-拥抱变化阅读感想(一)

    刚结束了一段不愉快的项目经历,其中掺杂着各种抱怨和愤怒,然并卵,人微言轻,并没有阻碍项目走向灭亡. 现在静下心来,以旁观者的身份重新审视了一下这段经历,颇有心得.正巧收获了一本宝典<解析极限编程 ...

最新文章

  1. 1097 Deduplication on a Linked List
  2. 刻意练习:LeetCode实战 -- Task09. 环形链表
  3. 围观阿里云最会赚钱的人!价值2万元邀请码不限量发送
  4. 智能集群理论优化控制_无人机集群对抗研究的关键问题
  5. 白炽灯可控硅调光程序
  6. 三菱fx3uplc恢复出厂设置_三菱fx3uplc解密过程与步骤分享
  7. 计算机网络原理梳理丨清晰认识 TCP/IP 协议,图解秒懂!
  8. 依存句法分析的任务以及形式化定义
  9. Python中两个浮点数的简单运算
  10. php 数组相乘,PHP如何计算数组中所有值的乘积?(代码示例)
  11. c语言计算器模拟程序,【C语言】 模拟计算器
  12. 30.TCP/IP 详解卷1 --- 其他的 TCP/IP 应用程序
  13. 索引、视图和同义词、序列
  14. QQ输入法用户体验评价
  15. Diablo II中的各种hacks
  16. 【愚公系列】2022年02月 攻防世界-进阶题-MISC-86(picture2)
  17. matlab设计椭圆低通滤波器,基于MATLAB的椭圆数字低通滤波器设计.doc
  18. tkinter标签中添加图片
  19. 云端服务器部署前端工程
  20. ffmpeg保存rtsp视频流为mp4文件

热门文章

  1. php zend optimizer 解密,zend guard对php代码加密 zend optimizer解析
  2. 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据
  3. Python Pandas缺失值处理
  4. glibc 知:手册08:消息翻译
  5. 上帝模式代码_生产代码中的上帝模式
  6. (翻译)简化模式(Reduce)
  7. matlab的菜单编程实例,MATLAB-GUI 里面包含9个小例子,简单的讲述了各种控件和菜单menu的应用方法 ComboBox 组合框 266万源代码下载- www.pudn.com...
  8. ibmr系列服务器怎么装架子,【R440/R540/R640/R740 R820 R930 DELL服务器导轨 滑轨 支架 理线架】价格_厂家 - 中国供应商...
  9. 分享基于HTTP长连接的Web端即时通讯技术
  10. python 直方图 横向_python绘制直方图