999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向?qū)ο筌浖蓄悆?nèi)聚度度量分析與研究

2007-12-31 00:00:00陳文海郝克剛

摘要:對現(xiàn)有著名的類內(nèi)聚度度量進(jìn)行了較深入的分析,指出了各自存在的缺陷與不足,并在此基礎(chǔ)上考慮到類內(nèi)聚度受到類內(nèi)有可能與外界組件產(chǎn)生耦合的成員的負(fù)面影響,提出了對CCM(C)再次修正后的MCCM2(C)。

關(guān)鍵詞:面向?qū)ο? 軟件度量; 內(nèi)聚度

中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1001-3695(2007)07-0040-03

0引言

軟件開發(fā)的目標(biāo)是開發(fā)出高內(nèi)聚和低耦合的系統(tǒng)[1]。內(nèi)聚應(yīng)該是模塊成分之間的相互關(guān)系。一個(gè)高內(nèi)聚的模塊就是具有一個(gè)基本功能的模塊,一個(gè)內(nèi)聚性很好的模塊是很難被分離的。根據(jù)內(nèi)聚的等級將內(nèi)聚分類。其中一致內(nèi)聚是最低級的內(nèi)聚,也是軟件開發(fā)者最不想要的內(nèi)聚;功能內(nèi)聚是最高級的內(nèi)聚,是開發(fā)者追求的內(nèi)聚。內(nèi)聚標(biāo)志著一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,即它度量單個(gè)模塊所完成的諸項(xiàng)任務(wù)在功能上相互關(guān)聯(lián)的程度。軟件設(shè)計(jì)力求做到高內(nèi)聚,理想內(nèi)聚的模塊只完成一項(xiàng)相對完整的任務(wù)。通常,中等程度的內(nèi)聚也是可以采用的,而且效果與高內(nèi)聚差不多;低內(nèi)聚不理想,一般不使用。

內(nèi)聚和耦合是密切相關(guān)的[2]。模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具。但實(shí)踐表明,內(nèi)聚更重要,應(yīng)該把更多的注意力放到提高模塊的內(nèi)聚度方面。

面向?qū)ο蠹夹g(shù)采用數(shù)據(jù)抽象、封裝、繼承、多態(tài)性、信息隱藏、重用等機(jī)制,增強(qiáng)了軟件的可維護(hù)性、可靠性,提高了生產(chǎn)效率等。這在傳統(tǒng)的軟件開發(fā)中是不完善的或缺少的。面向?qū)ο筌浖拈_發(fā)方法不同于傳統(tǒng)的基于功能分解和數(shù)據(jù)流程的開發(fā)方法。目前面向?qū)ο蟮能浖_發(fā)技術(shù)已成為軟件開發(fā)的主流技術(shù)。為了評價(jià)面向?qū)ο筌浖O(shè)計(jì)的質(zhì)量,很多學(xué)者提出了面向?qū)ο筌浖攘康姆椒ǎ鹆藢W(xué)術(shù)界和產(chǎn)業(yè)界的極大關(guān)注。

1相關(guān)研究及其分析

類是面向?qū)ο筌浖幕締卧且唤M屬性與操作在這組屬性上的方法的集合。設(shè)計(jì)高質(zhì)量的類是面向?qū)ο筌浖O(shè)計(jì)者的追求。但是在設(shè)計(jì)階段,如果采用不合適的建模方法,很難設(shè)計(jì)出高內(nèi)聚類。為了評價(jià)面向?qū)ο笙到y(tǒng)中類內(nèi)聚度,很多學(xué)者根據(jù)自己對類內(nèi)聚度的理解提出了相應(yīng)的評價(jià)準(zhǔn)則。這些大多數(shù)類內(nèi)聚度度量都是對Chidamber和Kemerer[3]的類內(nèi)聚缺乏度LCOM(Lack of Cohesion in Methods)的擴(kuò)展和延伸。

現(xiàn)有類內(nèi)聚度量基本上都建立在對類中實(shí)例變量使用和共享的基礎(chǔ)上[4]。類中實(shí)例變量被引用或被方法共享的次數(shù)越多,其類內(nèi)聚度就越高。表1對目前著名的類內(nèi)聚度度量進(jìn)行了總結(jié)。

Chidameber和Kemerer提出用類內(nèi)聚缺乏度LCOM(LCOM1,LCOM2)來評價(jià)類內(nèi)聚度。LCOM1計(jì)算的是類中沒有共享實(shí)例變量的方法對數(shù)目,LCOM2計(jì)算類中有共享實(shí)例變量的方法對數(shù)目與沒有共享實(shí)例變量的數(shù)目差值。Li和Henry提出LCOM3計(jì)算類中沒有共享實(shí)例變量的方法集數(shù)目。后來Hitz和Montazeri重新定義了LCOM3。他們以圖論為基礎(chǔ)統(tǒng)計(jì)類中兩個(gè)不同方法中至少有一個(gè)共享實(shí)例變量的方法對數(shù)。LCOM4定義了方法與方法之間的調(diào)用關(guān)系。從LCOM1~4可以明顯看出,其度量值都與類中方法數(shù)目有著密切的關(guān)系,如圖1所示。采用這幾種方法對類A、B、C進(jìn)行類內(nèi)聚度度量。用LCOM1度量值分別為C27-6=15,C26-5=10,C24-0=6。從度量的結(jié)果可以看出,類A的內(nèi)聚度是最差的,其次是類B,而內(nèi)聚度最強(qiáng)的是類C,這與類C的類聚度是最差的事實(shí)相反。用LCOM2度量值分別為15-6=9,10-5=5,6-0=6。可以看出,內(nèi)聚度最差的還是類A而不是類C。用LCOM3或LCOM4度量值分別為:7、5、0,雖然在這組度量數(shù)據(jù)中類C的內(nèi)聚度是最差的,但是類A的內(nèi)聚度比類B的內(nèi)聚度大,這與實(shí)際是不相符的。從上面這個(gè)簡單的實(shí)例可以很明顯地看出,它們所存在的共同缺陷就是受類中方法數(shù)目的影響較大。所以有學(xué)者提出了相對類內(nèi)聚度的方法。Co度量方法計(jì)算的是類中存在的有共享實(shí)例變量的方法對數(shù)目與可能存在的方法對數(shù)目的比值。Hendersen-Sellers提出的LCOM5計(jì)算的是屬性被方法平均訪問的個(gè)數(shù),是一個(gè)相對概念。Co和LCOM5都以一個(gè)相對比值作為度量消除了類中方法個(gè)數(shù)對度量結(jié)果的影響。

表1現(xiàn)有著名的類內(nèi)聚度度量

Bieman和Kang提出的TCC(Tight Class Cohesion)和LCC(Loose Class Cohesion)也考慮了類中共享實(shí)例變量的方法對,TCC計(jì)算出類中有直接關(guān)聯(lián)的方法對數(shù)目與類中最大可能存在的方法對數(shù)目的比值;LCC計(jì)算出了類中有直接或間接關(guān)聯(lián)的方法對數(shù)目與最大可能存在的方法對數(shù)目比值。TCC和LCC衡量類中有關(guān)方法與方法之間關(guān)聯(lián)程度強(qiáng)與弱的兩個(gè)不同指標(biāo)。其度量值是一個(gè)相對值,類中的方法數(shù)目不會(huì)對其準(zhǔn)確性產(chǎn)生較大影響。

Wasiq提出的CCM(C)、CCCM(C)、MCCM(C)作為評價(jià)類內(nèi)聚度的指標(biāo),CCM(C)和CCCM(C)兩個(gè)衡量指標(biāo)不僅考慮了類中有關(guān)聯(lián)方法的數(shù)目,而且更重要的是還考慮了類中成員之間的連通問題。連通是指將類映射成無向圖G(M,E)。其中,M是G中的頂點(diǎn),與類中的方法對應(yīng);E是方法與方法之間有關(guān)聯(lián)關(guān)系的序列。如果G是連通的,則該類中的方法也是連通的。更值得一提的是MCCM(C)還考慮了對類內(nèi)聚度產(chǎn)生負(fù)面影響的因素,但其只考慮了重寫對類內(nèi)聚度的影響。

Simon等人[12]提出的基于距離的類內(nèi)聚度度量,主要用類中兩個(gè)方法的相似度作為基礎(chǔ)來衡量類內(nèi)聚度。國內(nèi)很多學(xué)者提出了基于切片技術(shù)的類內(nèi)聚度度量[1],如基于依賴性的類內(nèi)聚度量[13]、基于類結(jié)構(gòu)的類內(nèi)聚度量[14]等。以上度量基本都從類中成員之間的關(guān)系(屬性與屬性、方法與屬性、方法與方法)來考慮類內(nèi)聚度,只有CCM(C)、CCCM(C)、MCC(M)考慮到了類中各個(gè)成員的連通問題,而且MCCM(C)還考慮了影響類內(nèi)聚度的負(fù)面因素。但它只考慮了類中方法重寫對類內(nèi)聚度的負(fù)面影響。面向?qū)ο蟮能浖O(shè)計(jì)中,類是一個(gè)層次概念,它不僅在縱向上與繼承的父類和繼承它的子類有關(guān)系,而且要與橫向的其他類發(fā)生聯(lián)系。這些都應(yīng)該考慮在影響類內(nèi)聚度的負(fù)面因素中。所以提出了對CCM(M)進(jìn)行重新修正的類內(nèi)聚度度量MCCM2(C)。

2再次修正CCM(C)后的MCCM2(C)

類內(nèi)內(nèi)聚度度量主要從類中各個(gè)成員(方法與屬性)的緊密程度來度量。繼承性、多態(tài)性是面向?qū)ο筌浖O(shè)計(jì)的三大重要特征中的兩個(gè),但它們對單個(gè)類內(nèi)內(nèi)聚度來說起負(fù)面影響作用。因?yàn)橐粋€(gè)類在類層次中可能既有父類又有子類,所以應(yīng)該考慮父類和子類兩方面有可能對該類產(chǎn)生的影響。父類產(chǎn)生的影響主要從父類繼承的方法和屬性來考慮;多態(tài)性從面向?qū)ο笾卸鄳B(tài)實(shí)現(xiàn)的兩種主要機(jī)制(方法重寫和方法覆蓋)來考慮。主要考慮類中的方法和屬性對其他類或?qū)ο蟮目梢娦裕粋€(gè)類中的方法和屬性可能被子類繼承,還有可能被其他有關(guān)聯(lián)的類引用,這類有可能被子類和其他關(guān)聯(lián)類引用的成員主要有該類中的共有方法和屬性。

3MCCM2(C)的應(yīng)用

圖2所示的是考慮外界負(fù)面因素影響的類內(nèi)聚度的度量。圖中類間的關(guān)聯(lián)可以表示由于繼承或消息通信所帶來的類間聯(lián)系。從圖2中可以看出,(a)中的類A內(nèi)聚度明顯低于(b)中類A的內(nèi)聚度。但是用上述度量方法基本上不能區(qū)分這兩個(gè)類在內(nèi)聚度方面的差別;MCCM2(C)卻能很好地區(qū)分這種差別。

MCCM2(C)能指出一個(gè)類的全面內(nèi)聚。此外,CMM和PF2能體現(xiàn)類的設(shè)計(jì)的一些問題。

(1)CCM高PF2低

類中的各個(gè)成員(屬性或方法)之間的聯(lián)系緊密,總體對類的內(nèi)聚度貢獻(xiàn)大,同時(shí)該類與外界部件發(fā)生聯(lián)系的可能性小,對于面向?qū)ο蟮能浖碚f具有較高的封裝性。這樣的軟件設(shè)計(jì)真正體現(xiàn)了軟件設(shè)計(jì)準(zhǔn)則“高內(nèi)聚,低耦合”。

(2)CCM高PF2高

類中的各個(gè)成員(屬性或方法)之間的聯(lián)系緊密,總體對類的內(nèi)聚度貢獻(xiàn)大,但是該類與外界部件發(fā)生聯(lián)系的可能性大,沒有很好地體現(xiàn)面向?qū)ο筌浖蟹庋b性的特點(diǎn)。

(3)CCM低PF2低

類中的各個(gè)成員(屬性或方法)之間的聯(lián)系松散,但是該類與外界部件發(fā)生聯(lián)系的可能性小,很好地體現(xiàn)了面向?qū)ο筌浖蟹庋b性的特點(diǎn)。這種軟件設(shè)計(jì)的類粒度過大,應(yīng)考慮將其劃分成不同的子類更為合適。

(4)CCM低PF2高

類中的各個(gè)成員(屬性或方法)之間的聯(lián)系松散;同時(shí)該類與外界部件發(fā)生聯(lián)系的可能性大,沒有很好地體現(xiàn)面向?qū)ο筌浖蟹庋b性的特點(diǎn)。這種設(shè)計(jì)是軟件設(shè)計(jì)中最不理想的情況,既沒有好的內(nèi)聚性,也沒有好的封裝性。這種類一般需要重新設(shè)計(jì)。

4結(jié)束語

面向?qū)ο蟮亩攘颗c面向過程的度量相比,起步比較晚,所以在理論和實(shí)踐中都不是很完善。該文就目前有關(guān)類內(nèi)聚度度量中著名的方法進(jìn)行了比較深入的分析,指出了各自存在的缺陷與不足。類具有層次關(guān)系,類的內(nèi)聚度應(yīng)該考慮它在層次中的縱向關(guān)系,也應(yīng)該考慮它在實(shí)際應(yīng)用中的橫向關(guān)系,而目前有關(guān)類內(nèi)聚度度量研究大多數(shù)只考慮了類中方法和屬性、方法和方法之間的關(guān)系,很少考慮到類中成員有可能與外界組件發(fā)生耦合的負(fù)面影響。本文基于此,充分考慮了類中與外界可能發(fā)生耦合的負(fù)面影響,提出了再次修正CCM(C)后的MCCM2(C)。根據(jù)類內(nèi)聚度度量研究現(xiàn)狀,在下一步研究中應(yīng)該注意以下方面:

①類中各個(gè)成員的連通性,以及各個(gè)連通子圖的結(jié)構(gòu)對類內(nèi)聚度的影響;

②從類所實(shí)現(xiàn)的功能對類內(nèi)聚度進(jìn)行度量;

③類中成員對類內(nèi)聚度貢獻(xiàn)的差異性的量化研究;

④研究類中各個(gè)成員之間的功能依賴和邏輯依賴性對類內(nèi)聚度度量的影響;

⑤類中各個(gè)方法相似度的研究,考慮它們對類內(nèi)聚度的影響。

參考文獻(xiàn):

[1]李必信,朱平,譚毅,等.基于數(shù)據(jù)切片度量Java內(nèi)聚性[J].軟件學(xué)報(bào),2001,12(12):1851-1858.

[2]倫立軍,丁雪梅,李英梅.面向?qū)ο笙到y(tǒng)的耦合性度量技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(29):116-118.

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

[4]BRIAND L C, DALY J, WUSR J. A unified framework for cohesion measurement in object-oriented systems[J]. Empirical Software Engineering, 1998,3(1):67-117.

[5]CHIDAMBER S R, DARCY D P, KEMERER C F. Mangerial use of metrics for object-oriented software: an exploratory analysis[J]. IEEE Transactions on Software Engineering, 1998,24(8):629-639.

[6]LI Wei, HENRY S. Object oriented metrics that predict maintaina-bility[J]. Journal of Systems and Software, 1993,23(2):111-122.

[7]HITZ M, MONTAZERI B. Measuring coupling and cohesion in object oriented systems: proc.of Int.Symposium on Applied Corporate Computing[C].[S.l.]:[s.n.], 1995:25-27.

[8]HENDERSON-SELLERS B.Object-oriented metrics measures of complexity[M].[S.l.]: Prentice-Hall, 1996.

[9]BIEMAN J M, KANG B K. Cohesion and reuse in an object-oriented system: proc.of Symposium on Software Reusability(SSR’95)[C]. Seattle, WA:[s.n.], 1995:259-262.

