1、測試與正確性論證html
程序測試(program testing)是指對一個完成了所有或部分功能、模塊的計算機程序在正式使用前的檢測,以確保該程序能按預約的方式正確地運行。軟件的正確性還沒有獲得根本的解決,軟件測試還是發現軟件錯誤和缺陷的主要手段。爲了發現系統中的錯誤,應竭力設計能暴露錯誤的測試用例。測試用例是有測試數據和預期結果構成的。一個好的測試用例是極有可能發現至今爲止還沒有發現的錯誤的測試用例。設計模式
程序正確性理論 [1] (theory of program correctness)程序設計理論的一個重要組成部分.研究如何使用程序設計語言編制程序,以正確實現預約的目標.程序正確性理論提出編制正確程序的兩種途徑一種稱爲程序驗證,研究如何使用數學推理來嚴格論證程序是否符合其目標.另外一種稱爲程序綜合,研究如何由給定目標出發,逐步構造一個在計算機系統上可運行的程序,並且要求構造過程的每一步都是嚴格保持正確無誤的.在保證正確性的前提下,爲提升程序運算效率而實現的程序之間的轉換,稱爲程序變形,也是程序正確性理論的一個重要內容.程序綜合和程序變形是自動程序設計的理論基礎.安全
其中正確性論證的抽象程度更高,可靠性更好,覆蓋路更高,可是相對成本也會更高,軟件測試和正確性論證須要在不一樣的場景中靈活運用,結合二者的優勢,纔會發揮更大的做用,收穫更好的效果。多線程
2、OCL(Object Constrain Language)架構
OCL,是一種指示用戶建模系統中的限制方式。它是UML可選的附加內容,能夠用來更好的定義對象的行爲,併爲任何類元指定約束。測試
特色:spa
1.是一種精確的、無二義性的語言,易於使用和掌握。線程
2.是一種規範說明性語言,它是具備沒有任何反作用的聲明性語言。對OCL表達式的計算將返回一個值,計算不會改變系統的狀態。架構設計
3.是一種類型化語言,即OCL中的每一個表達式都是具備類型的。設計
4.不是一種程序設計語言,,不能用OCL變現程序邏輯和控制流程。
JSF和OCL具備不少類似點,可是JSF的規範性不夠強,而且OCL具備不少類型,而JSF的類型較爲單一。
3、 捎帶電梯
1. 類圖
2. 時序圖
3. 狀態圖
4、學期總結
4.1單元模塊
四個單元模塊分別爲Java基礎、多線程和線程安全設計、抽象與規格、測試與論證。這四個單元模塊是按部就班的,又有所交叉的。首先Java基礎是認識面向對象,從對類的劃分,再到Java多線程,難度逐漸上升,至少類的劃分不能再是問題。在此基礎上,提出類對規格和抽象,逐漸上升到代碼質量的層次,最後是論證程序的正確性,工程化要求。
4.2 設計、測試、代碼質量分析
最初是徹底不會設計的,但一學期的訓練,至少懂得了該如何分析與設計,且不說設計的好壞,懂得了程序的設計對於程序實現的重要性,不一樣的設計在代碼實現上難度是不一樣的,而且在後期測試,論證等方面都能很明顯的體現出來,磨刀不費砍柴工,設計很重要。第二,測試是軟件工程中十分重要的一個流程了。程序是完成用戶的需求,而測試就是檢測相關功能是否實現,以及其餘邊界狀況。好的測試,會增長代碼的魯棒性,健壯性,以及可靠性,經過測試,可以更快的對整個程序的功能實現有所瞭解,爲後續的交付提供依據。第三,代碼質量,是設計,測試,代碼風格的綜合體現。想起本身之前的麪條式代碼,能夠說很是慚愧了。首先,在設計上了解了Java的相關設計模式,在測試上,懂得了魯棒性測試,以及分支樹測試,在代碼風格上,良好的縮進,合適的方法職責等。總的來講本身這一學期是從無到有的過程,確實是學到了不少東西。
4.3 工程化開發
一個工程,須要設計、實現、測試、論證等一系列工做的完成。工程是嚴謹的,是面向需求的,在實現需求的基礎上,減小實現成本,提升實現的可移植性。工程化開發具備多人合做性,即須要規範化實現,提升團隊的效率,減小錯誤的出現。我認爲大概步驟以下:
上面的過程並不只僅是次序關係,在整個工程的過程當中是有所交叉的。總的來講,工程化開發首先是面向需求,其次是規格化,提升團隊效率,減小錯誤。
4.4 對課程的指望與建議
當我置身事外來看OO時,其實感受OO這門課所教授的也不過是工業界的一角。咱們訓練的內容不過也是很簡單的東西,但對於我來講已是比較難了(當時以爲,如今活過來了,以爲還好)。對這門課的指望,也許就是更加公平化的測試了吧。我以爲是分數限制了這門課的良好效果。若是沒有那麼多的分數利益(經過非正當方式),也許就會更加關注提升自身,從而得到更高的分數,但有的時候這個制度確實是傷了勤勤懇懇的同窗的心。無論這門課有多少槽點,我仍是要感謝這門課,由於我也確實是學到了不少知識(從小白作起),但願OO越辦越好,加油!
[引用]
https://wenku.baidu.com/view/aa4124c70408763231126edb6f1aff00bed570ae.html。