測試與正確性論證
測試是經過構造一系列測試數據,經過對比程序的實際運行結果和預期輸出結果來判斷程序是否有bug的一種手段。同時,在測試的時候是默認看不到程序的具體實現的,即進行黑盒測試,例如每次OO做業的互測階段。測試的具體方法是將輸入進行劃分,經過構造一個錯誤分支樹,而後每一個分支構造一個或多個測試樣例來對程序進行測試。其手段簡單,易於實現,一般狀況下能夠覆蓋大多數狀況。但也能夠看到經過測試的話是須要大量的測試數據的,若是在輸入很麻煩的狀況下,須要花費大量的時間。同時,就算全部的測試輸入都是正確的,也不能保證程序的正確性,這一樣是其缺點所在。java
正確性論證和測試不一樣,是經過推敲程序的具體實現來論證程序是否正確,例如第十四次做業。其具體過程是對程序的每個模塊,每個方法,經過數理邏輯的推導加上大量的文字描述將程序的整個邏輯梳理一遍。它的優勢是很明顯的,就是若是程序經過了正確性論證,那麼這個程序的實現必定是正確的。可是缺點在於論證正確性須要大量的文字描述,工做量很大。算法
OCL語言與jsf
OCL對象約束語言是用來進行約束定義的,形式化的無二義的語言,於1995年由Warmer等人,在IBM設計成功,並開始使用。編程
OCL做爲形式化語言,基本語言要素包括: 類型(基本類型,高級類型),操做,表達式,語句。安全
OCL語言做爲圖形符號的補充,說明建模元素的有關細節,例如:約束,前置條件,後置條件等。 多線程
OCL語言雖然是一種形式化語言, 可是它既具備形式化語言無二義性的特色, 又消除了形式化語言的複雜性。二者具備很強的類似性,即都是對於規格的形式話進行約束的語言。相比之下,jsf的主要組成是布爾表達式,能夠說是簡化版的OCL。OCL的要求更加嚴格,也更完善,但實現相對複雜,在要求不是很嚴格的狀況下,使用jsf更能事半功倍。模塊化
第十四次做業的UML
UML類圖
UML順序圖
![](http://static.javashuo.com/static/loading.gif)
UML狀態圖
![](http://static.javashuo.com/static/loading.gif)
總結
- 第一單元主要是讓咱們熟悉java的初級知識以及開始接觸面向對象的思想。第一次做業的多項式做業要求不算嚴格,只須要用java完成便可。第二次和第三次做業則是在第一次左右的基礎上新增了要求必須進行類的劃分,這能夠簡單理解爲開始oo編程。因此,經過第一單元的練習咱們纔算是oo初級入門。第二單元則主要是多線程,其中多線程設計的知識點不是很難,難點在於數據的共享和線程安全的實現。例如第五次做業的多線程電梯,這也是大多數同窗的第一次oo通宵,此次做業的難點在於如何協調時間的同步問題以及線程之間的互斥訪問。oo做業的特色在於代碼能夠在很短的時間以內寫完,但剩下還須要花不少時間來完善細節和bug的修復。可是接下來的第六次做業的代碼量倒是有點超乎想象,因爲我本人在一開始寫時思路有些問題,因此浪費了大量的時間在一個錯誤的算法上,固然最終此次做業的完成效果天然是很差的。第三單元開始進入了jsf的書寫,經過這一單元的練習我對代碼的規格化書寫又有了新的認識,也認識到了代碼規範的重要性。第四單元呢則主要是在前幾回做業的基礎上進行了部分修改,包括代碼的規範書寫,代碼的正確性論證,這個時候再翻看前幾回做業的代碼以爲真是慘不忍睹,不少莫名其妙的變量名以及一個方法超過100行等等,因此,我毅然決然的選擇重構了。總的來講,這四個單元之間確定是按部就班的關係,經過前面單元的練習來打好對後面做業的鋪墊。
- 經過oo這門課的練習本身也是收穫匪淺。前三次做業個人代碼都是一個形式,即主方法中構造一個類,而後這個類的構造方法又構造新的其餘類或方法來實現具體功能。一開始我還以爲這個思路時不錯的,但是後來仔細一想,這個和麪向過程有什麼區別呢,類與類之間沒有實現數據的交互,簡直就是麪條式代碼。因此後來個人設計方法有了新的變化,固然也參考了同窗的設計,首先要清楚各個類的職能,每一個類的變量和方法都作必定的限制,同時各個類之間儘可能不經過public屬性了來實現數據的交互,而是經過其餘的手段來實現數據共享。經過每次做業的練習,本身寫的程序也算有了一點面向對象編程的影子。
- 工程化即系統化、模塊化、規範化的一個過程。指將具備必定規模數量的單個系統或功能部件,按照必定的規範,組合成一個模塊鮮明、系統性強的總體。工程化每每包含大量學科和學科分支的知識,是一個複雜的系統工程過程。咱們的這門課程也涉及了不少工程化設計的思想,雖然本身的實際開發能力並無達到那個水平,另外我以爲咱們這門課接觸更多的是規範化,對設計並無強調得那麼多,因爲後面幾回做業是基於前幾回做業的,因此不少設計留下的坑也沒有注意,致使浪費了不少沒必要要的時間。總體這門課學下來對工程化的感受並非特別深入。
- 經歷了這學期,感觸仍是蠻多的,學天然是學到了不少東西,另外就是以爲這麼課還蠻有意思,比其餘不少(其實也就幾門)吹上天的專業課體驗要好,多是老師太負責助教們又太認真了吧。而後是說一說本身的建議,我我的感受平時的做業量有點大,倒不是由於完不成,而是在這樣做業壓力下,大多數同窗的重點是完成這門課的做業而不是認真聽老師講授內容,簡單說就是聽不聽課無所謂,週五的課直接在宿舍寫下一次做業了。因此仍是感受課程組能夠減輕一些做業量,如何增強課上講授的內容和平時做業的聯繫纔是最重要的。