亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向?qū)ο筌浖攘恳蜃拥膬缏煞植佳芯?/h1>
        2018-02-27 03:09:49冼偉成劉宏韜胡志剛
        計算機應(yīng)用與軟件 2018年1期
        關(guān)鍵詞:方法研究

        冼偉成 劉 偉,2 劉宏韜 胡志剛

        1(中南大學(xué)軟件學(xué)院 湖南 長沙 410075) 2(湖南中醫(yī)藥大學(xué)管理與信息工程學(xué)院 湖南 長沙 410208)

        0 引 言

        冪律分布相關(guān)理論研究在自然語言處理和各種自然數(shù)據(jù)分析中已經(jīng)取得較豐碩的成果。眾所周知的8020法則就是冪律分布的一種典型表現(xiàn)形式。在一次軟件工程會議上,人們通過研究發(fā)現(xiàn)“軟件工程研究中,80%的貢獻(xiàn)來自于20%的科研人員”[1],這就是冪律分布存在于軟件工程領(lǐng)域中的一種宏觀表現(xiàn)。如今,在軟件質(zhì)量領(lǐng)域的經(jīng)驗研究中,研究度量結(jié)果中出現(xiàn)的冪律分布特征是其中的一個重要方向。

        研究軟件中冪律分布的存在形式,并分析其產(chǎn)生原因,可以從經(jīng)驗研究的角度為軟件質(zhì)量研究提供依據(jù),有助于軟件工程研究人員深入理解影響代碼質(zhì)量的原因。在軟件開發(fā)過程中結(jié)合冪律分布規(guī)律指導(dǎo)開發(fā),有利于提高軟件的可靠性、可維護性,在提升代碼質(zhì)量的同時提高開發(fā)效率。

        本文主要對4個大型Java開源項目進行研究,分別對影響軟件質(zhì)量的3個主要度量因子進行度量。利用冪律分布的研究方法對3個度量因子的分布規(guī)律進行研究。本文采用極大似然估計法MLE(Maximum Likelihood Estimate)分別求得各個項目度量因子統(tǒng)計結(jié)果的擬合形狀參數(shù),并使用假設(shè)檢驗對冪律分布的擬合效果進行評價。利用度量因子統(tǒng)計結(jié)果擬合的冪律分布函數(shù),在4個大型Java開源項目中發(fā)現(xiàn)潛在軟件質(zhì)量問題。

        1 冪律分布在軟件系統(tǒng)中的研究背景

        1.1 冪律分布概述

        在大多數(shù)關(guān)于冪律分布的研究中,將冪律分布分為兩類進行單獨研究:離散型和連續(xù)型。

        連續(xù)型冪律分布的概率密度函數(shù)PDF(Probability Density Function):

        (1)

        當(dāng)α>1和xmin>0時,離散型冪律分布的概率質(zhì)量函數(shù)PMF(Probability Mass Function):

        (2)

        (3)

        式(3)是推廣的zeta函數(shù)。且當(dāng)xmin=1時,ζ(α,1)是標(biāo)準(zhǔn)的zeta函數(shù)。

        冪律分布的累積分布函數(shù)有非常簡單的形式,對于連續(xù)型冪律分布的累積分布函數(shù)為:

        (4)

        (5)

        1.2 基于極大似然估計的冪律分布擬合法

        在已有關(guān)于面向?qū)ο筌浖攘恐袃缏煞植佳芯康奈墨I(xiàn)中,絕大部分使用在雙對數(shù)坐標(biāo)系中采用線性擬合來獲得冪律分布的形狀參數(shù)。這種方法是擬合冪律分布函數(shù)最常用的方法,但這種方法存在較大的主觀性且容易出錯。Clauset在文獻(xiàn)[2]中對比了三種冪律分布函數(shù)的擬合方式,文中發(fā)現(xiàn)擬合效果最差的方法是采用雙對數(shù)坐標(biāo)系中線性擬合的方式,而采用極大似然估計法獲得冪律分布函數(shù)的形狀參數(shù)是最可靠的方法。

        形狀參數(shù)可以通過極大似然估計法直接求得,對于連續(xù)型冪律分布:

        (7)

        (8)

        離散型冪律分布函數(shù)形狀參數(shù)α值的極大似然估計與連續(xù)型冪律函數(shù)形狀參數(shù)α值近似。

        在使用極大似然估計法計算形狀參數(shù)α的時候,需要以一個特定的xmin值作為參數(shù)。因此需要事先求出xmin值才能確定形狀參數(shù)α。文獻(xiàn)研究表明,大部分實際數(shù)據(jù)中只有數(shù)據(jù)的尾部才符合冪律分布情況,隨著xmin值的增長,實驗中被拋棄的數(shù)據(jù)也越來越多。為了使擬合函數(shù)能覆蓋大部分?jǐn)?shù)據(jù),選擇xmin值時需要慎重考慮。

        為了精確找到xmin值,本文沒有采用操作方式簡單但容易出現(xiàn)誤差的雙對數(shù)坐標(biāo)圖法。而采用了Clauset提出的一種基于柯爾莫哥洛夫-斯米爾諾夫檢驗(Kolmogorov-Smirnov test,K-S檢驗)的xmin值預(yù)測方法[2]。這種方式將所有x的取值進行遍歷,將每次所取的x值作為xmin,然后找到大于或等于xmin值時實際數(shù)據(jù)和擬合分布函數(shù)的累計分布函數(shù)CDF(Cumulative Distribution Function)值間差的絕對值最大的情況,并將最大值作為此次遍歷的D值。遍歷結(jié)束后找到使D值最小的x作為xmin值。

        (9)

        S(x)和P(x)分別為實際數(shù)據(jù)和擬合函數(shù)的CDF值(x≥xmin)。這種方法同時適用于對數(shù)正態(tài)分布和冪律分布的xmin值預(yù)測。

        1.3 分布函數(shù)擬合優(yōu)度檢驗方法

        在目前的冪律分布相關(guān)研究中,有關(guān)形狀參數(shù)估計的研究沒有考慮檢驗假設(shè)與實際數(shù)據(jù)的擬合程度。因此,其估計結(jié)果并不嚴(yán)格。為了驗證通過極大似然估計方式獲取的形狀參數(shù)是否適用于實際數(shù)據(jù),需要采用假設(shè)檢驗來對分布函數(shù)進行檢驗。有兩種常用的分布函數(shù)擬合優(yōu)度檢驗,一種是Pearson卡方檢驗,另一種是K-S檢驗。雖然Pearson卡方檢驗比較容易實現(xiàn),但是檢驗的可靠性比較差。最終選擇K-S檢驗來對實驗結(jié)果是否滿足冪率分布的情況進行檢驗。

        K-S檢驗是建立在以下公式:

        K=supx|F*(x)-S(x)|

        (10)

        式中:F*(x)代表預(yù)先假設(shè)的理論分布函數(shù),S(x)代表樣本的累計概率分布函數(shù)。K-S檢驗統(tǒng)計量的大小反映了假設(shè)分布與經(jīng)驗分布的擬合程度。

        本文對冪律分布和對數(shù)正態(tài)分布的擬合優(yōu)度檢驗,引入K-S檢驗統(tǒng)計量,結(jié)合Clauset等提出了一種基于拔靴法的適用于冪律分布函數(shù)和其他擬合函數(shù)的擬合優(yōu)度檢驗方法[2],來驗證上文擬合方法獲得的形狀參數(shù)的估計效果。該方法使用P值來量化假設(shè)的合理性,從而在一定程度上提供對估計結(jié)果可信度的判斷。如果P值大于0.1,則實際數(shù)據(jù)與理論模型產(chǎn)生數(shù)據(jù)之間的差值可以被解釋為統(tǒng)計波動。如果P值接近0,則說明理論模型不能較好地擬合實際數(shù)據(jù),需要使用其他模型來描述實際數(shù)據(jù)。當(dāng)對冪律分布函數(shù)進行假設(shè)檢驗時的假設(shè)為:

        H0:實際數(shù)據(jù)產(chǎn)生于冪律分布函數(shù)

        H1:實際數(shù)據(jù)并非產(chǎn)生于冪律分布函數(shù)

        基于拔靴法的冪律分布假設(shè)檢驗算法如下所示:

        冪律分布假設(shè)檢驗算法

        1 Calculate point estimates forxminand the scaling parameterα

        2 Calculate the Kolmogorov-Smirnov statistic,KSd, for the original data set.

        3 Setn1equal to the number of values belowxmin.

        4 Setn2=n-n1andP=0.

        5 for i in 1:B:

        6 Simulaten1values from a uniform distribution: U(1,xmin) andn2values from a power law distribution (with parameterα).

        7 Calculate the associated Kolmogorov-Smirnov statistic,KSsim.

        8 IfKSd>KSsim,thenP+P+1.

        9 end for

        10P=P/B.

        1.4 冪律分布在軟件系統(tǒng)中的研究

        軟件工程領(lǐng)域的研究者也將冪律分布運用于面向?qū)ο筌浖嚓P(guān)復(fù)雜網(wǎng)絡(luò)的研究中。隨著面向?qū)ο筌浖笮〉脑黾?,研究人員發(fā)現(xiàn),在某些層次中實體間的關(guān)系可以用無標(biāo)度網(wǎng)絡(luò)來進行研究,例如代碼行數(shù)、方法調(diào)用數(shù)和圈復(fù)雜度等。已經(jīng)有研究者在軟件系統(tǒng)中發(fā)現(xiàn)了冪律分布的存在。

        馬皖王瑩等將復(fù)雜網(wǎng)絡(luò)的特征度量用于缺陷的預(yù)測研究中,發(fā)現(xiàn)JEdit軟件的源代碼網(wǎng)絡(luò)特征度量符合冪律分布[3]。韓明暢等將復(fù)雜網(wǎng)絡(luò)理論引入人工設(shè)計和實現(xiàn)的軟件中, 把其中的實體和關(guān)系轉(zhuǎn)換成為網(wǎng)絡(luò)拓?fù)涞男问?發(fā)現(xiàn)Java類庫中存在的無尺度特征、小世界現(xiàn)象和脆弱性魯棒性并存的特點[4]。Valverde的研究,使用無標(biāo)度網(wǎng)絡(luò)圖和冪律分布來研究Java和C/C++開源項目中軟件的架構(gòu)情況[5-6],將類作為節(jié)點,類間關(guān)系作為連線,發(fā)現(xiàn)節(jié)點的入度和出度分布情況符合冪律分布。Louridas等[7]將之前的工作進行總結(jié),發(fā)現(xiàn)長尾分布廣泛存在于面向?qū)ο筌浖母鱾€層次結(jié)構(gòu)中,并指出了冪律分布和其他長尾分布在軟件工程中的研究方向。需要指出的是,以上的研究主要使用在雙對數(shù)坐標(biāo)系中采用線性擬合來獲得冪律分布的形狀參數(shù),有可能會造成較大誤差。

        2 冪律分布在面向?qū)ο筌浖攘恐械膽?yīng)用

        將冪律分布在自然語言處理和各種復(fù)雜網(wǎng)絡(luò)分析中的研究方法適當(dāng)改進,運用于在不同層次軟件結(jié)構(gòu)中的面向?qū)ο筌浖攘?。驗證冪律分布在面向?qū)ο筌浖攘恐械拇嬖?,并解釋冪律分布出現(xiàn)的原因,利用擬合的冪律函數(shù)對軟件質(zhì)量改進提供指導(dǎo)。為了減小擬合誤差,本文采用極大似然估計方法獲得冪律分布形狀參數(shù)α,并使用基于K-S檢驗的擬合優(yōu)度檢驗法檢驗擬合效果。

        2.1 實驗準(zhǔn)備

        本實驗采用的數(shù)據(jù)集來自Qualitas Corpus項目[8],它是由奧克蘭大學(xué)的Ewan Tempero教授收集整理的軟件系統(tǒng)代碼集。項目的目的是為軟件工程經(jīng)驗研究提供一個可重復(fù)研究的資源。截至到2013年9月,Qualitas Corpus已經(jīng)收集了112個具有代表性的Java軟件系統(tǒng),其中包括著名的Eclipse和NetBeans等。我們選取了其中最具有代表性的4個大型開源項目進行研究,包括Java集成開發(fā)環(huán)境Eclipse、NetBeans,Java運行時環(huán)境JRE(Java Runtime Environment),還有分布式系統(tǒng)基礎(chǔ)架構(gòu)Hadoop。項目說明如表1所示。

        表1 實驗項目簡要說明

        本文使用研究小組開發(fā)的開源代碼度量工具Perfume[9]對已收集的4個Java開源項目進行度量。Perfume是一款基于抽象語法樹AST(Abstract Syntax Tree)的代碼度量工具。利用AST將源代碼對應(yīng)結(jié)構(gòu)處理成樹狀結(jié)構(gòu),極大提高代碼度量效率。在AST的處理中,將每個Java文件定義為一個編譯單元(Compilation Unit),一個編譯單元中可以存在多個類定義。為了精確獲得每個類的度量值,使用AST中定義的類聲明節(jié)點(TypeDeclaration)作為類的區(qū)分標(biāo)準(zhǔn)。所有針對類的度量值都是針對類申明節(jié)點的度量。Perfume工具支持對28種常見的代碼度量項目進行度量,其中包括經(jīng)典CK度量集等。實驗選取了3個經(jīng)典度量因子,如表2所示。

        表2 度量因子簡要說明

        本文中度量結(jié)果的統(tǒng)計分析和冪律函數(shù)的擬合與假設(shè)檢驗,使用Gillespie等編寫的 R語言函數(shù)包——PoweRlaw包[10]進行相關(guān)處理。

        2.2 實驗方案

        本文在面向?qū)ο筌浖攘恐械膬缏煞植佳芯窟^程如下,流程圖如圖1所示。

        圖1 冪律分布在面向?qū)ο筌浖攘恐械膶嶒灹鞒虉D

        第一步在Qualitas Corpus官方網(wǎng)站上下載需要研究的Java開源項目的源代碼。并對源代碼文件進行預(yù)處理,將測試用例文件中會對度量產(chǎn)生影響的源代碼文件刪除。

        第二步確定需要研究的面向?qū)ο蠖攘恳蜃?,使用軟件度量工具Perfume對4個開源項目進行度量。將獲得的度量值進行預(yù)處理。對于LOC、NOA和NOM3個度量因子,將度量結(jié)果值為0的類剔除,僅保留度量值大于0的類。

        第三步使用基于K-S檢驗的xmin值預(yù)測方法獲得xmin值,利用極大似然估計法求得在xmin值下的冪律函數(shù)形狀參數(shù)α。使用Clauset等提出的擬合優(yōu)度檢驗方法對獲得的冪律函數(shù)的擬合效果進行檢驗。

        第四步對于擬合效果較好的度量值進行研究,研究冪律分布在相應(yīng)度量因子中產(chǎn)生的原因。并利用擬合后的冪律函數(shù)找到不符合分布規(guī)律的類,研究其對軟件質(zhì)量的影響。

        3 度量因子的冪律分布研究結(jié)果與分析

        本節(jié)中,主要對4個具有代表性的大型Java開源項目的面向?qū)ο筌浖攘恐颠M行統(tǒng)計與分析。我們對以上開源項目的3個經(jīng)典度量因子進行度量統(tǒng)計,從統(tǒng)計值中找到一些統(tǒng)計學(xué)規(guī)律。表3展示了一些對于以上開源項目的描述統(tǒng)計結(jié)果。

        表3 實驗項目描述統(tǒng)計

        3.1 類代碼行數(shù)

        代碼行數(shù)是評價軟件質(zhì)量的基礎(chǔ)性度量因子,用于度量軟件的大小。本文中度量的代碼行數(shù)為類代碼行數(shù),但不包括注釋語句和空白行。從描述統(tǒng)計結(jié)果表3中可以發(fā)現(xiàn),4個項目的LOC平均值比較接近,均在130左右。而JRE項目的中位數(shù)為36,其他3個項目均在50以上。而且JRE項目中LOC的最大值6 787也遠(yuǎn)小于其他項目。這可能與項目的類型有關(guān)。從偏度值看出,均存在長尾情況。為了更加清晰地觀察4個項目LOC統(tǒng)計結(jié)果的分布情況,使用互補累計分布函數(shù)CCDF(Complementary Cumulative Distribution Function)圖來描述實際數(shù)據(jù)和擬合情況,如圖2所示。由于冪律分布主要出現(xiàn)在數(shù)據(jù)的尾部,可以發(fā)現(xiàn)擬合的冪律分布的xmin值都比較大,這意味著有大量的數(shù)據(jù)被拋棄,會在一定程度上影響擬合結(jié)果的可靠性,故使用K-S檢驗來驗證。詳細(xì)擬合結(jié)果和假設(shè)檢驗結(jié)果如表4所示??梢詮谋碇锌闯觯薐RE項目以外,其余項目可以較好地擬合對數(shù)正態(tài)分布情況。這與Concas等的研究一致[11]。在數(shù)據(jù)尾部的擬合中,發(fā)現(xiàn)其中3個項目均有冪律分布情況存在。Eclipse和Hadoop項目尾部擬合冪律分布函數(shù)的形狀參數(shù)α值在3.0左右。而在JRE項目中,尾部擬合冪律分布函數(shù)的形狀參數(shù)α為4.5,遠(yuǎn)高于其他項目。在Netbeans項目中沒有在尾部發(fā)現(xiàn)明顯的冪律分布情況。但可以從圖中發(fā)現(xiàn),其尾部數(shù)據(jù)呈現(xiàn)明顯不規(guī)則情況,意味著存在較多代碼行數(shù)偏高的類。

        圖2 LOC度量值互補累計分布函數(shù)圖

        圖2中,虛線代表使用對數(shù)正態(tài)分布函數(shù)擬合的結(jié)果,實線代表冪律分布函數(shù)擬合的結(jié)果,Xmin_in代表擬合對數(shù)正態(tài)分布的xmin值,Xmin_pl代表擬合冪律分布的xmin值。

        表4 LOC度量值擬合結(jié)果

        將偏離擬合函數(shù)較多的類單獨進行分析,發(fā)現(xiàn)這些類均在擬合函數(shù)右側(cè),意味著代碼行數(shù)過多。對于NetBeans項目來說,偏離擬合函數(shù)最多的類的全限定名為org.netbeans.modules.css.lib.Css3Parser,總共代碼行數(shù)為36 731行。該類的主要功能是解析Css3文件內(nèi)容,包含有大量的條件語句,類圈復(fù)雜度更是達(dá)到了7 712。這個類職責(zé)過重,將導(dǎo)致系統(tǒng)后期可維護性降低。

        從累計分布中可以發(fā)現(xiàn),在Eclipse、JRE和Hadoop項目中80%的類代碼均小于160行,而NetBeans項目明顯高于其他3個項目,達(dá)到了200行。在一個優(yōu)秀的面向?qū)ο筌浖O(shè)計中,設(shè)計人員會使用大量的繼承和關(guān)聯(lián)特性,從而達(dá)到復(fù)用的目的。合理的復(fù)用代碼可以降低系統(tǒng)復(fù)雜程度,并減少代碼行數(shù)。

        3.2 類方法屬性個數(shù)

        類方法屬性個數(shù),代表每個類中屬性值的個數(shù)。從表3中可以發(fā)現(xiàn),4個項目方法屬性個數(shù)中位數(shù)均為3,且存在較明顯的長尾分布情況。在最大值方面,Eclipse和NetBeans兩個編譯器的最大值均在2 000以上,遠(yuǎn)高于JRE和Hadoop項目的最大值。在Eclipse項目中,最高值2 042存在于一個核心功能類中,全限定名為org.eclipse.swt.internal.win32.OS,用于兼容各種版本W(wǎng)indows操作系統(tǒng)外觀。而在NetBeans項目中,最高值2 021在全限定名為org.netbeans.modules.css.lib. Css3Parser的類中,這個類在LOC的度量中也是最高的。從表5中可以發(fā)現(xiàn),4個項目均比較好地擬合冪律分布函數(shù)。在對數(shù)正態(tài)分布函數(shù)的擬合中,除了Eclipse項目外其他3個項目均得到很好的效果。在Eclipse和JRE兩個項目中,尾部擬合的冪律分布函數(shù)形狀參數(shù)α在2.25到2.46之間,而在NetBeans和Hadoop項目中,尾部擬合冪律分部函數(shù)的形狀參數(shù)α在3.37到3.40之間。觀察圖3可以發(fā)現(xiàn),在4個項目中均有偏離擬合函數(shù)較大的點存在,這些點的值往往大大高于平均值。在Hadoop項目中,偏離擬合函數(shù)最多的3個類為DFSConfigKeys、YarnConfiguration、CommonConfigurationKeysPublic,3個類中類屬性個數(shù)為586、423和116。這些類均是用于保存Hadoop中的配置常量的??梢院苊黠@地發(fā)現(xiàn),這些用于存儲配置常量的類均不是我們面向?qū)ο笾袀鹘y(tǒng)意義的類,可以使用其他方式將屬性值單獨存儲。

        圖3 NOA度量值互補累計分布函數(shù)圖

        項目名稱擬合分布參數(shù)參數(shù)值xmin覆蓋類數(shù)P值Eclispepowerlawlog-normalαμσ2.4554320.6054261.4011551122150119650.170.00Hadooppowerlawlog-normalαμσ3.3944230.4824171.2730203135621210.810.61JREpowerlawlog-normalαμσ2.2576331.3484051.47515520143645330.260.47NetBeanspowerlawlog-normalαμσ3.3774600.9520821.075416281631309130.690.13

        3.3 類方法個數(shù)

        類方法個數(shù)是指一個類中所包含的全部方法的個數(shù),但不包含內(nèi)部類和匿名類中的方法。這是一種CK度量集中的因子,可用于對大型軟件的質(zhì)量和缺陷進行預(yù)測。在表3中可以發(fā)現(xiàn),被統(tǒng)計項目的偏度值明顯偏高,說明存在長尾分布的特點。為了研究類方法個數(shù)的分布情況,使用對數(shù)正態(tài)分布和冪律分布對數(shù)據(jù)進行了函數(shù)擬合。擬合結(jié)果如表6所示,這4個Java大型開源項目的類方法個數(shù)統(tǒng)計值在尾部均呈現(xiàn)冪律分布,其中Hadoop項目符合冪律分布的數(shù)據(jù)量最多,共有占全部統(tǒng)計值的42.7%。而其余3個項目只有4%左右的數(shù)據(jù)符合。在尾部冪律分布中,形狀參數(shù)α在3.28到3.48之間。

        表6 NOM度量值擬合結(jié)果

        圖4展示了實際數(shù)據(jù)的累積分布函數(shù)。在累計分布函數(shù)圖上,4個大型Java開源項目在圖像上可獲得看似較好的擬合結(jié)果。為了驗證兩種擬合函數(shù)的擬合效果,使用K-S檢驗分別對擬合函數(shù)進行檢驗。從K-S檢驗結(jié)果可以看出,這4個Java開源項目的類方法個數(shù)統(tǒng)計結(jié)果均在尾部均發(fā)現(xiàn)了冪律分布。雖然在圖形上看起來對數(shù)正態(tài)分布的擬合曲線擬合的情況較好,但通過K-S檢驗我們可以發(fā)現(xiàn),只有在Hadoop項目中發(fā)現(xiàn)了較明顯的對數(shù)正態(tài)分布情況,其他3個項目均未通過檢驗。

        圖4 NOM度量值互補累計分布函數(shù)圖

        對于一個面向?qū)ο蟪绦騺碚f,類方法數(shù)量越多代表類的職責(zé)越重,會導(dǎo)致該類與其他類間過高的耦合度,從而影響代碼質(zhì)量。可以從累計分布圖中發(fā)現(xiàn),4個項目中80%的類中均少于12個方法。Eclipse、Hadoop和NetBeans項目中99%的類方法個數(shù)小于60,

        而JRE項目中這個值達(dá)到了74。這可能和軟件類型有關(guān)系,JRE比起一般應(yīng)用程序來說,它作為Java語言的API需要向外部提供了更多的入口,也就是公共方法。通過觀察圖4可以發(fā)現(xiàn),JRE項目中存在較多方法數(shù)量過高的類。查看具體類發(fā)現(xiàn),JRE中方法數(shù)排名前5的類中,有3個是用于封裝異常處理方法的類,且都來自包com.sun.corba.se.impl.logging。值最高的類ORBUtilSystemException中方法數(shù)達(dá)到1 259個。而在NetBeans項目中,值最高的類含有406個方法,類全限定名為org.netbeans.lib.ddl.adaptors.DefaultAdaptor,類的功能是數(shù)據(jù)庫適配器。過多的方法會導(dǎo)致代碼味道的產(chǎn)生,也會影響軟件的復(fù)用和可維護性。

        4 結(jié) 語

        以上研究中發(fā)現(xiàn),在4個大型Java開源項目的面向?qū)ο筌浖攘恐?,絕大多數(shù)類度量因子的值處在一個較低的水平,而只有極少數(shù)類的度量因子的值相當(dāng)大,屬于典型的長尾分布特征。經(jīng)過相關(guān)擬合與假設(shè)檢驗,發(fā)現(xiàn)在4個項目中,冪律分布是產(chǎn)生長尾現(xiàn)象的原因之一。軟件開發(fā)作為一種智慧密集型工作,存在大量人為因素從而影響軟件開發(fā)過程,所以不能用一個統(tǒng)一的模型來描述不同軟件的度量因子統(tǒng)計結(jié)果。甚至有些項目無法找到一個合理的模型來描述。但是在同一個軟件開發(fā)過程中,開發(fā)人員總是按照相同的設(shè)計框架進行開發(fā),這在一定程度上確定了各種代碼度量因子的增長模型。在對度量統(tǒng)計結(jié)果擬合冪律分布函數(shù)后,如發(fā)現(xiàn)有偏離擬合函數(shù)較大的度量結(jié)果出現(xiàn),基本可以判斷是存在不符合本項目設(shè)計框架的代碼出現(xiàn)。例如在NetBeans項目中的Css3Parser類,LOC和NOA的度量值都極大偏離擬合的冪律函數(shù),這說明Css3Parser類的設(shè)計不符合面向?qū)ο筌浖O(shè)計要求。

        長尾現(xiàn)象不管是由冪律分布產(chǎn)生,還是由對數(shù)正態(tài)分布產(chǎn)生,或是其他的分布函數(shù)產(chǎn)生。長尾現(xiàn)象對軟件工程來說,都是一個值得進行研究的課題。因為長尾現(xiàn)象的存在說明少數(shù)的類在軟件開發(fā)中起到重要作用,而這些類的代碼質(zhì)量直接決定了軟件的可靠性和可維護性。在開發(fā)中提高這些類質(zhì)量,有利于軟件整體質(zhì)量的提高。

        [1] Boehm B.Industrial Software Metrics Top 10 List[J].IEEE Software,1987,4:84-85.

        [2] Clauset A,Shalizi C R,Newman M E J.Power-Law Distributions in Empirical Data[J].Siam Review,2014,51(4):661-703.

        [3] 馬皖王瑩,陳林,陳芝菲,等.基于復(fù)雜網(wǎng)絡(luò)分析的軟件高危缺陷評估方法[J].計算機科學(xué)與探索,2014,8(8):956-965.

        [4] 韓明暢,李德毅,劉常昱,等.軟件中的網(wǎng)絡(luò)化特征及其對軟件質(zhì)量的貢獻(xiàn)[J].計算機工程與應(yīng)用,2006,42(20):29-31.

        [5] Valverde S,Sole R V.Hierarchical Small Worlds in Software Architecture[J].Dynamics of Continuous Discrete & Impulsive Systems,2007,14.

        [6] Valverde S,Cancho R F I,Sole R V.Scale-free Networks from Optimal Design[J].Epl,2002,60(4):512-517.

        [7] Louridas P,Spinellis D,Vlachos V.Power Laws in Software[J].ACM Transactions on Software Engineering & Methodology,2008,18(1):617-632.

        [8] Tempero E,Anslow C,Dietrich J,et al.The Qualitas Corpus:A Curated Collection of Java Code for Empirical Studies[C]//Asia Pacific Software Engineering Conference.IEEE Computer Society,2010:336-345.

        [9] Liu Hongtao.Perfume:A code quality assessment platform based on machine learning[EB/OL].https://github.com/LiuHongtao/Perfume.

        [10] Gillespie C S.Fitting Heavy Tailed Distributions:The poweRlaw Package[J].Journal of Statistical Software,2015,64(2).

        [11] Concas G,Marchesi M,Pinna S,et al.Power-Laws in a Large Object-Oriented Software System[J].IEEE Transactions on Software Engineering,2007,33(10):687-708.

        猜你喜歡
        方法研究
        FMS與YBT相關(guān)性的實證研究
        2020年國內(nèi)翻譯研究述評
        遼代千人邑研究述論
        視錯覺在平面設(shè)計中的應(yīng)用與研究
        科技傳播(2019年22期)2020-01-14 03:06:54
        學(xué)習(xí)方法
        EMA伺服控制系統(tǒng)研究
        新版C-NCAP側(cè)面碰撞假人損傷研究
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34

        欧美极品jizzhd欧美| 日本加勒比精品一区二区视频| 亚洲av精二区三区日韩| 97夜夜澡人人双人人人喊| 午夜精品久久久| 国产精品麻豆成人av| 蜜臀av一区二区三区久久| 无码区a∨视频体验区30秒| 日本a级特黄特黄刺激大片| 国产极品美女到高潮视频| 国产综合久久久久影院| 丰满人妻一区二区三区精品高清| 爆操丝袜美女在线观看| 国产亚洲2021成人乱码| 黄色毛片视频免费| 午夜av福利亚洲写真集| 国产在线视频网友自拍| 亚洲午夜久久久久久久久电影网 | 国模欢欢炮交啪啪150 | 人妻av无码系列一区二区三区| 专区亚洲欧洲日产国码AV| 日韩精品综合在线视频| 免费a级毛片又大又粗又黑| 久热综合在线亚洲精品| 国产精品乱子伦一区二区三区 | 一区二区无码中出| 区二区三区亚洲精品无| 性高朝久久久久久久3小时| 久久99久久99精品免观看| 99久久综合狠狠综合久久一区| 国产av天堂一区二区二区| 国产精品人妻一区二区三区四| 欧美一级欧美一级在线播放| 一区二区三区四区日韩亚洲| 久久熟妇少妇亚洲精品| 亚洲男同志网站| 亚洲国产成人无码电影| 日本一区二区免费在线看| 亚洲欧美综合区自拍另类| 精品一区二区av天堂| 国产在线一区二区三区不卡|