作業小結4
測試與正確性論證的效果差異
測試
測試,就是通過自己對某個函數或者方法的功能,來自己構造測試數據,自己提前在腦子裏想好結果,然後,檢查自己腦子裏的結果和程序運行的結果是否一樣。如果一樣且覆蓋率達到了足夠多的成都,表明程序大概率正確。這種方法我認為有以下幾個優點:
- 歷史悠久,大家都認可
- 結果客觀,大概率不會出錯
- 定位bug很快速、準確和直觀
正確性論證
正確性論證,也就是分析需求、撰寫規格後,通過嚴密的邏輯論證來驗證程序的正確性,這要求我們完全理解需求,正確撰寫規格,同時全面細致的分析代碼是否實現了需求和規格,理論上說,它可以檢查出所有的邏輯bug。
個人看法
正確性論證,檢查的是代碼邏輯是否正確。
測試,檢查的是代碼實現是否正確。
二者缺一不可。雙劍合璧,才能寫出100%正確的代碼。
僅僅通過測試,可能某些邏輯還是有錯,尤其是邊界情況。
僅僅通過正確論證,代碼可能寫錯了。
因此,兩個都非常重要!!!OO這門課實在是很嚴謹!點贊啊!!!
OCL語言與JSF規格
OCL(Object Constraint Language)語言是面向對象設計中對圖形符號的補充,能夠完善建模元素的相關細節。其與JSF規格有相似之處,也有不同。
對象約束語言是一種形式化語言,它主要用於表示UML模型中施加於模型上的約束。OCL具有如下特點:
- OCL是一種精確的,無二義性的語言
- OCL是一種規範說明性語言,所有有關實現的問題都不能用OCL來表達
- OCL是一種純表達式語言,它是具有沒有任何副作用的申明性語言。
- OCL是一種類型化語言,即OCL中的每一個表達式都是具有類型的。
- OCL不是一種程序設計語言,不能用OCL編寫程序邏輯和控制流程。
OCL與JSF的相同點在於他們都是形式化的約束語言。OCL包括的不變量、前置、後置條件、監護規則對應著JSF中的repOK、REQUIRES、EFFECTS、MODIFIES。不同點在於OCL相比JSF要復雜的多。
相同之處:
- 都是一種形式化的語言
- 具有無二義性
- 每個變量都有類型
- 不會改變系統的運行狀態
- 都采用前置條件和後置條件對方法的運行加以約束
不同之處:
- 變量的類型:
OCL有自己的一套變量(如Integer, Real, String, Boolean, Set, Bag, Sequence)
JSF不僅支持Java語言定義的所有類型,還支持用戶自定義的類型(比如有一個Request類, 則可以在JSF中用Request修飾變量) - 變量的運算:
OCL對變量規定了可以進行的運算方式(如 Boolean類型的and, or)
JSF支持Java語言定義的所有運算方式 - 邏輯分支:
OCL支持if, else一類的邏輯分支。
JSF不支持if, else, while等邏輯分支。 - 上下文
OCL支持用context表達上下文
JSF不支持上下文表述。 - 符號系統
OCL用pre, post表達前置條件和後置條件
JSF用REQUIRES, EFFECTS表達前置條件和後置條件
第十四次作業的單電梯系統
UML類圖
順序圖
狀態圖
總結
這個學期真的學會了非常多。對這門課的理解絕不是Java和面向對象那麽簡單。這門課很牛逼, it‘s more than java and OO.
還教大學生學會了做人。太牛逼了這門課!!!
闡述四個單元模塊知識點之間的關系
第一單元,讓我們了解面向對象,初步認識它。
第二單元,認識了多線程編程。
第三單元,知道了設計方法和原則。
第四單元,學會了正確性論證。
他們循序漸進,缺一不可!過度很自然,老師講的非常好!非常喜歡OO老師和助教!
闡述自己對工程化開發的理解
工程化開發需要遵循一些特定的規則,不僅方便自己審查代碼,也方便代碼的交流理解,畢竟程序有不確定性且代碼規模日益增大,所以需要提高開發效率,降低維護難度,這是必行之舉。
工程化開發的一般流程:
需求分析-->概要設計-->詳細設計-->編碼-->測試-->驗收-->維護
需求設計:深入了解和分析用戶的需求,避免設計時不必要的改動。
概要設計:確定設計層次、模塊劃分、接口規範、數據結構、出錯處理等。
詳細設計:實現概要設計中各個模塊的算法、調用關系、說明每一個程序的設計考慮。
編碼:根據詳細設計補充代碼、完成系統的功能。
測試:對編寫好的代碼進行初步測試,通過後交給用戶,由其確認各項功能得到正確實現。
驗收:用戶驗收軟件。
維護:根據用戶需求和環境的變化,對程序進行部分或全部的修改。
軟件工程化的優勢
- 降低軟件系統的復雜性
- 提高軟件可靠性
- 提高開發、維護、測試的效率
- 減少系統內部的邏輯耦合
- 提高人員協作的效率
對課程的任何期望或建議
這門課賊棒!這麽好聽的課不應該翹掉。應該認真聽講。
對老師的話和對助教的話
謝謝你們!!!辛苦啦!!!繼續加油啊!!!
作業小結4