1、測試與正確性論證的比較git
同:都是對代碼正確性的論證程序員
異:編程
(1)測試:多線程
測試是隨機產生知足前置條件的輸入,經過比較輸出和後置條件,從而論證其正確性。eclipse
優:簡單易行,對於測試者而言相對容易,能夠更快地得到正誤反饋,效率高。佈局
劣:測試是隨機的,不能全面的覆蓋到各個方面,極可能錯在未考慮到的bug。單元測試
(2)正確性論證學習
論證是喲啊根據規格和代碼,進行邏輯分析,確保全部知足前置條件的輸入都能獲得知足後置條件的輸出。測試
優:形式化的邏輯推理,嚴格的論證,確保沒有bug的存在。spa
劣:可是邏輯論證中可能存在邏輯錯誤。
2、OCL語言和JSF規格的類似與不一樣
OCL語言是用來進行約束定義的形式化的無二義的語言。不會改變模型中的內容。
同:
一、二者都基於謂詞邏輯,採用了形式化的數學語言來進行描述。
二、都有前置後置條件的約束。
三、都沒有理解上的二義性。
異:
一、OCL支持上下文,可是JSF不支持;
二、二者的語言符號不徹底相同;
三、OCL的語言體系更加完善,能夠表達更多的信息,而JSF更多的是一種輔助性的描述。
3、UML表示
4、學期總結
一、四個單元模塊知識點的關係
第一個單元的三次做業難度很小,主要是爲了讓咱們熟悉JAVA編程,熟悉eclipse編譯器,熟悉git的使用。第一次做業經過JAV程序與CPP程序的對比,讓咱們的編程思惟做出改變。第二次做業的傻瓜電梯讓咱們開始熟悉面向對象的編程方式。第三次做業是對面向對象的編程方式的一種增強訓練。
第二個單元開始學習多線程,從最初的多線程電梯,到文件監控再到多線程出租車,多線程套餐是整個課程最難的一部分,也是花心思最多的做業。從最開始接觸多線程電梯的一臉茫然,到後來多線程出租車的時候,實現安排好佈局,從而可能出現的新功能預留接口,是本身的編程思惟的一種改良。
第三個單元是JSF的學習。經過預先寫好規格,能夠很大程度上簡化咱們的工做,讓編程工做有條不紊,事先的規劃能夠幫助咱們不管在編程仍是debug的過程當中,顯得遊刃有餘。
第四個單元是測試和論證。JUnit單元測試和正確性論證能夠很大程度上提升咱們的代碼正確性,是對本身的代碼的一種自檢測,確保本身所寫的代碼擁有普遍意義上的正確性。
這四次做業儼然是從入門到精通的思路。從學習最基礎的編程,到更高難度的編程,再到對自我代碼的評判。按部就班,受益良多。要說的是,課程對於如何自檢測本身的代碼所用的篇幅不少,這也是一個程序員優劣的重要標誌。
二、個人進步
通過四次做業,從徹底不懂面向對象的編程方法甚至不懂JAVA,到熟悉面向對象的編程手段,並體會這種方式帶來的益處,學會了如何保證本身的代碼質量而非簡單的隨緣debug,這不僅是簡單的編程能力提高,更是從思惟上的一種轉變。
三、對於工程化開發的理解
聯繫大二上學期的計算機組成原理課程的工程化開發方式,對工程化開發有以下理解:
一、工程化開發方式採用的是一種搭積木的開發手段,它能保證工程的普適性,不會由於我的的風格差別,致使整個工程的崩塌;
二、工程化開發方式是針對大型工程的開發所適應的手段,在針對小型工程是沒有明顯效果,甚至須要更多時間。這也是初學者不肯意學習這樣的開發方式的緣由,限制了他們個性的發揮,而且枯燥。但這並不意味着這樣的開放方式是無用的。這是從低階到高階的必經之路。
三、工程化開發方式經過一套完整的流程限制,增長編程流程,提升了複雜度,下降了思惟難度。
四、對課程的指望或建議
我的做爲OO課程的受益者,可是剛開始不熟悉JAVA,經歷了不少困難,但願能夠增長一到兩次的基礎做業,從而對於初學者更加友好。
但願OO課程愈來愈好。