測試和正確性論證的效果差別
- 測試:測試通常分爲功能性測試和邊界條件測試,功能性測試是爲了保證程序可以完成要求的正常功能,邊界測試是測試邊界條件,好比遊戲中地圖越界的問題,通常來講,若是不能正常處理邊界條件,程序崩潰也是常常的事情。測試的優勢是 效率比較高,缺點是即便全部的測試點都過了,也不能保證程序沒有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
UML圖中能夠看出,單線程ALS電梯結構比較簡單,至下而上首先是調度輸入處理InputHandler,返回的Request集合經過main函數傳遞給Scheduler類,而Scheduler調度時結合電梯燈的狀況,結果經過OutputHandler輸出到控制檯。
時序圖
狀態圖
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。
- 課程後期的測試部分,惡意扣分比較嚴重,而且繁瑣的正確性論證佔用了大量的課餘時間。