还是回到上次听讲座的时候,第一部分的就是“范型的转变”,其中的内容主要讲了瀑布式模型怎么在一开始就不成立,而因为误解却广为传播。同时,迭代式开发也并非是瀑布式开发的后继者或者改良,而是同步发展的另一种对软件开发的思维方式。也就是另一种范型。
这一部分讲完的时候,已经用了四分之一的时间。中间休息的时候,我听到有人这样评论“讲这些有什么用呢?还不如讲讲实际怎么迭代开发”。
呵呵,两头牛在聊天,一头说:“最近疯牛病很流行啊?搞得我担心的都吃不下东西了。”,另一头说:“笨蛋啊,你担心什么啊?我们是袋鼠,怎么会得疯牛病呢?”
的确,讲“瀑布模型是错的”似乎真的没什么意义。好像每个人都知道。问题是,那么你用的又是什么方法呢?或者说,如果条件都按照理想情况,你认为软件开发会是怎样的方式进行?
larman的举的例子很有意思,他用中世纪的放血疗法来比拟错误的软件开发范型。放血疗法,是根据古希腊医学之父希波克拉特提出的理论,认为人体内有4种液体:血液,黏液,黄胆汁和黑胆汁。液体失衡了就会产生疾病。(是不是和中医有点像啊)根据这种理论,通过放血来改变体内血液的含量就可以治病了。
这种疗法有没有用呢?现代的有健康常识的人都可以判断出来,它的无效,不是因为实施的手段,而是基本的前提是错的。这个前提即为范型。也就是脱离了技术限制的情况下,事物如何发展的根本的,理想的模型。
在技术限制之下,有着不同的范型的个体行为有时会区别不大,而且限制越大,区别越小。睡梦中被大火惊醒的人们的反应不会比猴子更好;从高出坠落作自由落体的人和石头的行为没有区别。但是,如果只是在技术层面去观察,从而抹杀范型对个体的全部行为的指导价值(好像经常可以在论坛上看到的“管他什么方法,能作出来就行”之类的昏话)。就像是认为拉磨的驴和千里马没有区别一样。
一个乞丐说:“天下最美的事情莫过于作皇帝了,皇帝全身的衣服都是金子作的。”另一个乞丐说:“那怎么行,硬梆梆的衣服,还怎么给人叩头行礼要钱啊”
接触新的范型的人,往往还在使用过去的思维方式,或者只是把原有的经验硬塞到新的环境中。考虑每个第一次了解地球是圆的的小孩都可能问的问题“那地球那一边的人怎么不会掉下去啊?他们头朝下不难受么?”larman的《七步搞死RUP》(《非程序员》第37期)同样描述了这样的思维方式在软件过程中的表现。
嫦娥是吃了灵药飞上月亮的。
万户在椅子下面绑满花炮希望飞上天。
儒勒·凡尔耐的《从地球到月亮》,飞船是从一门大口径火炮中发射出去的。返回地球的办法是:在月亮上找了一个山崖,把飞船推下去,就掉回地球了。
基于旧的范型,即使是幻想反映的仍只是旧的范型的技术手段,真实的世界往往比幻想更为宽广和深邃。