· “只用一次”的程序,
· “看过了就扔” 的原型,
· 一些不实用的演示程序,
也许这个方法是有用的; 但是要写一个软件, 这个方法的缺点就太大了。
要注意的是, 许多学校里的软件工程作业, 就是符合上面那三点,所以难怪同学们觉得没有必要用其他的开发方法, “写了再改” 足矣!
瀑布模型 (waterfall model)
当软件工程还是年幼的行业的时候, 它从别的成熟行业 (硬件设计, 建筑工程) 借用了不少经验和模型。在那些”硬” 的行业中, 产品大多遵循 [分析 -> 设计-> 实现(制造) -> 销售 -> 维护] 这个流程。 由于在硬行业中产品一旦大规模生产, 要再返回去修改时非常困难, 甚至不可能的。因此这个模型描述了单向的, 不可逆的生产过程。
Winston Royce 在1970 年的论文“Managing the Development of Large Software Systems” () 第一次明确地描述了这个模型 (虽然他没有用 waterfall 这个词)。
但是要注意的是, Winston 并不推崇严格意义上的瀑布模型, 相反他指出了此模型的各种缺陷, 并提出了一些改进的办法。
例如, Winston 正确地指出了在设计大型系统的时候, 要做相邻步骤的回溯,解决上一阶段未能解决的问题: