解释传统与敏捷方法最贴切的故事:大象与猴子

转载 2007年09月19日 14:10:00
 很久以来我都对传统的软件工程方法和盛行的敏捷方法的联系与区别郁闷不已,因为每一个领域都是那么庞大,作为一个非专业人士,要能清楚地把握其 中的关系,确实不是件容易的事情,直到我看到下面的这个故事(摘自《平衡敏捷与规范》Balancing Agility and Discipline: A Guide for the Perplexed,邓辉 孙鸣译 清华大学出版社)。在敲字的过程中我自己对一些名词对照着两个软件开发方法中的常用概念进行了注解,不当之处,还请大家指正。
 
很久以前,在一片充满隐喻的土地上,住着一头大象(喻传统开发方法)。很多年来,这头忠实的大象一直都是他所居住村庄主要的食物采集者,并且非常清楚这个村庄需要什么(喻工程前的事先计划性)。他在丛林中修建了一条路(喻最佳实践),这条路总是能指引他找到最好的根茎、蔬菜、坚果和水果等食物(喻项目的功能)。他知道哪种水果用鼻子可以够得着,也知道哪种水果需要鼻子去晃动才能摘取。他很强壮,能够一次带回足够好几天吃的食物,所以他总是预先估计这个村庄的需要(喻典型的项目需求),并提供恰当的供给。他恪尽职守,整个村庄的人都很感激他,并认为他的工作很有价值。
 
唉!就像生活和寓言中常常发生的那样,情况发生了变化(喻需求变更)。村庄里的厨师(喻项目干系人)想要一些奇特、罕见的原料来烹饪(喻个性化需求)。这些原料大象曾经听说过,但是不在他每天要走的路上(喻传统工程方法不适合涉及的领域)。他还在为存储那些无从需要的食物(喻开始的需求已经过时)疲于奔命,却没有时间去修建新的道路以满足新的需求。村庄里的人渐渐地对这头无法满足他们需求(可以理解为RUP等传统方法不适合网站开发)、越来越气馁的大象失去了耐心。
 
与此同时,附近村庄有一只猴子(喻敏捷方法)做着和这头大象类似的工作。但是,和这头大象不同,这只敏捷的小猴在这片丛林中快速地穿梭(喻XP等编程方法),采摘它所看到的果实。他只去寻找那些挂得很低的果实(喻无法满足企业级应用)并迅速把它们送回到厨师那里。这只猴子不像大象那样依赖于一条久经考验的道路,他依赖于自己的记忆和本能去找到食物,并且只带回当天所需要的食物(喻迭代编程、每日构建等)。有时,他会跑出去寻找那些日益珍奇的食物(喻新奇的功能,如AJAX功能),偶尔还会迷路(喻新的方法太多)。但事实证明,他的速度和敏捷完全能胜任村庄分派给他的任务。和那头大象一样,他也颇受爱戴(喻在自己的领域内,如Web开发)。
 
很不幸,这只猴子的生活也发生了变化。他所生活的村庄一天天地扩大起来(喻企业级Web应用)。这只小猴需要满足太多的需求,以至于他总是疲于奔命,努力记住在每个地方的所有需要。他不得不来来回回地跑很多次,因为他没有足够的力量一次运回人们需要的所有东西(喻功能太多)。同样地,这个村庄渐渐对这只猴子失去了耐心,而这只猴子也开始怀疑自己是否能够胜任这项工作。
 
碰巧有一天,这只疲倦的猴子遇到了那头气馁的大象。这只试图在背负重物的情况下快速奔跑的猴子发现大象背上的筐可以装得下那么多的食物。而大象也被猴子的速度震撼了(喻双方开始正视对方的优点),他能跑得那么远,他能那么轻而易举地拿到大象竭尽全力也无法获得的食物。这两只动物,虽然都以自己的技能而自豪(喻从前的论战),但还是承认了对方在某些方面技高一筹。
 
