1. 程式人生 > >Object Oriented個人總結第四彈

Object Oriented個人總結第四彈

條件 技術分享 請求 分支 組合 過程 相同 通過 image

一、 論述測試與正確性論證的效果差異,比較其優缺點

測試是面對程序,構造樣例進行驗證,讓程序運行,觀察程序的運行結果和預期結果比較,來判斷在這種情況下程序的正確性。有點像形式驗證。

優點:相對容易,比較直觀

缺點:不能保證絕對正確

正確性是根據規格推斷程序的邏輯,檢測是否完成任務。類似於邏輯驗證。是進行測試的另一種方式。

優點:能夠較好地保證驗證效果。

缺點:繁瑣復雜,不直觀,成本高

二、 調研OCL語言,並比較其與課程所介紹的JSF規格之間的相似和不同之處

OCL(Object Constraint Language)語言是面向對象設計中對圖形符號的補充,能夠完善建模元素的相關細節。其與JSF規格有相似之處,也有不同。

相同之處:

都是一種形式化的語言

具有無二義性

每個變量都有類型

不會改變系統的運行狀態

都采用前置條件和後置條件對方法的運行加以約束

不同之處:

變量的類型:

OCL有自己的一套變量(如Integer, Real, String, Boolean, Set, Bag, Sequence)

JSF不僅支持Java語言定義的所有類型,還支持用戶自定義的類型(比如有一個Request類, 則可以在JSF中用Request修飾變量)

變量的運算:

OCL對變量規定了可以進行的運算方式(如 Boolean類型的and, or)

JSF支持Java語言定義的所有運算方式

邏輯分支:

OCL支持if, else一類的邏輯分支。

JSF不支持if, else, while等邏輯分支。

上下文:

OCL支持用context表達上下文

JSF不支持上下文表述。

符號系統:

OCL用pre, post表達前置條件和後置條件

JSF用REQUIRES, EFFECTS表達前置條件和後置條件

三、 根據第十四次作業的單電梯系統,針對調度器、電梯、請求隊列和請求,至少整理出一幅UML類圖、一幅順序圖和一幅狀態圖,並使用圖(graph)來表示出模型。


類圖:

技術分享圖片

時序圖:

技術分享圖片

狀態圖:

技術分享圖片

四、 整理總結一個學期所學所練

l 闡述四個單元模塊知識點之間的關系

第一單元概述面向對象,區別面向對象和面向過程。訓練從類的角度看問題和事物。第二單元主要是多線程編程,學習並發時的同步與互斥。第三單元主要是JSF規格的撰寫。學習如何通過規格約束代碼,養成好的程序設計習慣。第四單元主要是測試與正確性論證,同樣十分消耗精力。四個單元呈現出遞進的層次關系,從單線程到多線程,從編寫程序到測試程序到論證程序,從局部設計到整體規劃,循序漸進。同時也是難度的增加,工程性的提高。

l 梳理自己所設計實現的程序,分析自己在設計、測試和質量上的進步

單個類的方法減少了,方法的行數也減少了。在設計上學會了提高多用性,提高代碼的通用性。學會了形式驗證的覆蓋性測試和邏輯驗證的正確性驗證。同時大量的編程也提高了我的編程和debug能力。

l 闡述自己對工程化開發的理解

工程化即系統化、模塊化、規範化的一個過程。指將具有一定規模數量的單個系統或功能部件,按照一定的規範,組合成一個模塊鮮明、系統性強的整體。工程化往往包含大量學科和學科分支的知識,是一個復雜的系統工程過程。我們這門課的作業的編寫可能涉及到了許多工程化開發的思想,而實際的代碼規模還談不上工程化的水平。不過除了代碼量之外,工程化開發重要的還是工程代碼的可拓展性和可維護性,像是作業中的出租車系列,電梯系列,雖說都是基於前一次作業上稍加修改,但是在編寫過程中能夠很明顯地感受到不同的設計方法,帶來的拓展代價的差異巨大。

l 對課程的任何期望或建議

規範互測。

繼續推行客服制度。

支持從一而終不換題目。

Object Oriented個人總結第四彈