[10]WASIQ M. Measuring class cohesion in object-oriented systems[D].[S.l.]: Information and Computer Science, KFUPM, 2001.

[11]CHAE H S, KWON Y R. A cohesion measure for classes in object-oriented system: proc.of the 5th ISMS[C].Bethesda, USA: IEEE, 1998:158-166.

[12]SIMON F, LOFFLER S, LEWERENTZ C. Distance based cohesion on measuring: FESMA’99[C]. Amsterdam:[s.n.], 1999.

[13]陳振強(qiáng),徐寶文.一種基于依賴性分析的類內(nèi)聚度度量方法[J].軟件學(xué)報(bào),2003,14(11):1849-1856.

[14]黃江,宋雨,馬永光.面向?qū)ο笙到y(tǒng)中考慮結(jié)構(gòu)因素的類的內(nèi)聚度量[J].華北電力大學(xué)學(xué)報(bào),2004,31(2):83-86.

[15]BADRI L, BADRI M. A new class cohesion criterion: an empirical study on several systems[J]. Empirical Software Engineering, 1998,3(1):65-117.

[16]劉宗田.面向?qū)ο筌浖攘恐械膬?nèi)聚缺乏度分析[J].計(jì)算機(jī)研究與發(fā)展,2001,38(2):138-143.

注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”

主站蜘蛛池模板: 日韩欧美亚洲国产成人综合| 欧美激情视频一区| 一区二区在线视频免费观看| 欧美黄网在线| 国内丰满少妇猛烈精品播| 久久婷婷六月| 日本在线欧美在线| 99国产精品免费观看视频| 日韩人妻少妇一区二区| 国产精品美女网站| 中文成人在线| 成人午夜视频网站| 亚洲成综合人影院在院播放| 2020国产在线视精品在| 亚洲精品无码久久毛片波多野吉| 在线看片免费人成视久网下载| 91欧美在线| 成人福利在线看| 日韩精品无码免费专网站| 国产永久在线视频| 3p叠罗汉国产精品久久| 国产一区二区网站| 国产成人一二三| 91久久青青草原精品国产| 91丝袜乱伦| 一本大道视频精品人妻| 欧美国产日韩在线| 伊人久久综在合线亚洲91| 亚洲人人视频| 色综合成人| 亚洲IV视频免费在线光看| 亚洲人成在线免费观看| 久久亚洲国产最新网站| 欧美日韩在线亚洲国产人| 日韩精品毛片| 精品国产乱码久久久久久一区二区| av在线人妻熟妇| 麻豆AV网站免费进入| 天天操天天噜| 亚洲综合在线最大成人| 欧美日韩综合网| 伊人成人在线视频| 中文字幕第1页在线播| 国产精品免费露脸视频| 狠狠色噜噜狠狠狠狠奇米777| 天堂在线亚洲| 日韩精品免费一线在线观看| 欧美人人干| 无码高潮喷水专区久久| 四虎AV麻豆| 国产三级视频网站| 美女免费黄网站| 午夜福利网址| 少妇被粗大的猛烈进出免费视频| 99re经典视频在线| 国产精品国产三级国产专业不| 伊人久久大香线蕉综合影视| 女人18毛片一级毛片在线 | 2020国产精品视频| 欧美一级在线看| 亚洲日本韩在线观看| 中文字幕久久波多野结衣| 国产精品亚洲а∨天堂免下载| 欧美全免费aaaaaa特黄在线| 中文字幕欧美日韩高清| 日本欧美视频在线观看| 另类欧美日韩| 怡春院欧美一区二区三区免费| 人人看人人鲁狠狠高清| 另类重口100页在线播放| 免费看av在线网站网址| 日日摸夜夜爽无码| 国产精品成人观看视频国产 | 亚洲精品另类| 亚洲国产成人在线| 欧美色香蕉| 欧美精品黑人粗大| 日韩免费毛片视频| 国产毛片不卡| 色婷婷亚洲综合五月| 亚洲欧美在线综合一区二区三区| 97久久超碰极品视觉盛宴|