OO第四次博客做業

1、測試與正確性論證的效果差別java

  測試,顧名思義就是咱們暴力用大量數據轟炸編寫的程序的過程。平常的OO過程當中,咱們常常互相尋求「測試集」,正是由於測試使用特定數據對咱們的功能進行鍼對性測試,好處在於能夠很直觀很明顯的找到bug所在,而且復現性也很強。可是偏向於窮舉,也就是咱們日常對於本身的數據集太小,而擔憂本身有沒有徹底覆蓋全部的可能,即便本身測試的過程當中沒有發現問題,也內心惴惴不安,從而尋求更大測試集。這種方式便於實現與分析,可是不能徹底驗證程序正確性。編程

  正確性論證,就是經過分析需求,撰寫規格後,論證程序符合規格的過程,偏向於驗證程序的思路走向,邏輯判斷等問題,即程序有沒有按照咱們設想的執行。能夠從根本上保證其實現正確,總體剖析了執行過程,但並不經過具體數據,而是理論分析,因爲判斷多爲布爾型語言等,編寫過程和閱讀會比較費時間,可是驗證上很是簡單。安全

  就我我的來說,從測試中受益不淺,由於大量的測試數據集的確爲我de了很多bug,而正確性論證雖然理論上講不須要付出那麼多精力就能夠確保本身程序正確,可是我實際並無那次做業真正使用它完成檢查過程,但願能有一個機會完全讓我瞭解正確性論證的優越之處。多線程

2、OCL語言與JSF規格框架

  OCL是對象約束語言,用來進行對象的約束及定義,主要用於在建模時做爲圖形符號的補充,含有約束,前置條件,後置條件等。不變量是在屬性的生命週期內保持爲真的規則,前置條件是一個操做被調用時須要知足的約束,即知足規格要求。後置條件是操做結束後必定爲真的約束,即完成了什麼操做。監護規則是對象從一種狀態轉變爲另外一種狀態前值必須爲真的約束。測試

  他們的相同點在於他們都是形式化的約束語言,在程序中進行無二義的邏輯約束。結構上也具備類似性,OCL主要包括的不變量,前置條件,後置條件,監護規則分別對應JSF對應着repOK(),REQUIRES,EFFECTS和MODIFIES。spa

  他們的不一樣點在於做用的時間不一樣,OCL主要是在編寫程序前,理論建模時刻對每一個類進行明確的約束,而JSF主要在功能實現前進行約束以確保程序邏輯實現正確。線程

3、第十四次做業模型圖設計

UML類圖3d

UML時序圖

狀態圖

 

4、學期總結

一、四個單元模塊知識點之間的關係

  第一單元從多項式計算到傻瓜電梯,主要創建了從面向過程到面向對象編程的思想轉變,在代碼的編寫中體會java面向對象的思想,把一個程序的執行分散到對象中,去符合高內聚低耦合的規則,便於修改和理解。

  第二單元擴展電梯功能,引入線程的概念,同時處理多個任務是咱們本次的要求,多線程在帶來高工做效率的同時,也引入了線程安全的概念,如何保證進程的互斥和資源的共享成爲了咱們最須要注意的問題。

  第三單元引入規格化設計,在程序功能逐漸完善同時,也要考慮到咱們的代碼可否被他人看懂,可否便於移植,因此咱們更要考慮程序實現中規格的規範,經過前置條件,後置條件對調用方法進行規範,對正確性進行統一的驗證。

  第四單元主要引入了不少自動化測試,咱們在保證程序功能正確的同時,程序規模也會日漸增長,此時經過人工處理,判斷成爲難事,一是基於輸入藉助軟件生成自動化覆蓋測試,而是經過理論層面論證程序正確性。

二、梳理與進步

  程序功能上,明確了類的分工,經過抽象,繼承對每次做業的功能進行劃分,防止出現功能太多或太少的類,儘可能均衡,而且便於各個類的擴展,精簡代碼的邏輯和行數,命名的精簡和見名知意性,加強其可讀性和可維護性。

  測試方面,對於測試的進行了從無腦的覆蓋,到針對分支樹的測試數據設計,到數據與正確性論證的結合,更加工程化,更加合理。

三、對工程化開發的理解

  工程化開發,在我看來是在寫代碼的漫漫長路上轉階段的一步,是從做業到項目的轉變,由於做業能夠是一我的完成的,你寫的邏輯,你測試的方法你本身知道就能夠工做,可是項目中,咱們須要考慮到不少事情達成共識,例如變量的命名規則,類的設計,接口的統一,只有明確了這些,纔可以保證代碼能夠互相開發,互相閱讀,互相協做,一個明確的規範就是工程化開發的第一要義。

四、指望與建議

  指望把規格撰寫的要求從第一次做業開始佈置,這樣的好處在於咱們能夠在一開始就對本身的程序使用框架來安排好各個部分和方法是實現,以防出現須要重構的狀況,而且取消JSF的扣分,以便於同窗們壓力過大,增強對於面向對象思想的檢查,再考慮功能的實現,能夠先留幾回規格框架的檢查。同時也要感謝老師和助教一學期以來的付出!

相關文章
相關標籤/搜索