OO面向對象 課程總結

測試正確性論證的效果差差別

測試正確性論證都是對程序進行可靠性的驗證。java

測試:

IEEE提出了對軟件測試的定義:使用人工或者自動的手段來運行或測定某個系統的過程,其目的在於檢驗它是否知足規定的需求或者弄清預期結果和實際結果之間的差異。它是從對程序的實際操做來對運行結果和指望的結果進行比對,實質上只是一種抽樣檢查,只是一種查錯的手段,它能夠幫助人們去發現程序中的錯誤,但不能證實程序中沒有錯誤,即:測試不能證實程序是正確的。測試又分爲黑盒測試和白盒測試:正則表達式

  • 黑盒測試把測試對象看作一個黑盒子,測試人員徹底不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試又叫作功能測試或數據驅動測試。
  • 白盒測試把測試對象當作一個透明的盒子,它容許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序全部邏輯路徑進行測試。經過在不一樣點檢查程序的狀態,肯定實際的狀態是否與預期的狀態一致。所以白盒測試又稱爲結構測試或邏輯驅動測試。

正確性論證:

相對於測試,正確性論證是經過嚴格的數學和邏輯推導證實程序是否符合規格說明。程序正確性理論提出編制正確程序的兩種途徑:一種稱爲程序驗證,研究如何使用數學推理來嚴格論證程序是否符合其目標.另外一種稱爲程序綜合:研究如何由給定目標出發,逐步構造一個在計算機系統上可運行的程序,並且要求構造過程的每一步都是嚴格保持正確無誤的。正確性論證過程當中經過嚴密的邏輯和布爾表達式來對全部的狀況進行分析論證,缺點是步驟繁瑣篇幅較長,可是更加全面和有力。express

OCL(Object Constraint Language)和JSF的比較

對象約束語言簡稱OCL(Object Constraint Language),是一種用於施加在指定的模型元素上約束的語言。OCL表達式以附加在模型元素上的條件和限制來表現對該對象的約束,其中包括附加在模型元素上的不變量或約束的表達式、附加在操做和方法上的前置條件和後置條件等。編程

相同點設計模式

二者都是對象約束語言,都對附加在模型元素上的條件和限制來表示對該對象的約束,包括了不變式,附加在操做和方法的前置條件和後置條件等。安全

都是規範的,精確的,無二義性的說明性語言。多線程

都不是程序設計語言,不能編輯和控制流程。併發

不一樣點框架

OCL語言更加完備和嚴謹。學習

一、它在預約義的標準類型定義了一組基本類型和集合類型,集合包括了抽象數據類型Collection,Set,Bag,Sequence等。JSF沒有作具體的定義和約束,更多的是跟着java的語法來定義。

二、同時OCL也是一種查詢語言,它的表達式可以求出系統中任何值或者值的集合,具備了和SQL相同的能力。JSF沒有這種功能。

三、它描述了四類約束,分別是不變量,前置條件,後置條件,監護條件。而JSF描述了不變量,前置條件,後置條件,修改域。

四、OCL中有些特殊操做能夠做用於整個集合,集合的操做語法是源對象集合加->操做,還有限定關聯,關聯類,泛化,過濾器等複雜的高級操做。

如下是OCL的一些基本語法:

PrimaryExpression:=literalCollection | literal 
| pathName time Expression ? FeatureCallparameters?
| "(" expression ")" | ifExpression
Literal:=<string> | <number> | "#" <name>
timeExpression:="@"<name>
featrueCallParameters:="((declarator)?(actualParameterList)?")"
ifExpression :="if" expression "then" expression "else" expression "endif"

電梯

類圖

時序圖

狀態圖

面向對象課程總結

四個單元知識點

四個單元分別爲: Java和麪向對象基礎、面向對象與多線程開發、規格與文檔、測試與正確性論證。

前兩個單元以實踐爲主,第一個單元讓咱們瞭解了面向對象的基本理念和思想,學習開發JAVA程序,從面向過程的編程思想轉移到面向對象的開發。第二個單元是多線程和麪向對象的開發,這個單元寫了電梯和出租車調度程序,文件管理系統,對多線程有更加深刻的理解。

後兩個單元以理論論證爲主。規範化了文檔和規格的書寫,這在之後的大型程序設計當中是十分重要的能力。同時學習了對程序進行正確性的判斷,測試方面學習了Junit,用Jsf語言對程序的不變式、前置條件、後置條件等進行書寫,同時論證程序每一步的邏輯正確性。

四個單元也是按部就班的,首先對面向對象的基礎知識進行了解,接着注重多線程安全與併發,設計方面的規格,最終的測試和正確性論證,造成了對整個面向對象程序開發體系。不過對於規格的書寫和文檔的書寫實際上是要先於程序的,這個老師在上課也強調了,先設計出程序的框架和規格,再進行程序的書寫。

我的進步

面向對象從0開始,在此以前幾乎沒怎麼寫過程序,這學期能夠算是寫程序最多的一個學期了。

從一開始把面向對象寫成面向過程,正則表達式瞎用,到後面學會了多線程編程,面向對象的思想,熟悉Java語言的使用,這一路下來也收穫了不少。

每次做業的代碼都會進行屢次修改,直到邏輯框架清晰,每一個類和方法都十分簡潔爲止,也會參考一些大佬的框架,本身翻書學習設計模式,應用到了程序上面,好比單例模式,工廠模式等。

工程化開發

要作出一個成功的軟件絕非易事,大體要經歷業務交涉,需求調研,技術調查,設計實現,測試以及後期的維護,工程化開發是講究效率的提高,成本的下降的開發。
良好的工程化開發須要部署一個好的開發環境,嚴格遵循開發流程,製做合理的工程表。
從團隊層面,每一個團隊的每一個成員都有義務和必要一塊兒推動工程化,找到符合團隊的工做習慣和規範。
從我的層面,良好的工程化,能下降溝通成本,實現更好的協同,節省開發和測試人員的重複勞動,下降發佈的常見問題等等,通過有效實踐,工程化的推廣還能極大地縮短開發週期。

課程建議

但願指導書更加清晰,每次在issue上的問題沒有看清楚就十分坑了。

相關文章
相關標籤/搜索