说起软工历史上最憋屈的学者,Winston Royce如果自称第二,估计很少有人能称第一。该老兄总结经验,梳理了一个开发模型(即著名的waterfall模型),如今作为反面例子出现在绝大部分(估计其比例相当接近100%)讲解软件项目管理的文献当中,被认为不适合应用于软件开发当中。甚至Poppendieck在Lean Software Development一书中还宣称,Royce本人对waterfall模型持否定态度,即认为该模型不适合软件开发(很多人也喜欢这样从根本上否定waterfall,可能即来源于此)。显然,这里面有很明显的不合理之处—自己为了解决某个问题而提一个模型,然后又否定这个模型,这在论文的逻辑上是不通的。真相如何?读一下《Managing the Development of Large Software Systems》原文就知道了。基本思想如下:
1. 瀑布模型不是单一线性、前后相继的单个模型,而是从最简单的Analysis-Coding到融入多个过程元素(实践)的一个系列模型;
2. 项目越困难,模型中应用的过程元素越多,尽管这会带来成本的增加;这也比
3. 轻视项目困难而使用了过于简单的模型来的好。
不仅如此,Royce还提出,设计先行、做两遍(试错)、引入用户等实践,没错就是现在否定waterfall最凶的敏捷方法的一些典型实践,只是不知道敏捷社区愿意认waterfall提出者Royce这个老祖宗不?
地铁软件工程第二篇