2009年3月5日星期四

倒霉的温斯顿•罗伊斯

温斯顿•罗伊斯(Winston Royce, 1929–1995)地下有知,一定会感到非常懊恼。因为他被人们公认为是瀑布开发模型的创使人。

几乎所有的讲软件工程的书或文章中提到瀑布模型时都会加上引用“... waterfall model [Royce70] ...”。这篇Royce写于1970年的文章被称为“瀑布模型的摇篮”:



如果读一读这篇文章,你会发现,这些引用的人并没有真的花点时间去读一读它。因为Royce的这篇文章只是想说明瀑布模型并不能工作。在文章的最后Royce甚至指出应该采用迭代的方式进行软件开发。


瀑布模型的一个简单的例子就是:


需求分析->可行性分析->高层设计->详细设计->编码->底层测试->系统测试->发布->维护


这样的一个顺序开发模式。


瀑布模型的流行不仅因为他看上去很合理,另一个主要的原因是它受到了美国国防部(Department of Defense)的追捧。后者要求它的合同商采用瀑布模型进行开发。美国国防部的指导精神随之影响到了北大西洋公约组织(NATO),瀑布模型想不流行都不行了。其结果,对美国国防部而言是导致了其超过50%项目的失败。然而与Royce同期甚至更早的软件科学家们更多的提倡迭代开发,如冯·诺依曼。


与瀑布模型同出一辙的“V模型”,其实质都是一样的,是一种理想化了的软件开发模型。对于可预测性强的生产制造业,如生产汽车,的确很适合这种生产模式。然而对于具有很强的不可预测性的新产品开发,如生物学研究、新药的研发等,就不合适了。同软件开发一样,这些研发工作都更适合用迭代的模式来“生长”出来。




在中文维基中“瀑布模型”条目中对Royce对这个模型的供献描述并不准确,去修改了一下:

百度百科里仍是把Royce作为瀑布模型的提出者而不加解释,由它去吧。
另,美国国防部已于1994年放弃了瀑布模型。


没有评论:

发表评论