现在的位置: 首页 > 综合 > 正文

自上而下,自下而上

2013年08月24日 ⁄ 综合 ⁄ 共 863字 ⁄ 字号 评论关闭

很多书籍在描述解决一个特定的问题的时候经常会提到自上而下和自下而上的解决方式。自上而下指的是先勾勒出解决问题的大纲,然后根据这个大纲在把问题细分,逐步解决问题。自下而上则在解决问题的时候没有初始的大纲,先解决局部问题,然后在组合各个局部的解决方案,从而解决最终的问题。它们很好地总结了解决问题的方式,但是自上而下和自下而上从来都是跟具体情况相关的。什么时候该自上而下,什么时候该自下而上是很值得考量的。那么具体应该怎么来做呢?
自上而下适合已经有了全局概念的情况。如在软件设计中,如果实现对这个行业已经有了深入的了解,而且对所要做的产品已经有了一个清晰的概念,那么自上而下的方法会非常有效,这时候采用瀑布开发方法论是非常合适的。
自下而上是在全局还没有清晰的了解或根据不知道全局或者以后的发展的形势的情况。而现实中这样的问题很典型,也非常多。所以很多时候我们都会不自觉地采用自下而上的方法来解决问题。但是这个方法的缺陷是,风险很大。解决这种缺陷的方式就是将问题的解决在时间域上划分为多个阶段,在每个子阶段对结果进行检验。在软件设计中,典型的方法论就又统一软件过程,XP等。软件开发中的问题绝大多数属于这种情况,所以软件开发很适合采用了分阶段的自下而上的解决问题的方式。
还有一种方式那就是自上而下和自下而上的结合,在不了解全局的情况,首先采用自下而上的方法来解决问题,当对问题有了更深入地了解之后,就采用自上而下的方法来进行。这种方法,显而易见比上面两种方式在一般的情况下都更有优势。它的缺陷是,我们很难知道什么程度才是自下而上和自上而下的分界点点。不过还是有办法解决的,那就是通过一定的代价来换取。以软件开发为例,原型开发方法就是如此,先以原型为代价,得到一个比较清晰的全局,然后采用自上而下的办法进行架构设计,然后使用自下而上的方法来进行功能的开发。

所以我认为好的软件开发方法论就是在开发的过程中不断地运用自上而下和自下而上的方法解决问题。就目前而言,我觉得原型开发方法和迭代开发方法的结合是适合绝大多数的应用场景的开发方法论。

【上篇】
【下篇】

抱歉!评论已关闭.