OO學習總結(四)
阿新 • • 發佈:2018-06-24
string 質量 人員 其他 png ext 內部 支持 分支
一、 測試與正確性論證的比較
測試和正確性論證分別從用戶角度和開發者角度對工程進行評估。前者能夠評測程序在一般情況和可預見的特殊情況下的執行效果,後者能夠較為全面地測試到每一個細節。
測試的優點:
- 所需時間較短;
- 能夠較為全面地測試;
- 樣例編寫容易;
- 可保留樣例,用於以後的回測;
測試的缺點:
- 無法涵蓋所有細節,測試樣例不能保證以後在運行時一定不會出錯
正確性論證的優點:
- 邏輯嚴密;
- 可信度更高;
- 細節覆蓋更廣;
正確性論證的缺點:
- 不易上手;
- 測試時間成本高;
- 對代碼做了小改動,可能就需要對整個工程重新論證;
二、 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表達前置條件和後置條件
三、 單電梯系統結構梳理
A. UML類圖
B. 順序圖
C. 狀態圖
電梯:
調度器:
請求:
四、 學期小結
A. 知識點
B. 個人總結
通過這一學期的訓練,我能感受到自己在面向對象設計與測試等方面的進步。
設計:
- 方法不會過於臃腫
- 實現類層次的劃分
- 掌握多線程設計的基本原理
- 避免死鎖
- 將具有聯系的抽象數據歸結於一個對象,通過對象來管理數據
- 約束代碼行為,各個類與方法只行使自己的職能
測試:
- 減少盲目測試和碰運氣的測試
- 學會根據規格進行測試
- 學會根據參數構造不同輸入組合
- 使用Junit進行單元測試
質量:
- 提高魯棒性
- 確保程序能對每一種可能的輸入組合做出響應
設計、測試和質量這三方面都是相輔相成的,好的設計+全面細致的測試當然能確保這是一份質量優秀的代碼, 能寫出質量優秀的代碼+會設計當然也會促進測試能力。
C. 工程化開發
通過這學期的學習,我覺得工程化是指把系統的、可量化的、有序的方法應用到軟件的開發和維護上來。 通過規格對代碼設計進行約束, 或許有時候顯得不那麽靈活, 但正是這種“笨拙”使得整個工程的規範性大大提高, 減少了後續測試的難度, 提高了軟件的易維護性。
工程化開發的一般流程:
需求分析-->概要設計-->詳細設計-->編碼-->測試-->驗收-->維護
需求設計:深入了解和分析用戶的需求,避免設計時不必要的改動。
概要設計:確定設計層次、模塊劃分、接口規範、數據結構、出錯處理等。
詳細設計:實現概要設計中各個模塊的算法、調用關系、說明每一個程序的設計考慮。
編碼:根據詳細設計補充代碼、完成系統的功能。
測試:對編寫好的代碼進行初步測試,通過後交給用戶,由其確認各項功能得到正確實現。
驗收:用戶驗收軟件。
維護:根據用戶需求和環境的變化,對程序進行部分或全部的修改。
軟件工程化的優勢
- 降低軟件系統的復雜性
- 提高軟件可靠性
- 提高開發、維護、測試的效率
- 減少系統內部的邏輯耦合
- 提高人員協作的效率
D. 對課程的建議
- 及時更新消息應。可以建一個大群,所有對指導書的更新和其他重大消息發布於此,不允許討論。各小班另建客服群用於答疑。這樣可最大程度避免有的同學錯過消息。
- 記錄issue和各客服群中有價值的內容。可編成問答形式,用於以後助教的工作和答疑。(比如作為仲裁的依據)。
- 鼓勵獨立思考。對於issue中有較大價值的提問(如激發了同學的廣泛討論),可對提問者予以一定程度的加分。
- 否定惡意扣分。在仲裁時若發現有同學惡意扣分,可對其提出批評並記錄在案。對於累犯者,可予以一定程度的扣分。所扣分數歸被惡意扣分者所有。
- 提高扣分門檻。若要報告被測試者的bug,測試者應提供充分的理由,對於理由不充分者,其所報告的bug不予以采納。
OO學習總結(四)