《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種優(yōu)化的面向?qū)ο筌浖?fù)雜性度量方法
一種優(yōu)化的面向?qū)ο筌浖?fù)雜性度量方法
來(lái)源:微型機(jī)與應(yīng)用2013年第21期
謝超超,,楊 柳
(中南大學(xué) 軟件學(xué)院,湖南 長(zhǎng)沙 410000)
摘要: 首先結(jié)合面向?qū)ο蠹夹g(shù)特性,,對(duì)面向?qū)ο筌浖?lèi)級(jí)別的CK度量方法和系統(tǒng)級(jí)別的MOOD度量方法進(jìn)行了分析,,并就CK度量提出了優(yōu)化的度量方法OCK。然后結(jié)合OCK度量和MOOD度量的優(yōu)點(diǎn)提出了較優(yōu)化的面向?qū)ο筌浖?fù)雜性度量方法OSCM,。OSCM度量可以有效地彌補(bǔ)CK度量和MOOD度量的不足,,優(yōu)化度量結(jié)果。
Abstract:
Key words :

摘  要: 首先結(jié)合面向?qū)ο?/a>技術(shù)特性,,對(duì)面向?qū)ο?a class="innerlink" href="http://forexkbc.com/tags/軟件" title="軟件" target="_blank">軟件類(lèi)級(jí)別的CK度量方法和系統(tǒng)級(jí)別的MOOD度量方法進(jìn)行了分析,并就CK度量提出了優(yōu)化的度量方法OCK,。然后結(jié)合OCK度量和MOOD度量的優(yōu)點(diǎn)提出了較優(yōu)化的面向?qū)ο筌浖?fù)雜性度量方法OSCM,。OSCM度量可以有效地彌補(bǔ)CK度量和MOOD度量的不足,優(yōu)化度量結(jié)果,。
關(guān)鍵詞: 面向?qū)ο螅?a class="innerlink" href="http://forexkbc.com/tags/軟件度量" title="軟件度量" target="_blank">軟件度量,;CK度量;MOOD度量,;OCK度量,;OSCM度量

 軟件的應(yīng)用領(lǐng)域越來(lái)越廣,軟件的質(zhì)量也越來(lái)越受到關(guān)注和重視,。軟件復(fù)雜性很大程度上影響到軟件質(zhì)量的好壞,,其度量是軟件度量的重要方面。隨著面向?qū)ο筌浖夹g(shù)的廣泛應(yīng)用,,面向?qū)ο筌浖?fù)雜性度量也顯得尤為重要,。面向?qū)ο蠖攘康幕灸繕?biāo)[1]和已存在的傳統(tǒng)軟件度量的目標(biāo)一致:即更好地理解產(chǎn)品的質(zhì)量,評(píng)估過(guò)程的效果,,從而控制開(kāi)發(fā)過(guò)程,,以提高軟件質(zhì)量。
 當(dāng)前,,已有很多面向?qū)ο筌浖攘糠椒ū惶岢?,并在不斷被?yàn)證及成熟。這些度量方法包括LK度量[2],、CK度量[3],、Li度量[4]和MOOD度量[5]等。但是這些度量方法依然存在缺陷,,需要不斷進(jìn)行研究和改進(jìn),,以使這些度量更易于應(yīng)用,,從而更好地指導(dǎo)面向?qū)ο筌浖脑O(shè)計(jì)、開(kāi)發(fā),,提高軟件質(zhì)量[6],。
 本文分析了針對(duì)類(lèi)層面的CK度量和針對(duì)系統(tǒng)層面的MOOD度量。這兩種度量都只是分散地針對(duì)軟件的某一個(gè)特定層面進(jìn)行,,在實(shí)際應(yīng)用過(guò)程中,,難以讓人們同時(shí)綜合類(lèi)與類(lèi)之間關(guān)系和系統(tǒng)級(jí)別這兩個(gè)層次的度量,致使無(wú)法更加系統(tǒng)全面地掌握軟件系統(tǒng)的復(fù)雜度,。因此本文在分析CK度量和MOOD度量的基礎(chǔ)上,,對(duì)CK度量進(jìn)行改進(jìn),提出優(yōu)化的度量方法OCK(Optimized CK),,并與MOOD度量相結(jié)合,,提出了一個(gè)較為優(yōu)化的面向?qū)ο筌浖?fù)雜性度量方法OSCM(Optimized Software Complexity Metrics),以方便人們更快捷,、有效地分析面向?qū)ο筌浖到y(tǒng)的復(fù)雜度,。
1 面向?qū)ο筌浖攘糠椒?/strong>
 自20世紀(jì)90年代以來(lái),面向?qū)ο蠹夹g(shù)興起并被廣泛應(yīng)用起來(lái),,人們逐漸開(kāi)始研究有關(guān)面向?qū)ο筌浖亩攘縖7],。不斷有面向?qū)ο筌浖攘糠椒ū惶岢觯壳爸饕拿嫦驅(qū)ο筌浖攘糠椒ㄓ校篖K度量,、CK度量,、Li度量以及MOOD度量等。本文介紹面向?qū)ο筌浖?fù)雜性度量:CK度量和MOOD度量,。
1.1 CK度量
 Chidamber和Kemerer等人于1994年提出的CK度量[3],,是目前使用最為廣泛的度量體系之一,是面向?qū)ο筌浖?lèi)級(jí)別度量方法,,其中包括6條適用于面向?qū)ο笤O(shè)計(jì)的度量準(zhǔn)則[8],。
 (1)每類(lèi)加權(quán)方法數(shù)WMC(Weighted Method per Class),。WMC是一個(gè)類(lèi)方法復(fù)雜度的加權(quán)總和,。類(lèi)WMC越大,對(duì)子類(lèi)的可能影響越大,,但其通用性和可復(fù)用性越差,。
 (2)繼承樹(shù)深度DIT(Depth of Inheritance Tree),。DIT指從本類(lèi)節(jié)點(diǎn)到根節(jié)點(diǎn)的繼承樹(shù)中路徑的最大深度,,根節(jié)點(diǎn)值為0,以下各級(jí)依次遞增,。DIT值越大,,則其可能繼承方法數(shù)越多,,復(fù)用程度越高,但預(yù)測(cè)其行為將更困難,,同時(shí)設(shè)計(jì)越復(fù)雜,。
 (3)每類(lèi)孩子數(shù)NoC(Number of Children),。NOC是繼承樹(shù)中一個(gè)類(lèi)的直接孩子數(shù),。NOC越大,重用性越好,,但其父類(lèi)抽象性減弱,,測(cè)試越困難。
?。?)對(duì)象類(lèi)之間耦合度CBO(Coupling Between Object Classes),。一個(gè)類(lèi)的CBO指的是和其有耦合關(guān)系的類(lèi)的數(shù)目。CBO越大,,則類(lèi)的可重用性越弱,,且修改和測(cè)試越復(fù)雜。
?。?)類(lèi)響應(yīng)RFC(Response For a Class),。RFC是本類(lèi)方法數(shù)加上被本類(lèi)方法調(diào)用的方法的個(gè)數(shù)總和,。RFC越大,,類(lèi)越復(fù)雜,且對(duì)該類(lèi)進(jìn)行測(cè)試和調(diào)試也越困難,。
?。?)方法內(nèi)聚缺乏度LCOM(Lack of Cohesion in Methods)。LCOM是相似度為零的方法對(duì)數(shù)量減去相似度不為零的方法對(duì)數(shù)量,,相似度是兩個(gè)方法訪(fǎng)問(wèn)相同屬性的程度,。類(lèi)的LCOM越大,方法內(nèi)聚度越弱,,則類(lèi)可以分解為兩個(gè)或更多的子類(lèi),。
1.2 MOOD度量
 MOOD度量是另一個(gè)著名的度量體系,是由Abreu等人于1994年針對(duì)軟件系統(tǒng)層次提出的[5],。MOOD度量從面向?qū)ο蟮姆庋b性,、繼承性、耦合性和多態(tài)性4個(gè)方面給出面向?qū)ο筌浖?個(gè)度量指標(biāo),。
?。?)封裝性度量。封裝性由類(lèi)中的屬性和方法實(shí)現(xiàn),,因此封裝性通過(guò)屬性隱藏因子AHF(Attribute Hiding Factor)和方法隱藏因子MHF(Method Hiding Factor)表示系統(tǒng)中所有類(lèi)的屬性和方法的隱藏程度,。隱藏因子的值越大,,系統(tǒng)中信息隱藏得越好。
?。?)繼承性度量,。繼承性通過(guò)屬性繼承因子AIF(Attribute Inheritance Factor)和方法繼承因子MIF(Method Inheritance Factor)表示系統(tǒng)中所有類(lèi)的屬性和方法的繼承程度。繼承因子的值越大,,系統(tǒng)中信息繼承的程度越高,。
 (3)耦合性度量,。耦合性通過(guò)耦合因子CF(Coupling Factor)表示系統(tǒng)中所有類(lèi)之間的耦合程度,,但不將繼承關(guān)系考慮進(jìn)去。CF越大,,類(lèi)之間耦合越頻繁,。
 (4)多態(tài)性度量,。多態(tài)性通過(guò)多態(tài)因子PF(Polymorphism Factor)表示系統(tǒng)中所有類(lèi)方法使用多態(tài)機(jī)制的程度,。
2 面向?qū)ο筌浖?fù)雜性度量方法
 面向?qū)ο筌浖?fù)雜性度量方法雖已得到發(fā)展和完善,但依舊存在一定的缺陷,。首先分析CK度量的不足,,并在CK度量的基礎(chǔ)上提出改進(jìn)的度量方法OCK。然后結(jié)合OCK度量和MOOD度量的優(yōu)點(diǎn)從而提出較為優(yōu)化的面向?qū)ο筌浖?fù)雜性度量OSCM,。
2.1 CK度量的分析與改進(jìn)
?。?)WMC只考慮方法成員,沒(méi)有考慮屬性成員對(duì)類(lèi)復(fù)雜性的影響[9],,也沒(méi)有根據(jù)類(lèi)成員可見(jiàn)性的不同區(qū)別看待各成員對(duì)類(lèi)復(fù)雜性的影響,,類(lèi)公有成員,保護(hù)成員和私有成員各自對(duì)類(lèi)復(fù)雜性影響程度大小不同,。因此,,在WMC的基礎(chǔ)上提出類(lèi)的復(fù)雜性CPC(Complexity Per Class)度量指標(biāo)。

?。?)CBO只是計(jì)算和本類(lèi)耦合的類(lèi)的數(shù)目,,沒(méi)有對(duì)不同類(lèi)型耦合的強(qiáng)度進(jìn)行區(qū)分,而是假設(shè)所有的耦合關(guān)系強(qiáng)度是相同的,,而且忽略了最強(qiáng)的耦合關(guān)系即繼承耦合,。為了考慮到不同的耦合關(guān)系,包括關(guān)聯(lián),、繼承和實(shí)現(xiàn)耦合,,提出了類(lèi)型間所有耦合ACBT(All Coupling Between Type)度量指標(biāo)。
 定義 ACBT=aNAC+bNIC+cNRC
 式中a、b,、c為調(diào)節(jié)因子,,是度量實(shí)踐中獲取的經(jīng)驗(yàn)值,可反映出關(guān)聯(lián)耦合,、繼承耦合和實(shí)現(xiàn)耦合在A(yíng)CBT計(jì)算中的權(quán)值,。關(guān)聯(lián)耦合數(shù)NAC(Number of Association Coupling)是系統(tǒng)中所有被本類(lèi)關(guān)聯(lián)的類(lèi)型(類(lèi)或接口)的數(shù)目,繼承耦合數(shù)NIC(Number of Inheritance Coupling)是系統(tǒng)中類(lèi)型(類(lèi)或接口)所繼承的所有類(lèi)型(類(lèi)或接口)的數(shù)目,,實(shí)現(xiàn)耦合數(shù)NRC(Number of Realization Coupling)是系統(tǒng)中本類(lèi)所實(shí)現(xiàn)的所有接口的數(shù)目,。ACBT越大,類(lèi)的可重用性可能越弱,。
?。?)RFC沒(méi)有考慮本類(lèi)方法和被本類(lèi)方法調(diào)用的方法分別對(duì)類(lèi)復(fù)雜性的影響程度,只是簡(jiǎn)單地計(jì)算它們的總和,。因此,,提出類(lèi)加權(quán)響應(yīng)WRFC(Weighted Response For a Class)度量指標(biāo)。
定義 WRFC=aNMC+bNCMC
式中a,、b為調(diào)節(jié)因子,,是度量實(shí)踐中獲取的經(jīng)驗(yàn)值,可表現(xiàn)出本類(lèi)方法和被本類(lèi)方法調(diào)用的方法對(duì)類(lèi)加權(quán)響應(yīng)值的影響程度的大小,。NMC(Number of Methods a Class)是本類(lèi)方法數(shù),,NCMC(Number of Called Methods a Class)是被本類(lèi)方法調(diào)用的方法數(shù)。
?。?)LCOM存在一定的缺陷,,沒(méi)有將類(lèi)的實(shí)例變量數(shù)計(jì)算進(jìn)來(lái),但實(shí)際上類(lèi)的實(shí)例變量數(shù)對(duì)類(lèi)內(nèi)聚性有一定的影響,。假設(shè)一個(gè)類(lèi)的LCOM較小,,甚至為0,,根據(jù)CK可以推斷出該類(lèi)具有較好的內(nèi)聚性,,但實(shí)際上可能因?yàn)樵擃?lèi)擁有大量的實(shí)例變量,所以其內(nèi)聚性及封裝性不容樂(lè)觀(guān),。因此,,在LCOM的基礎(chǔ)上提出類(lèi)內(nèi)聚缺乏度LCOC(Lack of Cohesion in Class)度量指標(biāo)。

 根據(jù)上述對(duì)CK度量方法的分析與改進(jìn),,提出優(yōu)化的CK度量方法OCK,,其包括CPC、CMIT,、NOAC,、ACBT、WRFC、LCOC等6個(gè)相對(duì)應(yīng)的度量指標(biāo),,每個(gè)度量指標(biāo)針對(duì)性地彌補(bǔ)每點(diǎn)缺陷,。例如,采用OCK度量的CPC能綜合考慮一個(gè)類(lèi)的屬性和方法以及不同可見(jiàn)性成員對(duì)該類(lèi)復(fù)雜性的影響,;CMIT度量指標(biāo)解決了多重繼承的度量問(wèn)題,,消除歧義;NOAC值涵蓋了一個(gè)類(lèi)的所有子孫,;ACBT依據(jù)耦合類(lèi)型的不同分配不同的權(quán)值從而度量類(lèi)的耦合性等等,。
2.2 面向?qū)ο筌浖?fù)雜性度量方法OSCM
 OCK度量方法雖在CK度量的基礎(chǔ)上進(jìn)行了改進(jìn),但仍存在一些缺陷,。首先OCK度量沒(méi)有對(duì)多態(tài)性進(jìn)行度量,,多態(tài)對(duì)整個(gè)系統(tǒng)的復(fù)雜性有很大影響;其次OCK與CK度量一樣主要是針對(duì)類(lèi)層面,,在系統(tǒng)層面沒(méi)有很好的度量指標(biāo),。MOOD度量也存在一定的不足。比如,,MOOD度量沒(méi)有對(duì)類(lèi)方法和屬性以及類(lèi)之間的關(guān)系進(jìn)行研究,,也沒(méi)有完整定義抽象性和復(fù)雜性[10]。
 此外,,繼承性和耦合性也是面向?qū)ο蟮幕咎匦?,將軟件?lèi)層面和系統(tǒng)層面的繼承性、耦合性度量結(jié)合起來(lái)可以更好地反映軟件整體的復(fù)雜度,。但單獨(dú)的OCK度量和MOOD度量都只考慮了繼承和耦合的單個(gè)方面的復(fù)雜性,,不能可靠地對(duì)軟件進(jìn)行整體評(píng)價(jià)。因此針對(duì)這兩種度量方法進(jìn)行改進(jìn),,補(bǔ)充每個(gè)度量方法缺少的方面,,從而提出新的面向?qū)ο筌浖?fù)雜性度量方法OSCM如下,與OCK度量和MOOD度量的比較如表1所示,。

 度量1 使用CPC度量指標(biāo)對(duì)類(lèi)復(fù)雜性進(jìn)行度量,。
 度量2 使用AIF,MIF,,CMIT和NOAC等4個(gè)度量指標(biāo)對(duì)繼承性進(jìn)行度量,。既有對(duì)系統(tǒng)級(jí)別繼承性的度量,又有對(duì)類(lèi)級(jí)別繼承性的度量,。
 度量3 使用AHF,,MHF和LCOC等3個(gè)度量指標(biāo)對(duì)封裝性進(jìn)行度量。既有對(duì)系統(tǒng)級(jí)別封裝性的度量又有對(duì)類(lèi)級(jí)別封裝性的度量,。
 度量4 使用PF度量指標(biāo)對(duì)多態(tài)性進(jìn)行度量,。
 度量5 使用CF,ACBT和WRFC等3個(gè)度量指標(biāo)對(duì)耦合性進(jìn)行度量。CF的度量粒度不夠細(xì)[6],,加上類(lèi)級(jí)別的ACBT和WRFC就能更好得衡量整體耦合性,。
 上述5條度量法則即為改進(jìn)提出的OSCM度量方法。OSCM度量綜合考慮了OCK度量和MOOD度量的優(yōu)缺點(diǎn),,可同時(shí)針對(duì)軟件類(lèi)級(jí)別和系統(tǒng)級(jí)別進(jìn)行度量,,有效地彌補(bǔ)CK度量和MOOD度量的不足。
本文在CK度量和MOOD度量的基礎(chǔ)上,,對(duì)CK度量進(jìn)行改進(jìn)完善,,提出OCK度量方法。再集成OCK度量和MOOD度量的優(yōu)點(diǎn),,提出面向?qū)ο筌浖?fù)雜性度量OSCM,。OSCM可較全面、可靠地對(duì)面向?qū)ο筌浖?fù)雜性進(jìn)行度量,,優(yōu)化度量結(jié)果,。
參考文獻(xiàn)
[1] PRESSMAN R S.軟件工程實(shí)踐者的研究方法[M].梅宏譯.北京:機(jī)械工業(yè)出版社,2002.
[2] LORENZ M,, KIDD J. Object-Oriented Software Metrics: A Practical Guide[M]. New Jersey: Prentice-Hall,,1994.
[3] CHIDAMBER S R, KEMERER C F. A metrics suite for object oriented design[J]. IEEE Transaction on Software Engineering,, 1994,,20(6):476-493.
[4] Li Wei. Another metric suite for object-oriented programming[J]. Journal of Systems and Software, 1998,,44(2): 155-162.
[5] ABREU F B. MOOD-metrics for object-oriented design[C]. Proc of the 9th Annual Conference on Object-Oriented Programming Systems,, Languages, and Applications. New York:ACM Press,,1994.
[6] 張偉.面向?qū)ο筌浖?fù)雜性度量研究[D].武漢:武漢理工大學(xué),,2007.
[7] 吳光金.面向?qū)ο筌浖?fù)雜性度量方法的研究[D].重慶:重慶大學(xué),2008.
[8] 倫立軍,,丁雪梅,,李英梅.面向?qū)ο筌浖攘考夹g(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2002,,19(12):40-42.
[9] 馬志新,,徐德啟,,杜偉杰.面向?qū)ο筌浖攘緾&K方法的研究與改進(jìn)[J].電子科技大學(xué)學(xué)報(bào),,2006,35(3):396-398.
[10] 李大鵬,,郭平,,陳新宇.一種集成類(lèi)層次和系統(tǒng)層次的面向?qū)ο筌浖?fù)雜性度量集[J].計(jì)算機(jī)研究與發(fā)展(增刊),2010,47:237-242.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。