大象和猴子认识到一起工作的好处(喻一个控制大的流程,一个处理软件开发细节),于是决定联合起来。猴子利用他的敏捷去满足对于远距离水果的新需求,并让大象带回到他的村庄。大象则把充足的食物运到猴子的村庄去满足那里逐渐增多的需要。虽然他们花了一些时间去找出协作的方法(喻两个不同方法之间的磨合),但是很快他们就能够很好地满足两个村庄的需要了,从此,他们过着快乐的生活,彼此互相信任,从此丰衣足食的村民们又开始看重他们了(喻实用才是第一:))!

解释传统与敏捷方法最贴切的故事:大象与猴子

原文:http://blog.csdn.net/futurelight/article/details/1262383 很久以来我都对传统的软件工程方法和盛行的敏捷方法的联系与区别郁闷不已,因为每一个...
  • Testing_is_believing
  • Testing_is_believing
  • 2014年01月01日 21:21
  • 1974

《用户故事与敏捷方法》

大行其道的敏捷,一直持有怀疑的态度,《用户故事与敏捷方法》也许给出了一个答案。...
  • u012841352
  • u012841352
  • 2016年10月22日 08:18
  • 570

有五种动物,老虎、猴子、孔雀、大象和狗

有五種動物,老虎、猴子、孔雀、大象和狗 你到一個從未去過的原始森林探險,帶著這五種物, 四周環境危險重重,你迫於無奈要把他們一一放棄。 你會按著什麼次序把牠們放棄呢?? 好了嗎.....其實這個問題的...
  • kingkongII
  • kingkongII
  • 2013年08月28日 19:09
  • 1214

什么是用户故事及用户故事在敏捷开发中如何编写

用户故事(user story)是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素: 1. 角色:谁要使用这个功能。 2. 活动:需要完成什么样的功能。 3. 商业价值:为什么需要这...
  • Jeppe
  • Jeppe
  • 2015年10月25日 19:02
  • 3216

敏捷故事点与时间

在Scrum培训中,经常有人问:故事点和时间怎么对应?忘记了那本书上曾经有个大牛举了个例子,把系统中最简单的一个功能时间作为故事基准点,比如一个网站登录功能,从开始到发布大概需要8小时也就是1个人天作...
  • OpenandX
  • OpenandX
  • 2017年03月13日 15:26
  • 453

敏捷开发的一些思考--故事拆分

敏捷开发目前已成为互联网公司的首选方案,为应对市场的快速变化,我们公司也在大力推广敏捷,最近在读《用户故事与敏捷方法》一书,我想边读边做一些分享,传播知识的同时加强记忆。 1.       基于用...
  • u014419512
  • u014419512
  • 2014年06月09日 16:53
  • 1595

敏捷开发之故事墙

需求澄清后,SE把所有的故事卡贴到故事墙上,等待开发人员的开发。故事墙的模板为: 分析      : 需求澄清完成后,SE把所有的故事卡都贴到分析阶段 等待开发: 开发人员和SE确认了需求,明...
  • chenleixing
  • chenleixing
  • 2015年04月19日 15:46
  • 1841

读书笔记4——《用户故事与敏捷方法》之Scrum

——有关于Scrum Scrum是一个迭代和递增的过程。 一轮迭代的过程是一种持续改进的过程; 一个递增的过程是指按照功能点开发和发布软件。每一个功能点(功能增量),代表一个完整的功能子集。每一个...
  • lucialee8
  • lucialee8
  • 2015年09月17日 16:33
  • 328

读书笔记1——《用户故事与敏捷方法》

读《用户故事与敏捷方法》这本书有三天了,看了差不多快四分之一。惭愧的是看完后不能像大家那样有很多总结,很快能举一反三,有自己的想法等等,大概是看的书真的太少的缘故。不过目前对自己的要求也很明确,主要还...
  • lucialee8
  • lucialee8
  • 2015年08月07日 16:55
  • 509

软件过程与方法---课堂总结3 第四章 敏捷过程模型

第四章 敏捷过程模型 (1)敏捷软甲开发宣言(2001年,敏捷联盟)    个人和交互重于方法和工具     --Individuals andinteractions over processes ...
  • muzilanlan
  • muzilanlan
  • 2016年01月07日 15:34
  • 1703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解释传统与敏捷方法最贴切的故事:大象与猴子
举报原因:
原因补充:

(最多只允许输入30个字)