1、程序測試是指測試者特地挑出一批輸入數據,經過運行程序,檢查每一個輸入數據所對應的運行結果是否符合預期要求。java
正確性證實是論證程序達到預期目的的通常性陳述,而該論證與程序輸入數據的特定值無關,可以表明窮舉性測試。編程
而Dijkstra說過「程序測試只能證實程序有錯,不能說明程序正確」。除非進行窮舉行測試。由於就單獨一個測試用例而言,不能確定程序在這個用例的方面沒有出錯。並且,窮舉性測試對於大型程序而言,一是比較難以實現,二是這樣測試費時費力,得不償失。而正確性論證則是從邏輯推理的方面,論證程序可能的輸入對應相應的輸出,不須要窮舉,也不須要特定的用例。這種方法的缺點是論證必定要嚴密,並且要考慮全部的狀況。因此,在實際的測試中,一般會二者結合使用。多線程
2、OCL(object constraint language) 對象約束語言。用來進行約束定義的,形式化的無二義的語言。OCL於1995年由Warmer等人,在IBM設計成功,並開始使用。1997年UML的1.1版本正式採用OCL。, OCL做爲圖形符號的補充,說明建模元素的有關細節,例如:約束,前置條件,後置條件等。測試
OCL原則主要有:聲明性語言,不會改變模型中的內容;形式化語言語言無二義規範語言;類型性語言,每個表達式都有類型;易學好用。線程
OCL做爲形式化語言,基本語言要素包括:類型(基本類型,高級類型)、操做、表達式、語句。OCL的基本類型包括整型,實型,字符串型,布爾型。OCL定義的高級數據類型有羣,集合,袋和序列.其中羣是抽象數據類型,集合,袋和序列是羣的子集。設計
接下來有幾個OCL的例子:對象
1.blog
context Person inv:開發
Person.allInstances->forAll(p1,p2|字符串
p1<>p2 implies p1.name <> p2.name)
對類Person的全部對象實例,要求它們的名字必須惟一
2.
context Person inv:
let income = self.jobsalary->sum() in
if isUnemployed then
income < 100
else
income >= 100
endif
對類Person的收入是工做薪水求和,但有限定條件.
OCL與JSF都是一種約束語言,都是爲了幫助別人更好的理解咱們所寫的程序,他們都有前置條件,後置條件,均可以用來約束操做。可是OCL應用更爲全面,OCL表達式的上下文表示這個表達式所做用的範圍,能夠是類,類的屬性和操做。而JSF不能作到,並且OCL的語言更加規範,每一種數據類型都有本身的操做方法,OCL的語言更容易理解,保留了不少天然語言的寫法。JSF是相對來講構造起來簡單,可是描述並不簡單,稍顯複雜。
3、第十四次做業整理的UML類圖,順序圖,狀態圖以下。
類圖:
順序圖:
狀態圖:
4、
1.本學期咱們一共有四個模塊,第一個模塊主要是讓咱們熟悉java環境,寫一些簡單的程序;到第二個模塊,就增長了多線程編程,初次接觸仍是挺難的;其次是工程化開發,對於多線程編程提出了更高的要求,也有了更多的感悟;最後是測試本身的程序並編寫規格,這是爲了讓咱們更加領悟工程化方法的精髓。
2.對於本身而言,本學期仍是有不少收穫的。原本本身對java沒有一點基礎,也沒有接觸過,因此開始的代碼寫的不好勁,明顯是面向過程式的編程,但後來隨着課程的深刻,本身也對java開發有了更深的理解,到後面幾回做業,bug明顯就少不少了,本身不只在代碼質量上有了進步,更主要是設計思想有了變化,我以爲這是很關鍵的,知道從整體去構造一個程序,而不是盲目的去瞎寫。
3我認爲工程化開發吧,就是從系統或者更高的層面來看待一個程序吧,高屋建瓴大概就是這種感受。一個工程,相對來講,是一個比較大的對象,萬丈高樓平地起,得從底層就爲它打好基礎,使用更規範的寫法,命名,以及編寫測試用例,方法更加簡潔,單一等等,我以爲這都是本學期OO帶給個人工程化的感悟吧
4.最後,祝OO越辦越好。