王鳳琴
(湖北師范學(xué)院 物理與電子科學(xué)學(xué)院, 湖北 黃石 435002)
基于調(diào)用環(huán)境樹的軟件度量研究
王鳳琴
(湖北師范學(xué)院 物理與電子科學(xué)學(xué)院, 湖北 黃石 435002)
通過對調(diào)用環(huán)境樹的擴展,并針對方法的類內(nèi)和類間度量,在提出新的度量公式的基礎(chǔ)上,證明了相關(guān)的度量可行性需滿足的性質(zhì)。
調(diào)用環(huán)境樹;方法度量;軟件度量
軟件度量是一個研究非?;钴S的領(lǐng)域。Stevens提出了面向過程開發(fā)領(lǐng)域中的聚合,指出聚合為一個模塊的元素屬于另外一個模塊的度量值。Eder[1]提供了一個以高聚合為目標的框架,并提出了可理解的面向?qū)ο笙到y(tǒng)的聚合標準。他們采用已有的基于過程的和基于對象的度量框架,區(qū)分了面向?qū)ο蟮娜N類型聚合:方法,類和繼承聚合。Chidamber和Kemerer[2,3]定義相似為共同的屬性集合,并以此來定義類的聚合為它的方法的相似度。方法集合M的相似度是所有屬性中的共同被使用的屬性的數(shù)量。
Atanas Rountev[4]認為調(diào)用環(huán)境樹是方法體中方法互相調(diào)用的上下文。本文在此基礎(chǔ)上進行了擴展:1)增加“方法的所屬類”關(guān)系進而對類進行相關(guān)度量;2)擴展注釋信息以加強程序理解;3)增加方法調(diào)用線性鏈以進行更精確的度量。擴展調(diào)用環(huán)境樹考慮系統(tǒng)中類的方法之間的消息傳遞關(guān)系,是一種可以加強程序理解的可視化圖形。它既顯現(xiàn)出同一個類中方法之間的調(diào)用關(guān)系,也顯現(xiàn)出不同類的方法之間的調(diào)用。擴展調(diào)用環(huán)境樹的形式定義:
定義1 擴展調(diào)用環(huán)境樹是一個帶根星型總線圖G=(root,V,E,Order).其中:root是系統(tǒng)的入口方法。V表示結(jié)點集合。V=(header,comment),結(jié)點包括頭信息header和注釋comment.頭信息中定義了消息傳遞格式style.E表示邊的集合,可以看作調(diào)用方和被調(diào)用方的偏序關(guān)系,E=
定義2 header=style1∨style2∨style3∨style4。 “∨ ”表示析取關(guān)系。style1=方法名M(參數(shù)列表) in 類對象名C,表示類C中的結(jié)點所表示的方法/模塊M.style2=方法名M(參數(shù)列表) in style1.Style3=方法名M(參數(shù)列表) in 類對象名C:對象名V;表示賦值語句。sytle4=style3 of[返回類型],返回類型是style3中的對象名V的返回類型。
定義3 總線結(jié)構(gòu),有兩種情況采用總線結(jié)構(gòu),第一種情況是共享數(shù)據(jù)依賴,兩個方法中引用相同的參數(shù)或者全局變量。第二種情況是方法調(diào)用依賴。記為:DirectlylineStructure(V)表示直接相連方法鏈,結(jié)點在整個系統(tǒng)中引出的線性結(jié)構(gòu)記為lineStructure(V).顯然DirectlylineStructure(V) ?lineStructure(V).
定義4 星型結(jié)構(gòu):星型和總線是圖的拓撲結(jié)構(gòu),是方法的無相關(guān)調(diào)用關(guān)系。記為:starStructure(V).
定義5 類內(nèi)鏈出度數(shù):?vi∈V,vi∈linStructure.V記number(ei|vi→vi+1)(inClass)表示在結(jié)點vi所引出的鏈中直接關(guān)聯(lián)并在同一個類中的結(jié)點連接的邊的個數(shù)。
定義6 類內(nèi)出度數(shù):?vi∈V,記number( ei|vi→vi+1)(DirectlyinClass)表示結(jié)點vi所引出的邊中兩個在同一個類中的結(jié)點直接連接的邊的個數(shù)。
定義7 類外出度數(shù):?vi∈V,記number(ei|vi→vi+1)(DirectlyoutClass)表示結(jié)點vi所引出的邊中兩個不在同一個類中的結(jié)點直接連接的邊的個數(shù)。
定義8 結(jié)點鏈層數(shù):
|lineStructure|(layer)=number(ei|vi→vi+1)(inClass)+number(ei|vi→vi+1)(outClass)
定義9 相關(guān)節(jié)點個數(shù):鏈上所有節(jié)點之和|M|,在圖中顯示為從特定節(jié)點所能到達的所有節(jié)點之和。為|M|=number(ei:callout):(vi)+|lineStructure|(layer)
定義10 度量公式:
類內(nèi)直接連接方法的相對數(shù)(類內(nèi)緊密類內(nèi)聚度):
類內(nèi)直接或者間接連接方法的相對數(shù)(類內(nèi)松散類內(nèi)聚度):
類間直接連接方法的相對數(shù)(類間緊密類內(nèi)聚度):
類間直接或者間接連接方法的相對數(shù)(類間松散類內(nèi)聚度):
本節(jié)中給出在文獻[5]中所描述的聚合度量應(yīng)該滿足的性質(zhì)(非負和正規(guī)性,空值和最大值,單調(diào)性,無關(guān)結(jié)點聯(lián)合)的證明。
性質(zhì)1 非負和正規(guī)性:度量值都在[0.0..1.0]區(qū)間范圍之內(nèi)。
證明 從度量公式中可以看出,公式的分子小于分母,因此,此結(jié)論成立。
性質(zhì)2 空值和最大值:如果關(guān)聯(lián)為空,聚合值為0,最大關(guān)聯(lián)時聚合值為最大。
證明 沒有關(guān)聯(lián),度量值為0(根據(jù)聚合公式)。當所有的關(guān)聯(lián)都表示要度量的聚合時,聚合值為最大,值為1.
下面的x表示對應(yīng)公式分子,y表示對應(yīng)公式的分母,z表示引出的線性個數(shù)。
性質(zhì)3 單調(diào)性:從一個類中,移除關(guān)聯(lián)應(yīng)該比沒有移去之前更少類內(nèi)聚合。
性質(zhì)4 單調(diào)性:增加關(guān)聯(lián)后比沒有增加關(guān)聯(lián)之前更多的聚合。
性質(zhì)5 無關(guān)結(jié)點聯(lián)合:合并無關(guān)結(jié)點后,得到的聚合度量值不會增加。
證明 采用數(shù)學(xué)歸納法,只需證明合并兩個結(jié)點的情況。再使用窮舉法,分為下列幾種情況:第一是當合并的結(jié)點都為葉子結(jié)點時,由于合并前后的度量值都為0,也就是說合并后的聚合度量值沒有增加;第二種情況時合并的結(jié)點都為孤立結(jié)點,合并前后的度量值也為0;第三種情況是合并的結(jié)點之一為葉子結(jié)點或者為孤立結(jié)點,由于葉子結(jié)點和孤立結(jié)點沒有分支,度量的結(jié)果為非葉子結(jié)點的度量值;第四種情況是合并的結(jié)點都是非葉子結(jié)點,此時也就證明如下不等式:
注意:上面的不等式同時取等號的情況是:y1≥1∧y2≥1 ∧(z1=0∨z2=0)這是由于分母不為0,因此就不能取等號。取等號的情況是上面討論的三種情況。
性質(zhì)6 兩個類或者方法除非完全相同,采用相同的度量產(chǎn)生的度量值可能相同。
證明 有兩種情況:第一種情況是:由于本文的度量是基于方法間的消息傳遞而產(chǎn)生的調(diào)用環(huán)境圖,如果由兩個結(jié)點產(chǎn)生的圖形是同態(tài)的,也就是說,這兩個結(jié)點的消息傳遞關(guān)系在數(shù)值上會產(chǎn)生相同的值。從而會產(chǎn)生相同的值,但是這也可以說:它們之間有相同的聚合/耦合度量。第二種情況是:考察的兩個結(jié)點的度量公式的分子分母的比值相同,此時應(yīng)該借助經(jīng)驗系統(tǒng)來判斷。
性質(zhì)7 對于關(guān)聯(lián)的重新排列,緊密類聚合不變。
證明 邊的計數(shù)是決定什么測量,邊的數(shù)值沒有變化,由度量公式可以看出,此結(jié)論是正確的。
性質(zhì)8LCC對應(yīng)的關(guān)系是相應(yīng)于TCC對應(yīng)的關(guān)系的傳遞閉包(LCCic和LCCoc相應(yīng),TCCoc和TCCic相應(yīng))。
證明 設(shè)(mi,mj) 和(mj,mk) 是類內(nèi)直接調(diào)用關(guān)系,由圖的出度和入度可以看出(mi,mk) 也存在于類內(nèi)間接調(diào)用關(guān)系的集合中。因此,由傳遞閉包的定義,LCCic是相應(yīng)于TCCic的傳遞閉包;同理可以證明:LCCoc是相應(yīng)于TCCoc的傳遞閉包。
圖1是一個簡單的程序產(chǎn)生的調(diào)用環(huán)境圖和相應(yīng)的度量值,限于篇幅關(guān)系,本節(jié)略去了相應(yīng)的程序。從表1中可以看出:h1()的TCCic>TCCoc,且LCCic>LCCoc,h1()中很好的滿足面向?qū)ο蟮母呔酆咸匦?,因為h1()中調(diào)用的方法基本上和h1()同屬相同的類里。但是對于g2()方法,其TCCic
本文分析了當前在逆向工程領(lǐng)域和聚合度量領(lǐng)域的研究現(xiàn)狀,對方法度量提出了新的度量公式,但是存在如下問題未解決1)沒有進行方法交互的分類;2)方法交互的潛在線性相關(guān)關(guān)系,這將作為本文的后期工作。
圖1 產(chǎn)生的調(diào)用環(huán)境圖
表1 方法的類間和類內(nèi)度量值
[1]Eder J,Kappel G,Schrefl M.Coupleing and Cohesion in Object-Oriented Systems[R]. Technical Report,University of Klagenfurt,1994.
[2]Chidamber S R,Kemerer C F. Towards a Metrics Suit for Object Oriented design[C]. In Proc.Conference on Object Oriented Programming:System,Languages and Applications(OOPSLA'91), SIGPLAN Notices,1991, 26(11),197~211.
[3]Chidamber S R,Kemerer C F.A Metric Suit for Object-Oriented design[J]. IEEE Transactions on Software Engineering,1994, 20(6):476~493.
[4]Atanas Rountev, Scott Kagan, Michael Gibas.Static and Dynamic Analysis of Call Chains in Java[C].ISSTA'04, July 11~14, 2004, Boston, Massachusetts, USA ACM.
[5]Lieberherr K J,Xiao C.Formal Foundation for Object-Oriented Data Modeling[J].in IEEE Transactions on knowledge and Data Engineering,1993,5:462~478.
Softwaremetricsbasedoncall-contexttree
WANG Feng-qin
(College of Physics and Electronic Science,Hubei Normal University,Huangshi 435002,China)
To extend the Call Context Tree, and to measure the coherency between the in classes and outer classes, based on the new measure formulas, this paper prove the properties which need to satisfy the feasibility of software measure.
call context tree; method measure; software measure
2013—12—10
湖北師范學(xué)院青年項目
王鳳琴(1979— ),女,甘肅渭源人,碩士,講師,研究方向為數(shù)字圖像處理、軟件度量、分布式程序設(shè)計、大數(shù)據(jù)算法分析.
TP311.5
A
1009-2714(2014)02- 0001- 04
10.3969/j.issn.1009-2714.2014.02.001