1. 程式人生 > >Top-down Design簡介

Top-down Design簡介

“自頂向下,逐步求精的方法”在英文中稱作Top-down Design,是一種計算機程式設計使用的演算法思想,顧名思義,這種方法的思想就是對現在遇到的複雜或者抽象化的問題,進行縱向深入分解並使其被分解為多個簡單的、具體化的、可解決的問題。

專業的說法是:(例如在電子行業中)首先:建立一個新的asm檔案
然後在asm裡面第一需要建立的是整個asm的基準,後續不斷的插入空的prt檔案,
把需要的prt空檔案建完以後,根據頂層的基準建立第一個prt的feature,完善第一個prt以後
後面的零件可以根據第一個prt,也可以根據頂層的基準來完成feature的建立。以此類推,直到完成整個asm的建立。”
(然而我一個字也看不懂)

下圖就是Top-down中的一個應用的示例圖。

這裡寫圖片描述

實際上這種思想十分易懂,生活中處處都有它的身影,例如在資訊學中就有Work Breakdown Structure(WBS)方法,由Top-down生髮出的思想有很多種,Top-down中的縱向深入也可以改為橫向分塊,WBS就類似於這種解決問題的思路。

這裡寫圖片描述

這裡寫圖片描述

上面是招標工作和專案施工階段的兩張WBS圖,可以看出Top-down的方法深深影響著生活中各個領域,實際上還有另一種與之截然相反的結構,我們稱之為:Bottom-up方法。兩者的特點決定了它們的應用範圍:以產品的開發過程為例Top-down Design設計多用在新產品的設計,產品的設計流程可以從制定規格,骨架,外觀造型等標準設計流程開始。若是舊的產品要達到由中心來控制全體的零元件,亦可修改模型架構成為Top-down設計的架構。 而Bottom-up Design設計多用在已知尺寸的產品的設計,設計的方法的好處是設計者不用考慮個別零件的關係。

上面講述了幾個Top-down方法的應用,其實它的定義相當簡單,關鍵是在應用時如何判斷化簡到哪一步驟才停止,實際上問題根據不同的人有不同的難度,所以建議運用這種方法之前先確定難度,在確定將問題劃分到哪種程度的難度後再確定大致劃分的步驟。

PS:下面是舉例(洗衣機)!!!

**“正常洗衣”的大步驟的虛擬碼分解:
  注水
  洗衣機內部水位達到一定高度時停止注水
  洗衣機電機轉動並且計時器開始計時
  時間到後停止洗衣
  排水
  停機
  
   2) 注水:
  
  water_in_switch(open)
  water_out_switch(close)
  
洗衣機內部水位達到一定高度時停止注水:
  SET terminal to the value of the height to stop pouring water
  IF get_water_volume() >= terminal
water_in_switch(close)
洗衣機電機轉動並且計時器開始計時:
  motor_run(direction)
  
   時間到後停止洗衣:
  
  SET terminal’ to the value of the height to stop run motor
  IF time_counter() >= terminal’
  
   排水
  
water_out_switch(open)
   停機:
  
   halt(returncode)**