国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

設(shè)計模式對軟件可維護(hù)性影響的定量研究

2017-01-21 15:38劉偉李雅琎胡志剛
軟件導(dǎo)刊 2016年12期
關(guān)鍵詞:設(shè)計模式

劉偉+李雅琎+胡志剛

摘 要:軟件可維護(hù)性是面向?qū)ο筌浖到y(tǒng)的重要質(zhì)量屬性之一,合理使用設(shè)計模式可以改善軟件的可維護(hù)性。目前關(guān)于設(shè)計模式對軟件可維護(hù)性影響的研究主要停留在定性分析階段,缺少定量分析。針對這一問題,選取與軟件可維護(hù)性相關(guān)的面向?qū)ο蠖攘恳蜃雍涂删S護(hù)性指數(shù),結(jié)合具體實(shí)例,研究了應(yīng)用設(shè)計模式前后度量因子和可維護(hù)性指數(shù)變化情況,定量分析出設(shè)計模式對軟件可維護(hù)性的影響。

關(guān)鍵詞:設(shè)計模式;軟件可維護(hù)性;面向?qū)ο蠖攘恳蜃樱豢删S護(hù)性指數(shù)

DOIDOI:10.11907/rjdk.162142

中圖分類號:TP319

文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2016)012-0095-03

0 引言

設(shè)計模式是從眾多優(yōu)秀軟件系統(tǒng)中總結(jié)出來的專家設(shè)計經(jīng)驗(yàn),合理使用設(shè)計模式可以有效改善軟件設(shè)計和程序代碼質(zhì)量[1]。目前關(guān)于設(shè)計模式對軟件質(zhì)量影響的研究更多停留在定性分析階段,設(shè)計模式對軟件質(zhì)量改善的定量研究工作較少。正因如此,設(shè)計模式對軟件質(zhì)量影響的利弊在業(yè)界備受爭議。

軟件可維護(hù)性是指軟件維護(hù)的難易程度,圖靈獎得主Alan J.Perlis曾說過:在長久運(yùn)行時間的考驗(yàn)下,每個程序都變得脆弱不堪。軟件在開發(fā)結(jié)束后會經(jīng)歷一段長久的維護(hù)期。因此,可維護(hù)性是軟件系統(tǒng)重要的質(zhì)量屬性之一。

本文定量研究了設(shè)計模式對軟件可維護(hù)性影響,通過精確的數(shù)值對使用設(shè)計模式前后系統(tǒng)的可維護(hù)性進(jìn)行精確的質(zhì)量分析。與傳統(tǒng)的定性分析相比,定量分析能夠更準(zhǔn)確、有效地證實(shí)設(shè)計模式的使用效果,更具說服力。

1 可維護(hù)性度量因子選取

為了提供一個定量方法來測量面向?qū)ο筇卣鞯能浖|(zhì)量屬性,Bansiya和Davis提出一種具有層次結(jié)構(gòu)的面向?qū)ο笤O(shè)計質(zhì)量評估方法——QMOOD(Quality Model for Object-Oriented Design)[2],該方法構(gòu)建了一個面向?qū)ο蟮馁|(zhì)量評估模型,提供了設(shè)計質(zhì)量屬性(Design Quality Attributes)、面向?qū)ο笤O(shè)計屬性(OO Design Properties)、面向?qū)ο笤O(shè)計因子(OO Design Metrics)和面向?qū)ο笤O(shè)計組件(OO Design Components)4個層次和它們之間的三級映射。Ampatzoglou等[3]首次將QMOOD運(yùn)用到設(shè)計模式對軟件質(zhì)量影響的研究中并取得了較好效果。本文采用簡化的QMOOD模型,首先針對軟件可維護(hù)性選取合適的度量因子,然后計算應(yīng)用某個設(shè)計模式前后度量因子值,最后通過度量因子值的變化來定量分析該設(shè)計模式對軟件可維護(hù)性影響。

本文選取CK度量集和可維護(hù)性指數(shù)作為軟件可維護(hù)性度量因子。

1.1 CK度量集

在研究面向?qū)ο笙到y(tǒng)時,經(jīng)典的面向?qū)ο蠖攘考狢K度量集應(yīng)用非常廣泛。CK度量集由Chidamber和Kemerer[4]于1994年提出,它奠定了面向?qū)ο筌浖攘康幕A(chǔ)。CK度量集中的度量因子與面向?qū)ο筌浖目删S護(hù)性密切相關(guān)。

CK度量集包含6個基于面向?qū)ο箢愒O(shè)計的度量因子,從不同角度反映了面向?qū)ο笙到y(tǒng)的設(shè)計質(zhì)量,這6個因子分別是:加權(quán)方法計數(shù)(Weighted Methods for per Class,WMC)、繼承樹深度(Depth of Inheritance Tree,DIT)、子類個數(shù)(Number Of Children,NOC)、對象類之間的耦合(Coupling Between Object classes,CBO)、對類的響應(yīng)(Response For a Class,RFC)和方法內(nèi)聚缺乏度(Lack of Cohesion in Methods,LCOM)。

1.2 可維護(hù)性指數(shù)

可維護(hù)性指數(shù)(Maintainability Index,MI)由Oman等[5]于1992年提出,其計算公式如下:

公式(1)中的參數(shù)說明如表1所示。

MI的典型取值范圍在-100~200,MI值越高說明軟件的可維護(hù)性越好。

2 設(shè)計模式對可維護(hù)性影響定量分析

2.1 實(shí)驗(yàn)數(shù)據(jù)

根據(jù)設(shè)計模式的使用頻率和重要性[6],本文選取10種常用的軟件設(shè)計模式,每種設(shè)計模式提供5個程序規(guī)模相差不大的實(shí)例。對每個實(shí)例,提供兩個版本的程序代碼,使用設(shè)計模式的代碼版本,簡記為DP(Design Pattern),以及不使用設(shè)計模式的代碼版本,簡記為NDP(Non-Design Pattern),這些實(shí)例主要來自文獻(xiàn)[6]。通過對這些軟件可維護(hù)性相關(guān)度量因子進(jìn)行計算,研究設(shè)計模式使用前后可維護(hù)性度量因子變化,將實(shí)驗(yàn)數(shù)據(jù)與開發(fā)人員經(jīng)驗(yàn)進(jìn)行比對,分析實(shí)驗(yàn)結(jié)果。

本研究選取的10種常用設(shè)計模式有:工廠方法模式(Factory Method Pattern,F(xiàn)MP)、抽象工廠模式(Abstract Factory Pattern,AFP)、適配器模式(Adapter Pattern,AP)、代理模式(Proxy Pattern,PP)、外觀模式(Facade Pattern,F(xiàn)P)、橋接模式(Bridge Pattern,BP)、觀察者模式(Observer Pattern,OP)、策略模式(Strategy Pattern,SrP)、狀態(tài)模式(State Pattern,SaP)和模板方法模式(Template Method Pattern,TMP)。

2.2 實(shí)驗(yàn)結(jié)果

以程序?qū)嵗秊閱挝?,計算前文所述的度量因子,然后?個實(shí)例的平均值,得到設(shè)計模式使用前后度量因子的平均值,計算結(jié)果如表2所示。

2.3 實(shí)驗(yàn)結(jié)果分析

(1)加權(quán)方法計數(shù)WMC:WMC越大,說明理解這個類所需時間越多。方法的個數(shù)多可能會導(dǎo)致沿用這些方法的子類行為更加復(fù)雜,使其可維護(hù)性降低。實(shí)驗(yàn)結(jié)果表明,7個設(shè)計模式會降低WMC值,WMC越小,可維護(hù)性越高。

(2)繼承樹深度DIT:DIT值越高的類繼承更多的父類方法,使得它們的行為難以預(yù)測且維護(hù)相對復(fù)雜,可維護(hù)性更差。實(shí)驗(yàn)結(jié)果表明,有3個設(shè)計模式會使平均DIT變大,5個設(shè)計模式會使平均DIT變小,2個設(shè)計模式對DIT沒有影響。

(3)子類個數(shù)NOC:由于大部分設(shè)計模式都引入了抽象層,通過子類來擴(kuò)展系統(tǒng)行為,因此大部分設(shè)計模式的使用都會導(dǎo)致NOC變大。抽象層的引入提高了系統(tǒng)的可擴(kuò)展性和靈活性,便于系統(tǒng)維護(hù)和二次開發(fā)。

(4)對象類之間的耦合CBO:根據(jù)軟件工程高內(nèi)聚、低耦合原則,降低系統(tǒng)耦合度可以提高系統(tǒng)的可維護(hù)性。過多的耦合會使整個系統(tǒng)變得難以維護(hù),比如在一個類中進(jìn)行修改可能會影響到與其產(chǎn)生耦合的其它類。實(shí)驗(yàn)結(jié)果表明,10個設(shè)計模式都可降低CBO,通過降低類與類之間的耦合度來提高系統(tǒng)的可維護(hù)性。

(5)類的響應(yīng)RFC:某一個方法的RFC值很大,說明它調(diào)用了許多其它方法,對可維護(hù)性產(chǎn)生負(fù)面影響。從實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),除使用外觀模式會使RFC值變大外,其余9種設(shè)計模式都會使系統(tǒng)的平均RFC值變小。

