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

        ?

        利用主軸因子法的嚴重性代碼異味相關(guān)性分析

        2021-04-12 10:14:22張生棟吳海濤高建華
        小型微型計算機系統(tǒng) 2021年4期
        關(guān)鍵詞:定義分析檢測

        張生棟,吳海濤,高建華

        (上海師范大學 計算機科學與技術(shù)系,上海 200234)

        1 引 言

        軟件開發(fā)過程中,軟件維護的工作量和成本比起其它過程要大得多,而代碼異味的存在使得軟件的可維護性大大降低.代碼異味又稱代碼的壞味道,是開發(fā)人員在設(shè)計代碼時的不良選擇,開發(fā)人員的編程習慣、經(jīng)驗不足或者是迫于在規(guī)定日期內(nèi)完成項目的交付等原因都會引入代碼異味.Martin Fowler[1]定義了22種代碼異味,并詳細介紹了每一種代碼異味的重構(gòu)步驟.近年來,代碼異味的研究受到重視,檢測代碼異味的方法層次不窮[2-5],并且異味的關(guān)聯(lián)從不同角度被廣泛研究.

        Palomba[6,7]等人研究發(fā)現(xiàn)社區(qū)異味和代碼異味之間存在著相關(guān)性,他們從社會和技術(shù)債務(wù)中使用混合方法經(jīng)驗收斂性評估提供兩者之間存在關(guān)系的證據(jù),并且設(shè)計了一個預(yù)測模型,使用社區(qū)異味和幾個來自最新技術(shù)的已知社區(qū)相關(guān)因素來預(yù)測代碼異味強度.Tufano[8]等人對測試異味和代碼異味的共現(xiàn)進行了實證分析,實驗結(jié)果表明,部分測試異味與代碼異味之間存在著相關(guān)性,比如Assertion Roulette(斷言輪盤賭)和Spaghetti Code(意大利面代碼).Cardoso[9]和Sousa[10]都探討了設(shè)計模式和代碼異味之間的關(guān)系,并且都發(fā)現(xiàn)設(shè)計模式的使用不能避免代碼異味的存在.

        Walter和Pietrzak[11]兩人使用了多標準的方法檢測代碼異味,其中有一條檢測的標準是:是否有其他代碼異味的存在.他們認為,一種代碼異味的存在可能意味著相關(guān)代碼異味的存在,這是由于某些代碼異味的共同起源:一個代碼錯誤會導致許多設(shè)計錯誤,并且所產(chǎn)生的代碼異味并不是相互獨立的.Fontana[12]等人在74個系統(tǒng)上對6種代碼異味進行實驗,深入研究了代碼異味之間的共存,他們發(fā)現(xiàn)Brain Method(大腦方法)容易與其他代碼異味共存,同時比較意外的結(jié)論是God Class和Data Class(數(shù)據(jù)類)并沒有發(fā)現(xiàn)共存現(xiàn)象.Pietrzak和Walter[13]定義分析了代碼異味之間的6種關(guān)系,并提出通過這些關(guān)系來減輕其他代碼異味的檢測工作量.Lozano和Mens[14]等人分析了3個開源系統(tǒng),報告了4種代碼異味中發(fā)現(xiàn)的5種可能關(guān)系(簡單支持、相互支持、拒絕、公共重構(gòu)、包含)的證據(jù).發(fā)現(xiàn)Feature Envy和Long Method的相關(guān)性最強.

        Abbes[15]等人首次提出了代碼異味交互的概念.他們實驗發(fā)現(xiàn)God Class(上帝類)和God Method(上帝方法)單獨存在時,對系統(tǒng)的影響不是很大,但是當他們一同存在時,對系統(tǒng)質(zhì)量就會造成很大的影響.Yamashita和Moonen[16]等人根據(jù)實驗研究了12種代碼異味的交互,并分析了這些交互和維護問題之間的關(guān)系,他們使用自動檢測工具檢測代碼異味,并用主成分分析方法分析代碼異味,以識別共存的代碼異味模式.隨后Yamashita[17]等人在兩個開源系統(tǒng)和一個工業(yè)系統(tǒng)中對代碼異味之間的交互做了實驗,發(fā)現(xiàn)代碼異味之間的交互在不同的系統(tǒng)上表現(xiàn)是不一樣的.

        Garg[18]等人通過位圖(Bitmap)的方法分析了兩個系統(tǒng)的7種代碼異味的關(guān)聯(lián),通過百分比的形式比較了兩個系統(tǒng)中兩兩代碼異味共同出現(xiàn)的概率,他們發(fā)現(xiàn)每個系統(tǒng)都會出現(xiàn)代碼異味共現(xiàn)現(xiàn)象,同時他們發(fā)現(xiàn)Data Clumps、Internal Duplication(內(nèi)部重復(fù)代碼)、External Duplication(外部重復(fù)代碼)比較常見.

        Palomba[19,20]等人在30個系統(tǒng)一共395個版本上,針對13種代碼異味使用關(guān)聯(lián)規(guī)則算法得到了6個共存的代碼異味對.并且發(fā)現(xiàn)代碼異味同時出現(xiàn)的現(xiàn)象非常普遍,59%的臭味類受多個代碼異味的影響.

        Walter和Fontana[21]等人采用成對相關(guān)分析、主成分分析和關(guān)聯(lián)規(guī)則3種方法,對92個java系統(tǒng)中檢測到的14種代碼異味的頻繁搭配進行了識別和實證驗證.

        本文的目標是在前人的研究基礎(chǔ)上,針對主成分分析在布爾變量分析中會產(chǎn)生難以解釋的主成分含義的弊端,賦予代碼異味嚴重性,利用因子分析進行實驗,與主成分分析比較,并解釋每個因子的含義.

        本文的主要工作如下:

        1)根據(jù)代碼異味檢測工具檢測的不一致性,對數(shù)據(jù)集進行處理,將檢測到代碼異味為真的工具占檢測該代碼異味工具的比例作為該代碼異味的嚴重性值.

        2)利用因子分析法對改進的92個系統(tǒng)的數(shù)據(jù)集上進行實驗.

        3)分析比較實驗結(jié)果,并對得到的因子進行解釋和分類命名.

        本文的結(jié)構(gòu)如下:第2章介紹了本文研究的代碼異味和因子分析的相關(guān)概念;第3章研究了代碼異味的嚴重性賦值和本文用到的方法;第4章進行實驗和對實驗結(jié)果進行分析及解釋分類命名;第5章總結(jié)本文并指出將來的工作.

        2 基本概念和術(shù)語

        2.1 代碼異味

        代碼異味是程序開發(fā)領(lǐng)域代碼的不良設(shè)計,可能會導致深層次問題的癥狀.繼Fowler[1]定義了22種代碼異味之后,Lanza和Marinescu[22]將代碼問題大致分為3類,并新定義了幾種代碼異味.本文研究了14種代碼異味,其中有7種代碼異味由Fowler[1]定義,6種由Lanza 和Marinescu[22]定義,另外1種由Trifu和Marinescu[23]定義,表1中列出了每種代碼異味及其描述(后跟定義者).

        表1 代碼異味及其描述Table 1 Code smells and its description

        2.2 因子分析(Factor Analysis,FA)

        因子分析是多變量降維統(tǒng)計技術(shù).它通過將緊密相關(guān)的變量歸為同一個因子,以實現(xiàn)通過少量因子就可以盡可能表達原始數(shù)據(jù)中所有變量表達的信息的目的.

        因子分析和主成分分析(Principal Components Analysis,PCA)都運用了降維的思想,因子分析的基本原理是提取對表達整個數(shù)據(jù)集信息具有最大貢獻的公共因子和不屬于公共因子但又不可忽略的特殊因子,然后兩者線性組合表示變量.而主成分分析的基本原理是將用原始變量線性組合表示主成分,且各個主成分之間獨立.因子分析是在主成分分析基礎(chǔ)上的擴展,相對于后者,前者對于變量之間的關(guān)系的關(guān)注更為側(cè)重.

        圖1給出了因子分析的流程圖,進行因子分析首先需要確定所要分析的變量和樣本,通過計算變量間的相關(guān)矩陣、KMO值和Bartlett′s值來檢驗?zāi)芊襁M行實驗,驗證可以則進行因子提取,提取后的因子經(jīng)過旋轉(zhuǎn)后得到易于解釋的因子.

        圖1 因子分析流程Fig.1 Process of factor analysis

        2.2.1 因子分析模型

        設(shè)有m個原始變量xi(i=1,2,…,m),它們之間可能相關(guān),也可能獨立,將xi標準化得到新變量yi,則可以建立因子分析模型如式(1)所示:

        yi=ai1F1+ai2F2+…+ainFn+ciSi(i=1,2,…,m)

        (1)

        其中Fj(j=1,2,…,n)線性組合表示每個變量,稱為公共因子,Si(i=1,2,…,m)僅與變量yi有關(guān),稱為特殊因子,aij為系數(shù),ci(i=1,2,…,m,j=1,2,…,n)稱為因子負荷,A=(aij)稱為因子矩陣.

        可以將式(1)表示為如式(2)所示的矩陣形式:

        y=AF+CS

        (2)

        其中,標準化后的變量y=(y1,y2,…,ym)T,因子矩陣A=(aij)m×n,公因子F=(F1,F2,…,F(xiàn)n)T,因子負荷C=diag(c1,c2,…,cm),特殊因子S=(S1,S2,…,Sm)T.

        2.2.2 指標檢驗數(shù)據(jù)

        本文采用相關(guān)矩陣、KMO值、Bartlett′s值3個指標檢驗數(shù)據(jù)集能否用來進行因子分析.相關(guān)矩陣也稱相關(guān)系數(shù)矩陣,表示了兩兩變量之間的相關(guān)程度,是表示變量之間是否存在關(guān)系的最基本最常用的指標.相關(guān)系數(shù)由變量之間的標準差和協(xié)方差計算得來,通常用r來表示,其基本公式如式(3)所示:

        (3)

        KMO(Kaiser-Meyer-Olkin)值是本文的第二個檢驗指標,由于本文研究的代碼異味之間關(guān)系屬于多變量之間的關(guān)系,僅僅考慮簡單相關(guān)系數(shù)會有很大的誤差,需要同時考慮偏相關(guān)系數(shù),KMO值便是對兩者的比較.其值是0~1區(qū)間的數(shù)值,通過比較簡單相關(guān)系數(shù)的平方和值和偏相關(guān)系數(shù)的平方和值來確定KMO值的大小.當前者比后者越大,KMO值越大,越趨近于1,同時也表明變量之間具有很強的相關(guān)性,反之則趨近于0,變量之間趨向于無相關(guān)性.0.5是區(qū)分有無相關(guān)性的標志,0.5~1區(qū)間內(nèi)值越大越適合進行因子分析,0.5以下則不具備因子分析的條件.本文將0.5作為閾值,大于0.5表示可以進行因子分析.

        Bartlett′s球度檢驗以變量的相關(guān)矩陣為切入點,其作用是檢驗數(shù)據(jù)的分布,以及各個變量間的獨立情況,其顯著性概率值小于0.05時才認為數(shù)據(jù)有效,可以進行因子分析.

        2.2.3 公因子提取

        公因子提取是在復(fù)雜的變量中提取最能夠表示整個數(shù)據(jù)集信息的公因子,每個公因子充分體現(xiàn)了變量之間存在的相關(guān)關(guān)系.多種方法可以用來提取公因子,其中主成分分析法、極大似然法、最小二乘法、主軸因子法和Alpha因子分析法等是比較常用的方法.本文使用的是主軸因子法,該方法從相關(guān)矩陣出發(fā),重在解釋變量的相關(guān)性.

        2.2.4 因子旋轉(zhuǎn)

        公因子提取過程中不僅提取了公因子,而且得到了每個公因子中變量的公因子方差.此時提取的公因子并不能很好地解釋,需要進行旋轉(zhuǎn)來使得因子矩陣更加簡化,從而可以使得因子可以更直觀的被解釋,在因子旋轉(zhuǎn)的過程中,并不會影響提取的公因子的個數(shù).

        變量正交的正交旋轉(zhuǎn)和變量非正交的斜交旋轉(zhuǎn)是因子旋轉(zhuǎn)的兩種方法,其中正交旋轉(zhuǎn)有四次方最大法、最大方差法和均等變化等方法,斜交旋轉(zhuǎn)有直接斜交法和最優(yōu)斜交法等方法.本文采用的正交旋轉(zhuǎn)的最大方差法,其主要原理是通過最大化各因子負載的平方的方差來簡化矩陣.

        3 基于代碼異味嚴重性的主軸因子分析

        不同代碼異味檢測工具的檢測能力各不相同,主要是由于各個工具的檢測策略以及檢測規(guī)則閾值不同造成的,本文選用6種代碼異味檢測工具和3種方法對14種代碼異味進行檢測.

        3.1 代碼異味嚴重性定義

        本文中的代碼異味檢測采用了不同的檢測工具,對于同一個類,假設(shè)需要進行檢測某代碼異味C,設(shè)有N個檢測代碼異味C的工具分別記為T1,T2,…,TN,其中檢測結(jié)果中檢測到代碼異味C存在的工具記為Tt1,Tt2,…,Ttn,個數(shù)記為n,檢測不到代碼異味C存在的工具記為Tf1,Tf2,…,Tfm,個數(shù)則記為m,可知N=n+m.本文定義代碼異味嚴重性值如式(4)所示:

        SV=n/N

        (4)

        即檢測到代碼異味C存在的工具個數(shù)占所有檢測代碼異味C的工具個數(shù)的比值.代碼異味本身沒有明確的定量定義,也不存在一種權(quán)威的工具明確表明某類是否存在代碼異味.因此對于檢測結(jié)果不一致的情況,如果一個代碼異味同時被多數(shù)工具檢測到,可以認為這種代碼異味具有比較高的嚴重性,如果一個代碼異味僅有個別工具檢測到,可以認為該代碼異味嚴重性并不是很高,用n/N來代表其嚴重性既沒有忽略代碼異味存在的可能性,也沒有將處在閾值模糊界限上的類強行歸為布爾類型上的代碼異味.對于只有一種代碼異味工具檢測的代碼異味,本文仍然按照布爾類型處理.

        3.2 主軸因子分析

        主軸因子法提取因子的特點是從變量的相關(guān)矩陣出發(fā),提取的公因子能夠盡可能的使得其中的變量相關(guān),并且易于解釋其中的關(guān)系和結(jié)構(gòu).而主成分分析的切入點在于變量的方差,盡量使提取到的主成分解釋變量的方差,其分析過程如圖2所示.

        圖2 主軸因子分析過程Fig.2 Process of principal axis factor analysis

        3)求出φ的估計值φ(1)=R-A1A1′;

        4)返回第一步用φ(1)代替φ,直到A的值和φ的值達到穩(wěn)定為止.

        算法1.主軸因子法提取因子算法

        輸入:數(shù)據(jù)集D

        輸出:因子矩陣

        2. forA的值和φ的值穩(wěn)定

        4.前q個大于0的特征值(λ1,λ2,…,λm)>0及特征向量E1,E2,…,Em←|R*-λI|=0//I為單位矩陣

        6. End for

        3.3 方差最大化旋轉(zhuǎn)

        4 實 驗

        本節(jié)對92個系統(tǒng)上的代碼異味進行實驗,實驗主要尋求解決以下幾個問題:

        Q1:得到的因子能否從以往的論文中找到依據(jù)?

        Q2:本文采用的主軸因子法是否比主成分分析更容易解釋變量的關(guān)系?

        Q3:改進的數(shù)據(jù)集比原始數(shù)據(jù)有什么優(yōu)勢,是否更加適合進行因子分析?

        4.1 實驗環(huán)境

        本文的實驗環(huán)境如下:操作系統(tǒng)是Windows 10,處理器是Intel(R)Core i5-4258U CPU @ 2.4GHz,內(nèi)存4GB,實驗是在SPSS和PyCharm中完成,開發(fā)語言是Python.

        4.2 實驗數(shù)據(jù)集

        本文用到的數(shù)據(jù)集是由6種代碼異味自動檢測工具和3種方法對92個系統(tǒng)中的14種代碼異味進行檢測得到,表2中報告了這6種工具和3種方法能夠檢測到的代碼異味.

        表2 代碼異味檢測工具Table 2 Code smells detecting tools

        4.3 因子分析檢驗指標

        進行因子分析的首要條件就是要保證變量之間存在相關(guān)性,以保證因子分析有意義,本文通關(guān)變量之間的相關(guān)矩陣、KMO測度和Bartlett′s球度檢測進行因子分析可行性檢驗.

        4.3.1 相關(guān)矩陣

        因子分析的第一步便是計算相關(guān)矩陣,表3展示了帶嚴重性值的代碼異味的相關(guān)矩陣.

        本文采用|ρ|≥0.3作為閾值,表明至少存在弱相關(guān)性(Cohen[24],1988),正值表明兩個代碼異味之間經(jīng)常一同出現(xiàn),負值則表明一種代碼異味的存在通常排除另一種代碼異味.

        有8對代碼異味滿足設(shè)定的閾值,表中數(shù)值加粗表示.其中{Extensive Coupling、Long Parameter List}、{Long Parameter List、God Class}在原始數(shù)據(jù)集中沒有出現(xiàn),表中數(shù)值下劃線加粗表示.{Long Parameter List、God Class}代碼異味對在Walter[11]中有被實驗證實;{Extensive Coupling、Long Parameter List}只在Walter[21]的實驗中出現(xiàn)過,此代碼異味對單獨出現(xiàn)在DGDV(圖表生成器/數(shù)據(jù)可視化)數(shù)據(jù)集中,被認為是一種特殊情況,而本文的實驗表明這種代碼異味對并非是一種特例.同時發(fā)現(xiàn)Extensive Coupling代碼異味與Brain Class、God Class、Shotgun Surgery以及Long Method的相關(guān)值都接近于閾值0.3,說明Extensive Coupling與其他代碼異味關(guān)系緊密,這也與Extensive Coupling的定義相吻合.

        表3 相關(guān)矩陣Table 3 Correlation matrix

        4.3.2 KMO測度和Bartlett′s球度檢測

        表4給出了KMO測度和Bartlett′s球度檢測的結(jié)果,其中KMO值為0.712,高于設(shè)定的0.5的標準;Bartlett′s球度檢測的顯著性值為0,低于0.05的標準,二者均滿足因子分析要求.

        表4 KMO和Bartlett′s檢驗Table 4 KMO and Bartlett′s test

        4.4 旋轉(zhuǎn)后的因子矩陣

        通過主軸因子法提取的因子矩陣需要通過旋轉(zhuǎn)后才使因子更加簡化和易于解釋,本文采用的旋轉(zhuǎn)方法是凱撒正態(tài)化最大方差法.表5是詳細的旋轉(zhuǎn)后的因子矩陣.

        通過旋轉(zhuǎn)后的因子分析矩陣可以看出有6個因子被提取出來,圖3展示了提取的因子.下面對每一個因子中的代碼異味進行討論和分析.

        表5 旋轉(zhuǎn)后的因子矩陣Table 5 Factor matrix after rotation

        圖3 提取的因子Fig.3 Extracted factors

        因子1.Brain Class、Long Method和God Class被歸為了因子1,Brain Class和God Class的定義很相似,都是傾向于集中系統(tǒng)功能的類,代碼異味檢測工具對他們的檢測策略都是基于大小度量的,所以檢測為Brain Class的類很大可能性上被檢測為God Class,Brain Class和God Class中的功能太過繁雜,包含了太多的方法,Long Method也會出現(xiàn)于此,從定義上看該方法也是過于繁雜,需要大量的代碼行、大量的變量和參數(shù),Brain Class和 God Class更符合其存在條件,因此Long Method通常伴隨著Brain Class和God Class的存在而存在.3個代碼異味的共同點就是代碼繁雜,囤積了太多的功能.Yamashita[17]定義這種囤積了太多功能的類為“Hoarders”,在他的分類中將Feature Envy歸為“Hoarders”,通過本實驗的結(jié)果和對Feature Envy的定義來看均不支持歸為“Hoarders”,反而Long Method更符合要求.

        因子2.Intensive Coupling、Long Parameter List、Extensive Coupling和Shotgun Surgery被歸為因子2,符合在Yamashita[17]定義的第3種關(guān)系“Wide interfaces”,其描述為如果維護任務(wù)需要在顯示這些異味的類中進行任何修改,則這些更改將導致由于功能耦合分散而產(chǎn)生的意外副作用.Extensive Coupling、Shotgun Surgery和Intensive Coupling根據(jù)定義可知3種代碼異味的存在主要是由于類的耦合,至于Long ParameterList可以理解為大量參數(shù)的引入導致“被調(diào)用對象”與“較大對象”間存在依賴關(guān)系,使得Long Parameter List代碼異味耦合嚴重,本文將這一因子不再定義為“Wide interfaces”,而是定義為“Coupling”.

        因子3.Feature Envy和Data Class被歸為因子3,其中Data Class顯示負負荷,并不說明Data Class與此因子無關(guān),正負與影響的大小沒有關(guān)系,負號表示Data Class與此因子呈負相關(guān).根據(jù)Feature Envy的定義,兩個代碼異味之間確實存在著關(guān)聯(lián),結(jié)果卻比較意外,兩者一般不會出現(xiàn)在同一個類中,標記為Feature Envy的類,一般不會再標記為Data Class,標記為Data Class的類同樣也很少會被標記為Feature Envy.這種情況很符合Pietrzak[13]等人定義的“Rejection”關(guān)系.

        因子4.Tradition Breaker和Refused Parent Bequest被歸為因子4,從這兩個代碼異味的定義上看歸為一個因子也在預(yù)料之中,兩個代碼異味都是由于子類中除了父類的方法外含有其他的方法,都屬于繼承體系設(shè)計錯誤,因此本文將這一因子命名為“Inheritance extension”.

        因子5.God Class被單獨歸為因子5,因子1中同樣存在代碼異味God Class,本文認為此代碼異味被單獨分離出來可能是由于該代碼異味出現(xiàn)頻率很高而且會使用其他類的數(shù)據(jù),此代碼異味會與其他因子存在關(guān)聯(lián),比較明顯的是因子1相關(guān),經(jīng)過斜交實驗發(fā)現(xiàn)因子1中的God Class被去除,也證明了兩個因子存在著關(guān)聯(lián).

        因子6.Feature Envy被單獨歸為因子6,F(xiàn)eature Envy的存在幾乎貫穿了整個數(shù)據(jù)集,根據(jù)統(tǒng)計,本文數(shù)據(jù)集中70%的類中存在該代碼異味,有如此高的占比率,很大程度上是由于檢測工具將被調(diào)用的類(Data Class除外)也標記為Feature Envy,F(xiàn)eature Envy更像是滴在清水里的墨水,很容易與其他類耦合在一塊.

        表6總結(jié)了本文得出了幾種關(guān)系.同時可以先對Q1進行解答,本文得到的前4個因子都可以從過往的論文中找到依據(jù),其中因子1、2、3的關(guān)系都有論文進行總結(jié)分類,因子4沒有總結(jié),但是因子中變量的關(guān)系明確,因子5、6則無法找到充足的依據(jù).

        表6 代碼異味的關(guān)系和描述Table 6 Relationship and description of code smells

        4.5 與其他方法和原始數(shù)據(jù)集的對比

        本節(jié)對主成分分析提取的因子和本文用到的方法得出的結(jié)果做了對比,同時對比了在主軸因子方法下,原始數(shù)據(jù)集與帶有嚴重性的異味數(shù)據(jù)集下的模型的好壞,并對Q2、Q3進行解答.

        針對Q2:表7展示主成分分析提取的因子,可以看出,主成分分析下的前兩個因子中變量都比主軸因子法得出的結(jié)果多.特別地,盡管都進行了因子旋轉(zhuǎn),但是主成分提取的因子1和因子2中都存在變量Extensive Coupling,從相關(guān)矩陣可以發(fā)現(xiàn)Extensive Coupling代碼異味與因子1中其它3種代碼異味相關(guān)系數(shù)都接近0.3,但構(gòu)不成弱相關(guān),可以視為一種極弱相關(guān),本文的方法忽略這種極弱相關(guān),不僅可以使不同因子中的變量盡可能獨立,而且簡化了因子變量,使得因子1更易于解釋;對于因子2,主成分分析提取的因子2變量中多了Schizophrenic Class代碼異味,結(jié)合相關(guān)矩陣,發(fā)現(xiàn)Schizophrenic Class與其他異味并不存在明顯的相關(guān)關(guān)系,可以認為本文方法得到的結(jié)果更具有可靠性;對于主成分分析提取的因子5中的Brain Class和Schizophrenic Class并未在相關(guān)矩陣中找到兩者存在相關(guān)關(guān)系的證據(jù).綜合對比表5可以看到本文用到的方法提取的因子更加簡化,忽略了一些極弱相關(guān),變量之間的關(guān)系更容易解釋.主軸因子法比起主成分分析法的優(yōu)勢是忽略了特殊因子的影響,主成分分析得到的特殊因子各分量之間存在關(guān)聯(lián),不滿足因子分析的前提條件,從而會使因子矩陣存在偏差[25].通過觀察表7可以看到主成分分析得到的公因子方差并沒有達到很高的水平,存在很多0.3~0.8的公因子方差值,這就說明無法忽略特殊因子的影響.同時本文的目的側(cè)重于確定代碼異味關(guān)系的內(nèi)在結(jié)構(gòu),主軸因子法提取公因子正是以變量的相關(guān)矩陣為出發(fā)點確定其內(nèi)在關(guān)系,而非側(cè)重變量的方差,因此得到的結(jié)果結(jié)合相關(guān)矩陣來看比主成分法提取的結(jié)果更簡化且容易解釋.

        針對Q3:本文從相關(guān)矩陣代碼異味對、平均初始變量方差和平均KMO值3個方面對兩個數(shù)據(jù)集的結(jié)果進行了比較,如表8所示.

        表7 主成分提取的因子矩陣Table 7 Factor matrix of principal component extraction

        表8 數(shù)據(jù)集結(jié)果對比Table 8 Dataset results comparison

        兩個數(shù)據(jù)集的相關(guān)矩陣得出的代碼異味對都是8對,原始數(shù)據(jù)集對于Feature Envy的關(guān)系提取的更多,主要原因是Feature Envy廣泛存在于整個數(shù)據(jù)集,占比率達到了70%,沒有嚴重性值約束下,更容易將其與其他代碼異味關(guān)聯(lián).本文的數(shù)據(jù)集得出了兩對代碼異味{EC、LPL}和{LPL、GC}是原始數(shù)據(jù)集沒有得到的,其中{EC、LPL}在之前的論文中都沒有提及,唯一提及的是Walter[21]在一個特殊數(shù)據(jù)集中出現(xiàn)過這種異味對,但并沒有進行總結(jié).

        原始有數(shù)據(jù)集的平均初始變量方差為53.63%,比本文帶有嚴重性值的數(shù)據(jù)集的60.44%少了將近7%,之所以考慮初始變量方差而不是最終的旋轉(zhuǎn)載荷方差,是因為本文用的方法出發(fā)點不在于變量方差.

        對于平均KMO值,本文數(shù)據(jù)集達到了0.718,比起原始數(shù)據(jù)集的0.693也要好了很多.

        5 結(jié)束語

        本文對帶有嚴重性值的代碼異味進行相關(guān)性分析,將檢測到代碼異味的檢測工具的比例作為代碼異味的嚴重性值,然后運用因子分析中的主軸因子提取因子的方法,對代碼異味進行相關(guān)性分析,從相關(guān)矩陣中得到了一種新的代碼異味對,同時得到6個因子,并對其進行解釋和分類,最后與主成分分析法和原始數(shù)據(jù)集的結(jié)果進行了比較,得出本文的方法可以對因子很好的解釋,數(shù)據(jù)集也更加適合因子分析.本文研究的代碼異味的相關(guān)性是以類為研究對象,沒有考慮由于耦合類之間的代碼異味的相關(guān)性,將來可以以包為研究對象,研究類之間的代碼異味的關(guān)聯(lián).

        猜你喜歡
        定義分析檢測
        “不等式”檢測題
        “一元一次不等式”檢測題
        “一元一次不等式組”檢測題
        隱蔽失效適航要求符合性驗證分析
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        電力系統(tǒng)及其自動化發(fā)展趨勢分析
        小波變換在PCB缺陷檢測中的應(yīng)用
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        修辭學的重大定義
        當代修辭學(2014年3期)2014-01-21 02:30:44
        山的定義
        夜鲁很鲁在线视频| 日本美女在线一区二区| 免费午夜爽爽爽www视频十八禁| 日韩人妻无码精品久久| 无码国产亚洲日韩国精品视频一区二区三区 | 国产偷国产偷精品高清尤物| 国产精品久久久久国产a级| 女人的天堂av免费看| 国产精品亚洲在线播放| 中文区中文字幕免费看| 国产av电影区二区三区曰曰骚网| 色综合久久久久综合999| 国产91久久精品成人看网站 | 狠狠躁夜夜躁人人爽天天| 超短裙老师在线观看一区二区| 变态调教一区二区三区女同| 免费无码一区二区三区蜜桃大| 老色鬼永久精品网站| 国产女主播大秀在线观看| 性欧美长视频免费观看不卡| 亚洲精品无码mv在线观看| 在线a人片免费观看高清| 中文字幕亚洲精品在线免费| 久久久久亚洲av成人无码 | 精华国产一区二区三区| 婷婷五月婷婷五月| 国产乱人视频在线看| 男女男生精精品视频网站| 日日碰日日摸日日澡视频播放| 久久精品国产第一区二区三区| 久久久久亚洲AV片无码乐播| 精品人妻少妇丰满久久久免| 国产成人综合亚洲看片| 国产成人久久精品区一区二区 | av中文字幕综合在线| 国产丝袜在线福利观看| 成人无码一区二区三区| 无码一区二区三区老色鬼| 中文字幕一区二区人妻痴汉电车| 久久免费看的少妇一级特黄片| 国精品无码一区二区三区在线蜜臀|