随笔 - 58  文章 - 0 评论 - 355 trackbacks - 15
<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

与我联系

搜索

 

留言簿(4)

我管理的小组

随笔分类(48)

随笔档案(52)

积分与排名

  • 积分 - 76273
  • 排名 - 560

最新评论

阅读排行榜

评论排行榜

瀑布模型讲究的是计划,预先做好一切打算。一切往前推。
UP敏捷讲究的迭代开发,小周期多迭代,不求做完整计划,不求做完整需求。

这俩软件工程开发模型简直是对立。

何去何从?
posted on 2008-01-15 23:47 tianyamoon 阅读(1811) 评论(20)  编辑 收藏 所属分类: 设计思路

FeedBack:
#1楼  2008-01-16 00:00 e2mars [未注册用户]
XP的优势在于用正确的方法,做正确的事,尽量避免项目腐败。相对比较符合国情
  回复  引用    
#2楼  2008-01-16 00:13 RicCC      
区别不在于计划,而是如何应对变化和风险
自然选择适者生存而已,如果不是选择了一种方法,就永远不能改变,哪会有何去何从?
  回复  引用  查看    
#3楼  2008-01-16 00:25 怪怪      
其实合适某一项目的方法很多, 关键是客户愿不愿意. 比如Fowler也提到, 客户不愿意敏捷是一个障碍, 但他只是一而再再二三的说, 他的客户一旦了解敏捷是啥以后, 就愿意敏捷了. 这是毫无建设意义的屁话.

以敏捷的过程, 怎么估算工作量, 怎么报价? 以我的经验, 相当熟的客户, 也怕事先没谈清楚, 出意外.

所以敏捷的浪潮只是看起来大, 一直都是Fowler, Beck, 这一小撮小型但能山呼团队的敏捷: 因为这帮子人可以说, 你看, 那么多开发者都把我们当大师和专家, 专家出手您得多掏点钱吧. 客户掏钱多了, 他们舒服了, 自然什么都好说. 所以很多人说敏捷能解决问题, 可其实问题的关键根本不在于是最重型的过程还是轻量的过程, 唯一的问题是钱, 钱, 钱!

客户只愿意给2W, 花两个月, 这时候, 敏捷要3个月, 客户勉强接受了, 可是客户不愿意给3W, 这样你的小组平均月收入或者奖金降低了, 敏捷? 这时候只能让敏捷中的持续与客户交流变成经常性的糊弄客户. 毕竟, 客户一旦付了第一笔钱, 就是任咱们宰割而已! 于是就有人说, 尽量只做核心的有用的, 尽量简化; 我不知道很多情况下, 到底是客户真不想要尽量多的功能, 还是他被强奸了?

当然, 瀑布照样不行, 因为瀑布只是把糊弄客户的工作, 从贯穿始终变成了一次性的, 强奸客户还有客户签字的文档去保证, 嘿嘿, 也很爽.

敏捷也好什么也好, 其实都能成功, 关键是客户总是想少付钱, 而开发人员无论设计还是程序, 也都是贪婪的, 总想多要钱. 什么时候客户变成活雷锋, 愿意养活一堆外人, 什么时候开发公司上上下下都把自己当民工, 忍气吞声一点点钱还赖账也愿意干, 一切就全都顺利了.

至少暂时性的, 不顺利和斗争是必然的, 剩下的全看随机性和运气了. 总的来说运气还是不错的. 项目成功与否, 据我观察, 往往是客户自己抓住关键性问题没有; 客户没有对自己业务的明确认识, 再顺利的过程也是失败的结局. 客户有一个明确的认识, 再不顺的过程再垃圾的设计和代码, 也能发挥一定的作用.
  回复  引用  查看    
#4楼  2008-01-16 00:46 e2mars [未注册用户]
用了敏捷方法,不一定就体现了敏捷精神。正如用了.NET 不见得就OO了。
对立不对立,矛盾不矛盾。首先把目的和手段给搞清了
  回复  引用    
