測試與正確性論證的效果差別多線程
關於方法的測試,是針對規格設計相關測試樣例,驗證該方法在執行測試樣例後可否能得到與預期相符的結果,是實驗層面的驗證。測試
而正確性論證則是在方法規格的基礎上,從理論上論證該方法的代碼可否作到與規格相同的EFFECTS效果,是邏輯層面的驗證。spa
兩者互有優劣。線程
測試:須要儘量窮盡全部狀況並構造測試樣例,可是實驗更直觀,不易出錯。設計
論證:在邏輯層面論證,比較抽象,可是更全面,可是不直觀。對象
OCL語言與JSF規格blog
對象約束語言簡稱OCL(Object Constraint Language),它是一種用於施加在指定的模型元素上約束的語言。OCL表達式以附加在模型元素上的條件和開發
限制來表現對該對象的約束,其中包括附加在模型元素上的不變量或約束的表達式,附加在操做和方法上的前置條件和後置條件等。數學
對象約束語言是一種形式化語言,它主要用於表示UML模型中施加於模型上的約束。class
OCL表達式能夠附加在模型元素或模型元素的屬性和操做上表達一個約束條件。
與JSF相同:
1.都有前置條件和後置條件。
2.都是沒有反作用的申明性形式性語言。
3.都是精確無二義的語言。
與JSF不一樣:
1.JSF注重於類的數據規格和方法規格。強調使用數學語言。
2.OCL注重於對類的約束,OCL取了天然語言和數學符號的折中方案,使用普通的ASCII字符來表達數學中一樣的概念。
UML類圖
UML順序圖
UML狀態圖
學期總結
1.四個模塊間關係
第一個模塊注重基礎練習,剛剛接觸Java,練習使用Java思想和基本工程化能力。
第二個模塊開始多線程,練習數據共享處理,加強工程化能力,須要第一模塊基礎支持。
第三個模塊是規格化設計,規範好的風格,在正確功能基礎上設計好規格。
第四個模塊則是正確性檢查,驗證前面的設計。
2.程序的進步
從第一次做業開始,徹底不會Java的c式寫法,沒有封裝,單個類賊長,設計無頭緒,測試簡便,代碼風格垃圾,到了終於再也不是那麼菜。
半年的做業,學會了封裝,學會了好的設計成功一半,而再也不是全部功能堆在一塊兒。
學會了構造大的儘量覆蓋的數據集進行測試,以及壓力邊界測試等等。
學會了寫出一手不那麼難看垃圾的代碼。
3.工程化開發的理解
大概就是對於不斷改需求增長需求的應對吧。
這就須要一個好的設計,還有就是封裝。代碼風格必定要好,不要有過長的方法。具備良好的功能擴展性。這大概就是我獲得的教訓。
4.對課程的指望
但願獲得對等的信息,解決每一個答疑羣以及issue上回答不一樣的結果。
但願互測樹在測試階段開放,本身覺得無所謂的點,也沒扣本身測試的做業,到最後本身被扣了十幾個。
加大對於惡意扣分處罰力度,避免亂扣分現象。
但願在一開始就告訴你們要怎樣寫好的風格,否則後期寫JSF和正確性論證改來改去。