隨著社會上各公司業務的發展,專案越來越多,越來越大,複雜性也越來越高。查詢乙個bug變得越發抓狂;新人熟悉一塊**也變得越發困難。有的時候順手寫下的一行充滿壞味道的**,可能當時不會出現什麼影響,而且當事人也十分清楚自己寫的東西。但是,當日積月累之後,這種壞**越來越多,整個專案就變得混亂不堪,牽一髮而動全身,各種錯誤,修復了這影響了那。久而久之,規格化**就成了不可或缺的一部分,其重要性不亞於**本身。
而要解決前面說的這些情況,必須要有乙個規範來進行約束。不以規矩不成方圓,而且,這些規範必須也要有比較持續穩定的**審核機制來支援。所以,當下規格化設計越來越受到人們的重視。
\*
*@overview:
*\
幫我測試的同學認為這裡要寫在同一行,而不是三行,理由是課件上是寫在同一行的。其實當時的初衷是這樣寫能夠讓對面看的時候輕鬆一些,豈料想被報了乙個bug……言歸正傳,雖然jsf規格方面沒有被挑出過多bug,但這並不意味著自己的jsf足夠規範。
名稱before
after
盡量使用布林表示式
@requires:long型別的wait_time
@requires:wait_time== long type
過多使用自然語言
@requires:int型別的pos_x
pos_x == int type
缺失@requires:none
@requires:sc!=null
考慮當前方法所使用的某個屬性的範圍
@requires:this.state == int type,this.id==int type
@requires:0<=id<=99,0<=this.state<=3
構造方法中傳入的某些物件型引數應有效
略@requires:taxi_gui has been initalized
名稱before
after
布林表示式
@effects:\result為long型別
@effects:\result == long type
從未使用謂詞邏輯
以計程車陣列的初始化為例
@effects:\all car[i].stats;0<=car[i].state<=3
這幾次作業功能性方面一共被挑了三個bug。
在寫每個方法前,都會先確定該方法需要的引數,由此便確定了前置條件;接著,思考該方法的目的,進而確定modifies;最後思考該方法執行後的效果來確定effects。三次作業寫下來,不再有前兩個月的寫**時那種山一般的感覺;反之,這三次的**更注重培養對於細節把控的能力,以及對規範化設計思想的理解。
第三次部落格作業(OO)
一 規格化設計的大致發展歷史 軟體形式化方法最早可追溯到20世紀50年代後期對於程式語言編譯技術的研究,即j.backus提出bnf描述algol60語言的語法,出現了各 種語法分析程式自動生成器以及語法制導的編譯方法,使得編譯系統的開發從 手工藝製作方式 發展成具有牢固理論基礎的系統方法。形式化方...
OO第三次總結部落格
因為很難尋找,所以參考了下別的同學的調研結果 規格化設計與結構化 模組化設計密不可分,伴隨著oop語言的發展,規格化設計思想逐漸形成體系,慢慢完善。20世紀60年代,程式的模組化設計思想被提出。伴隨著計算機行業的迅速發展,為了解決程式可靠性等問題,結構化 模組化的設計為程式設計師提供了使用介面。每個...
OO第三次部落格作業
程式中的規格化設計的發展歷史,與計算機的發展歷史 程式設計設計的發展歷史是緊密相連,密不可分的。從1940年的面向機器程式設計,到之後的面向過程程式設計,逐漸出現了我們現在使用的各個語言的原始版本。而隨著 量的不斷增加,程式功能的不斷複雜化,簡單的面向過程程式設計不再能夠滿足人們的需要,因此,出現了...