现代软件开发肯定是复杂的,因为到目前为止,还没有一种方法从根本上消除软件之前的依赖,软件随着规模的扩大,需求的不精确和不停的变更以及需求调研人员限于领域知识所限,无法抽像出客户的需求。从技术上来说,虽然现在随着平台、框架、模式等帮助消除组件依赖的各种技术的应用,从技术上来说是在提高,但技术提高带的负面效果就是学习成本高昂。从软件工程角度来说,需求、技术、人员是一个软件产品的利益方。如下图所示:

如上图所示,在决定一个产品是否复杂(也就是成功)的标志与你的需要是否确定和技术是否稳定有很大的关系,显然,选择一个稳定可行的技术和一个确定的需求开发过程相对简单。但这是理论上如此,实际上你进行产品开发,你是无法选择需求,你可以选择技术。比喻说一般的WEB产品,都是SSH框架,比较成熟。对需求来说,传统的瀑布模式是先将能固定的需求先写好,可变的需求采用变更方式进行开发。形成了目前绝大部分软件产品的开发模式。如下图所示:

从上图上可以看出,传统的瀑布模式的一个比较让人诟病的就是周期长,在这个产品出现在客户面前时有可能需要半年或者一年的时间,因此它不适应用于需求变化非常快的项目。敏捷开发就是采用迭代的方式在很短的时间实现客户最关心的需求,让客户参与到开发中去。那为什么不直接称之为迭代模式呢?这是因为敏捷的行为不仅仅限于迭代,它通过设置不同的ROLE来确定迭代的准则。这一点在SCRUM中是非常重要的。SCRUM的思想来源于这样一段话“It is typical to adopt the defined (theoretical) modeling approach when the underlying mechanisms by which a process operates are reasonably well understood. when the process is too complicated for the defined approach, the empirical approach is the appropriate choice.”这段话简而言之就是在没有成型的固定流程可以实施的开发模式下,经验法则也是非常重要的。采用经验法则不仅直观、可适配还可以随时变更。Scrum就是一种采用经验法则的敏捷工程方法。通过Scrum思想,不仅可以利用经验进行软件开发,也可以利用经验进行组织的自管理从而达到软件产品的自提高。避免过多的外在干预。但显然经验是不可控的。怎样将经验进行可控呢?Scrum通过重新定义角度和流程来规范经验的使用。这就决定了它不是一个普通的迭代方法。在角度划分上,Scrum将传统软件自上而下的管理角色改成平行角色,这种平行角色基于这个角度在这个软件产品中是INVOLVE还是COMMIT。常见角度如下所示:

从上图可以看出这三种角度之间不再于传统的上下级关系,而是平等关系,它是以Backlog和rule用为驱动。最终就是一个SCRUM FLOW。如下图所示:

从上图可以看出,围绕Scrum开发的流程中主要三种活动MEETING,是Sprint Planning meeting\Daily scrum meeting/sprintreview meeting.从这里可以看出Sprint是一种很重要的概念,在Scrum中借用sprint这个词一方面来说明它是一种短期的活动,但又不等同迭代活动,因为迭代容易让人产生一种固定周期的感觉。Sprint它是以BACKLOG作为触发。首先sprint planning meeting会在produce backlog上确定 sprint tasks.这些sprint task作为sprint backlog(衡量每个任务的大小是4-16个小时作为基准的)。用来控制这个task的每日standup meeting称之为scrum,这种方式可以快速的回答一天的任务完成进度。由此可形成如下的开发模式:

在这种开发模式下,它允许我们可以快速和可重复的观察到实际工作软件(每两个星期到一个月时间内),并且在团队内部实际自管理去决定发布高优先级的功能的最好方法。通过SCRUM可以达到在最短的时间发布出最高商业价值的产品。

转载于:https://blog.51cto.com/acreep/779716

