自底向上(Down-top)的程序设计方法
- 先编写出基础程序段
- 然后再逐步扩大规、补充和升级某些功能
- 实际上是一种自底向上构造程序的过程
功能简单、规模较小 ==> 功能增加、规模增大
自顶向下(Down-top)的程序设计方法
- 先写出结构简单、清晰的主程序来表达整个问题
- 在此问题包含的复杂子问题用子程序或函数来实现
- 若子问题中还包含负载的子问题,再用子程序或函数实现
- 知道每个细节都可以用高级语言表达为止
上:比较抽象的层面 ==>下:更具体的层面,接近程序设计语言
逐步求精(Stepwise Refinement)方法
- 对问题的全局作出决策,设计出怼问题本身较为自然的、很可能是用自然语言表达的==抽象算法==
- 由一些抽象数据及其上的操作(即抽象语句)组成,仅仅表示解决问题的一般策略和问题的一般结构
- 怼抽象算法进一步求精,就进入下一层抽象
- 每求精一步,抽象语句和抽象数据都将进一步分解和精细化
- 如此继续下去,直到最后的算法能为计算机所“理解”为止
- 易于用某种高级语言表达
简而言之:先全局后局部、先整体后细节、先抽象后具体的自顶向下的方法
实际程序开发过程不是纯粹的自顶向下和自底向上
- 自顶向下的分解和自底向上的构造两个过程混合交织进行、
- 由不断的自底向上修正所补充的自顶向下的程序设计方法
优点是
得到的程序是有良好结构的程序
可简化程序的正确性验证
- 结合逐步求精的过程,采取边设计边逐级验证的方法
- 与写完整个程序后再验证相比,可大大减少程序调试的时间