形式化方法無用? - Hillel

banq發表於2022-01-24

許多程式設計師認為形式化方法是無用的,因為在軟體中“規則就是程式碼”。如果您可以形式指定程式應該做什麼,那麼您需要擁有該程式!
大多數有這種想法的人都不熟悉 "形式規則(形式規範、formal specification) "到底是什麼。
舉個例子,您的產品需要在某個時候從 API 中提取資料。這只是幾行程式碼而已。但有時呼叫會失敗。如果有一個失敗的請求,那麼你需要重試,然後你需要做指數反推,直到一個極限,之後我們就拋錯放棄了。
或者呼叫失敗是因為API拒絕了它,根據幾個錯誤中的一個,你的程式碼需要在重試之前做一些事情,或者可能完全放棄。也許你還需要在呼叫之前做一些驗證。這都需要更多的程式碼。
然後,還有所有用於關注其他方面的程式碼:像日誌程式碼、安全檢查、將他們的傳統資料格式變成你的傳統資料格式、效能駭客等等。所有這些都是實施所必需的,這些只是你程式流程的一部分。
如果我們剝去所有的驗證、日誌、安全、最佳化、重試和錯誤處理程式碼,我們想要的實際的、基本的演算法是什麼?它是否真的有效,或者即使一切都實現得很完美,設計從一開始是否就有Bug?
這就是形式規則的內容。你將所有的複雜性濃縮為 "我們要麼得到API資料,要麼得不到API資料",這樣你就可以停止考慮有關解析API的相關錯誤資訊,從而專注於大的系統。
規則規範不是程式碼。
 
當然,後來你也可能發現 "解析API錯誤資訊 "足夠重要,以至於你想把它列入規則。而且你可以選擇這樣做。
關鍵字是 "選擇"。你只需要指定對你來說很重要的東西。

 

相關文章