前面介紹的功能方塊,協助硬體電路系統的分析,開發,己得到很大的成功。若是在軟體分析設計及撰寫時,能夠融入類似於電路硬體,以功能方塊工具,執行分層分析,並於每層中執行功能分塊的觀念,就有可能發展出,具有很大,功能很多,及選項很多的軟體系統。
類比於硬體功能方塊,軟體功能方塊也必需要有,1. 功能的執行,2. 訊號的輸出入,以及 3.功能方塊內的記憶體及暫存器。
1. 功能執行:C 語言的函式及函式呼叫,提供了一個可以分割軟體成為分層分塊功能方塊的工具。實作上可以利用函式的包裝來實現功能方塊的分割。
2. 訊號的輸出入:各個功能方塊之間輸出入交換訊號可用傳參的方式傳遞。
3. 功能方塊內的暫存器 :需要封閉在功能方塊內,而且長久記憶的變數:
◦ 外部廣域變數:外部廣域變數是指,在所有函式的外部被定義的變數,他們在編譯時即佔有實體記憶體位置。
◦ 區域靜置變數:區域變數,是指在某一函式之內宣告的變數,它會在函式被呼叫執行時再由堆疊記憶體中取得,並於離開函式時歸還記憶體。但因為這麼一來,函式內的變數是暫時的,內容會被忘記。對於某些函式應用,例如說疊代更新函式,需要記得狀態變數,以及邏輯狀態,這些變數必需像廣域變數一樣,在編譯好時即為他們安排好記憶體位置,這樣在離開函式時,就不會被忘記。利用 static 關鍵字,程式設定者可以指定函式內特定變數為永遠變數。
◦ 結構體廣域變數:前述利用廣域變數,來記存功能方塊內的疊代更新永久變數,在程式短時尚可,若程式長,功能方塊多時,易發生重覆使用相同廣域變數以致發生誤寫錯誤。若使用區域靜置變數 static 方式來記存狀態永久變數,則每一支函式只能有一份功能方塊,無法同時存在多份結構格式相同,函式相同,只有結構體及其內容不相同的功能方塊。利用廣域結構體來記存功能方塊的內部永久變數,利用相同結構體形態,來定義出不同的結構體實體,則可以得到相同結構,相同函式,但內涵能夠不同的功能方塊。