现在的位置: 首页 > 综合 > 正文

传统软件开发就像结婚一样?

2013年01月09日 ⁄ 综合 ⁄ 共 1795字 ⁄ 字号 评论关闭

信息爆炸的年代,全球化经济、互联网,后现代思潮……正影响着我们的生活,你甚至不能不担心明天睡醒,又有你所不知道不了解的新东西出现。最近这一两年,“敏捷开发”突然成了一个热门词汇。相信许多第一次听到这个说法的人都会下意识地问:敏捷是什么?非敏捷又是怎么回事?

我们来举两个例子:结婚和寻找红颜知己。

你打算结婚。未来的新娘为什么突然想起来要结婚了?

你告诉她:我偶尔生病,想喝水却起不来床;我在外面应酬完毕,突然不知道该去哪里;我又很多故事,想讲给一个可以信赖的人听……

她点点头:嗯,你给我xx万吧,我会用半年时间来做准备,准备好了我们结婚,结了婚之后你的上述问题就可以迎刃而解了。

你很高兴,因为你不会看装修材料,也对逛街买东西毫无兴趣,现在有人愿意全包,真是再好不过。

半年后,你们结婚了。你看着妻子一手打理的新家,笑得嘴角流蜜。你开始憧憬美好的生活,可是你生病起不来床的那天,妻子碰巧回了娘家;你和客户喝完一顿大酒之后打电话回家,家里没人,妻子还在公司加班;有一天晚上你突然噩梦醒来,感到万念俱灰,你推醒妻子想和她说点啥,她嘟哝着“天亮再说吧人家困死了”,便又熟睡如泥……

传统的软件开发方式之所以被称为“瀑布式”,是因为它把软件开发分成几个独立的步骤:需求分析、概要设计、详细设计、编程、测试、维护,一步步做下来,最后就完成了。不会回头去做前面已经做过的事,如同瀑布,一泻千里。瀑布式开发过程大抵如此:软件公司给客户做一个项目启动,大概估计到一个项目要多少成本,然后分析需求,签合同,在多长的一个时间之后要完成项目,满足合同上写的所有这些需求,然后握手,说再见,软件公司回家开发,时间到了以后交货付钱。理想的状态下,这时候交付的软件,恰好是合同上所写的那些需求。但是即便在这样的理想状态下(很罕见),客户的需求仍然是在变化的,因为他的商业环境,他的供应商,他的客户在改变,他的业务必须改变。
而在这种“瀑布式”的方法中,IT没有办法跟着客户改变,IT只有——譬如说——半年做完一个项目,得到客户半年前想要的东西。而客户今天想要的东西,只好放进下一个项目中考虑,因为一旦需求改变,就超出了现在这个项目的合同范围。传统的做法即便允许变化,也用一个非常复杂的流程来管理。有个术语叫“变更管理”或者“变更控制”,在这种开发方法中,变更被看作一种需要“控制”的东西。在这种方法学的指导下,对于“项目成功”的定义是按时间、按成本地交付合同规定的功能特性,透过这样的“成功项目”,并不能保证为客户提供最大的价值,因为客户的价值,很可能就存在于快鱼吃慢鱼。

这个过程,是不是和结婚很像?理想状态下,你遇见的那个她,正是梦寐以求的,她带给你的生活,正是你希望实现的全部理想。现实中有许多人的真实生活是:没结婚不好,结完婚却更糟。

现实中不乏开发人员和客户相互耍心眼的例子。他们拒绝分享关键性的信息:

“如果我把这些告诉工程师,他们会花几个月时间来思考,而不是着手去做我所需要的事情。”

“如果我告诉客户完成这项工作只用了很短的时间,他会指望我做每件事情都这么快。”

他们夸大事实,说半真半假的话,撒慌、掩饰,在相互误解的情况下工作。他们建起一套繁琐无用的行政和程序性体系,目的是保护自己,而不是获得成功。

于是,有的企业化大价钱请软件公司搞系统,系统上马后却发现“一切不是我想象。”软件公司觉得不专业,提出的要求都是无理取闹,你觉得软件公司不负责,却又无法用专业知识对他们进行反驳,于是一个巨大的烂摊子铺开了……

你对婚后的生活不满,这不满很可能就是婚变的开始。希望妻子有所改变,她却觉得你很可笑,理由是“难道你从前不知道我是这样的吗?你明明知道我是什么样的人才和我结的婚,这才几天你就对我有意见了……”

她的表现又激发了你更多的不满,你的不满令她更委屈……你们可能彼此并不能真正做到开诚布公毫无隐瞒,交流不但不能解决问题反而更加剧矛盾,周而复始,100集的肥皂剧的素材都够了。

如同当今社会婚姻家庭的动荡,传统的软件开发方式常常会出现以下问题:因为对软件开发成本和进度的估计常常不准确,开发成本呢超出预算,实际进度比预定计划一再拖延的现象并不罕见;用户对“已完成”系统的不满意的现象也经常发生;软件产品的质量往往靠不住,Bug一大堆,补丁一个接一个;等等。于是,无论产业界还是理论界,都开始对传统软件工程学思想产生怀疑,甚至背叛。 

【上篇】
【下篇】

抱歉!评论已关闭.