表1 控制結構中的預期函數
圖1則表示了對整型的變量的左操作的預期函數的細化過程。它本身嵌須一個更大的系統中(在圖中未表示出來)。在第一步函數被分解為有兩個執行部分的sequence結構。它們用兩個需要進一步細化的預期函數表示(變量B是設計的局部變量。在初始預期函數的表示中并未出現)。注意在sequence中初始的預期函數被傳遞下來,以記錄對數據的影響。第二步細化這兩個新的預期函數,就變成了圖右邊的兩ifthenelse控制結構。同樣這兩個新的預期函數也要往后傳遞以記錄對數據的影響。
圖1同時也表現了與已得到程序函為目的而解讀控制結構有關的兩步抽象。抽象后的程序函數和最初的預期函數應一樣。盡管這個簡單的例子從控制結構上就可以理解,但是在相對較大的設計院里,預期函數在驗證和維護上對保證設計意圖則發揮了至關重要的作用。對僅僅5-10行的語句可以一目了然,但對50或100行就不那么容易了。很明顯在預期函數對保證控制結構細化的正確性是很重要的。后面詳述。
另一個重要的地方就是明盒細化過程 并不是因循守舊的。只有在知道了如何將設計的上層結構后,才可能創建良好的上層結構。設計是一個反復的和創造性的過程。加深了理解,才會出現更好的主意。對下層的洞察會導致對上層的重新審視。設計的最后一步應該是自上向下地驪證和檢驗它的預期函數定義和細化步驟。
原文轉自:http://www.anti-gravitydesign.com