OO第四次博客做業

測試和正確性論證的效果差別

  • 測試:測試通常分爲功能性測試和邊界條件測試,功能性測試是爲了保證程序可以完成要求的正常功能,邊界測試是測試邊界條件,好比遊戲中地圖越界的問題,通常來講,若是不能正常處理邊界條件,程序崩潰也是常常的事情。測試的優勢是 效率比較高,缺點是即便全部的測試點都過了,也不能保證程序沒有bug。
  • 正確性論證:正確性論證是從代碼邏輯的角度來論證代碼是否有無bug,優勢是可以全面覆蓋程序正確性,缺點是十分繁瑣,並且耗時多。目前各類招聘網站有不少測試工程師崗位,但卻沒有正確性論證工程師。可見,測試纔是通常商業項目開發的重點流程。

OCL語言調研

調研OCL語言,比較和JSF的類似和不一樣之處:
OCL(Object Constraint Language)直譯是對象約束語言,OCL最先是由IMB在1995年提出的business engineering language,後被採用爲正式規範語言做爲UML(Unified Modeling Language)的一部分,目前的版本是OCL 2.0。
OCL和JSF類似,也有Precondition、Postcondition和Invariant,定義和語法以下:html




可見和JSF語法上差別比較大,相同之處是二者都是形式化語言,起約束定義的做用。

第十四次電梯做業Graph

類圖UML

enter description here

UML圖

UML圖中能夠看出,單線程ALS電梯結構比較簡單,至下而上首先是調度輸入處理InputHandler,返回的Request集合經過main函數傳遞給Scheduler類,而Scheduler調度時結合電梯燈的狀況,結果經過OutputHandler輸出到控制檯。

時序圖

UML Sequence

UML Sequence

狀態圖

State UML

State UML

OO學期總結

模塊知識點

本學期OO做業基本概況以下:git

做業 主要完成功能
1 多項式處理
2 單線程傻瓜電梯
3 單線程ALS電梯
5 多線程ALS電梯
6 文件系統IFTTT
7 出租車:多線程
9 出租車:增長道路開關
10 出租車:增長紅綠燈
11 出租車:增長類規格和LSP原則
13 單線程ALS電梯:Junit4覆蓋測試
14 單線程ALS電梯:正確性論證

大體能夠分爲四個單元:正則表達式

  • 第一單元:Java基礎語法入門,掌握正則表達式
  • 第二單元:多線程電梯,掌握基本的多線程和互斥處理
  • 第三單元:出租車,繼續多線程,程序套上圖形接口
  • 第四單元:重構代碼、修復Bug以及規格化測試和JSF約束

設計、測試上的進步

本學期應該是大學以來代碼量最多的一個學期,收穫比較大。
感覺就是coding是最好的學習方式,看不太懂的東西,寫着寫着就會了。多線程

  • 模塊化:最開始寫的面向過程式、麪條式代碼,中期發現修改功能很是痛苦,後期重構代碼後可以保證大多數方法控制在40行之內。
  • 設計進步:在後期重構的過程當中,設計上可以各個類的功能更加清晰。
  • 程序規範:對各類變量的命名規範化,保證程序過一段時間還能看懂。

對工程開發的理解

  • 工程開發通常須要嚴格的規範,以便組內可以互相看懂代碼,好比命名和函數功能。
  • git、maven等工具在工程開發中比較重要。
  • 本身寫的接口須要提供文檔,方便別人使用。

課程建議

  • 多線程部分難度跨度比較大,入門就寫多線程捎帶電梯接受不來。
  • 對於Java SE的基礎語法考察覆蓋不夠,好比泛型、Collection框架和圖形界面如Swing。
  • 課程後期的測試部分,惡意扣分比較嚴重,而且繁瑣的正確性論證佔用了大量的課餘時間。
相關文章
相關標籤/搜索