測試:從需求出發,構造測試集,給出指望輸出,能夠證實程序存在bug,可是沒法證實程序是正確的java
正確性論證:從程序最終實現出發,基於程序邏輯,經過假設、推理、論證,證實程序的正確性。小程序
兩相比較下,正確性論證具備更高的嚴謹性,可是也須要投入更大的時間精力。故兩種方法難分高下,有不一樣的應用場景,須要針對性使用。安全
OCL(Object Constraint Language),即對象約束語言,是一種用於施加在指定的模型(UML)元素上約束的語言。多線程
其特色爲:併發
1. OCL是一種精確的,無二義性的語言。框架
2. OCL是一種規範說明性語言,全部有關實現的問題都不能用OCL來表達。學習
3. OCL是一種純表達式語言,它是具備沒有任何反作用的申明性語言。測試
4. OCL是一種類型化語言,即OCL中的每個表達式都是具備類的。spa
5. OCL不是一種程序設計語言,不能用OCL編寫程序邏輯和控制流程。線程
OCL表達對模型元素性質的約束時,常使用以下三種形式:不變量、前置與後置條件、let表達式。
與咱們在課程中使用的JSF相比,OCL更多將重點放在對象內的數據項,而JSF是圍繞方法與類展開的。
同時OCL的約束能力功能強,可是JSF實現起來更爲輕便快捷。
二者的關係有些像上面論述的測試與正確性論證,使用的時候須要視狀況而定。
UML類圖
順序圖
狀態圖
4.1 四個模塊知識點之間的關係
第一單元:java與對象
課程:對象與對象化設計(1)、對象與對象化設計(2)、繼承多態與抽象
做業:多項式加減、單線程傻瓜電梯、單線程可捎帶電梯
第二單元:併發與安全
課程: java對象運行機制與多線程、線程的安全設計、面向對象的需求設計與設計原則
做業:多線程電梯、IFTTT、出租車
第三單元:抽象與規格
課程:過程抽象與異常處理、數據抽象、類型層次規格與迭代
做業:出租車+流量、出租車+紅綠燈、出租車+特殊出租車
第四單元:測試與論證
課程:面向對象測試、基於規格的程序正確性論證、如何更好地進行設計
做業:覆蓋率測試、正確性論證報告、UML模型
四個單元知識按部就班,可是又相互關聯。
4.2 本身的進步
從第一次做業的「java從入門到放棄」,到如今輕鬆寫出1k+行代碼,擁有了一套電梯系統,隨手召喚百輛出租車。OO一路走來,如今的自身的能力和作出的成果是三個月前,想都不敢想的。
開始兩次做業對java的不熟練消耗了大量的時間,不知如何抽象出對象,艱難地從面向過程向面向對象邁進,那個時候,一份在如今看來小case的做業,須要花上我幾天的時間,全身心投入地攻克,而且寫出來的代碼在如今看來,真的有些不忍直視。
接着進入多線程單元,猶記得本身和同窗討論了兩天,腦海中仍舊一片混沌,設計框架理了一遍又一遍,又一次次推翻否決。不得不說,空想是最浪費時間的方法,把思路寫出來、理清能夠更好地幫助咱們思考與解決問題。
進入了被最多吐槽的規格設計單元,坦白地講,我是質疑的、不滿的,甚至在不知道本身熬夜到底在寫着什麼的時候,是有些憤懣的。可是漸漸地,我以爲jsf沒有我想象中的那麼雞肋,咱們寫的小程序與大的工程開發就是小巫見大巫,也許jsf在咱們的代碼裏看起來是一種做業的負累,可是在大的工程開發中是團隊成員間的橋樑。
一個學期的課程結束後,本身的進步是巨大的:
盲目測試>>>從代碼中找bug
代碼行數50+>>>封裝、類層次劃分
亂用try catch>>>儘可能從設計保證程序魯棒性
固然抗壓能力和處事交流能力也獲得了鍛鍊:從一開始看到被報bug就會暴跳如雷,到理智面對。
4.3 對工程化開發的理解
說道工程化就想起了學習計組的時候,高老闆的工程化設計表格。不得不說,那個表格拯救了我混沌的大腦。
這個學期的OO課程學習又是一次工程化設計之旅。每次做業,接到指導書,分析需求;進行整個程序的框架層次設計;而後進行細化,完善每一個類的屬性功能細節;完成了這些準備工做就能夠着手碼代碼了。以後,對編寫的代碼進行測試;交做業,進行互測。
從這個做業完成流程中,能夠簡單地抽象出工程化開發的流程:
接到項目 --> 需求分析 --> 框架設計 --> 細化設計 --> 代碼編寫 --> 項目測試 --> 交付使用
感受工程化開發的核心就是將一些方法流程抽象成一個模板,進行嚴謹的、統一的規約,雖然不是十分靈活,可是在大的工程開發中能夠保證規範性,有助於團隊統一開發。
4.4 對課程的指望與建議
首先在課程體系上,但願在同窗們具有了java基礎後,先講授規格設計單元,讓同窗們養成根據需求撰寫代碼的好習慣,而不像咱們先寫代碼,而後根據代碼實現編寫JSF。
對於互測,但願進行更加嚴格的審查,避免惡意扣bug,這種行爲是很是過度的,應該進行嚴肅處理的。
另外,歷次做業的指導書也須要完善。在這學期,不少次做業的指導書都出現了漏洞和巨大的問題,而後助教組和老師進行商討後,又屢次改動,對同窗們作做業形成了很大的困擾。同時,也須要一個統一的、明確地信息發佈平臺,不少問題最後助教給出的答覆可能在不一樣的羣,issue上的答覆也可能有改動,可是這些不是全部的同窗都能知道,由於這些問題,不少的同窗都在互測中被報了bug,然而並非沒有能力實現的問題,而是給出的需求不統1、不明確的問題。但願課程組能重視這個問題,並在下一屆有相應的舉措解決問題。
記錄一下本身OO之路~
一個學期的課程就這樣結束啦,撒花慶祝,感謝課程組老師和助教們的辛苦付出~