1.論述測試與正確性論證的效果差別,比較其優缺點。多線程
測試與正確性論證的差別是,測試是從實踐角度進行的,以大量的各類不一樣的數據來驗證代碼的正確性或是發現bug。而正確性論證是從邏輯推理角度進行的,相對於測試即便有大量數據也可能沒法覆蓋各個分支的狀況,正確性論證能夠徹底覆蓋代碼全部的可能性。只要正確性論證的過程沒有錯誤,也就能夠證實程序是正確的。可是從難度來講,正確性論證的難度是要遠遠大於測試的。由於能夠進行黑盒測試,無需瞭解代碼內容。而正確性論證則是須要測試者須要深刻代碼的實現,去逐個論證代碼實現是否嚴格遵照規格內容。在繁瑣的過程當中出現了一步錯誤都不能得出最後正確的結論。兩者各有優缺點,在使用時應該是相互輔助的關係。在完整一份正確代碼的工做中,兩者缺一不可。學習
2.調研OCL語言,並比較其與課程所介紹的JSF規格之間的類似和不一樣之處。測試
同:兩者都是形式化,聲明,約束性語言,本質都是前置條件向後置條件的一個導向,對過程規格的關心程度有限。同時,兩者都使用了數理化的邏輯,可是出於天然語言的轉化困境,兩者也都創立了一部分數理邏輯語言以外的,便於規範的新語法。spa
異:OCL語言有JSF語言所沒有的監控條件部分,使得做爲一種約束語言的約束真值表達性更爲強大,同時,OCL的語法結構相較於JSF更爲複雜,這使得他更便於規格的書寫,但難於對於規格的驗證。JSF語言比較於OCL語言多了Modifies域,更好的可以讓書寫者完成變量監控,同時JSF語言對布爾表達式的數理邏輯依賴性更強,這對書寫者提高了抽象性的難度,可是在驗證正確性和進行遷移的時候更爲方便。線程
3.UML類圖:設計
4.時序圖:3d
5.狀態圖:對象
6.四個單元模塊知識點之間的關係blog
這一學期咱們學習了四個單元的知識。系統的瞭解了面向對象程序設計的過程以及工程化的開發過程。第一單元做爲基礎入門單元,介紹了面向對象程序的特色及描述方法等,讓咱們對面向對象有了初步的瞭解;第二單元開始,咱們開始寫多線程程序。這一部分介紹了多線程的實現機制、線程同步、衝突問題等,將多線程這個概念帶入到了個人腦海中;第三單元則在多線程程序的基礎上添加了規格描述的過程,主要介紹了JSF的規範書寫和程序的規格化設計,這一部分重點就開始從寫程序轉移到設計與規範了;最後,第四單元着重介紹測試,包括JUNIT測試和正確性論證,重點又從規格轉移到了測試。開發
7.心得體會
這一學期,這門學科,給我留下了太多回憶了。基本上人能夠有的情緒在這門課中都已經出現過了。有完成做業,正確性頗高時的喜;有被莫名扣掉不少bug的怒;有還沒完整完成就提交的憂;有期盼本身每次成績的思;有由於本身能力不足而無效的悲;有到了最後ddl時還在猛趕做業的恐;還有得知本身應該不用去補給站的驚。種種複雜的情感,一週一週的在我心中呼嘯而過,周而復始。要是比喻的話,說oo是獻給當心髒的過山車應該不過度吧,並且一坐就是一個學期。我水平很低,只能經常爲本身會不會進補給站而掙扎。不過在一次次掙扎中,也確實學到了不少知識。更重要的是,oo教會了我面對各類各樣的需求時該如何思考,而不僅僅是上來就埋頭傻幹。我認爲這纔是最寶貴的東西。