(6)方法內(nèi)聚缺乏度LCOM:如果一個類的LCOM值高,可能意味著它所定義的方法可被分割到多個獨(dú)立類中,不與其它方法共享字段,可以獨(dú)立運(yùn)行。類的LCOM值低說明類的設(shè)計質(zhì)量高、封裝性好、可維護(hù)性高。由于實(shí)驗(yàn)項(xiàng)目比較簡單,類中的方法個數(shù)不多,因此在計算LCOM值時方法對的個數(shù)相對較小,所以整體來說LCOM值都偏小。實(shí)驗(yàn)結(jié)果表明,大部分設(shè)計模式的使用對系統(tǒng)的平均LCOM值影響不大。

(7)可維護(hù)性指數(shù)MI:MI在軟件可維護(hù)性度量中廣泛使用,MI值越高說明軟件的可維護(hù)性越好。繪制設(shè)計模式使用前后MI的對比情況如圖1所示。從圖1可知,除外觀模式(FP)和觀察者模式(OP)外,其余8種設(shè)計模式均可使維護(hù)性指數(shù)變大。由于實(shí)驗(yàn)項(xiàng)目代碼規(guī)模較小,業(yè)務(wù)方法較少,導(dǎo)致設(shè)計模式使用效果不顯著。

3 結(jié)語

設(shè)計模式是成熟有效的專家設(shè)計方案,設(shè)計模式是否有助于提高軟件質(zhì)量,業(yè)界一直存在爭議。本文結(jié)合軟件度量因子,利用10種常用的設(shè)計模式對軟件可維護(hù)性影響

進(jìn)行了定量計算,探討了可維護(hù)性指數(shù)及面向?qū)ο筌浖攘恐笖?shù)與軟件可維護(hù)性的相互關(guān)系。實(shí)驗(yàn)結(jié)果表明,大部分設(shè)計模式的使用有助于提高面向?qū)ο筌浖目删S護(hù)性,少數(shù)設(shè)計模式對軟件可維護(hù)性影響不顯著,個別設(shè)計模式對軟件可維護(hù)性有負(fù)面影響。

后續(xù)一方面將收集和整理項(xiàng)目實(shí)例進(jìn)行定量評估,進(jìn)而獲得更加科學(xué)的結(jié)果,另一方面將研究更多的軟件質(zhì)量屬性,包括可復(fù)用性、可靠性等,結(jié)合一系列實(shí)驗(yàn),建立一套較為完整的設(shè)計模式對軟件質(zhì)量影響的評估框架。

參考文獻(xiàn):

[1] GAMMA E,HELM R,JOHNSON R,et al.Design patterns:elements of reusable object-oriented software [M].Addison-Wesley Professional,Reading,Massachusetts,1995.

[2] BANSIYA J,DAVIS C G.A hierarchical model for object-oriented design quality assessment [J].IEEE Transactions on Software Engineering,2002,28(28):4-17.

[3] AMPATZOGLOU A,F(xiàn)RANTZESKOU G,STAMELOS I.A methodology to assess the impact of design patterns on software quality [J].Information & Software Technology,2012,54(4):331-346.

[4] CHIDAMBER S R,KEMERER C F.A metrics suite for object oriented design [J].IEEE Transactions on Software Engineering,1994,20(6):476-493.

[5] OMAN P,HAGEMEISTER J.Metrics for assessing a software system's maintainability [C].The IEEE Proceedings Conference on Software Maintenance,IEEE Computer Society,1992:337-344.

[6] 劉偉.設(shè)計模式的藝術(shù)軟件開發(fā)人員內(nèi)功修煉之道 [M].北京:清華大學(xué)出版社,2013.

(責(zé)任編輯:杜能鋼)

猜你喜歡
設(shè)計模式
設(shè)計模式識別的特征信息分類研究
“1+1”作業(yè)設(shè)計模式的實(shí)踐探索
基于能力目標(biāo)培養(yǎng)的藥學(xué)專業(yè)課程整體教學(xué)設(shè)計模式研究
引入線索約束的設(shè)計模式變體挖掘研究*
設(shè)計模式挖掘的有效性評估策略
智慧圖書館環(huán)境下的融貫式服務(wù)設(shè)計模式研究
三維協(xié)同設(shè)計模式下的航天項(xiàng)目管理實(shí)踐與展望
交通機(jī)電工程設(shè)計模式創(chuàng)新探討
應(yīng)用型高校學(xué)生程序設(shè)計能力培養(yǎng)研究
基于“雙師制”指導(dǎo)下的工業(yè)設(shè)計專業(yè)畢業(yè)設(shè)計模式