零雨其蒙's Blog

做优秀的程序员
随笔 - 59, 文章 - 13, 评论 - 58, 引用 - 0
数据加载中……

瀑布模型与结构化方法

      江湖上有个传闻:1970年,Winston Royce在他的《管理大型软件系统的开发》提出了著名的“瀑布模型” 。被誉为瀑布方法之父。我今天终于看到了这篇叫做《管理大型软件系统的开发》(MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS,你可以在网上下载到这篇文章),然而让我吃惊的是:Royce在文章中虽然列出了一个像瀑布一样的图形,但实际上,在那个图下面有如下一段话:
      

       I  believe in this concept, but the implementation described above is risky and invites failure. The problem is illustrated in Figure 4. The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed. These phenomena are not precisely analyzable. They are not the solutions to the standard partial differential equations of mathematical physics for instance. Yet if these phenomena fail to satisfy the various external constraints, then invariably a major redesign is required. A simple octal patch or redo of some isolated code will not fix these kinds of difficulties. The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a 100-percent overrun in schedule and/or costs.
     之后,作者给出另一幅图:

Figure 3. Hopefully, the iterative interaction between the various phases is confined to successive steps.(理想情况下,在各个阶段的迭代互动受限于连续的步骤)
    这是一张从需求到操作并且具有反馈机制的图。

Figure 4. Unfortunately, for the process illustrated, the design iterations are never confined to the successive steps.(不幸的是,在发布的过程中,设计迭代从不局限于连续步骤.
   之后,Royce讲了一个迭代过程,并给出了一个图:

Figure 7. Step 3: Attempt to do the job twice - the first result provides an early simulation of the final product.

(将工作再做一次——第一次的结果提供最终产品的一个早期模拟版本)

      看到这里,我已经怀疑我看到的这个版本的《管理大型软件系统的开发》是1970年的那个版本吗?这里面明明讲的就是一个迭代过程啊。而且作者一开始就知道顺序构建是不可以的。不过Larman在XP/Agile Universe2004指出了Winston Royce这样人的想法如何被误解了,以及Royce后来是如何由于将瀑布模型强行用于产业界而受到了不公正的惩罚。Craig指出了一些人们被错误引用的详细地方,导致了多年的误解和错误传播。
      无论如何Royce是一个迭代方法论的支持者,他的儿子Walker Royce是迭代方法的重要贡献者,在Walker的《软件项目管理:一个统一的框架》书中,他感谢了自己的父亲Winston Royce:对这本书(指《软件项目管理:一个统一的框架》)影响最大的是我的父亲Winston Royce, 他调整了我的文字. 验证了我的观点. 提出了修改意见, 并且增强了我采取容易引起争论的立场和激励发展的决心。

     今天在研究结构化方法时,发现结构化方法的创始人  Yourdon后来与Peter Coad一起创立了Coad/Yourdon面向对象分析方法。

      看来,在如今,瀑布模型之父从来就没承认过瀑布模型,而结构化之父早已投身于面向对象的领域研究了。那为什么现在还有那么多人对于瀑布模型和结构话方法如此痴迷呢?

posted on 2007-06-06 20:06 零雨其蒙 阅读(2763) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: