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

Android應(yīng)用程序中代碼異味共存現(xiàn)象的實證研究

2022-12-31 00:00:00邊奕心王露穎趙松朱曉
計算機(jī)應(yīng)用研究 2022年9期

收稿日期:2022-02-06;修回日期:2022-04-03" 基金項目:國家自然科學(xué)基金資助項目(61902094);哈爾濱師范大學(xué)博士科研啟動基金資助項目(XKB201801);黑龍江省自然科學(xué)基金資助項目(QC2018082);黑龍江省普通本科高等學(xué)校青年創(chuàng)新人才培養(yǎng)計劃資助項目(UNPYSCT-2018183);哈爾濱師范大學(xué)計算機(jī)科學(xué)與信息工程學(xué)院科研項目(JKYKYY202004,JKYKYZ202104)

作者簡介:邊奕心(1979-),女,吉林吉林人,講師,碩導(dǎo),博士,主要研究方向為軟件重構(gòu)、程序分析;王露穎(1998-),女(通信作者),黑龍江牡丹江人,碩士,主要研究方向為軟件重構(gòu)、程序分析(bianyu79@163.com);趙松(1976-),男,黑龍江哈爾濱人,講師,碩士,主要研究方向為計算機(jī)體系結(jié)構(gòu)、程序分析、代碼重構(gòu);朱曉(1984-),男,山東人,講師,碩導(dǎo),博士,主要研究方向為生物信息處理.

摘 要:相對于單一類型的代碼異味,代碼異味共存現(xiàn)象更具危害性。已有實證研究大多聚焦于分析桌面應(yīng)用程序中代碼異味的共存現(xiàn)象,缺少對Android應(yīng)用程序中代碼異味共存現(xiàn)象的研究。為了研究Android應(yīng)用程序中代碼異味的共存現(xiàn)象,并與桌面應(yīng)用程序中代碼異味共存現(xiàn)象進(jìn)行比較,分別對285個Android應(yīng)用程序和30個桌面應(yīng)用程序進(jìn)行檢測,對檢測出來的10種異味進(jìn)行分析。首先,根據(jù)檢測結(jié)果計算受到多種異味影響的類的百分比。然后,使用公式計算代碼異味共存的頻率。最后,使用Spearman相關(guān)系數(shù)分析代碼異味共存與應(yīng)用程序規(guī)模的關(guān)系。結(jié)論如下:a)在Android應(yīng)用程序中受到一種以上代碼異味共同干擾的類占有異味的類的總數(shù)的31.04%;b)在兩個平臺的應(yīng)用程序中,兩對代碼異味brain class-brain method和god class-brain method共存的頻率較高;c)一種異味、兩種異味共存、三種異味共存與Android應(yīng)用程序的規(guī)模具有較強(qiáng)的相關(guān)性。

關(guān)鍵詞:代碼異味共存;Android應(yīng)用程序;桌面應(yīng)用程序;實證研究

中圖分類號:TP31"" 文獻(xiàn)標(biāo)志碼:A

文章編號:1001-3695(2022)09-031-2763-05

doi:10.19734/j.issn.1001-3695.2022.02.0060

Empirical study on code smell co-occurrences in Android applications

Bian Yixin1,Wang Luying1,Zhao Song1,Zhu Xiao2

(1.College of Computer Science amp; Information Engineering,Harbin Normal University,Harbin 150025,China;2.School of Computer amp; Control Engineering,Yantai University,Yantai Shandong 264005,China)

Abstract:Code smell co-occurrences are more harmful to the systems than the individual smell type.Although multiple research works have focused on the code smell co-occurrences in traditional desktop applications,the researchers pay less attention to the code smell co-occurrences in Android applications.In order to study the phenomenon of object-oriented code smells co-occurrences in Android applications and then compared it with the phenomenon of code smell co-occurrences in desktop applications.This paper analyzed 10 object-oriented code smell types detected in 285 Android Apps and 30 desktop Apps.Firstly,it calculated the percentage of classes affected by various kinds of smells according to the detection results.Secondly,it analyzed the frequency of code smell co-occurrences with a formula.Finally,it used the Spearman correlation coefficient to analyze the relationship between code smell co-occurrences and the size of the application.The results show that:a)In Android applications,31.04% of smelly classes were affected by more than one type of code smells.b) In the applications of the two platforms,two pairs of code smells,brain class-brain method and god class-brain method,frequently co-occur.c) One type of smells,the co-occurrences of two types of smells,and the co-occurrences of three types of smells are strongly correlated with the size of Android applications.

Key words:code smell co-occurrences;Android applications;desktop applications;empirical study

0 引言

代碼異味(code smells)又被稱為代碼壞味道,是軟件系統(tǒng)中存在設(shè)計缺陷的代碼段[1]。代碼異味共存(code smell co-occurrences)是指一個類中存在一種以上的代碼異味。研究表明,相對于單一類型的代碼異味,代碼異味共存對系統(tǒng)更具威脅性[2]。Palomba等人[3]對傳統(tǒng)桌面應(yīng)用程序中的代碼異味共存現(xiàn)象進(jìn)行了實證研究,結(jié)果顯示代碼異味共存現(xiàn)象普遍存在于桌面應(yīng)用程序中,而且在受異味干擾的類中,最多包含三種不同類型的代碼異味。近年來,隨著移動通信技術(shù)的迅猛發(fā)展,移動應(yīng)用程序已經(jīng)成為軟件行業(yè)的發(fā)展主體。從2016年開始,全球移動應(yīng)用程序下載量持續(xù)增長,2019年下載量超過2 000億次。2021年全球移動應(yīng)用的下載量已經(jīng)達(dá)到2 300億次,較2020年增加了120億次。其中,Android應(yīng)用程序的市場占有率占手機(jī)應(yīng)用程序的80%以上,而iOS平臺上的應(yīng)用程序只占不到20%。研究表明代碼異味可以影響任何軟件系統(tǒng)[4,5],已有實證研究大多聚焦于分析桌面應(yīng)用程序中代碼異味的共存現(xiàn)象,缺少針對Android應(yīng)用程序中代碼異味共存現(xiàn)象的研究。因此,目前尚不清楚在Android應(yīng)用程序中是否存在代碼異味的共存現(xiàn)象。如果存在,對系統(tǒng)的影響程度如何?另外,由于傳統(tǒng)桌面應(yīng)用程序與Android應(yīng)用程序在程序結(jié)構(gòu)、API調(diào)用、內(nèi)存、CPU、網(wǎng)絡(luò)、電池等方面的諸多差異,Android應(yīng)用程序中代碼異味的共存現(xiàn)象與傳統(tǒng)桌面應(yīng)用程序中代碼異味的共存現(xiàn)象之間會有哪些不同,也是未知。

針對以上問題,本文采用實證研究方法分析Android應(yīng)用程序中代碼異味的共存現(xiàn)象,并與傳統(tǒng)桌面應(yīng)用程序中代碼異味共存現(xiàn)象進(jìn)行對比。通過實證研究,結(jié)論如下:

a)Android 應(yīng)用程序中存在代碼異味共存現(xiàn)象。其中,受代碼異味影響的類中有31.04% 的類受到一種以上代碼異味的共同干擾。在這些含有共存異味的類中,0.05%的類受到六種代碼異味的共同干擾,因此,在Android 應(yīng)用程序中,雖然受到多種代碼異味共同干擾的類的比例并不大,但這種現(xiàn)象對系統(tǒng)的危害程度卻很嚴(yán)重。相對于Android應(yīng)用程序,桌面應(yīng)用程序中的代碼異味共存現(xiàn)象則更為普遍,其對系統(tǒng)的危害程度也高于Android 應(yīng)用程序。

b)在Android應(yīng)用程序中,兩對代碼異味brain class-brain method和god class-brain method共同發(fā)生的頻率高于其他異味。在桌面應(yīng)用程序中,三對代碼異味brain class-brain method、god class-brain method和refused parent bequest-brain method共同發(fā)生的頻率高于其他異味。由此可見,兩對代碼異味brain class-brain method和god class-brain method在兩個平臺的應(yīng)用程序中都易于共存。此外,兩個平臺的應(yīng)用程序中,共存的代碼異味之間并不是一一對應(yīng)的關(guān)系。

c)代碼異味共存現(xiàn)象與Android應(yīng)用程序的規(guī)模存在相關(guān)性。即應(yīng)用程序的規(guī)模越大,其中含有一種異味的類數(shù)量、同時含有兩種異味的類數(shù)量和同時含有三種異味的類數(shù)量越多,而同時含有四種、五種和六種異味的類數(shù)量與程序規(guī)模不相關(guān)。

以上研究結(jié)論有助于Android應(yīng)用程序的研究者和工具開發(fā)者加深對代碼異味的認(rèn)識,從而更有效地處理代碼異味共存對Android應(yīng)用程序的負(fù)面影響,降低維護(hù)成本,提高Android應(yīng)用程序的質(zhì)量。對于研究人員,異味之間的共存關(guān)系有助于異味檢測與重構(gòu)的研究,研究人員在研究異味檢測時不僅要考慮單個異味的檢測方法,還要考慮異味之間的依賴關(guān)系,研究異味共存的檢測方法。此外,研究人員在對Android應(yīng)用程序的異味進(jìn)行重構(gòu)時,不僅要考慮單個異味的重構(gòu)方式,還要考慮異味之間的依賴關(guān)系。利用這種依賴關(guān)系研究異味的調(diào)度順序,從而節(jié)省重構(gòu)的時間,提高重構(gòu)的準(zhǔn)確性和效率,最終目的是提高Android應(yīng)用程序的質(zhì)量。對于工具的開發(fā)者,可以利用異味之間的依賴關(guān)系進(jìn)行異味的重構(gòu),即最先重構(gòu)那些共存頻率較高的異味,從而節(jié)省開發(fā)的時間成本。

1 相關(guān)研究

1.1 Android應(yīng)用程序中的代碼異味

Fowler[1]最先提出了22種代碼異味并給出相應(yīng)的重構(gòu)方法。隨著移動設(shè)備的迅速發(fā)展,移動應(yīng)用程序已經(jīng)成為軟件行業(yè)的發(fā)展主體。許多學(xué)者的關(guān)注點已經(jīng)從傳統(tǒng)的桌面應(yīng)用程序轉(zhuǎn)移到Android應(yīng)用程序。Mannan等人[6]通過對比Android應(yīng)用程序和桌面應(yīng)用程序中的代碼異味,通過實證方法研究不同平臺下代碼異味的差異。Rahkema等人[7]通過對比iOS應(yīng)用程序和Android應(yīng)用程序發(fā)現(xiàn),除了一種代碼異味distorted hierarchy之外,在Android應(yīng)用程序中存在的代碼異味也發(fā)生在iOS應(yīng)用程序中。

研究表明,不同于傳統(tǒng)的桌面應(yīng)用程序,Android應(yīng)用程序中還存在一些Android特有的代碼異味。Reimann等人[8]提出了30種Android特有的代碼異味,這些異味主要對Android應(yīng)用程序的非功能屬性產(chǎn)生干擾。繼Reimann之后,越來越多的學(xué)者從不同角度對Android特有代碼異味展開研究。Habchi等人[9]通過分析8種不同的Android特有代碼異味,研究其產(chǎn)生的原因,進(jìn)化規(guī)律和移除方法。Rasool 等人[10]開發(fā)了一個Android特有代碼異味的檢測工具DAAP,這個工具可以檢測出25種Android特有的代碼異味。本文研究Android應(yīng)用程序中面向?qū)ο蟠a異味的共存現(xiàn)象,不包括Android特有代碼異味。

以上文獻(xiàn)都是針對單個類型的代碼異味展開研究,缺少對Android應(yīng)用程序中代碼異味共存現(xiàn)象的研究。

1.2 代碼異味共存

代碼異味共存是指在同一個類或方法中,包含兩種或兩種以上的代碼異味[11]。Pietrzak等人[12]最早發(fā)現(xiàn)了代碼異味共存現(xiàn)象,他們定義了六種代碼異味共存關(guān)系,并對共存的代碼異味之間的依賴關(guān)系進(jìn)行了深入研究。文獻(xiàn)[13,14]認(rèn)為代碼異味的共存降低了系統(tǒng)的可維護(hù)性,需要通過重構(gòu)解決問題。Palomba等人[2,3]對30個桌面應(yīng)用程序的395個軟件版本進(jìn)行了實證研究,結(jié)果表明代碼異味共存現(xiàn)象普遍存在于桌面應(yīng)用程序中,并且,與受一種異味影響的類相比,受多種代碼異味共同影響的類更易發(fā)生改變和產(chǎn)生錯誤。Martins等人[11]通過分析3個Java閉源軟件的11個版本,研究代碼異味共存現(xiàn)象對系統(tǒng)內(nèi)部質(zhì)量屬性的影響。結(jié)果顯示,通過重構(gòu)消除代碼異味的共存可以降低系統(tǒng)的復(fù)雜性。以上文獻(xiàn)都是研究傳統(tǒng)的桌面應(yīng)用程序中代碼異味的共存現(xiàn)象。

Hamdi等人[15] 對Android應(yīng)用程序中的代碼異味共存現(xiàn)象進(jìn)行了實證研究,他們分析了15種類型的Android特有代碼異味和10種面向?qū)ο蟠a異味。結(jié)果表明,代碼異味共存現(xiàn)象在Android應(yīng)用程序中比較普遍,并列出了14對共存頻率較高的代碼異味對。盡管Hamdi等人綜合考慮了兩種類型的代碼異味共存,但他們的研究還存在不足。首先,他們并未對檢測工具的輸出結(jié)果進(jìn)行人工復(fù)檢,因此,研究結(jié)果取決于工具的輸出結(jié)果,而通常情況下,代碼異味檢測工具都會存在一定程度的誤檢和漏檢現(xiàn)象[15]。其次,他們并未探討代碼異味共存現(xiàn)象與Android應(yīng)用程序的規(guī)模之間的相關(guān)性。是否代碼量越大,共存的異味就越多?此外,由于Android應(yīng)用程序與傳統(tǒng)桌面應(yīng)用程序的諸多差異,這種共存現(xiàn)象在不同平臺的應(yīng)用程序中會發(fā)生怎樣的變化,Hamdi等人并未涉及該問題。而Mannan等人[6]的研究表明,對比研究兩種平臺的代碼異味之間的差異性具有實際意義。最后,共存的異味之間是簡單的一一對應(yīng)關(guān)系還是存在其他關(guān)系,Hamdi等人并未說明。這種關(guān)系直接影響到后續(xù)異味的重構(gòu)研究,因為代碼異味檢測的目的是為了最終移除異味,提高程序的質(zhì)量。

針對以上問題,本文采用實證研究方法分析Android應(yīng)用程序中代碼異味的共存現(xiàn)象,并與傳統(tǒng)桌面應(yīng)用程序中代碼異味共存現(xiàn)象進(jìn)行對比。相對于單一的代碼異味,異味之間的共存反映了異味之間的依賴關(guān)系,分析這種依賴關(guān)系,可以加深人們對代碼異味的認(rèn)識,更好地理解異味產(chǎn)生的原因,從而在開發(fā)之初,有意識地避免引入代碼異味。在軟件維護(hù)階段,可以利用異味間的依賴關(guān)系,研究檢測異味共存的方法及重構(gòu)方法,從而最大限度地降低代碼異味對系統(tǒng)的危害。

2 實證研究

2.1 研究問題

本文通過分析Android應(yīng)用程序的源代碼,研究Android應(yīng)用程序中代碼異味的共存現(xiàn)象,圍繞這個目標(biāo),提出以下三個研究問題(RQs):

a)RQ1:在Android應(yīng)用程序中是否存在代碼異味共存現(xiàn)象?若存在,其共存程度如何?與桌面應(yīng)用程序中的代碼異味共存程度相比,有何不同?

b)RQ2:在Android應(yīng)用程序中,哪幾種代碼異味更傾向于共存?這種情況與桌面應(yīng)用程序中代碼異味共存相比有哪些不同?

c)RQ3:代碼異味共存現(xiàn)象與Android應(yīng)用程序的規(guī)模之間是否存在相關(guān)性?

2.2 實驗對象

2.2.1 應(yīng)用程序的選取

本文選取285個Android應(yīng)用程序和30個桌面應(yīng)用程序作為實驗對象。其中,285個Android應(yīng)用程序的選擇標(biāo)準(zhǔn)如下:

a)在AndroZooOpen[16]中選出539個開源Android應(yīng)用程序。AndroZooOpen是一個開源的數(shù)據(jù)集,目前包含76 466個Android應(yīng)用程序。AndroZooOpen中包含由不同語言開發(fā)的Android應(yīng)用程序,本文選擇Java語言開發(fā)的程序。原因如下:Java是目前移動應(yīng)用軟件開發(fā)的主流語言之一,并且針對Java的代碼異味檢測工具較多且易于獲取。

b)使用開源工具RepoReapers[17]去除低質(zhì)量的Android項目。RepoReapers可以從八個方面對數(shù)據(jù)集中的程序質(zhì)量進(jìn)行評分(分別是體系結(jié)構(gòu)、社區(qū)、持續(xù)集成、文件、提交歷史、許可證、問題和單元測試)。如果待選程序在七個方面的評分均大于零,則選取該程序。經(jīng)過RepoReapers篩選之后,選出321個Android應(yīng)用程序作為候選程序。

c)為了保證所選Android應(yīng)用程序種類的多樣性,本文根據(jù)Google Play Store對應(yīng)用程序的分類[18,19]將待選Android項目分為六個類別,分別是開發(fā)、影音、社交通信、家庭和教育、安全和通用以及其他,每種類別所占比例如圖1所示。

最終,經(jīng)過以上篩選過程,最后收集了285個Android應(yīng)用程序作為實驗對象,共計34 617個類、315 634個方法、2 701 826行代碼。此外,還需選取一定數(shù)量的桌面應(yīng)用程序作為對比研究的另一實驗對象。本文選取Palomba等人[3]在研究傳統(tǒng)桌面應(yīng)用程序中代碼異味共存現(xiàn)象時,所使用的30個開源數(shù)據(jù)集,共計43 257個類、436 299個方法以及4 948 368個方法。

2.2.2 代碼異味檢測工具

本文使用代碼異味檢測工具iPlasma對所選應(yīng)用程序進(jìn)行異味檢測。目前,主流的代碼異味檢測工具主要有以下七個:iPlasma、inFusion、Checkstyle、JDeodorant、PMD、DECOR和Stench Blossom[20]。Fontana等人[20]的研究結(jié)果表明,在這七個檢測工具中,iPlasma和inFusion是可檢測代碼異味種類最多的兩個工具。Mannan等人[6]的研究表明,用于檢測桌面應(yīng)用的檢測工具,同樣可檢測Android應(yīng)用程序中的代碼異味。盡管inFusion聲稱可以檢測出Fowler提出的22種代碼異味,但是,Rahkema等人[7]的研究表明,inFusion代碼異味檢測工具目前已經(jīng)無法獲取。此外,Reis等人[21]的研究結(jié)果顯示,5.8%的研究使用inFusion進(jìn)行檢測,15.4%的研究使用iPlasma對代碼異味進(jìn)行檢測。因此,本文選用iPlasma檢測異味。

2.2.3 代碼異味的選取

本文選取的10種代碼異味如表1所示。這10種代碼異味經(jīng)常被用于異味的相關(guān)研究中[6],并且本文使用的檢測工具iPlasma可以檢測這10種代碼味道。

2.3 實驗流程

實驗過程如圖2所示。

在確定好實驗對象后,執(zhí)行以下步驟:

a)代碼異味檢測。使用代碼異味檢測工具iPlasma分別對2.2.1節(jié)選出的285個Android應(yīng)用程序和30個桌面應(yīng)用程序進(jìn)行檢測。

b)手動檢查檢測結(jié)果。盡管iPlasma的檢測結(jié)果準(zhǔn)確度很高,但由于其檢測規(guī)則本身的局限性,會產(chǎn)生一定數(shù)量的誤檢,所以,本文采用人工復(fù)檢方法,對工具輸出的代碼異味進(jìn)行篩查。招募了四名志愿者,其中,一名為計算機(jī)專業(yè)的碩士研究生,三名為計算機(jī)專業(yè)的本科生。將四名同學(xué)分為兩組,其中,兩名同學(xué)獨(dú)立對285個Android應(yīng)用程序中代碼異味的檢測結(jié)果進(jìn)行檢查,另外兩名同學(xué)獨(dú)立對30個桌面應(yīng)用程序中的代碼異味的檢測結(jié)果進(jìn)行檢查。人工復(fù)查具體步驟如下:(a)對四名同學(xué)進(jìn)行一定的培訓(xùn),使其對代碼異味有較深入的認(rèn)識,理解并可以根據(jù)研究所涉及的10種代碼異味的相關(guān)描述,準(zhǔn)確地找到應(yīng)用程序中所存在的異味;(b)每名同學(xué)逐一檢查所有原文件,參照代碼異味定義,逐一檢查源代碼文件中的代碼異味,并記錄結(jié)果;(c)當(dāng)兩組同學(xué)均完成人工分析后,使用Cohen’s Kappa[22]系數(shù)分析每組中的兩位同學(xué)對異味檢測的一致性,本研究中Cohen’s Kappa系數(shù)為0.63;(d)與工具輸出結(jié)果及報告的異味所在文件路徑進(jìn)行比對,并對存在意見不一致的結(jié)果進(jìn)行復(fù)檢,達(dá)成一致意見后,記錄數(shù)據(jù)。

c)記錄代碼異味檢測結(jié)果。根據(jù)人工復(fù)檢結(jié)果,記錄代碼異味相關(guān)信息,例如其所在類\方法名等。再將存在共存的類\方法單獨(dú)記錄,用于后續(xù)研究。

2.4 分析方法

實驗1 為了回答RQ1,首先根據(jù)檢測結(jié)果計算出每個類中包含的代碼異味數(shù)量。然后,計算受一種代碼異味和多種代碼異味影響的類的百分比。

實驗2 RQ2主要研究Android應(yīng)用程序中代碼異味共存的頻率。本文使用Palomba等人[3]提出的公式計算異味的共存頻率,如式(1)所示。

co-occurrencesCSi,j=|CSi∧CSj||CSi|,且i≠j(1)

其中:CSi和CSj分別表示不同種類的代碼異味;分子|CSi∧CSj|表示代碼異味CSi和CSj共同發(fā)生的總次數(shù),分母|CSi|表示代碼氣味CSi出現(xiàn)的總次數(shù)。如果將公式中的i和j交換后,所得的結(jié)果是不同的。

實驗3 為了回答RQ3,本文使用Spearman相關(guān)性系數(shù)分析代碼異味共存現(xiàn)象與Android應(yīng)用程序規(guī)模之間的關(guān)系。這里,使用類的數(shù)量、方法的數(shù)量和代碼行數(shù)表示Android應(yīng)用程序的規(guī)模。本文使用Cohen提供的一套解釋相關(guān)系數(shù)的指南[20],用于判斷代碼異味共存現(xiàn)象與Android應(yīng)用程序規(guī)模之間相關(guān)性的強(qiáng)弱程度。

3 研究結(jié)果與分析

RQ1:表2列出了兩個平臺中代碼異味共存的情況。根據(jù)表2的結(jié)果可以看出,在Android應(yīng)用程序中同樣存在代碼異味共存現(xiàn)象。其中,受到一種以上代碼異味共同干擾的類占含有異味的類的總數(shù)的31.04%,在這些含有共存異味的類中,21.73%的類受到兩種代碼異味的干擾,占比最大。此外,受到三種、四種、五種以及六種代碼異味共同干擾的類分別占6.64%、2.21%、0.37%和0.09%。從表2中還可以看出,Android應(yīng)用程序中代碼異味共存程度較桌面應(yīng)用程序要高出1.34%(=31.04%-29.70%)。文獻(xiàn)[14]通過對30個桌面應(yīng)用程序的395個軟件版本進(jìn)行實證研究,通過分析其中的13種代碼異味發(fā)現(xiàn),在桌面應(yīng)用程序中最多只受到三種代碼異味共存的影響。而本文則在30個桌面應(yīng)用程序中發(fā)現(xiàn)了四種、五種、六種代碼異味共存的情況。

RQ2:表3列出了10種代碼異味在Android應(yīng)用程序中共同發(fā)生的頻率。由表3可知,在Android應(yīng)用程序中,兩對代碼異味共存的頻率高于其他異味,這兩對異味是brain class-brain method和god class-brain method。其中,受到brain class干擾的類中有61%的類同時受到異味brain method的干擾,受到god class干擾的類中有17%的類同時受到異味brain method的干擾。 此外,共存的代碼異味之間并不是一一對應(yīng)的關(guān)系,例如,在Android應(yīng)用程序toposuite的一個類中,存在8個feature envy實例和8個intensive coupling實例。表4列出了10種代碼異味在桌面應(yīng)用程序中共同發(fā)生的頻率。如表4所示,在桌面應(yīng)用程序中,brain method更傾向于和其他代碼異味共同發(fā)生。其中,三對代碼異味發(fā)生共存的頻率高于其他異味,這三對異味是brain class-brain method、god class-brain method和refused parent bequest-brain method。此外,與Android應(yīng)用程序相似,這些共存的代碼異味之間并不是一一對應(yīng)的關(guān)系。

綜合表3和4可以看出,在兩個平臺的應(yīng)用程序中,brain class-brain method和god class-brain method兩對代碼異味共存的頻率都較高。

RQ3:如表5所示,由于在Android應(yīng)用程序中五種、六種代碼異味共存的程度均不足1%,所以,此處不考慮五種和六種代碼異味共存現(xiàn)象與Android應(yīng)用程序規(guī)模之間的關(guān)系。如表5所示,一種代碼異味、兩種代碼異味共存、三種代碼異味共存現(xiàn)象與Android項目規(guī)模具有較強(qiáng)的相關(guān)性(即項目規(guī)模越大,項目中含有一種代碼異味的類、同時含有兩種代碼異味的類和同時含有三種代碼異味的類的數(shù)量越多),四種代碼異味共存現(xiàn)象與Android應(yīng)用程序的規(guī)模具有中等程度的相關(guān)性。

4 結(jié)束語

本文對Android應(yīng)用程序中代碼異味的共存現(xiàn)象進(jìn)行了深入分析。本文與代碼異味共存領(lǐng)域相關(guān)研究的最大區(qū)別在于,首次對Android應(yīng)用程序中的代碼異味共存現(xiàn)象進(jìn)行深入的實證研究。根據(jù)本文實證研究的結(jié)果發(fā)現(xiàn),在Android應(yīng)用程序中確實存在代碼異味共存現(xiàn)象,其中受到一種以上代碼異味共同干擾的類占含有異味的類的總數(shù)的31.04%。通過對比Android和桌面兩個平臺的應(yīng)用程序,分析其中的代碼異味共存現(xiàn)象發(fā)現(xiàn),brain class-brain method和god class-brain method這兩對代碼異味共存的頻率相對較高。此外,研究還發(fā)現(xiàn)異味共存與Android應(yīng)用程序的規(guī)模存在相關(guān)性。

總體而言,實證研究結(jié)果有助于Android應(yīng)用程序的開發(fā)人員和維護(hù)人員加深對其中代碼異味的認(rèn)識,從而更有效地處理代碼異味共存現(xiàn)象對Android應(yīng)用程序的負(fù)面影響,降低開發(fā)和維護(hù)成本,提高Android應(yīng)用程序的質(zhì)量。但是,本研究還存在以下有待改進(jìn)的空間:可以選取更多具有代表性的開源Android應(yīng)用程序甚至商用軟件;可以考慮分析更多種代碼之間的共存現(xiàn)象等。在后續(xù)的研究中,將擴(kuò)大實證研究的規(guī)模,分析更多的Android應(yīng)用程序,研究代碼異味共存現(xiàn)象,以及探索由其他語言(如Kotlin)開發(fā)的項目中是否存在代碼異味共存現(xiàn)象及其對程序的影響。

參考文獻(xiàn):

[1]Fowler M.重構(gòu):改善既有代碼的設(shè)計[M].熊節(jié),林從羽,譯.2版.北京:人民郵電出版社,2019.(Fowler M.Refactoring:improving the design of existing code[M].Xiong Jie,Lin Congyu.2nd ed.Beijing:Posts amp; Telecom Press,2019.)

[2]Palomba F,Bavota G,Penta D M,et al.On the diffuseness and the impact on maintainability of code smells:a large scale empirical investigation[J].Empirical Software Engineering,2018,23(3):1188-1221.

[3]Palomba F,Bavota G,Penta D M,et al.A large-scale empirical study on the lifecycle of code smell co-occurrences[J].Information and Software Technology,2018,99:1-10.

[4]Macia I,Garcia J,Popescu D,et al.Are automatically-detected code anomalies relevant to architectural modularity?An exploratory analysis of evolving systems[C]//Proc of the 11th Annual International Conference on Aspect-Oriented Software Development.2012:167-178.

[5]Oizumi W,Garcia A,Sousa L S,et al.Code anomalies flock together:exploring code anomaly agglomerations for locating design problems[C]//Proc of the 38th IEEE/ACM International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2016:440-451.

[6]Mannan U A,Ahmed I,Almurshed R A M,et al.Understanding code smells in android applications[C]//Proc of IEEE/ACM International Conference on Mobile Software Engineering and Systems.Piscataway,NJ:IEEE Press,2016:225-236.

[7]Rahkema K,Pfahl D.Comparison of code smells in iOS and Android applications[C]//Proc of QuASoQ@ APSEC.2020:79-86.

[8]Reimann J,Brylski M,Assmann U.A tool-supported quality smell catalogue for android developers[C]//Proc of Conference Modellierung in Workshop Modellbasierte und Modellgetriebene Softwaremodernisierung.2014.

[9]Habchi S,Moha N,Rouvoy R.Android code smells:from introduction to refactoring[J].Journal of Systems and Software,2021,177:110964.

[10]Rasool G,Ali A.Recovering Android bad smells from Android applications[J].Arabian Journal for Science and Engineering,2020,45(4):3289-3315.

[11]Martins J S,Bezerra C I M,Ucha A,et al.Are code smell co-occurrences harmful to internal quality attributes?A mixed-method study[C]//Proc of the 34th Brazilian Symposium on Software Engineering.2020:52-61.

[12]Pietrzak B,Walter B.Leveraging code smell detection with inter-smell relations[C]//Proc of International Conference on Extreme Programming and Agile Processes in Software Engineering.Berlin:Springer,2006:75-84.

[13]Yamashita A,Moonen L.Exploring the impact of inter-smell relations on software maintainability:an empirical study[C]//Proc of the 35th International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2013:682-691.

