《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種優化的面向對象軟件復雜性度量方法
一種優化的面向對象軟件復雜性度量方法
來源:微型機與應用2013年第21期
謝超超,楊 柳
(中南大學 軟件學院,湖南 長沙 410000)
摘要: 首先結合面向對象技術特性,對面向對象軟件類級別的CK度量方法和系統級別的MOOD度量方法進行了分析,并就CK度量提出了優化的度量方法OCK。然后結合OCK度量和MOOD度量的優點提出了較優化的面向對象軟件復雜性度量方法OSCM。OSCM度量可以有效地彌補CK度量和MOOD度量的不足,優化度量結果。
Abstract:
Key words :

摘  要: 首先結合面向對象技術特性,對面向對象軟件類級別的CK度量方法和系統級別的MOOD度量方法進行了分析,并就CK度量提出了優化的度量方法OCK。然后結合OCK度量和MOOD度量的優點提出了較優化的面向對象軟件復雜性度量方法OSCM。OSCM度量可以有效地彌補CK度量和MOOD度量的不足,優化度量結果。
關鍵詞: 面向對象;軟件度量;CK度量;MOOD度量;OCK度量;OSCM度量

 軟件的應用領域越來越廣,軟件的質量也越來越受到關注和重視。軟件復雜性很大程度上影響到軟件質量的好壞,其度量是軟件度量的重要方面。隨著面向對象軟件技術的廣泛應用,面向對象軟件復雜性度量也顯得尤為重要。面向對象度量的基本目標[1]和已存在的傳統軟件度量的目標一致:即更好地理解產品的質量,評估過程的效果,從而控制開發過程,以提高軟件質量。
 當前,已有很多面向對象軟件度量方法被提出,并在不斷被驗證及成熟。這些度量方法包括LK度量[2]、CK度量[3]、Li度量[4]和MOOD度量[5]等。但是這些度量方法依然存在缺陷,需要不斷進行研究和改進,以使這些度量更易于應用,從而更好地指導面向對象軟件的設計、開發,提高軟件質量[6]。
 本文分析了針對類層面的CK度量和針對系統層面的MOOD度量。這兩種度量都只是分散地針對軟件的某一個特定層面進行,在實際應用過程中,難以讓人們同時綜合類與類之間關系和系統級別這兩個層次的度量,致使無法更加系統全面地掌握軟件系統的復雜度。因此本文在分析CK度量和MOOD度量的基礎上,對CK度量進行改進,提出優化的度量方法OCK(Optimized CK),并與MOOD度量相結合,提出了一個較為優化的面向對象軟件復雜性度量方法OSCM(Optimized Software Complexity Metrics),以方便人們更快捷、有效地分析面向對象軟件系統的復雜度。
1 面向對象軟件度量方法
 自20世紀90年代以來,面向對象技術興起并被廣泛應用起來,人們逐漸開始研究有關面向對象軟件的度量[7]。不斷有面向對象軟件度量方法被提出,目前主要的面向對象軟件度量方法有:LK度量、CK度量、Li度量以及MOOD度量等。本文介紹面向對象軟件復雜性度量:CK度量和MOOD度量。
1.1 CK度量
 Chidamber和Kemerer等人于1994年提出的CK度量[3],是目前使用最為廣泛的度量體系之一,是面向對象軟件類級別度量方法,其中包括6條適用于面向對象設計的度量準則[8]。
?。?)每類加權方法數WMC(Weighted Method per Class)。WMC是一個類方法復雜度的加權總和。類WMC越大,對子類的可能影響越大,但其通用性和可復用性越差。
 (2)繼承樹深度DIT(Depth of Inheritance Tree)。DIT指從本類節點到根節點的繼承樹中路徑的最大深度,根節點值為0,以下各級依次遞增。DIT值越大,則其可能繼承方法數越多,復用程度越高,但預測其行為將更困難,同時設計越復雜。
?。?)每類孩子數NoC(Number of Children)。NOC是繼承樹中一個類的直接孩子數。NOC越大,重用性越好,但其父類抽象性減弱,測試越困難。
?。?)對象類之間耦合度CBO(Coupling Between Object Classes)。一個類的CBO指的是和其有耦合關系的類的數目。CBO越大,則類的可重用性越弱,且修改和測試越復雜。
?。?)類響應RFC(Response For a Class)。RFC是本類方法數加上被本類方法調用的方法的個數總和。RFC越大,類越復雜,且對該類進行測試和調試也越困難。
?。?)方法內聚缺乏度LCOM(Lack of Cohesion in Methods)。LCOM是相似度為零的方法對數量減去相似度不為零的方法對數量,相似度是兩個方法訪問相同屬性的程度。類的LCOM越大,方法內聚度越弱,則類可以分解為兩個或更多的子類。
1.2 MOOD度量
 MOOD度量是另一個著名的度量體系,是由Abreu等人于1994年針對軟件系統層次提出的[5]。MOOD度量從面向對象的封裝性、繼承性、耦合性和多態性4個方面給出面向對象軟件6個度量指標。
?。?)封裝性度量。封裝性由類中的屬性和方法實現,因此封裝性通過屬性隱藏因子AHF(Attribute Hiding Factor)和方法隱藏因子MHF(Method Hiding Factor)表示系統中所有類的屬性和方法的隱藏程度。隱藏因子的值越大,系統中信息隱藏得越好。
?。?)繼承性度量。繼承性通過屬性繼承因子AIF(Attribute Inheritance Factor)和方法繼承因子MIF(Method Inheritance Factor)表示系統中所有類的屬性和方法的繼承程度。繼承因子的值越大,系統中信息繼承的程度越高。
 (3)耦合性度量。耦合性通過耦合因子CF(Coupling Factor)表示系統中所有類之間的耦合程度,但不將繼承關系考慮進去。CF越大,類之間耦合越頻繁。
?。?)多態性度量。多態性通過多態因子PF(Polymorphism Factor)表示系統中所有類方法使用多態機制的程度。
2 面向對象軟件復雜性度量方法
 面向對象軟件復雜性度量方法雖已得到發展和完善,但依舊存在一定的缺陷。首先分析CK度量的不足,并在CK度量的基礎上提出改進的度量方法OCK。然后結合OCK度量和MOOD度量的優點從而提出較為優化的面向對象軟件復雜性度量OSCM。
2.1 CK度量的分析與改進
?。?)WMC只考慮方法成員,沒有考慮屬性成員對類復雜性的影響[9],也沒有根據類成員可見性的不同區別看待各成員對類復雜性的影響,類公有成員,保護成員和私有成員各自對類復雜性影響程度大小不同。因此,在WMC的基礎上提出類的復雜性CPC(Complexity Per Class)度量指標。

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

 根據上述對CK度量方法的分析與改進,提出優化的CK度量方法OCK,其包括CPC、CMIT、NOAC、ACBT、WRFC、LCOC等6個相對應的度量指標,每個度量指標針對性地彌補每點缺陷。例如,采用OCK度量的CPC能綜合考慮一個類的屬性和方法以及不同可見性成員對該類復雜性的影響;CMIT度量指標解決了多重繼承的度量問題,消除歧義;NOAC值涵蓋了一個類的所有子孫;ACBT依據耦合類型的不同分配不同的權值從而度量類的耦合性等等。
2.2 面向對象軟件復雜性度量方法OSCM
 OCK度量方法雖在CK度量的基礎上進行了改進,但仍存在一些缺陷。首先OCK度量沒有對多態性進行度量,多態對整個系統的復雜性有很大影響;其次OCK與CK度量一樣主要是針對類層面,在系統層面沒有很好的度量指標。MOOD度量也存在一定的不足。比如,MOOD度量沒有對類方法和屬性以及類之間的關系進行研究,也沒有完整定義抽象性和復雜性[10]。
 此外,繼承性和耦合性也是面向對象的基本特性,將軟件類層面和系統層面的繼承性、耦合性度量結合起來可以更好地反映軟件整體的復雜度。但單獨的OCK度量和MOOD度量都只考慮了繼承和耦合的單個方面的復雜性,不能可靠地對軟件進行整體評價。因此針對這兩種度量方法進行改進,補充每個度量方法缺少的方面,從而提出新的面向對象軟件復雜性度量方法OSCM如下,與OCK度量和MOOD度量的比較如表1所示。

 度量1 使用CPC度量指標對類復雜性進行度量。
 度量2 使用AIF,MIF,CMIT和NOAC等4個度量指標對繼承性進行度量。既有對系統級別繼承性的度量,又有對類級別繼承性的度量。
 度量3 使用AHF,MHF和LCOC等3個度量指標對封裝性進行度量。既有對系統級別封裝性的度量又有對類級別封裝性的度量。
 度量4 使用PF度量指標對多態性進行度量。
 度量5 使用CF,ACBT和WRFC等3個度量指標對耦合性進行度量。CF的度量粒度不夠細[6],加上類級別的ACBT和WRFC就能更好得衡量整體耦合性。
 上述5條度量法則即為改進提出的OSCM度量方法。OSCM度量綜合考慮了OCK度量和MOOD度量的優缺點,可同時針對軟件類級別和系統級別進行度量,有效地彌補CK度量和MOOD度量的不足。
本文在CK度量和MOOD度量的基礎上,對CK度量進行改進完善,提出OCK度量方法。再集成OCK度量和MOOD度量的優點,提出面向對象軟件復雜性度量OSCM。OSCM可較全面、可靠地對面向對象軟件復雜性進行度量,優化度量結果。
參考文獻
[1] PRESSMAN R S.軟件工程實踐者的研究方法[M].梅宏譯.北京:機械工業出版社,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] 張偉.面向對象軟件復雜性度量研究[D].武漢:武漢理工大學,2007.
[7] 吳光金.面向對象軟件復雜性度量方法的研究[D].重慶:重慶大學,2008.
[8] 倫立軍,丁雪梅,李英梅.面向對象軟件度量技術研究[J].計算機應用研究,2002,19(12):40-42.
[9] 馬志新,徐德啟,杜偉杰.面向對象軟件度量C&K方法的研究與改進[J].電子科技大學學報,2006,35(3):396-398.
[10] 李大鵬,郭平,陳新宇.一種集成類層次和系統層次的面向對象軟件復雜性度量集[J].計算機研究與發展(增刊),2010,47:237-242.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲高清资源综合久久精品| 欧美在线资源| 国产精品福利av| 美女91精品| 亚洲免费在线视频一区 二区| 久久精品30| 中文有码久久| 亚洲黄色免费网站| 国语精品中文字幕| 国产精品美女久久久久av超清| 欧美成人综合在线| 久久精品国产久精国产思思| 亚洲少妇诱惑| 亚洲经典在线看| 欧美专区福利在线| 亚洲视频在线一区观看| 亚洲电影下载| 黑丝一区二区三区| 国产欧美一区二区精品婷婷| 欧美日韩综合另类| 欧美精品久久天天躁| 久久午夜国产精品| 久久精品道一区二区三区| 亚洲欧美日韩网| 一区二区三区毛片| 亚洲免费成人av电影| 亚洲国产精品久久久久婷婷884| 亚洲欧美成人| 亚洲影院免费观看| 亚洲视频自拍偷拍| 91久久久精品| 亚洲国产精品免费| 在线观看亚洲视频啊啊啊啊| 国产亚洲日本欧美韩国| 国产欧美一区视频| 国产日韩欧美高清| 国产欧美日韩亚洲精品| 国产精品亚洲一区二区三区在线| 你懂的国产精品| 久久亚洲精品一区| 亚洲欧美一区二区在线观看| 一区二区三区日韩欧美| 亚洲日本激情| 亚洲国产精品电影在线观看| 亚洲成人在线网站| 在线播放国产一区中文字幕剧情欧美 | 国模 一区 二区 三区| 欧美日韩在线不卡| 欧美日韩在线另类| 欧美视频精品一区| 国产精品伦理| 国产乱码精品一区二区三区不卡 | 宅男噜噜噜66一区二区66| 99re6热在线精品视频播放速度| 亚洲精品在线一区二区| 亚洲精品影院在线观看| 亚洲毛片在线| 亚洲先锋成人| 午夜精品一区二区在线观看| 欧美有码视频| 亚洲国产精品精华液网站| 亚洲理伦在线| 亚洲免费网站| 久久国产直播| 亚洲欧美在线免费观看| 久久久国产亚洲精品| 亚洲精品国产精品国自产观看浪潮 | 亚洲精品字幕| 一区二区三区不卡视频在线观看 | 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品美女一区二区在线观看 | 久久亚洲精品视频| 免费欧美日韩国产三级电影| 欧美国产在线电影| 国产精品成人一区二区三区夜夜夜| 国产精品久久| 欧美在线日韩精品| 国产精品中文字幕欧美| 亚洲国产高清aⅴ视频| 欧美三级电影一区| 性欧美精品高清| 亚洲欧美日韩电影| 在线观看日韩精品| 国产精品毛片一区二区三区| 日韩视频中文| 亚洲国产精品成人综合| 亚洲精品欧美极品| 亚洲午夜久久久久久久久电影院| 篠田优中文在线播放第一区| 亚洲日本理论电影| 一区二区三区国产精华| 亚洲伊人一本大道中文字幕| 久久精品99无色码中文字幕 | 国内精品视频在线观看| 亚洲精品久久久久久久久久久久久 | 国产区在线观看成人精品| 久久激情综合网| 国产日韩视频| 欧美午夜免费影院| 欧美日韩国产成人在线免费| 猫咪成人在线观看| 久久九九国产精品| 一区二区三区四区蜜桃| 亚洲国产精品小视频| 国产欧美精品日韩精品| 国产网站欧美日韩免费精品在线观看 | 卡通动漫国产精品| 一区二区三区色| 激情欧美一区二区三区| 欧美三级视频在线| 99精品视频免费观看| 欧美一区二区三区免费观看| 99视频精品全部免费在线| 久久久91精品| 国产精品久久国产三级国电话系列 | 亚洲欧美激情诱惑| 免费亚洲网站| 国产亚洲综合性久久久影院| 亚洲人成在线观看| 国产精品99久久久久久久vr| 欧美永久精品| 在线一区观看| 久久夜色精品一区| 国产精品入口麻豆原神| 亚洲激情网址| 欧美一级淫片aaaaaaa视频| 一区二区三区视频观看| 欧美成人久久| 一区二区在线观看视频| 一区二区三区日韩精品视频| 欧美夜福利tv在线| 一本色道久久综合亚洲精品小说 | 性高湖久久久久久久久| 欧美日韩国产一级| 亚洲福利av| 久久精品一二三区| 久久精品噜噜噜成人av农村| 国产精品久久网站| 一个色综合av| 亚洲免费婷婷| 欧美专区在线观看一区| 国产精品久久一卡二卡| 亚洲网站视频福利| 亚洲影院高清在线| 欧美午夜不卡| 99视频精品全国免费| 一区二区三区国产盗摄| 欧美日本一道本| 亚洲看片免费| 一二三区精品福利视频| 欧美另类在线播放| 亚洲精品社区| 一本色道久久加勒比88综合| 欧美日韩国产123区| 日韩视频在线你懂得| 亚洲深夜福利| 国产精品家庭影院| 亚洲男人的天堂在线| 久久av在线看| 国内精品视频666| 亚洲国产欧美日韩精品| 麻豆精品一区二区av白丝在线| 在线播放日韩欧美| 亚洲区一区二区三区| 欧美精品一区二| 在线视频国内自拍亚洲视频| 亚洲精品乱码久久久久久| 欧美激情视频一区二区三区免费| 亚洲精品在线一区二区| 在线一区二区三区四区五区| 国产精品vvv| 欧美一级电影久久| 美女主播精品视频一二三四| 亚洲人妖在线| 亚洲主播在线播放| 国产一二三精品| 亚洲狠狠婷婷| 欧美日韩午夜| 亚洲欧美一区二区激情| 久久综合99re88久久爱| 亚洲国内欧美| 亚洲一区二区在线看| 国产欧美精品一区二区色综合| 欧美中文在线视频| 欧美第一黄色网| 99热这里只有精品8| 久久av一区二区三区漫画| 亚洲电影一级黄| 亚洲一区二区视频在线| 国产曰批免费观看久久久| 亚洲精品一区二区三| 国产精品二区在线| 久久精品99国产精品日本| 欧美粗暴jizz性欧美20| 亚洲色在线视频| 久久久国产精品一区| 亚洲破处大片| 欧美一区在线视频| 亚洲高清自拍| 午夜在线一区|