(软件工程复习核心重点)第十章面向对象设计-第二节:启发规则和软件重用
文章目錄
- 一:啟發規則
- (1)設計結果應該清晰易懂
- (2)一般一特殊結構的深度適當
- (3)設計簡單的類
- (4)使用簡單的協議
- (5)使用簡單的服務
- (6)把設計變動減至最小
- 二:軟件重用
- (1)概述
- A:重用
- B:軟件成分重用的級別
- ①:代碼重用
- ②:設計結果重用
- ③:分析結果重用
- C:典型的可重用軟件成分
- (2)類構件
- A:可重用軟件構件特點
- B:類構件的重用方式
- ①:實例重用
- ②:繼承重用
- ③:多態重用
- (3)軟件重用的效益
- A:質量
- B:生產率
- C:成本
一:啟發規則
(1)設計結果應該清晰易懂
保證設計結果應該清晰易懂的主要因素如下
- 用詞一致:應該使名字與它所代表的事物–致,而且應該盡量使用人們習慣的名字。不同類中相似服務的名字應該相同
- 使用已有的協議:如果開發同一軟件的其他設計人員已經建立了類的協議,或者在所使用的類庫中已有相應的協議,則應該使用這些已有的協議
- 減少消息模式的數目:如果已有標準的消息協議,設計人員應該遵守這些協議
- 避免模糊的定義:一個類的用途應該是有限的,而且應該從類名可以較容易地推出它的用途
(2)一般一特殊結構的深度適當
- 使類等級中包含的層次數適當,類等級中包含的層次保持在7±2
- 不能僅從方便編碼的角度出發隨意創建派生類,應該使一般一特殊結構與領域知識或常識保持一致
(3)設計簡單的類
-
避免包含過多屬性:屬性過多通常表明這個類過分復雜了,它所完成的功能可能太多了
-
有明確的定義:為了使類的定義明確,分配給每個類的任務應該簡單,最好能使用一兩個簡單語句描述它的任務
-
簡化對象之間的合作關系:如果需要多個對象協同配合才能做好一件事,則破壞了類的簡明性和清晰性
-
不要提供太多服務:一個類提供的服務過多,同樣表明這個類過分復雜。典型地,一個類提供的公共服務不超過7個
-
劃分“主題”
(4)使用簡單的協議
(5)使用簡單的服務
- 避免使用復雜的服務
- 需要在服務中使用CASE語句時,應用一般一特殊結構代替這個類
(6)把設計變動減至最小
理想的設計變動曲線如下圖所示。即在設計的早期階段,變動較大,隨著時間推移,設計方案日趨成熟改動也越來越小了
二:軟件重用
(1)概述
A:重用
重用也叫再用或復用,是指同一事物不作修改或稍加改動就多次重復使用。軟件重用可分為以下3個層次:
- 知識重用;
- 方法和標準的重用;
- 軟件成分的重用
B:軟件成分重用的級別
①:代碼重用
- 源代碼剪貼:是最原始的重用形式,復制或修改源代碼時可能出錯,且存在嚴重的配置管理問題
- 源代碼包含:配置管理問題有所緩解,所有包含它的程序都必須重新編譯
- 繼承:無須修改已有的代碼,就可擴充或具體化在庫中找出的類。基本上不存在配置管理問題
②:設計結果重用
重用某個軟件系統的設計模型(求解域模型),有助于把一個應用系統移植到完全不同的軟硬件平臺上
③:分析結果重用
是一種更高級別的重用,重用某個系統的分析模型。特別適用于用戶需求未改變,但系統體系結構發生了根本變化的場合
C:典型的可重用軟件成分
- 項目計劃:軟件項目計劃的基本結構和許多內容都是可以跨項目重用的
- 成本估計:在只做極少修改或根本不做修改的情況下,重用對該功能的成本估計結果
- 體系結構:創建一組類屬的體系結構模板,并把那些模板作為可重用的設計框架
- 需求模型和規格說明:類和對象的模型、規格說明、用傳統軟件工程方法開發的分析模型是重用的候選者
- 設計:用傳統方法開發的體系結構、數據、接口和過程設計結果,是重用的候選者
- 源代碼:用兼容的程序設計語言書寫的、經過驗證的程序構件,是重用的候選者
- 用戶文檔和技術文檔:即使針對的應用是不同的,也經常有可能重用用戶文檔和技術文檔的大部分
- 用戶界面:這可能是最廣泛被重用的軟件成分,GUI (圖形用戶界面)軟件經常被重用。因為它可占到一個應用程序的60%的代碼量
- 數據:被重用的數據包括:內部表、列表和記錄結構,以及文件和完整的數據庫
- 測試用例:一旦設計或代碼構件將被重用,相關的測試用例應該“附屬于”它們也被重用
(2)類構件
A:可重用軟件構件特點
- 模塊獨立性強:具有單一、完整的功能,且經過反復測試被確認是正確的。它應該是一個不受或很少受外界干擾的封裝體,其內部實現在外面是不可見的
- 具有高度可塑性:可重用的軟構件必須具有高度可裁剪性,即必須提供為適應特定需求而擴充或修改已有構件的機制,而且所提供的機制必須使用起來簡單方便
- 接口清晰、簡明、可靠:軟件構件應該提供清晰、簡明、可靠的對外接口,而且還應該有詳盡的文檔說明,以方便用戶使用
B:類構件的重用方式
類構件:面向對象技術中的“類”,是比較理想的可重用軟構件
①:實例重用
除了用已有的類為樣板直接創建該類的實例之外,還可以用幾個簡單的對象作為類的成員創建出一個更復的類
②:繼承重用
當已有的類構件不能通過實例重用方式滿足當前系統的需求時,利用繼承機制從已有類派生出符合需要的子類,是安全修改已有的類構件并獲得可在當前系統中使用的類構件的有效手段
③:多態重用
在設計類構件時應把注意力集中在下列這些可能妨礙重用的操作上:
- 與表示方法有關的操作
- 與數據結構、數據大小等因素有關的操作
- 與外部設備有關的操作
- 實現算法在將來可能會改變的核心操作
(3)軟件重用的效益
A:質量
隨著每一次重用, 都會有一些錯誤被發現并被清除,構件的質量也會隨之改善。隨著時間的推移,構件將變成實質上無錯誤的。重用給軟件產品的質量和可靠性帶來實質性的提高
B:生產率
把可重用的軟件成分應用于軟件開發的全過程時,創建計劃、模型、文檔、代碼和數據所花費的時間將減少,從而用較少的投入給客戶提供相同級別的產品,故生產率得到了提高
C:成本
軟件重用帶來的凈成本節省可以用下式估算:
C=Cs?Cr?CdC=C_{s}-C_{r}-C_ozvdkddzhkzdC=Cs??Cr??Cd?
- CsC_{s}Cs?:是項目從頭開發時所需要的成本
- CrC_{r}Cr?:是與重用相關聯的成本
- CdC_ozvdkddzhkzdCd?:是交付給客戶的軟件的實際成本
與重用相關聯的成本C,主要包括下述成本:
- ①領域分析與建模的成本
- ②設計領域體系結構的成本
- ③為方便重用而增加的文檔的成本
- ④維護和完善可重用的軟件成分的成本
- ⑤為從外部獲取構件所付出的版稅和許可證費用
- ⑥創建及運行重用庫的費用
- ⑦對設計和實現可重用構件的人員的培訓費用
總結
以上是生活随笔為你收集整理的(软件工程复习核心重点)第十章面向对象设计-第二节:启发规则和软件重用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统之进程管理:15、哲学家进餐问题
- 下一篇: 数据结构之栈的应用:递归