#5楼  2008-01-16 01:16 yAYX      
一定是具体情况具体分析
到底如何做,有很多因素
主要有两大状况:团队情况,项目状况
项目越简单(“简单”包括时间不紧,需求稳定,技术难度低等等)越倾向瀑布模型,那样总能把事情做得看起来很完美,反之要加入更多的敏捷因素
团队更是决定性因素,只有真正默契的团队按照敏捷思路走下去,效率确实高很多,而且能很好完成任务,否则 无论如何不要搞所谓的敏捷,很容易变型的
敏捷了客户不一定少给钱……给多少钱那得靠谈的
否则两个月的工作量我生产力高了一个星期解决难不成你指给我一个星期的钱?
  回复  引用  查看    
#6楼  2008-01-16 03:10 怪怪      
@yAYX
"敏捷了客户不一定少给钱……给多少钱那得靠谈的"

不是说敏捷了客户就少给钱, 而是敏捷了客户要多给钱, 但是客户不愿意. Fowler他们的例子经常说的是, 一个6个月的项目, 敏捷后8个月才能完成, 而且客户掏了更多的钱, 只是: Fowler总是说, 因为项目的成果运行的更好, 所以多这两个月的时间和钱, 客户也很乐意.

问题是, 你不是Fowler, 客户凭什么相信你(Fowler自己文章也提到这个问题)?

另外, 你这个说法也没有击中问题的实质: 不是说钱多少钱少靠什么, 而是说现在钱只有这么多(已经谈好了), 你们的小组怎么做的"他好我也好"; 只谈来那么多钱, 因为生存问题又不能不接, 这样的情况下, 什么过程方法, 都是狗皮膏药.

另外, 偶尔靠运气或关系接来的上亿项目款足够重复做这个项目好几遍的那种就不要谈了. 在充足的资金下, 确实有条件选择最正确的开发过程, 甚至任何一种不太离谱的过程都能取得良好的结果. 这样的情况下做出的烂项目, 纯属责任心(尤其是负责人的)问题.

但是这样的项目即使是成功总体来讲也是失败的, 因为一个靠随机性或腐败制胜的机制, 不可能长久.

总之, 没有任何方法说明敏捷或其它过程方法是更恰当的, 具体到敏捷, 所需要的前提条件太多了; 这就注定了敏捷过程不可能成为一个广泛适用的学说.

"否则两个月的工作量我生产力高了一个星期解决难不成你指给我一个星期的钱?"

首先, 如果两个月的工作量你一个星期解决, 这个时候你确实可以忽悠2个月的钱或者至少一个半月的钱; 但是任何生产力的提高都会在全社会被普及(虽然不见得是从你的组织泄露出去的), 某一个公司掌握一个高达8倍的方法长达多少年, 那是不可能的.

最后你的生产时间逐渐就变为了社会一般劳动时间, 于是很显然, 你这个反问, 只有一个肯定的答案: 没错, 从长远来看, 你一星期解决, 这个项目就只值一星期的钱.

其次, 你这个说法, 就如上面所说, 并不符合Fowler他们对敏捷过程的描述. 敏捷一般情况下是通过增加时间来保证更好的项目质量的; 只是通过一定的方法调整, 使得增加的时间控制在一定的范围内, 同时避免重型方法所带来的一损俱损的缺点. 这是一个对敏捷的最大误解: 敏捷 == 速度快.

只是这个误解对敏捷的推广反而起好的作用, 所以Fowler他们为了自己的荷包, 就不象澄清那些不好的误解一样下功夫了.
  回复  引用  查看    
#7楼  2008-01-16 03:56 怪怪      
http://www.cnblogs.com/guaiguai/archive/2008/01/16/1040590.html

稍微整理了一下, 换了些遣词造句.
  回复  引用  查看    
#8楼  2008-01-16 07:59 niming [未注册用户]
@怪怪
不睡觉?
  回复  引用    
#9楼 [楼主] 2008-01-16 09:10 tianyamoon      
不过上面大虾们都是说的项目的问题。大家说的目前项目的现状的确是存在。不过我觉得那不是反对敏捷的根本。

个人认为如果在产品开发中应用敏捷还是很有效果的,只是说理论化的敏捷可控性实在太差。两种方法走的都很极端,瀑布讲究一起尽量在前期完成,敏捷讲究一切靠代码来落实,强调反馈。

如果说在产品开发之初用瀑布的方法将可预测的需求落实,再在开发过程中反复迭代需求如何?
  回复  引用  查看    
