Too young, too simple. Sometimes, naive & stupid

程序设计方法

自底向上(Down-top)的程序设计方法

  • 先编写出基础程序段
  • 然后再逐步扩大规、补充和升级某些功能
  • 实际上是一种自底向上构造程序的过程

功能简单、规模较小 ==> 功能增加、规模增大

自顶向下(Down-top)的程序设计方法

  • 先写出结构简单、清晰的主程序来表达整个问题
    • 在此问题包含的复杂子问题用子程序或函数来实现
  • 若子问题中还包含负载的子问题,再用子程序或函数实现
  • 知道每个细节都可以用高级语言表达为止

上:比较抽象的层面 ==>下:更具体的层面,接近程序设计语言

逐步求精(Stepwise Refinement)方法

  • 对问题的全局作出决策,设计出怼问题本身较为自然的、很可能是用自然语言表达的==抽象算法==
    • 由一些抽象数据及其上的操作(即抽象语句)组成,仅仅表示解决问题的一般策略和问题的一般结构
  • 怼抽象算法进一步求精,就进入下一层抽象
    • 每求精一步,抽象语句和抽象数据都将进一步分解和精细化
  • 如此继续下去,直到最后的算法能为计算机所“理解”为止
    • 易于用某种高级语言表达

简而言之:先全局后局部、先整体后细节、先抽象后具体的自顶向下的方法

实际程序开发过程不是纯粹的自顶向下和自底向上

  • 自顶向下的分解和自底向上的构造两个过程混合交织进行、
  • 由不断的自底向上修正所补充的自顶向下的程序设计方法

优点是

  • 得到的程序是有良好结构的程序

  • 可简化程序的正确性验证

    • 结合逐步求精的过程,采取边设计边逐级验证的方法
    • 与写完整个程序后再验证相比,可大大减少程序调试的时间