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

        ?

        基于代碼行變更指數(shù)的異味類排序方法

        2021-03-23 09:38:30位歡歡吳海濤高建華
        計算機(jī)工程與設(shè)計 2021年3期
        關(guān)鍵詞:開發(fā)人員異味代碼

        位歡歡,吳海濤,高建華

        (上海師范大學(xué) 信息與機(jī)電工程學(xué)院,上海 200234)

        0 引 言

        代碼異味[1]的出現(xiàn)給軟件質(zhì)量和可維護(hù)性帶來了很大的隱患。而解決它們的有效方式是進(jìn)行重構(gòu),但是由于重構(gòu)的成本相對較高,對所有的異味進(jìn)行重構(gòu)是不現(xiàn)實(shí)且不必要的,因?yàn)椴煌愇额惖漠愇冻潭炔⒉皇窍嗟鹊腫2]。因此,需要對異味類進(jìn)行排序,著重關(guān)注那些有較大概率出現(xiàn)異味的代碼。

        Vidal等[3]提出了一種基于3個標(biāo)準(zhǔn)的半自動化的異味類排序方法。Fontana等[4]采用度量值與閾值的比較結(jié)果(強(qiáng)度值)來對代碼異味進(jìn)行排序。Natthawute等[5]基于開發(fā)人員的角度來研究代碼異味的排序,研究表明開發(fā)人員是通過代碼的耦合程度以及組件的重要性來對代碼異味進(jìn)行篩選和排序的。Anshul Rani等[6]則是通過對不同異味類之間的耦合程度計算出每個類的影響因子,并根據(jù)影響因子的大小對代碼異味進(jìn)行排序。Mcintosh等[7]通過在 5ESS? 軟件項(xiàng)目上進(jìn)行研究,發(fā)現(xiàn)代碼變更的規(guī)模與軟件出現(xiàn)錯誤的概率具有相關(guān)性。Charalampidou等[8]的研究表明代碼變更的規(guī)模與軟件易錯性發(fā)生的概率存在正相關(guān)關(guān)系,即代碼變更規(guī)模越大的類,出現(xiàn)異常和錯誤的概率越大。

        本文基于代碼變更與軟件易錯性存在正相關(guān)關(guān)系,通過研究在歷史代碼變更信息中各個類的代碼行數(shù)動態(tài)變化情況,提出基于代碼行變更指數(shù)的異味類排序方法(CLCI)。并在開源項(xiàng)目HospitalAutomationWithJavaEE上進(jìn)行實(shí)證分析,實(shí)驗(yàn)結(jié)果表明,本文提出的異味類排序方法可以使后續(xù)異味類重構(gòu)更加容易,從而為項(xiàng)目開發(fā)和維護(hù)節(jié)約成本。

        1 相關(guān)工作

        1.1 異味類排序

        Vidal等[3]提出了一種半自動化的方法,用于在決定對代碼異味進(jìn)行適當(dāng)重構(gòu)之前先對異味類進(jìn)行優(yōu)先級排序,該排序方法主要基于以下3個標(biāo)準(zhǔn):發(fā)生異味的代碼的穩(wěn)定性、開發(fā)人員是否使用常規(guī)標(biāo)準(zhǔn)來對每種異味進(jìn)行主觀評估,以及相關(guān)的可修改性場景。通過在兩個案例研究中進(jìn)行實(shí)驗(yàn)驗(yàn)證,結(jié)果表明建議的代碼異味順序?qū)﹂_發(fā)人員是有用的。其研究結(jié)果表明代碼異味排序?qū)τ趯?shí)際的程序開發(fā)是有效的。

        Fontana等[4]提出基于強(qiáng)度因子來對代碼異味進(jìn)行排序,強(qiáng)度因子是表示代碼異味強(qiáng)度情況的指標(biāo),通過對靜態(tài)度量值與閾值的比較并計算得出的。實(shí)驗(yàn)研究是在Qua-litas Corpus上的74個開源項(xiàng)目上進(jìn)行,實(shí)驗(yàn)使用自己研發(fā)的工具JcodeOdor,通過對6種代碼異味進(jìn)行一些靜態(tài)度量值測量來建立實(shí)驗(yàn)?zāi)P汀5?,?qiáng)度因子的實(shí)驗(yàn)過程相對復(fù)雜,不利于開發(fā)人員的實(shí)際應(yīng)用。

        Natthawute等[5]通過對10個專業(yè)開發(fā)人員在異味的選擇和排序需要考慮哪些因素進(jìn)行問卷調(diào)查,把開發(fā)人員對于異味的看法分為15個類別,以此來判斷開發(fā)人員在異味選擇時最關(guān)注的因素。實(shí)驗(yàn)結(jié)果表明,開發(fā)人員在選擇異味時,工作相關(guān)性是首先被考慮的,其次是異味的嚴(yán)重性;在開發(fā)人員對代碼異味排序時,模塊重要性是普遍被優(yōu)先關(guān)注的,其次是項(xiàng)目相關(guān)性。但是,其研究并沒有為開發(fā)人員在代碼異味排序提供具體的定量指標(biāo)。

        Anshul Rani等[6]的研究是基于類間的耦合性來對異味進(jìn)行排序的。實(shí)驗(yàn)共分為兩個部分,第一部分為檢測代碼異味,得到異味類列表;第二部分是基于異味影響因子來對異味類進(jìn)行排序,影響因子越大表示異味越嚴(yán)重。實(shí)驗(yàn)結(jié)果表明,根據(jù)排序列表進(jìn)行重構(gòu)的結(jié)果,明顯好于隨機(jī)進(jìn)行重構(gòu)的結(jié)果,作者的研究為開發(fā)人員提供新的異味類排序方法。

        1.2 代碼變更與軟件易錯率的相關(guān)性

        Mcintosh等[7]通過在5ESS?軟件項(xiàng)目上進(jìn)行實(shí)證研究,得出代碼變更的規(guī)模與軟件出現(xiàn)錯誤的概率具有相關(guān)性。通過建立預(yù)測模型,研究得出隨著代碼變更次數(shù)、代碼變更行數(shù)的增加和相關(guān)聯(lián)的子系統(tǒng)數(shù)目的增加,軟件出現(xiàn)錯誤的可能性也會相對增加。此外,不同類型的代碼變更對于軟件系統(tǒng)出錯率的影響是不同的,新增加的代碼出現(xiàn)錯誤的概率要比修復(fù)缺陷的代碼變更容易出現(xiàn)錯誤,因?yàn)樾迯?fù)代碼的變更相對規(guī)模較小。

        Charalampidou等[8]通過使用代碼異味出現(xiàn)概率來對常見的TD代碼中的代碼異味進(jìn)行評估分析,分析異味出現(xiàn)概率與模塊的變化傾向的關(guān)系。案例研究的結(jié)果表明,比起不易變更模塊中代碼異味出現(xiàn)的概率,代碼異味顯然更易集中在具有變更傾向的模塊中。這些研究結(jié)果對研究人員和實(shí)踐者都是有用的,可以為后續(xù)研究重構(gòu)策略和重構(gòu)的優(yōu)先級提供方向。

        陳芝菲[9]通過對大規(guī)模數(shù)據(jù)集的歷史維護(hù)信息進(jìn)行分析,發(fā)現(xiàn)出現(xiàn)代碼異味和沒有出現(xiàn)代碼異味的類發(fā)生變更或錯誤的次數(shù)存在較大的差異。為了進(jìn)一步探索軟件變更與代碼異味出現(xiàn)的關(guān)系,建立負(fù)二項(xiàng)回歸模型來對其進(jìn)行研究,研究表明代碼變更是軟件發(fā)生易錯性的最重要因素,尤其是代碼行等自變量。

        Luca Gazzola等[10]通過在軟件系統(tǒng)交互時存在故障和程序不穩(wěn)定問題的研究中,發(fā)現(xiàn)代碼的大量變更容易導(dǎo)致項(xiàng)目出現(xiàn)錯誤,并提供統(tǒng)計數(shù)據(jù)來支持其聲明,更進(jìn)一步提出應(yīng)避免對超過25%的現(xiàn)有代碼進(jìn)行更改,對于此類情況建議重新編碼而不是修改。上述研究均表明代碼變更規(guī)模越大,越容易導(dǎo)致項(xiàng)目出現(xiàn)錯誤,給項(xiàng)目后期的維護(hù)帶來負(fù)擔(dān)。

        本文基于代碼變更規(guī)模與代碼出現(xiàn)異味的概率存在正相關(guān)關(guān)系,通過關(guān)注代碼行數(shù)在整個開發(fā)過程中的動態(tài)變化來定量描述代碼變更的規(guī)模,并把代碼變更的規(guī)模定義為代碼行變更指數(shù),根據(jù)其值的大小來對異味類進(jìn)行降序排序。

        2 代碼行變更指數(shù)排序方法

        在軟件項(xiàng)目的開發(fā)過程中,隨著項(xiàng)目需求的變更、錯誤代碼的修正、軟件項(xiàng)目的優(yōu)化、測試案例的選擇和后期項(xiàng)目的維護(hù),開發(fā)人員需要對代碼進(jìn)行增加、刪除、修改操作。但是,代碼變更不可以不計其規(guī)模而進(jìn)行,若軟件項(xiàng)目的變更大于項(xiàng)目代碼總數(shù)的25%時,修改代碼所花費(fèi)的成本將大于重新編譯該項(xiàng)目[10]。設(shè)計良好的項(xiàng)目結(jié)構(gòu)其類的穩(wěn)定性相對較高,面臨上述情況時,其代碼變更規(guī)模相對較小,相反,若是一個類的代碼行數(shù)頻繁變更,則其代碼的結(jié)構(gòu)設(shè)計越糟糕,出現(xiàn)異味的概率越大。此前,對于代碼行數(shù)的研究大多基于靜態(tài)的最終代碼行數(shù),而本文主要關(guān)注在一個項(xiàng)目開發(fā)周期中代碼行數(shù)的動態(tài)變化,即每個開發(fā)人員每次提交的代碼變更信息中代碼行數(shù)的變化,并用代碼行變更指數(shù)(CLCI)來表示該變化,CLCI值越大表示該類的代碼變更規(guī)模越大,則該類出現(xiàn)異味的概率越大。本文的實(shí)驗(yàn)是基于類的代碼行變更指數(shù)(CLCI)來對異味類進(jìn)行排序,以此減少后期維護(hù)成本。實(shí)驗(yàn)的整體流程如圖1所示,共分為3步,描述如下:

        圖1 整體流程

        (1)檢測階段:在檢測過程中,本文使用開源檢測工具JDeodorant,它是eclipse的免費(fèi)開源插件,檢測的異味為feature envy,Duplicate code,Type checking,Long Method,God Class,根據(jù)檢測結(jié)果得到異味類列表;

        (2)計算階段:收集項(xiàng)目開發(fā)過程中每個開發(fā)人員每次提交的代碼變更信息,統(tǒng)計同一異味類每次代碼變更前后的代碼行數(shù),計算其差值為該次代碼變更的行數(shù);之后,把代碼行變更指數(shù)與最終代碼行數(shù)的比值之和稱為代碼行變更倍數(shù)(Times),并對其進(jìn)行sigmoid函數(shù)歸一化,得到的值即為代碼行變更指數(shù)(CLCI),分別計算各個異味類的CLCI值,得到所有異味類的代碼行變更指數(shù)列表;

        (3)排序階段:根據(jù)異味類的代碼變更指數(shù)(CLCI)值的大小對檢測到的異味類進(jìn)行排序,CLCI值越大的異味類則表示其代碼變更規(guī)模越大,出現(xiàn)代碼異味的概率相對較高,反之,則表示該異味類出現(xiàn)異味的概率相對較低。

        2.1 檢測工具的選擇

        許多學(xué)者已經(jīng)對代碼異味的檢測進(jìn)行研究[11-14],而本文主要研究代碼異味的排序方式,對于代碼異味的檢測傾向于選擇開源且易于操作的代碼異味檢測工具。本文通過對代碼異味檢測工具的分析和研究,最終選擇JDeodorant作為本文代碼異味檢測的工具,見表1。選擇JDeodorant工具的優(yōu)勢:

        (1)JDeodorant工具是eclipse軟件的一個開源插件,且操作簡單;

        (2)JDeodorant工具可以自動識別java程序中本次實(shí)驗(yàn)需要檢測的所有異味類型;

        (3)JDeodorant工具可以向開發(fā)人員提供多種重構(gòu)建議并自動實(shí)施開發(fā)人員所選擇的重構(gòu)建議。

        表1 異味檢測工具

        2.2 代碼變更指數(shù)的計算

        大量研究表明,代碼變更規(guī)模與軟件易錯率存在正相關(guān)關(guān)系[7-10],本文正是基于代碼變更規(guī)模的大小來判斷哪些類更容易出現(xiàn)異常和錯誤,代碼變更規(guī)模較大的異味類出現(xiàn)異味的概率相對較大。而此前的研究主要關(guān)注每個類最終的靜態(tài)代碼行數(shù),而忽略在整個項(xiàng)目開發(fā)中每個類的代碼行數(shù)隨著每次開發(fā)人員提交代碼而發(fā)生動態(tài)變化的情況。本文基于每次代碼變更前后代碼行數(shù)的變化情況來對異味類進(jìn)行排序,其中代碼變更次數(shù)相對較多,每次代碼行數(shù)變化相對較大的類,則其出現(xiàn)異味的概率也相對較大。因此,本文為了描述代碼行在整個項(xiàng)目開發(fā)周期中的動態(tài)變化,定義了代碼行變更指數(shù)(CLCI)。代碼行變更指數(shù)是指在項(xiàng)目開發(fā)周期中,每次開發(fā)人員提交代碼時,該異味類代碼行數(shù)發(fā)生變化的總和是最終代碼行數(shù)的倍數(shù)Times,并對其進(jìn)行sigmoid函數(shù)歸一化。代碼行變更指數(shù)(CLCI)的計算公式如下

        (1)

        (2)

        其中,k表示代碼變更總次數(shù),CR(i)(Code Row) 為異味類第i次代碼變更后的代碼行數(shù),其中CR(0)=0,則CR(i)-CR(i-1) 為第i次代碼變更時,發(fā)生變化的代碼行數(shù),在除以最終代碼行數(shù)(LCR)并求和,并對求和結(jié)果進(jìn)行sigmoid函數(shù)歸一化,使其值范圍屬于(0,1)之間。計算代碼行變更指數(shù)的偽代碼設(shè)計如下:

        算法1: CLCI計算過程

        輸入: 代碼提交行數(shù)CR,代碼變更次數(shù)k,最終代碼行數(shù)LCR

        輸出: CLCI值

        (1) CLCI←0,CR(0)←0

        (2) Fori←1 tokDo

        (3) If CR(i)≥CR(i-1) Then

        (4) CCR(i)←CR(i)-CR(i-1)

        (5) Else

        (6) CCR(i)←CR(i-1)-CR(i)

        (7) End if

        (8) Times←Times+CCR(i)/LCR

        (9) End for

        2.3 異味類排序

        通過上述方式對異味類進(jìn)行計算得出所有異味類的代碼行變更指數(shù),CLCI的值越大,則表示在項(xiàng)目開發(fā)過程中該類的代碼變更規(guī)模越大,即該類出現(xiàn)異味的概率越大。反之,CLCI的值越小,則該類出現(xiàn)異味的概率越小。最后,根據(jù)CLCI值的大小來對異味類進(jìn)行降序排序,從而得到排序后的異味類列表。

        3 實(shí)驗(yàn)研究

        為驗(yàn)證依據(jù)代碼行變更指數(shù)對異味類排序的有效性,本文以HospitalAutomationWithJavaEE[6]系統(tǒng)作為測試背景,計算該項(xiàng)目所有異味類的代碼行變更指數(shù),并依據(jù)代碼行變更指數(shù)值的大小進(jìn)行排序,最終得到排序后的異味類列表。實(shí)驗(yàn)主要尋求以下幾個問題的解答:

        Q1:使用CLCI排序方式進(jìn)行重構(gòu),前序異味類重構(gòu)之后能否使后續(xù)需要重構(gòu)的異味類數(shù)量減少?

        Q2:使用CLCI排序方式進(jìn)行重構(gòu),重構(gòu)后總體異味類剩余數(shù)量是否減少?

        Q3:使用CLCI排序方式進(jìn)行重構(gòu),比基于類間耦合性[6]進(jìn)行排序,異味剩余率是否減少更快?

        3.1 實(shí)驗(yàn)準(zhǔn)備

        本文實(shí)證研究是在java開源項(xiàng)目上進(jìn)行的,項(xiàng)目名稱為HospitalAutomationWithJavaEE[6],此項(xiàng)目共有49個類,58次代碼變更記錄信息,選擇此項(xiàng)目的原因?yàn)椋孩僭谄渌撐闹惺褂肹6],具有一定的可信度;②有很高的錯誤比例(36%),給代碼異味的排序供了實(shí)例。檢測代碼異味的工具為自動化檢測工具JDeodorant,主要檢測的代碼異味為feature envy,Duplicate code,Type checking,Long Method,God Class,該工具操作簡單且具有重構(gòu)功能,能夠?yàn)楹笃谥貥?gòu)節(jié)約成本。

        3.2 數(shù)據(jù)預(yù)處理

        實(shí)驗(yàn)所需的初始數(shù)據(jù)為項(xiàng)目歷史記錄信息,項(xiàng)目歷史記錄信息可以在公共的開發(fā)倉庫獲得,如CSV,GitHub,對于公司內(nèi)部項(xiàng)目,開發(fā)人員更改代碼的記錄可以從項(xiàng)目日志中獲得。本文實(shí)驗(yàn)數(shù)據(jù)是從github項(xiàng)目倉庫中獲得,實(shí)驗(yàn)項(xiàng)目的歷史記錄信息為每次代碼變更提交的commit記錄。項(xiàng)目歷史記錄信息包含的內(nèi)容較多,但本次實(shí)驗(yàn)并不需要所有的數(shù)據(jù)信息,因此,根據(jù)本文實(shí)驗(yàn)要求從歷史記錄信息中提取實(shí)驗(yàn)所需代碼變更信息,舉例如圖2所示。

        圖2 代碼變更信息舉例

        代碼變更信息中包含類、配置文件以及網(wǎng)頁的變更信息,基于本文的實(shí)驗(yàn)要求,首先需要對代碼變更信息進(jìn)行數(shù)據(jù)選取,即保留類的變更信息,清除其它不必要的變更信息,進(jìn)行數(shù)據(jù)選取時,可以依據(jù)提交主題中的關(guān)鍵詞進(jìn)行快速數(shù)據(jù)選??;其次,依據(jù)類名對代碼變更信息進(jìn)行分類匯總,得到每個類的代碼變更信息;最后,對分類信息進(jìn)行統(tǒng)計整理,記錄每個類的代碼變更hash值、代碼變更作者、代碼變更時間、代碼變更行數(shù)以及該類的最終代碼行數(shù),此處以SaveAppointmentsService.java類的變更信息為例,見表2。

        表2 SaveAppointmentsService.java類代碼行變更信息

        3.3 檢測與計算結(jié)果

        通過對HospitalAutomationWithJavaEE項(xiàng)目的49個類,58次代碼變更記錄信息進(jìn)行異味類檢測與代碼行變更指數(shù)計算,檢測與計算的結(jié)果見表3,該表采用代碼行變更指數(shù)遞減的順序排列。檢測階段的結(jié)果表明,在該項(xiàng)目中Duplicate Code異味較為常見,其次為Feature Envy與God Class異味。計算階段的結(jié)果表明,當(dāng)CLCI值大于0.9時,出現(xiàn)代碼異味的概率較大。

        表3 檢測與計算階段結(jié)果

        3.4 實(shí)驗(yàn)結(jié)果分析

        根據(jù)檢測階段和計算階段的實(shí)驗(yàn)結(jié)果,逐一回答前文提到的Q1、Q2、Q3問題。

        Q1:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),前序異味類重構(gòu)之后能否使后續(xù)需要重構(gòu)的異味類數(shù)量減少,本文采用JDeodorant工具對異味類按照代碼行變更指數(shù)降序排序的順序?qū)Ξ愇额愡M(jìn)行重構(gòu),并在一個異味類重構(gòu)之后觀測后續(xù)異味類的數(shù)量是否減少。通過實(shí)驗(yàn)觀測發(fā)現(xiàn),Service/AvailableAppointmentsService.java與Service/DoctorService.java均為Duplicate Code異味,它們的代碼行變更指數(shù)分別0.7311和0.7714,根據(jù)上述重構(gòu)規(guī)則需要優(yōu)先對Service/DoctorService.java異味類進(jìn)行重構(gòu),但是在重構(gòu)過程中發(fā)現(xiàn)這兩個異味類具有相同的代碼片段,兩個異味類的相同代碼片段如圖3所示。使用重構(gòu)工具JDeodorant提取重復(fù)代碼片段定義為新的類KlinikerEqualClinic.java,則在service/DoctorService.java異味類被檢測出來后,使用JDeodorant插件按照開發(fā)人員選擇的重構(gòu)建議進(jìn)行重構(gòu)之后,service/AvailableAppointmentsService.java類的異味隨之自動解決;此外,對Controller/GetDoctors.java進(jìn)行God Class重構(gòu)后,Controller/GetHospital.java類的異味也自動消失。研究結(jié)果表明異味類之間具有相關(guān)性,一個異味類重構(gòu)以后會使后續(xù)需要重構(gòu)的異味類數(shù)量減少,從而減少重構(gòu)成本。

        圖3 異味類重復(fù)代碼片段

        Q2:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),重構(gòu)后總體異味類剩余數(shù)量是否減少,本文采用對照實(shí)驗(yàn),把項(xiàng)目復(fù)制成內(nèi)容相同的兩份,實(shí)驗(yàn)組采用優(yōu)先對代碼行變更指數(shù)較大的異味類進(jìn)行重構(gòu);對照組采用隨機(jī)方式對異味類進(jìn)行重構(gòu)。為了判斷重構(gòu)后異味類的剩余情況,本文采用異味剩余率(CML,即“code smell left %”)作為評價指標(biāo),異味剩余率為重構(gòu)后的異味類剩余數(shù)量占總異味類數(shù)量的比例,其公式如下所示

        (3)

        異味剩余率(CML)值越小則表示使用該代碼異味排序方式重構(gòu)后的異味數(shù)量越少,即該代碼異味排序方式更優(yōu)。本文使用JDeodorant工具,并分別采用兩種不同的排序方式來對相同項(xiàng)目的代碼異味進(jìn)行重構(gòu),重構(gòu)剩余率對比如圖4所示,從圖4可以看出當(dāng)對前10個異味類采用本文的排序方式進(jìn)行重構(gòu)后的異味類剩余數(shù)量僅占總異味類數(shù)量的25%,則使用隨機(jī)排序方式進(jìn)行重構(gòu)后的剩余異味類數(shù)量占總異味類數(shù)量的50%;使用本文的排序方式,代碼異味的剩余率減少速度比隨機(jī)排序方式快,說明采用本文的排序方式可以使重構(gòu)后的總體異味類剩余數(shù)量減少,從而減少重構(gòu)成本。

        圖4 CLCI與隨機(jī)排序重構(gòu)后異味剩余率對比

        Q3:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),比基于類間耦合性[11]進(jìn)行排序,異味剩余率是否減少更快。本文采用Q2的對照實(shí)驗(yàn),實(shí)驗(yàn)組為基于代碼行變更指數(shù)的異味類排序方式,對照組為基于類間耦合性的異味類排序方式,并采用異味剩余率來對其結(jié)果進(jìn)行比較。其中,基于類間耦合性的異味類排序方式的計算公式如下

        (4)

        具體計算公式,可以參考文獻(xiàn)[11]。在整個實(shí)驗(yàn)過程中,分別記錄對照組采用基于類間耦合性排序方式進(jìn)行重構(gòu),重構(gòu)后的前10個異味類的異味剩余率變化過程和實(shí)驗(yàn)組采用基于代碼行變更指數(shù)排序方式進(jìn)行重構(gòu),重構(gòu)后的前10個異味類的異味剩余率變化過程,見表4。

        表4 類間耦合與CLCI排序重構(gòu)后剩余率

        從表4可以看出,當(dāng)CLCI指數(shù)較大的7個異味類被重構(gòu)之后,異味剩余率下降開始減緩,此時,該CLCI值開始小于0.9。而基于耦合性的排序方式在整個重構(gòu)過程中,異味剩余率下降較為平穩(wěn),但整體效果比起CLCI值下降更少,如圖5所示。

        圖5 CLCI與耦合性排序重構(gòu)后的異味剩余率

        4 結(jié)束語

        本文依據(jù)代碼變更規(guī)模與軟件發(fā)生錯誤的概率存在正相關(guān)關(guān)系,定義代碼行變更指數(shù)來描述軟件開發(fā)過程中,代碼發(fā)生變更時代碼行的動態(tài)變化,并以此來對異味類進(jìn)行排序,實(shí)驗(yàn)結(jié)果表明,使用代碼行變更指數(shù)來對異味類進(jìn)行排序可以使后續(xù)的重構(gòu)更容易,從而提高重構(gòu)的效率。在未來的工作中,將會在以下幾個方面展開:

        (1)持續(xù)研究代碼變更中其它因素,如代碼變更的原因以及發(fā)生變更的代碼重要程度對于異味排序的作用。

        (2)通過研究異味類之間的相關(guān)關(guān)系,改進(jìn)基于代碼行變更指數(shù)的異味類排序方法。

        猜你喜歡
        開發(fā)人員異味代碼
        Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
        基于4G技術(shù)的VOCs及異味檢測系統(tǒng)
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        用這些告別異味吧!夏天就要清清爽爽過!
        PIC-408系列采用育種技術(shù)控制公豬異味
        讓W(xué)indows 10進(jìn)入開發(fā)者模式
        電腦迷(2015年12期)2015-04-29 23:22:51
        后悔了?教你隱藏開發(fā)人員選項(xiàng)
        電腦愛好者(2015年6期)2015-04-03 01:20:56
        亚洲精品aⅴ无码精品丝袜足| 男女视频网站免费精品播放| av在线不卡免费中文网| 一本无码中文字幕在线观| 狠狠色噜噜狠狠狠888米奇视频| 国产又色又爽又刺激视频| 日本少妇按摩高潮玩弄| 一区二区三区观看在线视频| 久久精品国产熟女亚洲| 国产97在线 | 亚洲| 久久精品国产99精品国偷| av天堂一区二区三区精品 | 与最丰满美女老师爱爱视频| 亚洲午夜久久久久久久久久| 十八岁以下禁止观看黄下载链接| 国产丝袜免费精品一区二区| 日韩不卡一区二区三区色图| 欧美性猛交xxxx免费看蜜桃| 97久久超碰国产精品2021 | 一区二区三区四区亚洲免费 | 亚洲熟妇av一区| 广东少妇大战黑人34厘米视频| 亚洲成a人片在线观看高清| 女同一区二区三区在线观看| 国产欧美日韩综合精品一区二区| 国产精品一区二区暴白浆| av免费看网站在线观看| 色婷婷色丁香久久婷婷| 久久夜色精品国产| 国产视频网站一区二区三区| 日韩精品人妻视频一区二区三区| 久久久久夜夜夜精品国产| 国内揄拍国内精品| 日韩精品成人一区二区在线观看| 国产网站一区二区三区| 国产精品久久一区二区三区| 精品国产91久久久久久久a| 亚洲不卡在线免费视频| 色噜噜av亚洲色一区二区| 久久99久久久无码国产精品色戒| 中文字幕人妻一区二区二区|