#10楼  2008-01-16 09:22 布鲁斯南      
根据现实情况而定.
  回复  引用  查看    
#11楼 [楼主] 2008-01-16 09:25 tianyamoon      
比如说你做一个P2P产品,现在的网络变化万千,新功能层出不穷,如果不敏捷,根据一开始瀑布好的需求来做,那么项目完成之时就是项目过时之时。

不过上面老兄说的做项目如果敏捷现阶段实施起来的确不靠谱。
  回复  引用  查看    
#12楼  2008-01-16 09:57 zz过客 [未注册用户]
思想对立,但关键在用的人身上,不可能把一个过程一成不变的拿来就刚好适合你使用的.中国的中庸之道可以参考一下.把UP和XP的迭代结合一下,会不会更好呢?
  回复  引用    
#13楼 [楼主] 2008-01-16 10:18 tianyamoon      
@zz过客
尝试就代表风险,有哪个老板会同意你你试试的?


  回复  引用  查看    
#14楼  2008-01-16 11:14 蓝天旭日      
满足客户或者老板的需要,就是模型!
  回复  引用  查看    
#15楼  2008-01-16 13:45 布鲁斯南      
14楼说的有些道理...
  回复  引用  查看    
#16楼  2008-01-16 16:58 David      
敏捷就是灵活变通吧!不然也不叫敏捷了。
瀑布也不一定完全瀑布的。可以在瀑布里面敏捷一下咯。
这叫,适合自己团队的方法就是最佳的方法。
  回复  引用  查看    
#17楼  2008-01-16 21:28 Shinn      
瀑布个人觉得给设计的压力太大(设计完事之后一般不大改),也将事情想的太完美(需求不变)所以一般项目没必要这么整

但如果项目越大越重要,前期的设计还是必要的

某个敏捷大牛说的一点设计也不要,我觉得除非是个关系不大的小项目还差不多,要不就瞎扯了





  回复  引用  查看    
#18楼 [楼主] 2008-01-16 21:56 tianyamoon      
@Shinn
真正的敏捷应该是初始阶段定义10%左右的需求,然后设计实现,通过代码实现的效果快速的获得用户的反馈。以确定界面风格、交互风格、业务逻辑与用户想象的差距。而且有时候连用户自己都不知道自己要什么。实实在在的程序才是真正引导用户的东西。
  回复  引用  查看    
#19楼  2008-01-18 09:18 三颗纽扣      
其实瀑布也好,敏捷也好,都不过是一种方法手段而已(废话,不要砸我)。何去何从这个问题,就好比说,现在有杀猪大砍刀也有削皮水果刀,选什么好?
当然要根据要做什么事情来定,没有什么万能的刀,也当然也没有什么万能的开发过程与方法。要杀猪,就要用杀猪刀,要削水鬼,就要用水果刀。但是,即使是杀猪,过程中倘若要剃毛、剔肉,不妨也可以用用水果刀更方便,切西瓜,也许先用大刀切做三五大块,再将西瓜肉用小刀挖出更容易。也就是说,他们并不矛盾。瀑布中每个阶段都可以敏捷可以迭代,敏捷和迭代,也是一个个的小瀑布周期。
总而言之,首先需要关注的是要解决的问题,而不是先挑工具。首先考虑项目的展开、进展需要解决什么问题、还会遇到什么问题,然后再来考虑这些问题使用什么方式来解决。
从另一个角度上说,“如果你有一把不错的锤子,而且用的顺手,那就尽量将一切问题变成钉子”。如果你杀猪刀用得顺手,就不妨多用用杀猪刀,水果刀用得顺手,就不妨多用用水果刀。当然,能够尽量熟练的使用多几把刀,自然还是有好处的。
  回复  引用  查看    
#20楼  2008-01-18 11:37 ifire [未注册用户]
这个其实已经不用讨论了,瀑布模型在若干年前就被理论、实践证实其不适应性了。

而迭代也早已证实是行之有效的最佳实践之一。

所以无论你采用什么方法,我都推荐你引入迭代实践,而尽可能不要用瀑布。

btw:国内还是有相当的公司在使用瀑布的。这个是现实情况。呵呵。
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
所属专题: 敏捷开发