敏捷开发中Scrum方法相关推荐

  1. [转]敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别

    敏捷开发之Scrum扫盲篇 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP- 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自 ...

  2. 敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别

    敏捷开发之Scrum扫盲篇 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP- 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自 ...

  3. 独立测试团队在敏捷开发中的几个特别实践

    [原文发表在https://hespr.blogspot.jp/2009/03/blog-post.html 写在2009年3月 最近发现被人盗版了多处, 重新发布在CSDN] 最近读了<我和敏 ...

  4. 敏捷开发中的Code Review

    敏捷开发中的Code Review 一些敏捷团队在实施敏捷开发中忙于编码.忙于Unit Test.忙于沟通.忙于Build等,虽然也有编码审核阶段,但大都浮于表面,流于形式,效果不佳.本文结合实践,介 ...

  5. 敏捷开发中史诗故事与用户故事的颗粒度

    作者:陈勇 出处:blog.csdn.net/cheny_com 用户故事的颗粒度一直是一个谈论已久的话题,但参加了很多研讨会,搜索了很多网络资源后发现一直没有定论,只好在这里原创一下. 前言:为何需 ...

  6. 敏捷开发中,团队成员认领的是任务还是用户故事?

    一次敏捷workshop上,有同学问:"敏捷软件开发中,团队成员自己主动认领的,是用户故事还是被分解成的任务?"同学们一时讨论热烈. 稍具敏捷开发实践经验的同学都应该知道,答案是- ...

  7. [敏捷开发培训] 什么是敏捷开发中的Spike?

    什么是敏捷开发中的Spike? Spike,如果需要翻译的话,中文可以翻译成"探针",但是一般不会翻译而直接使用Spike这个词. Spike可以理解为:以回答问题或收集信息为目的 ...

  8. 如何编写敏捷开发中的user story

    对于敏捷开发来说,User Story是开发的基础,它不同于传统的瀑布式开发方式,而是把原本需求拆成最小粒度的Story,以方便拆分Task,估计开发时间,领取开发任务. 优点和好处 Being ve ...

  9. 敏捷开发中迭代是谁创建_使用基于迭代的敏捷创建里程碑

    敏捷开发中迭代是谁创建 我一直在指导几个有问题的团队:他们喜欢迭代工作. 而且,它们具有不在里程碑边界上的里程碑. 他们该怎么办? (我建议使用流程,您应该已经听到了他们的回应.嗯,也许不是.) 这就 ...

最新文章

  1. Spring 的@Scheduled注解实现定时任务运行和调度
  2. w命令、vmstat命令、top命令、sar命令、noload命令
  3. TensorFlow:张量排序,填充和复制
  4. C++子类父类成员函数的覆盖和隐藏实例详解
  5. LeetCode 116. 填充每个节点的下一个右侧节点指针
  6. Ubuntu配置教程
  7. NFS服务启动:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
  8. iOS 操作系统被曝无线网络命名bug 导致 iPhone无法连接无线网络
  9. jsp java 购物车,JSP购物车实例[一]
  10. 假显卡测试软件,如何使用软件检测真假显卡软件验证方法简介
  11. matlab如何释放内存,怎么能释放已经使用的内存
  12. 【机器学习】PRC(PR曲线)
  13. 【百度echarts】实现圆环进度条-代码示例
  14. vue+typescript(vben-admin)前端开发
  15. 在ESNP中还原内网私接小路由器导致用户无法上网场景
  16. Java8新特性1:lambda表达式入门--由浅入深,从单发步枪迈向自动步枪
  17. 等待事件:Streams AQ: qmn coordinator waiting for slave to start
  18. 单片机毕业设计 stm32智能电子秤系统设计与实现 - 物联网 嵌入式
  19. 云小课|帮您高效快速上传组件至私有依赖库
  20. 富士通ERP解决方案举例

热门文章

  1. 机器传奇:全球13位科学家和他们的机器人“孩子”
  2. 微软 AI 设计原则:成为弱者,再带来惊喜
  3. 用脑科学支持人工智能
  4. 谷歌宣布对外开放聊天机器人数据分析平台Chatbase
  5. 我在大厂,下班了也戴着工牌
  6. 30 岁码农人生:人生至暗时,你依然能窥见光明
  7. 简简单单搞掂恼人的Laravel 5安装
  8. 阿里员工在用的黑科技 今年云栖要公开了!
  9. CREATE TABLESPACE
  10. 浏览器拦截弹出窗口 IE Firefox……浏览器