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