[14]Sjberg D I K,Yamashita A,Anda B C D,et al.Quantifying the effect of code smells on maintenance effort[J].IEEE Trans on Software Engineering,2012,39(8):1144-1156.

[15]Hamid O,Ouni A,AlOmar E A,et al.An empirical study on code smells co-occurrences in android applications[C]//Proc of the 36th IEEE/ACM International Conference on Automated Software Engineering Workshops.Piscataway,NJ:IEEE Press,2021:26-33.

[16]Liu Pei,Li Li,Zhao Yanjie,et al.AndroZooOpen:collecting large-scale open source android apps for the research community[C]//Proc of the 17th International Conference on Mining Software Repositories.2020:548-552.

[17]Munaiah N,Kroh S,Cabrey C,et al.Curating GitHub for engineered software projects[J].Empirical Software Engineering,2017,22(6):3219-3253.

[18]Ahmed I,Mannan U A,Gopinath R,et al.An empirical study of design degradation:how software projects get worse over time[C]//Proc of ACM/IEEE International Symposium on Empirical Software Engineering and Measurement .Piscataway,NJ:IEEE Press,2015:1-10.

[19]Souza L B L,Maia M A.Do software categories impact coupling me-trics?[C]//Proc of the 10th Working Conference on Mining Software Repositories.Piscataway,NJ:IEEE Press,2013:217-220.

[20]Fontana F A,Braione P,Zanoni M.Automatic detection of bad smells in code:an experimental assessment[J].Journal of Object Techno-logy,2012,11(2):5:1-38.

[21]Reis J P,Abreu F B,Carneiro G F,et al.Code smells detection and visualization:a systematic literature review[J].Archives of Computational Methods in Engineering,2022,29:47-94.

[22]Cohen J.A Coefficient of agreement for nominal scales[J].Educational amp; Psychological Measurement,1960,20(1):37-46.

主站蜘蛛池模板: 91外围女在线观看| 人妻精品久久无码区| 国产精品永久久久久| 亚洲精品无码专区在线观看 | 国产成人精品无码一区二| 日韩区欧美国产区在线观看| 波多野结衣视频一区二区| 亚洲婷婷丁香| 在线观看亚洲天堂| 亚洲欧美国产高清va在线播放| 欧美啪啪网| 女同久久精品国产99国| 亚洲成人黄色在线观看| 综合人妻久久一区二区精品 | 国产成人精彩在线视频50| 亚洲色欲色欲www在线观看| 国产女人18毛片水真多1| 亚洲综合专区| 永久免费精品视频| 亚洲第一成年人网站| 尤物午夜福利视频| 国产精品久久久久久久久| 在线国产综合一区二区三区 | 欧美亚洲香蕉| 91无码人妻精品一区| 日韩美毛片| 免费播放毛片| 国产香蕉97碰碰视频VA碰碰看| 综合色区亚洲熟妇在线| 人妻无码AⅤ中文字| 99久久精品美女高潮喷水| 国产精品视频第一专区| 久久久久久久久久国产精品| 99精品视频播放| 亚洲系列中文字幕一区二区| 欧洲高清无码在线| 精品一區二區久久久久久久網站| 色婷婷久久| 免费在线成人网| 国产成人免费| 亚洲人成色在线观看| 热热久久狠狠偷偷色男同| 国产福利一区视频| 久久综合五月| 98精品全国免费观看视频| 亚洲欧美日韩成人高清在线一区| 97超爽成人免费视频在线播放| 午夜视频免费试看| 91麻豆精品国产高清在线| 亚洲AV无码久久精品色欲| 亚洲精品国产首次亮相| 狠狠色噜噜狠狠狠狠色综合久 | h视频在线播放| 国产欧美在线视频免费| 国产丝袜无码精品| 成人精品视频一区二区在线| 成AV人片一区二区三区久久| 91伊人国产| 综合色在线| 日本尹人综合香蕉在线观看| 国产丝袜91| 国产午夜人做人免费视频中文| 视频一本大道香蕉久在线播放 | 久久综合伊人77777| 999精品免费视频| 视频二区欧美| 国产系列在线| 四虎综合网| 亚洲天堂成人在线观看| 天天综合网站| 99久久精品免费观看国产| 激情爆乳一区二区| 亚洲AⅤ无码日韩AV无码网站| 91激情视频| 欧洲免费精品视频在线| 国产一区二区精品高清在线观看| 免费高清a毛片| 欧美中文字幕在线视频| 精品天海翼一区二区| 萌白酱国产一区二区| 丁香六月激情综合| 亚洲av片在线免费观看|