測試是面對程序,構造樣例進行驗證,讓程序運行,觀察程序的運行結果和預期結果比較,來判斷在這種狀況下程序的正確性。有點像形式驗證。編程
優勢:相對容易,比較直觀多線程
缺點:不能保證絕對正確併發
正確性是根據規格推斷程序的邏輯,檢測是否完成任務。相似於邏輯驗證。是進行測試的另外一種方式。模塊化
優勢:可以較好地保證驗證效果。post
缺點:繁瑣複雜,不直觀,成本高學習
OCL(Object Constraint Language)語言是面向對象設計中對圖形符號的補充,可以完善建模元素的相關細節。其與JSF規格有類似之處,也有不一樣。測試
都是一種形式化的語言spa
具備無二義性線程
每一個變量都有類型debug
不會改變系統的運行狀態
都採用前置條件和後置條件對方法的運行加以約束
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表達前置條件和後置條件
類圖:
時序圖:
狀態圖:
第一單元概述面向對象,區別面向對象和麪向過程。訓練從類的角度看問題和事物。第二單元主要是多線程編程,學習併發時的同步與互斥。第三單元主要是JSF規格的撰寫。學習如何經過規格約束代碼,養成好的程序設計習慣。第四單元主要是測試與正確性論證,一樣十分消耗精力。四個單元呈現出遞進的層次關係,從單線程到多線程,從編寫程序到測試程序到論證程序,從局部設計到總體規劃,按部就班。同時也是難度的增長,工程性的提升。
單個類的方法減小了,方法的行數也減小了。在設計上學會了提升多用性,提升代碼的通用性。學會了形式驗證的覆蓋性測試和邏輯驗證的正確性驗證。同時大量的編程也提升了個人編程和debug能力。
工程化即系統化、模塊化、規範化的一個過程。指將具備必定規模數量的單個系統或功能部件,按照必定的規範,組合成一個模塊鮮明、系統性強的總體。工程化每每包含大量學科和學科分支的知識,是一個複雜的系統工程過程。咱們這門課的做業的編寫可能涉及到了許多工程化開發的思想,而實際的代碼規模還談不上工程化的水平。不過除了代碼量以外,工程化開發重要的仍是工程代碼的可拓展性和可維護性,像是做業中的出租車系列,電梯系列,雖然說都是基於前一次做業上稍加修改,可是在編寫過程當中可以很明顯地感覺到不一樣的設計方法,帶來的拓展代價的差別巨大。
規範互測。
繼續推行客服制度。
支持從一而終不換題目。