• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向開源軟件的演化確認(rèn)方法*

    2017-04-17 01:38:59韓俊明
    計(jì)算機(jī)與生活 2017年4期
    關(guān)鍵詞:查全率查準(zhǔn)率源代碼

    韓俊明,王 煒,2+,李 彤,2,何 云

    1.云南大學(xué) 軟件學(xué)院,昆明 650091

    2.云南省軟件工程重點(diǎn)實(shí)驗(yàn)室,昆明 650091

    面向開源軟件的演化確認(rèn)方法*

    韓俊明1,王 煒1,2+,李 彤1,2,何 云1

    1.云南大學(xué) 軟件學(xué)院,昆明 650091

    2.云南省軟件工程重點(diǎn)實(shí)驗(yàn)室,昆明 650091

    軟件演化;確認(rèn);主題模型;開源軟件

    1 引言

    軟件系統(tǒng)的構(gòu)造性和演化性是軟件系統(tǒng)的兩個基本屬性,特別是開源軟件由于其自身的特點(diǎn)導(dǎo)致了如何確認(rèn)其演化活動成為當(dāng)前產(chǎn)業(yè)界和學(xué)術(shù)界研究的熱點(diǎn)。

    如今,軟件的應(yīng)用越來越廣泛,已經(jīng)深入到各個行業(yè)內(nèi)部,成為大部分工作中不可替代的一部分,特別是開源軟件,它的產(chǎn)生和發(fā)展是一種社會現(xiàn)象,也是一種經(jīng)濟(jì)現(xiàn)象[1]。開源軟件廣義上的理解,就是讓軟件的使用者能夠得到其源代碼,還可以按照自己的需要修改源代碼,并發(fā)布給別人使用。

    但是,開源軟件相較傳統(tǒng)軟件,在開發(fā)過程上都有著極大的不同[2]。

    從開發(fā)的角度與傳統(tǒng)方法相比較,首先在項(xiàng)目計(jì)劃上,開源軟件就沒有嚴(yán)格的時間、人員和資金等管理信息;其次在需求分析方面,傳統(tǒng)軟件開發(fā)中,需求一直都是核心問題,而對于開源軟件的開發(fā),項(xiàng)目大多時候是因?yàn)槟承┤税炎约旱南敕ü加诒?,卻沒有明確的文檔信息;然后在設(shè)計(jì)和實(shí)現(xiàn)方面,分散開發(fā)是開源軟件的一個明顯特點(diǎn),因此不會產(chǎn)生詳細(xì)或統(tǒng)一的開發(fā)文檔;最后在測試與維護(hù)上,開源軟件由于開發(fā)和使用人數(shù)眾多,雖然測試缺乏嚴(yán)密性,但錯誤的修復(fù)人員也是極其龐大的,許多錯誤在很短時間內(nèi)就能得到修復(fù)。

    從開發(fā)過程的角度來說,傳統(tǒng)的軟件開發(fā)方法認(rèn)為,好的軟件開發(fā)過程就能開發(fā)出高質(zhì)量的軟件,但對于開源軟件來說,這個假設(shè)是不成立的,因?yàn)殚_源軟件的開發(fā)過程很難做到統(tǒng)一管理,原因在于:(1)對于開源軟件,開發(fā)人、使用人和維護(hù)人三者往往不會存在于一個組織內(nèi),因此缺少相應(yīng)的文檔進(jìn)行軟件演化記錄,對于使用人而言,就很難去確認(rèn)一個演化是否與演化意圖相符合。(2)開源軟件采用群智開發(fā)模式,無法或很難實(shí)現(xiàn)開發(fā)過程的建模,導(dǎo)致難以使用基于過程的軟件確認(rèn),而當(dāng)前研究大多關(guān)注于對演化過程的驗(yàn)證,并未對演化產(chǎn)品是否與演化需求一致進(jìn)行驗(yàn)證。(3)目前大型的開源軟件,對其進(jìn)行修改的人很多,因此會出現(xiàn)缺少或沒有相關(guān)的文檔,導(dǎo)致無法對演化進(jìn)行確認(rèn)。

    當(dāng)前開源軟件還被認(rèn)為是一種獲取可信軟件的新途徑[3],同時開源軟件價格低廉和性能可靠兩個特點(diǎn),而被認(rèn)為是專有軟件的可替代品,其發(fā)展和應(yīng)用都得到了一定程度上的提高,許多組織都投身于這些軟件的開發(fā)中,但是因?yàn)檫@些軟件的開發(fā)和演化大多都是由不同的組織和個人完成,所以對軟件的可靠性或演化的真實(shí)性無法進(jìn)行確認(rèn)。特別是近年來,開源活動得到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,開源就意味著可以獲取到軟件的源代碼,利用這些源代碼可以迅速完成產(chǎn)品開發(fā)。同時開源軟件的貢獻(xiàn)者一般互相不認(rèn)識,他們在開源社區(qū)內(nèi)進(jìn)行高效的合作來完成代碼的相關(guān)工作,因此開源軟件的演化活動就變得廣泛且不可避免。

    綜上所述,由于開源軟件具有與傳統(tǒng)開發(fā)模式迥異的特征,導(dǎo)致了傳統(tǒng)軟件確認(rèn)方法無法實(shí)現(xiàn)對開源軟件的自然延伸。因此急需一種面向開源軟件的演化確認(rèn)方法。同時,相關(guān)文獻(xiàn)[4]指出,過去對軟件演化的研究大多把重點(diǎn)放在了軟件開發(fā)或演化過程上,而對于演化后的確認(rèn)工作卻很少有人開展。

    本文利用主題模型進(jìn)行了研究,提出了一種可以對開源軟件進(jìn)行確認(rèn)的方法,把源代碼按不同粒度進(jìn)行聚類分析,每一個聚類結(jié)果就代表了源代碼的一個主題,而每一個主題表示軟件系統(tǒng)中的一個功能模塊,從而把確認(rèn)工作轉(zhuǎn)換為建立功能模塊與演化需求之間的映射關(guān)系。

    本文方法具有如下特點(diǎn):

    (1)針對目前研究較少的開源軟件的演化確認(rèn),將主題模型應(yīng)用于軟件源代碼的處理,并提出了一套確認(rèn)方法。

    (2)已演化的和沒有演化的開源軟件在實(shí)驗(yàn)結(jié)果中能進(jìn)行很好的區(qū)分,并與其他可以進(jìn)行確認(rèn)的方法進(jìn)行對比,結(jié)果表明本文方法更好。

    (3)對文中所用方法,已給出相應(yīng)的確認(rèn)工具。

    本文組織結(jié)構(gòu)如下:第2章介紹軟件確認(rèn)技術(shù)的發(fā)展和所用到的相關(guān)方法;第3章描述本文所用的方法;第4章介紹面向開源軟件的演化確認(rèn)方法;第5章介紹實(shí)驗(yàn)所用到的工具;第6章具體描述實(shí)驗(yàn)結(jié)果,對結(jié)果進(jìn)行分析,并給出實(shí)驗(yàn)結(jié)論;第7章對實(shí)驗(yàn)進(jìn)行評價,并闡述未來的研究方向。

    2 研究綜述

    1978年,首次提出了軟件確認(rèn)技術(shù)[5],當(dāng)時軟件應(yīng)用具有不普及,軟件規(guī)模小和演化慢等特點(diǎn),因此當(dāng)時研究人員認(rèn)為對于一個軟件系統(tǒng),其驗(yàn)證的關(guān)鍵在于需要減少復(fù)雜性和大量細(xì)節(jié),基于該認(rèn)識,提出了確認(rèn)軟件演化需要對抽象數(shù)據(jù)類型進(jìn)行驗(yàn)證。若干年后,研究人員在開發(fā)重要的系統(tǒng)時,意識到保證軟件質(zhì)量可靠的主要手段還是確認(rèn),同時針對特定的軟件確認(rèn)提出了一種從軟件開發(fā)方法到測試的技術(shù)[6]。1992年,軟件行業(yè)發(fā)生了巨大的變化,計(jì)算機(jī)和因特網(wǎng)的普及推動了軟件的大量產(chǎn)生,人們開始對軟件的開發(fā)過程研究感興趣,并提出了基于Petri網(wǎng)的軟件確認(rèn)技術(shù)[7],并對該方法的前景和驗(yàn)證過程進(jìn)行詳細(xì)描述,作者認(rèn)為Petri網(wǎng)能在一定程度上對軟件過程進(jìn)行驗(yàn)證,但對演化結(jié)果卻無法確認(rèn)。在隨后的十幾年間,科研人員把主要的研究工作放在了使用形式化方法對過程進(jìn)行確認(rèn)。文獻(xiàn)[8]對形式化驗(yàn)證方法進(jìn)行了總結(jié),將該方法分為兩類:(1)靜態(tài)分析方法,該方法能自動計(jì)算其行為信息而不用去執(zhí)行程序;(2)軟件模型檢測法,該方法實(shí)際上是一個算法,用于確認(rèn)一個系統(tǒng)的模型是否滿足正確性規(guī)范。隨后的幾年里,軟件高度普及化,因此人們把確認(rèn)的主要研究工作放在了模型相關(guān)方法上。文獻(xiàn)[9-10]分別采用了有界模型和無界模型的方法對軟件進(jìn)行確認(rèn);文獻(xiàn)[11]則對模型檢測法進(jìn)行了詳盡的描述,并介紹了相關(guān)的工具;而文獻(xiàn)[12]指出軟件確認(rèn)是一項(xiàng)非常耗時的工作,現(xiàn)存的或者新的代碼必須要加上注釋以說明其用意,但是目前開源軟件的大量使用,來自不同組織的人員對代碼的修改變得特別頻繁,因此就很難有詳細(xì)的注釋和相關(guān)的文檔來對其演化進(jìn)行確認(rèn)。隨著軟件規(guī)模日趨龐大,組織形態(tài)日益復(fù)雜,傳統(tǒng)的演化確認(rèn)把軟件開發(fā)過程認(rèn)為是“白盒”的方法,已經(jīng)不能對開源軟件的演化進(jìn)行確認(rèn)。例如,軟件系統(tǒng)抽象為Petri網(wǎng)將具有規(guī)模龐大的狀態(tài)空間,在此基礎(chǔ)上進(jìn)行狀態(tài)空間遍歷將很困難。當(dāng)前,對軟件演化的研究主要集中在過程上,研究方法也主要是在理論上的推導(dǎo)和證明。文獻(xiàn)[13]通過引用進(jìn)程代數(shù)(algebra of communicating processes,ACP),基于等式推理驗(yàn)證軟件演化過程模型的行為,對軟件演化過程原模型進(jìn)行了擴(kuò)展,但未使用實(shí)際的軟件或程序進(jìn)行分析或證明。

    針對上述研究,可以發(fā)現(xiàn)其中的3個問題:(1)沒有對軟件演化實(shí)質(zhì)與演化需求是否相符進(jìn)行確認(rèn);(2)對于演化確認(rèn)的研究,大多沒有采取實(shí)驗(yàn)的方法,并給出實(shí)驗(yàn)數(shù)據(jù);(3)對于文檔缺失的開源軟件,目前的研究都沒有明確給出確認(rèn)的方法。

    由于開源軟件的出現(xiàn)和大量使用,同時由于群智開發(fā)而缺少相關(guān)的文檔,以及演化過程不可建模而無法使用過程確認(rèn)的方法,導(dǎo)致了前期的研究成果不適用于開源軟件的確認(rèn)。因此需要采用語義功能的方法,從演化需求和代碼之間的關(guān)聯(lián)性建模是解決開源軟件演化確認(rèn)的一條可行之路。

    主題模型是一種可以從大量的文檔中提取出文檔中包含主題的方法,因此它可以從語義功能層面分析出軟件源代碼中包含了哪些主題,進(jìn)而通過主題得到哪些代碼實(shí)現(xiàn)了軟件的某個功能。

    當(dāng)前,主題模型大多作為工具用于自然語言和信息檢索領(lǐng)域的研究。文獻(xiàn)[14]將主題模型應(yīng)用于分析人們看到在線新聞時的情感,并把這些分析結(jié)果反饋給新聞發(fā)布人員;也有研究人員在文本信息的識別和處理研究中,提出把主題模型用于文本的主題挖掘,并將原有的主題模型進(jìn)行改造,提出雙稀疏主題模型[15],進(jìn)而提出了雙層主題模型用來從引文網(wǎng)絡(luò)中發(fā)現(xiàn)知識[16]。

    目前也有一些研究把主題模型與軟件相關(guān)領(lǐng)域結(jié)合:文獻(xiàn)[17]提出了一種基于構(gòu)件驗(yàn)證的API構(gòu)件測試模型和相關(guān)的測試覆蓋標(biāo)準(zhǔn),并通過相關(guān)實(shí)驗(yàn)進(jìn)行了驗(yàn)證,可是并沒有對演化實(shí)質(zhì)和需求是否相符進(jìn)行確認(rèn)。文獻(xiàn)[18]把主題模型應(yīng)用于物聯(lián)網(wǎng)的服務(wù)發(fā)現(xiàn),提出了相應(yīng)的算法,最終找到與服務(wù)請求最相似的服務(wù)集合,但使用的數(shù)據(jù)集仍是自然語言,并沒有將其與軟件領(lǐng)域相結(jié)合,而把主題模型與軟件領(lǐng)域相結(jié)合進(jìn)行研究的,國內(nèi)包括國外都很少有人開展。文獻(xiàn)[19]把軟件源代碼用主題模型進(jìn)行處理,然后分析出代碼的功能,將分析結(jié)果用于幫助開發(fā)人員對軟件進(jìn)行理解,并沒有把主題模型與軟件演化相結(jié)合。

    主題模型的應(yīng)用,除了用于自然語言和信息方面的研究,還有人員將其與圖像識別處理技術(shù)相結(jié)合,并取得了一定的成果。文獻(xiàn)[20]認(rèn)為目前計(jì)算機(jī)視覺領(lǐng)域最大的挑戰(zhàn)是從復(fù)雜的環(huán)境中識別出人的動作,作者通過使用主題模型的方法更好地解決了動作識別的問題。最近,人們還把主題模型應(yīng)用于實(shí)時交通故障偵察[21]、視頻質(zhì)量評價[22]、圖像質(zhì)量和特點(diǎn)評估[23]等方面的研究。

    由上述研究方向的多樣化和成果可以看出,主題模型是一種成熟的可以處理文本信息的工具,并且自身也被擴(kuò)展為其他領(lǐng)域的研究工具,因此可以使用它來對軟件演化進(jìn)行確認(rèn)。

    3 預(yù)備知識

    主題模型(topic model)是用來在一系列文檔中發(fā)現(xiàn)抽象主題的一種概率統(tǒng)計(jì)模型,其主要應(yīng)用在自然語言處理和機(jī)器學(xué)習(xí)領(lǐng)域。該模型是從大量的文檔信息中,提取出內(nèi)在的主題。從更基礎(chǔ)更直觀的角度理解,就是人們在撰寫一篇文章時,都會圍繞一個主題思想開展寫作,就會有一些與該主題相關(guān)的詞匯出現(xiàn),甚至頻繁出現(xiàn),主題模型就是試圖使用數(shù)學(xué)中的概率模型來說明該現(xiàn)象,軟件開發(fā)人員在編寫代碼時,也會如此。例如當(dāng)需要不斷獲取參數(shù)并賦值時,就會反復(fù)使用get和set兩個詞匯。主題模型會自動分析文檔,統(tǒng)計(jì)文檔內(nèi)的詞匯,根據(jù)統(tǒng)計(jì)結(jié)果進(jìn)行分析,并給出文檔、主題和詞匯三者之間存在的概率關(guān)系。人們使用主題模型對文檔的生成過程進(jìn)行模擬,再通過參數(shù)估計(jì)得到各個主題[24]。將主題模型應(yīng)用于文本信息進(jìn)行建模分析,有互操作性強(qiáng),降低維度和可自動分類等優(yōu)點(diǎn)[25]。

    隱含狄利克雷分布(latent Dirichlet allocation,LDA)[26]是一種非監(jiān)督機(jī)器學(xué)習(xí)的方法,其最早是在2003年由Blei等人[24]提出,研究目的是將其應(yīng)用于自然語言處理和信息檢索領(lǐng)域。主題模型本身就是一種生成模型,它通過一定的樣本訓(xùn)練后,描述了一種以一定概率生成某一文本信息的過程[27]。同時,LDA也被證實(shí)了是LSI(latentsemanticindexing)的一種替代方法,并且在效率和定位上都優(yōu)于LSI[28]。

    在主題模型LDA中,有一個假設(shè)稱為詞袋假設(shè)[29],其把文檔信息視為詞頻向量,并且不去考慮詞與詞間的順序,這樣一來就把本不能建模的文字信息轉(zhuǎn)變成了可以建模的數(shù)字信息。在整個模型中,包含了文檔、主題和詞匯三層結(jié)構(gòu),并通過對訓(xùn)練集的訓(xùn)練,以概率模型的形式給出了文檔和主題、主題和詞匯間的關(guān)系。在LDA[30]的模式下,文檔是若干個主題按照一定的概率生成的,而主題是若干詞匯按照一定的概率生成的,因此對一個文檔集D中的文檔d,LDA假設(shè)了下面的生成過程[31-32]:

    在使用LDA對文本信息進(jìn)行處理時,需要輸入一些相關(guān)的參數(shù),主要包括以下參數(shù)[28]:

    D,文檔;

    K,主題數(shù);

    α,主題比例的Dirichlet超參數(shù);

    β,多項(xiàng)式比例的Dirichlet超參數(shù)。

    而LDA的輸出,包括以下兩項(xiàng):

    φ,詞-主題的概率分布;

    θ,主題-文檔的概率分布。

    在模型中,超參數(shù)α和 β起著平滑作用。詳細(xì)地說,α影響著每一個代碼文件的主題分布,β則影響著每一個主題的詞分布。降低超參數(shù)的值會使得α和θ矩陣變得更加稀疏。尤其是在α取較小值時意味著代碼文件中更少的主題。同樣對于β,其值越小,通常就會增加描述特定文檔所需的主題數(shù)量。LDA模型的粒度歸因于 β的值[33],因?yàn)楫?dāng)每一個代碼文件需要更多的主題來描述時,語料庫中的每一個文檔就會被分解得更細(xì)。

    文獻(xiàn)[33]對于K值的初始化,只給了一些經(jīng)驗(yàn)性的參考,并沒有給出一種選擇的方法。文獻(xiàn)[34]介紹了超參數(shù)值設(shè)置復(fù)雜的估計(jì)方法,但這些方法對不同的文檔內(nèi)容的影響尚不清楚。因此超參數(shù)的估計(jì)通常都是根據(jù)經(jīng)驗(yàn)性的方法來賦值,通常α=50/K,β=0.1。

    對于參數(shù)φ和θ,LDA在進(jìn)行主題分析時,只能做近似的推理,很難進(jìn)行精確推理。例如在LDA中包含了吉布斯采樣[35],這是用馬爾科夫鏈蒙特卡洛模擬的一個特殊情況,根據(jù)詞在各個文檔中的情況得出準(zhǔn)確的分布估計(jì)是一個消耗很大的問題。

    對于參數(shù)估計(jì)方法,目前主要有變分貝葉斯推斷(variational Bayesian inference,VB)、期望傳播(expectation propagation,EP)和Collapsed Gibbs Sampling?;贕ibbs抽樣的參數(shù)推理方法容易理解且實(shí)現(xiàn)簡單,能夠非常有效地從大規(guī)模文本集中抽取主題,因此Gibbs抽樣算法成為當(dāng)前最流行的LDA模型抽取算法。

    本文參數(shù)估計(jì)利用MCMC方法中的Gibbs抽樣算法,可以將該算法看作文本生成的反向過程,即在已知生成結(jié)果的情況下,利用參數(shù)估計(jì)得到參數(shù)值[36]:

    “Collapsed”是指采用了積分的方法避開了實(shí)際需要去估計(jì)的參數(shù),而對每個包含單詞的主題進(jìn)行采樣,如果每個單詞的主題不變,參數(shù)就可以在統(tǒng)計(jì)頻次后計(jì)算出來。因此,參數(shù)估計(jì)問題變?yōu)橛?jì)算單詞序列下主題序列的條件概率:

    式中,zi表示第i個詞所對應(yīng)的主題;乛i表示不包括第i項(xiàng);表示主題k中出現(xiàn)詞t的次數(shù);βi是詞t的狄利克雷先驗(yàn);表示文本m出現(xiàn)主題k的次數(shù);ak是主題k的狄利克雷先驗(yàn)。

    如果能夠獲取到單詞主題標(biāo)號,需要的參數(shù)計(jì)算公式可由下面公式計(jì)算出[24]:

    式中,φk,t表示主題k中詞t的概率;θm,k表示文本m中主題k的概率。

    4 演化軟件的確認(rèn)方法

    開源軟件普及速度快,利用率高,演化頻繁,同時也由于開源軟件是群智開發(fā)而缺少相關(guān)文檔,演化過程在不可控的環(huán)境下進(jìn)行而導(dǎo)致過程不可建模,致使傳統(tǒng)軟件確認(rèn)方法無法實(shí)現(xiàn)對開源軟件的自然延伸。因此本文從故能語義的角度,以源代碼主題模型作為工具進(jìn)行了研究,提出了一種可以對開源軟件演化活動進(jìn)行確認(rèn)的方法。本文的演化軟件確認(rèn)方法為:獲取軟件源代碼中的特征,并把這些特征按不同粒度進(jìn)行聚類分析,聚類分析的每一個結(jié)果就表示源代碼中的一個主題,每個主題表示軟件系統(tǒng)中的功能模塊,把這些主題與演化需求進(jìn)行相關(guān)性計(jì)算,找出與演化需求最相似的主題,從而把確認(rèn)工作轉(zhuǎn)換為建立功能模塊與演化需求之間的映射關(guān)系,進(jìn)而確認(rèn)演化是否與演化需求相符合。

    本文方法總體上分為3個過程,如圖1所示。

    Fig.1 Verification method of evolved software圖1 軟件演化確認(rèn)方法

    4.1 源數(shù)據(jù)獲取及處理

    本文方法的第一步就是獲取實(shí)驗(yàn)數(shù)據(jù),即軟件的源代碼。但是對于一個成品軟件,其源代碼文件中除了代碼外,還包含了大量的其他文件[28],例如xml文件、圖片等,就連代碼文件本身都有許多符號和代碼關(guān)鍵字等[37]。這些信息大多都是一些固定的詞組語句,或標(biāo)記類的語言,而圖片也很難用現(xiàn)有方法進(jìn)行處理。如果把源代碼文件直接使用主題模型進(jìn)行分析,不但分析速度會受到影響,連分析結(jié)果的準(zhǔn)確度也會受到很大的影響,因此只對代碼本身進(jìn)行主題建模。因?yàn)榇a在編寫時,需要寫入大量與所完成功能無關(guān)的符號和關(guān)鍵字,所以就需要對代碼進(jìn)行特征提取。依據(jù)文獻(xiàn)[38]中的內(nèi)容“……源代碼中的變量名、函數(shù)名、類(對象)名、API函數(shù)、注釋等關(guān)鍵詞中蘊(yùn)含了豐富的主題知識,可以通過其識別源代碼與特征之間的映射關(guān)系”,就需要從代碼文件中提取方法名、變量名和注釋作為能夠反映代碼所完成功能的特征。

    根據(jù)上面的描述,本文對實(shí)驗(yàn)源數(shù)據(jù)的處理,可分為以下步驟:

    (1)從分布式版本控制系統(tǒng)中下載同一個軟件的兩個不同版本,并獲取對應(yīng)的源代碼。

    (2)預(yù)處理(主要是指對方法名、變量名和注釋的處理)。把提取后特征按類(針對面向?qū)ο笳Z言)形成單獨(dú)的文件,并以類所在的包名加上自己的類名對該文件進(jìn)行命名。觀察調(diào)整后的特征,發(fā)現(xiàn)由于源代碼的格式較為特殊且復(fù)雜,故需要做相應(yīng)的預(yù)處理達(dá)到去噪的效果。預(yù)處理主要包含:去除停詞(如“the”和“and”等),詞根還原(如把“gone”還原為“go”等)和去除運(yùn)算符等非特征信息。通過這幾個操作,可以減少無用特征的數(shù)量,提高有用特征的比例。

    (3)版本內(nèi)容協(xié)同化處理。在軟件演化過程中,常常會涉及到功能的增加、刪除和整合,或者說代碼的變化。例如一個文件在更新時被刪除了,就會使得在確認(rèn)時,找不到這個文件,從而無法確認(rèn);亦或是軟件在更新時,對某個文件進(jìn)行了大量的增加和刪除,當(dāng)需要對這個文件進(jìn)行確認(rèn)時,確認(rèn)的精確度就會受到影響。因此需要對兩個版本的特征文件集進(jìn)行處理。根據(jù)文獻(xiàn)[39]所描述的方法,需要把在低版本中存在,但是高版本中不存在的添加到高版本中,具體的操作是“若低版本中有而高版本中沒有的文件,則直接把該文件拷貝到高版本中;若某個文件在低版本和高版本中均存在,則以行為基礎(chǔ),找出低版本中有而高版本中沒有的行,加入到高版本的該文件中”。

    表1為提取源代碼中的特征并處理后的文件內(nèi)容示例。

    Table 1 Sample of features表1 特征示例

    通過使用LDA主題模型對提取后的特征進(jìn)行建模分析后,就可以得到主題和詞之間的概率模型。表2為一生成概率模型示例。

    如表2所示,Topic 0包含了3個單詞,分別是tokenset、classifier和java,它們屬于該主題Topic 0的概率分別為0.022 089 578 250 261 414、0.018 458 812 594 399和0.015 263 738 817 241 778。同樣的情況,Topic 1也是如此。

    Table 2 Sample of probabilistic model表2 概率模型示例

    4.2 相關(guān)性計(jì)算

    演化活動的確認(rèn),或者說是特征匹配,本質(zhì)上是識別演化活動中被修改的代碼在功能語義上是否與演化需求存在相關(guān)性,建立特征描述向量與代碼主題之間的映射關(guān)系,該過程必須依賴某種相似性的測度方法。主題中各代碼向量在幾何空間上的分布往往是不均勻的,因此不能簡單地將相似性理解為計(jì)算特征描述向量與主題中各代碼向量的中心點(diǎn)間的歐式距離。另外,由于特征描述向量和代碼向量維數(shù)大多超過三維,程序員無法直觀想象代碼向量與特征描述向量的分布情況。

    因此相關(guān)性的計(jì)算是演化確認(rèn)的關(guān)鍵,而實(shí)際上要做的就是識別出演化活動的影響,或者說就是定位出軟件演化前后工作人員都修改了哪些代碼文件,而如何找到這些被修改了的文件,就需要借用到一些相似度計(jì)算方法。

    在對已經(jīng)演化的代碼文件進(jìn)行定位時,需要輸入與演化相關(guān)的描述性語句,將其稱為演化需求。輸入的演化需求在進(jìn)行定位時意義重大,因?yàn)槠鋬?nèi)容直接關(guān)系到能否準(zhǔn)確定位到相關(guān)文件,也就直接關(guān)系到能否確認(rèn)演化。

    選取一條演化需求,并對這條需求也做去除停詞和詞根還原處理。然后計(jì)算該條需求和每一個主題的相似度,實(shí)際上就是計(jì)算需求和每個主題夾角的余弦值。根據(jù)計(jì)算出來的相似度,選擇相似度最高的一個或若干個主題中所包含的主題詞,然后統(tǒng)計(jì)這些主題詞在所有特征文件中的出現(xiàn)次數(shù),同時也需要統(tǒng)計(jì)出每個特征文件中的總詞數(shù)。根據(jù)文獻(xiàn)[39]所提的內(nèi)容,使用“出現(xiàn)率”這一標(biāo)準(zhǔn)來對所有特征文件進(jìn)行排序。

    定義1使用ONT(occurrence numbers of topicwords)表示在一個特征文件中所選主題詞出現(xiàn)的總次數(shù),使用TWD(total words in a document)代表該特征文件中詞匯總數(shù),則出現(xiàn)率(occurrence rate)可定義如下:

    4.3 演化確認(rèn)

    演化確認(rèn)的方法有很多種,例如對演化的過程模型進(jìn)行驗(yàn)證,亦或是用靜態(tài)的方法去驗(yàn)證,或者進(jìn)行形式化驗(yàn)證,但是這些方法對開源軟件都不可用,原因如下:

    (1)開源軟件由于群智開發(fā),開發(fā)過程和演化過程不可建模的特點(diǎn),前期使用過程確認(rèn)的研究成果無法適用于開源軟件。

    (2)靜態(tài)方法的基本思想是要考慮程序的所有執(zhí)行路徑,并且需要驗(yàn)證每條執(zhí)行路徑上的斷言是否滿足。如果是大型的系統(tǒng)采用這種方法進(jìn)行確認(rèn),則會出現(xiàn)數(shù)量極其龐大的路徑網(wǎng),這就需要確認(rèn)人員對系統(tǒng)具有較高的理解程度,而開源軟件的維護(hù)人員往往不是開發(fā)人員,因此維護(hù)人員對系統(tǒng)的理解程度就會比較低,導(dǎo)致這種方法可行度不高。

    (3)形式化的驗(yàn)證方法需要有軟件系統(tǒng)對應(yīng)的文檔支持,但絕大多數(shù)的開源軟件文檔缺失嚴(yán)重,無法使用形式化的方法。

    本文提出的軟件演化確認(rèn)方法,是針對具有群智開發(fā),開發(fā)過程和演化過程不可建模,文檔缺失等特點(diǎn)的開源軟件進(jìn)行的,同時確認(rèn)人員不需要對系統(tǒng)有較高的理解程度,因此最終希望通過實(shí)驗(yàn)給出一個具體的數(shù)值結(jié)果,根據(jù)這個結(jié)果來區(qū)分是否演化。

    本文不但需要對已經(jīng)演化的需求進(jìn)行實(shí)驗(yàn),也要對沒有演化的需求進(jìn)行實(shí)驗(yàn)。故在本文中,對大量沒有演化的需求也進(jìn)行了實(shí)驗(yàn),并分析兩者的實(shí)驗(yàn)結(jié)果。通過大量實(shí)驗(yàn)結(jié)果和相關(guān)數(shù)據(jù)的分析,得出了本文所題方法在確認(rèn)軟件演化時的結(jié)論:當(dāng)結(jié)果達(dá)到或高于該標(biāo)準(zhǔn)的某個值時,就認(rèn)為選取的這條演化需求已經(jīng)成功演化;當(dāng)?shù)陀谠摌?biāo)準(zhǔn)的這個值時,就認(rèn)為沒有演化或演化失敗。

    5 實(shí)驗(yàn)

    5.1 實(shí)驗(yàn)數(shù)據(jù)及獲取

    為了保證實(shí)驗(yàn)的客觀性,本文構(gòu)建了一個benchmark。在benchmark中,有相應(yīng)的演化需求和該需求對應(yīng)修改的源代碼文件。

    對于實(shí)驗(yàn)數(shù)據(jù)的處理,3.1節(jié)已經(jīng)做了詳細(xì)的介紹。

    通過對現(xiàn)有開源軟件的查找和benchmark的分析,并根據(jù)文獻(xiàn)[39]的描述,下載了ArgoUML(http:// argouml-downloads.tigris.org/)0.20和0.22兩個完整的版本(ArgoUML是由Java編寫),同時也找到了與這兩個版本對應(yīng)的benchmark(http://www.cs.wm. edu/semeru/data/benchmarks/),這樣本文所需要的實(shí)驗(yàn)數(shù)據(jù)就基本獲取完畢。

    在benchmark中,有多個文件夾,每個文件夾內(nèi)文件所對應(yīng)的內(nèi)容如表3所示。

    Table 3 File and its content in benchmark表3 benchmark中的文件及其內(nèi)容

    本文所用的查詢語句就來自于Queries中的Short-Description。

    5.2 實(shí)驗(yàn)過程

    本文使用的LDA建模工具為JGibbLDA(http:// jgibblad.sourceforge.net/)。按照其對輸入文件的要求(文件第一行為文檔的數(shù)量,其余每行為文檔內(nèi)的具體詞匯,詞匯與詞匯間用空格分開),把源代碼的特征文件進(jìn)行整理并形成一個單獨(dú)的文件。輸入文件內(nèi)容和格式如表4所示。

    Table 4 File format of input表4 輸入文件格式

    經(jīng)過觀察發(fā)現(xiàn),源代碼的特征文件數(shù)量特別龐大,一般都是幾千甚至上萬個,如果將一個特征文件作為一個文檔進(jìn)行整理,則輸入文件內(nèi)的行數(shù)會特別多,導(dǎo)致運(yùn)行結(jié)果的收斂速度慢。因此把一個包中所有類的特征文件視為一個文檔進(jìn)行整理。

    JGibbLDA是一個很復(fù)雜的非監(jiān)督機(jī)器學(xué)習(xí)程序,其理論依據(jù)主要來自文獻(xiàn)[26]?,F(xiàn)在非監(jiān)督的機(jī)器學(xué)習(xí)方法或者半監(jiān)督的機(jī)器學(xué)習(xí)方法,大多需要設(shè)置一些參數(shù)調(diào)整后啟動運(yùn)行,JGibbLDA也是如此。表5介紹了JGibbLDA啟動運(yùn)行時所需要的主要參數(shù)和這些參數(shù)的意義。

    Table 5 Parameter and its meaning表5 參數(shù)及其意義

    在這些主要的參數(shù)中,dir、K、niters和twords的設(shè)置都相對簡單,也不會對運(yùn)行結(jié)果產(chǎn)生很大影響。但是α和β兩個參數(shù),都屬于超參數(shù),目前國內(nèi)外的研究結(jié)果中,沒有一種帶有理論依據(jù)的設(shè)置方法,需要使用時賦值大多憑借的是人工經(jīng)驗(yàn)。文獻(xiàn)[33]的研究結(jié)果表明,α和 β可以賦值為50/k(k為輸入文件內(nèi)文檔的數(shù)量)和0.1,因?yàn)檫@樣運(yùn)行結(jié)果會有較快的收斂速率。

    在JGibbLDA運(yùn)行結(jié)束后,使用一個名為modelfinal.twords的數(shù)據(jù)進(jìn)行相關(guān)性計(jì)算,計(jì)算步驟大致為以下5步[39]:

    (1)從ShortDescription中選取一條演化需求,對其進(jìn)行去停詞和詞根還原處理。

    (2)假設(shè)參數(shù)ntopics和twords分別設(shè)置為N和T,則生成N個T維的向量,同時需要把這N個T維的向量賦上初始值0。

    (3)對這N個T維向量賦值:假設(shè)主題m(0<m<N+1)包含了處理后的演化需求中的單詞wi(0<i<T+1),那么將單詞wi所對應(yīng)的概率p加到第m個向量的第i個位置。

    (4)重復(fù)步驟3,直到這N個T維向量全部賦值完畢。然后將第m個T維向量的值,與文件modelfinal.twords中第m個主題詞對應(yīng)的值計(jì)算兩個向量夾角余弦值,其中m=1,2,…,N。

    (5)將計(jì)算出的余弦值按降序排列,取前一個或者多個主題的所有主題詞,在所有源代碼的特征文件中進(jìn)行詞頻統(tǒng)計(jì),計(jì)算出現(xiàn)率,把出現(xiàn)率按降序排列。

    5.3 實(shí)驗(yàn)結(jié)果文件

    使用JGibbLDA對源代碼的特征進(jìn)行分析,其結(jié)果文件可按后綴名分為5類文件,具體如表6所示。

    Table 6 Filename extension and its content表6 文件后綴名及其內(nèi)容

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

    6.1 度量標(biāo)準(zhǔn)

    為了對本文方法在性能等方面進(jìn)行評測,需要使用一些度量標(biāo)準(zhǔn)。在信息檢索領(lǐng)域,目前常常會使用查全率和查準(zhǔn)率作為衡量指標(biāo),并通過這兩個指標(biāo)來對輸出結(jié)果進(jìn)行評價[40]。

    定義2Recall表示查全率,correct代表所需查找的演化文件,retrieved代表使用本文方法查找出來的文件,則查全率的定義為:

    查全率,也稱為召回率,是指檢出的相關(guān)文獻(xiàn)量與檢索系統(tǒng)中相關(guān)文獻(xiàn)總量的比率,是衡量信息檢索系統(tǒng)檢出相關(guān)文獻(xiàn)能力的尺度。

    定義3 Precision表示查準(zhǔn)率,correct代表所需查找的演化文件,retrieved代表使用本文方法查找出來的文件,則查準(zhǔn)率的定義為:

    查準(zhǔn)率,也可稱為精度,是衡量某一檢索系統(tǒng)的信號噪聲比的一種指標(biāo),即檢出的相關(guān)文獻(xiàn)與檢出的全部文獻(xiàn)的百分比。

    定義4使用F-measure代表查全率和查準(zhǔn)率調(diào)和平均數(shù),Recall代表查全率,Precision代表查準(zhǔn)率,則調(diào)和平均數(shù)定義為:

    6.2 實(shí)驗(yàn)結(jié)果

    本文實(shí)驗(yàn)使用了ArgoUML的0.20和0.22兩個版本的源代碼作為實(shí)驗(yàn)源數(shù)據(jù),按照上文所提到的處理方法進(jìn)行整理后,一共得到1 562個類(或特征文件)和96個包,然后按照J(rèn)GibbLDA輸入文件的要求整理成一個文件。根據(jù)輸入的文檔數(shù)和所需要的結(jié)果,α、β、K、niters和twords共5個參數(shù)的值分別設(shè)置為0.528、0.1、30、1 000、100和50。

    表7為從ShortDescription中選取的10條已經(jīng)演化的描述。

    因?yàn)楸疚脑噲D找到一種能夠確認(rèn)軟件是否已經(jīng)演化的方法,所以不但需要對已經(jīng)演化的進(jìn)行實(shí)驗(yàn),而且還要對沒有演化的也進(jìn)行同樣的實(shí)驗(yàn),進(jìn)而找出兩者的區(qū)別。故從其他版本的ShortDescription中,也找了10條在0.20和0.22版本沒有進(jìn)行演化的描述,具體如表8所示。

    Table 7 Description of evolution requirement表7 對演化需求的描述

    Table 8 Description of non-evolution requirement表8 對沒有演化需求的描述

    文獻(xiàn)[40]推薦了取出現(xiàn)率最高的前10%~15%樣本來進(jìn)行查全率和查準(zhǔn)率的計(jì)算,那就取前10%來進(jìn)行計(jì)算。

    對于已經(jīng)演化和沒有演化的進(jìn)行實(shí)驗(yàn)后,都計(jì)算查全率和查準(zhǔn)率,具體數(shù)值如表9所示。

    為了防止實(shí)驗(yàn)結(jié)果的偶然性,針對一條已經(jīng)演化的需求,需要把10條沒有演化的需求都給出結(jié)果,取平均值。例如對于實(shí)驗(yàn)序號1中的實(shí)驗(yàn),未演化的查全率和查準(zhǔn)率是把表8中的10條沒有演化的都求出查全率和查準(zhǔn)率后取的平均值。從實(shí)驗(yàn)結(jié)果可以得出,已演化的查全率和查準(zhǔn)率平均值為90.00%和1.09%,而沒有演化的卻只有41.58%和0.49%,兩者具有很明顯的差異。

    Table 9 Results of experiments with 10%sampling表9 取10%樣本的實(shí)驗(yàn)結(jié)果

    圖2是表9中的數(shù)據(jù),其中圖(a)是查全率,圖(b)是查準(zhǔn)率。

    Fig.2 Recall and Precision with 10%sampling圖2 取10%樣本的查全率和查準(zhǔn)率

    從圖2中可以很明顯地看出,針對每一個實(shí)驗(yàn),已經(jīng)演化的在查全率和查準(zhǔn)率上都高于沒有演化的,這說明本文方法確實(shí)能區(qū)分演化與否。但是進(jìn)一步思考會發(fā)現(xiàn),對于查全率和查準(zhǔn)率,已演化和沒有演化的都不能指定一個數(shù)值,這個數(shù)值能把10次實(shí)驗(yàn)都區(qū)分開來。

    從上述查全率和查準(zhǔn)率的表達(dá)公式可以看出,兩者存在著互逆的關(guān)系,更直觀地說一個將文檔集合中所有文檔返回為結(jié)果集合的系統(tǒng)有100%的查全率,但是查準(zhǔn)率卻很低(http://baike.baidu.com/view/ 2126615.htm?fr=aladdin)。舉個例子來說,比如從1 000個文件中找1個文件,那么correct就是1,當(dāng)retrieved取1 000時,那查全率必定是100%,反而查準(zhǔn)率只有0.1%。因此為了綜合評價兩者的性能,就需要使用調(diào)和平均數(shù)F-measure。

    表10為取10%樣本的調(diào)和平均數(shù)。

    Table 10 F-measure with 10%sampling表10 取10%樣本的調(diào)和平均數(shù)

    圖3為已演化和未演化的調(diào)和平均數(shù)對比圖。

    Fig.3 F-measure with 10%sampling圖3 取10%樣本的調(diào)和平均數(shù)

    從表10和圖3中可以得出,已演化的調(diào)和平均數(shù)的平均值為0.021,而未演化的只有0.009 7,具有很明顯的差異,從一條實(shí)驗(yàn)結(jié)果也可以看出兩者也有差異。但是同樣存在和查全率、查準(zhǔn)率一樣的問題,就是對于整體不能指定一個數(shù)值來劃分兩者。

    從查全率、查準(zhǔn)率和調(diào)和平均數(shù)的圖可以很直觀地看出,對于一個實(shí)驗(yàn)點(diǎn)是具有很強(qiáng)區(qū)分度的,但是無法將整體進(jìn)行區(qū)分,因此考慮縮小文件數(shù)量,從10%縮小到5%,來重新計(jì)算實(shí)驗(yàn)結(jié)果。

    表11為取5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)的統(tǒng)計(jì)結(jié)果。

    Table 11 Recall、Precision and F-measure with 5%sampling表11 取5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)

    從表11中可以得出,已演化的在查全率、查準(zhǔn)率和調(diào)和平均數(shù)三者的平均數(shù)為68.33%、1.28%和2.50%,沒有演化的確只有25.67%、0.56%和1.10%。

    圖4為取5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)三者的比較結(jié)果。其中圖(a)是查全率,圖(b)是查準(zhǔn)率,圖(c)是調(diào)和平均數(shù)。

    從圖4中可以直觀地看出,在圖(b)和(c)中,已演化和沒有演化的區(qū)別已經(jīng)比較明顯。若圖(b)中查準(zhǔn)率在1.15%和1.28%之間取值,或圖(c)中調(diào)和平均數(shù)在2.27%和2.44%之間取值,都可以在10條數(shù)據(jù)中按是否演化區(qū)分出9條,區(qū)分度已經(jīng)達(dá)到90%。

    Fig.4 Recall、Precision and F-measure with 5%sampling圖4 取5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)

    是否有方法能進(jìn)一步區(qū)分是否演化,或者說是否能再次提高查全率、查準(zhǔn)率和調(diào)和平均數(shù),文獻(xiàn)[39]針對該問題,使用了一類被稱為“組合詞”的詞匯來提高查全率、查準(zhǔn)率和調(diào)和平均數(shù)。所謂的組合詞,就是由兩個或者兩個以上的基本單詞復(fù)合而成,類似于“l(fā)istenerlist”和“l(fā)oadedfromfile”。這類詞匯在預(yù)處理時沒有進(jìn)行分詞操作,同時在人類的自然語言中是不會出現(xiàn)的,在使用LDA進(jìn)行分析[41]時也不會進(jìn)行特別處理。然而實(shí)際上,這些詞匯在系統(tǒng)開發(fā)人員編寫代碼時,會經(jīng)常使用到這類的詞匯來表達(dá)一些復(fù)雜的操作,同時也方便以后維護(hù)時能很快理解這塊代碼所完成的功能。例如看到“l(fā)istenerlist”,開發(fā)人員很直觀的感受就是這應(yīng)該是個偵聽列表。組合詞的組合方式很多,同一個組合詞在整個系統(tǒng)的源代碼中不會出現(xiàn)太多次,因此使用組合詞的方式來提高查全率、查準(zhǔn)率和調(diào)和平均數(shù)。

    使用組合詞提高相應(yīng)的數(shù)據(jù),具體可以分為以下3步:

    (1)將所選主題中的主題詞提取出來;

    (2)在所有源代碼特征文件中統(tǒng)計(jì)這些組合詞出現(xiàn)的次數(shù),并把這些出現(xiàn)次數(shù)按降序排列;

    (3)若組合詞出現(xiàn)次數(shù)最好的演化文件排第M位,出現(xiàn)率最低的演化文件排第N位,則把前M個文件和前N個文件進(jìn)行交集操作,找出公共部分。

    對表7中10條已經(jīng)演化的描述,再次利用組合詞的方法進(jìn)行處理,減少了很多無關(guān)文件的數(shù)量,具體如表12所示。

    Table 12 Statistical results within compound words表12 考慮組合詞統(tǒng)計(jì)結(jié)果

    從表12的統(tǒng)計(jì)結(jié)果可以看出,最好的情況下,可以減少222個無關(guān)文件,最差減少了2個文件,平均減少了49。

    表13給出了在考慮組合詞后,取前5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)。

    根據(jù)表13的計(jì)算結(jié)果,通過使用組合詞的方法,在取前5%樣本時,10組已演化的查全率、查準(zhǔn)率和調(diào)和平均數(shù)的均值分別是100.00%、2.56%和4.95%,而未演化的只有25.67%、0.56%和1.10%,兩者間的差距與表11相比較更加明顯。

    圖5為取5%樣本并考慮組合詞的查全率、查準(zhǔn)率和調(diào)和平均數(shù)的比較結(jié)果。

    從圖5的數(shù)據(jù)中可以很明顯地看出,對于查全率和查準(zhǔn)率,若查全率取90%到100%之間的值,或查準(zhǔn)率取1.15%到1.28%之間的值,都可以把10個已演化的和10個沒有演化的需求進(jìn)行區(qū)分。

    Table 13 Recall、Precision and F-measure with 5% sampling and within compound words表13 取5%樣本并考慮組合詞查全率、查準(zhǔn)率和調(diào)和平均數(shù)

    文獻(xiàn)[42]是一種基于文本的確認(rèn)方法,將其作為基線方法用于對表7中的數(shù)據(jù)進(jìn)行處理,并與本文方法進(jìn)行對比。

    表14為取前5%樣本,采用基線方法對表7中數(shù)據(jù)處理后得出的結(jié)果。

    基線方法與本文方法在查全率、查準(zhǔn)率和調(diào)和平均數(shù)上的對比如圖6所示。

    在對比圖中可以直接看出,基線方法在區(qū)分是否演化時數(shù)值差距小,同時數(shù)值起伏大,不如本文方法的區(qū)分度強(qiáng)和穩(wěn)定。通過表14和表13,可以直接算出差距。本文方法(在考慮組合詞時)相較沒有演化的,在查全率、查準(zhǔn)率和調(diào)和平均數(shù)上三者均值的差值為74.33%、2.00%和3.86%,而基線方法與沒有演化的差值卻只有24.33%、0.56%和0.91%,差距顯而易見。

    Table 14 Recall、Precision and F-measure of baseline with 5%sampling表14 基線方法取5%樣本的查全率、查準(zhǔn)率和調(diào)和平均數(shù)

    6.3 實(shí)驗(yàn)結(jié)論

    在圖6中,通過對查全率和查準(zhǔn)率取值的調(diào)整,可以對一條演化需求是否已經(jīng)演化進(jìn)行確認(rèn)。對查全率和查準(zhǔn)率兩者的取值,本文取可以進(jìn)行確認(rèn)的最大值和最小值的平均數(shù)給出實(shí)驗(yàn)結(jié)論,故查全率取95%,查準(zhǔn)率取1.215%。

    Fig.5 Recall、Precision and F-Measure with 5%sampling and within compound words圖5 取5%樣本并考慮組合詞查全率、查準(zhǔn)率和調(diào)和平均數(shù)

    Fig.6 Method comparison of this paper and baseline圖6 本文方法與基線方法的對比

    通過上述實(shí)驗(yàn)結(jié)果,可以得出本文實(shí)驗(yàn)的結(jié)論:在使用組合詞,并取出現(xiàn)率前5%高的文件數(shù)量進(jìn)行計(jì)算后,若查全率不低于95%,且查準(zhǔn)率不低于1.215%時,可以確定輸入的演化需求與演化實(shí)質(zhì)符合;若查全率低于95%,或查準(zhǔn)率低于1.215%時,則輸入的演化需求與演化實(shí)質(zhì)不符合。

    7 實(shí)驗(yàn)總結(jié)和展望

    對于一個演化需求,軟件是否按照需求進(jìn)行了演化,一直都是軟件演化領(lǐng)域一個重要的研究方向。過去對軟件演化的研究,大多都是理論上的推演或者證明,而對演化確認(rèn)的研究就更少了。為了能在軟件演化或者軟件工程領(lǐng)域取得一些突破和創(chuàng)新,本文特使用軟件源代碼作為實(shí)驗(yàn)數(shù)據(jù),使用主題模型LDA作為實(shí)驗(yàn)工具,提出了軟件演化確認(rèn)的方法,并用大量的實(shí)驗(yàn)數(shù)據(jù)證明了方法的有效性,同時開發(fā)出與本文方法所對應(yīng)的確認(rèn)工具。

    最開始研究非監(jiān)督性機(jī)器學(xué)習(xí)主題模型的目的是將其應(yīng)用于處理自然語言和檢索信息,本文創(chuàng)新性地將其應(yīng)用于軟件演化領(lǐng)域,并取得一定的成績,這也說明了未來人工智能和軟件工程將有更多的融合,也必將取得更大的成就。

    本文方法雖然取得了一定的成果,但是依然存在著一些問題:首先,確認(rèn)軟件是否演化,輸入的演化需求很關(guān)鍵,這些單詞都需要很客觀和準(zhǔn)確地描述在代碼層面上修復(fù)了什么錯誤或者缺陷,這樣確認(rèn)出來的效果才能好;其次,很多演化語句描述的是兩個正式版本間的測試版,使用這些語句時確認(rèn)效果不會很好;最后,軟件源代碼文件中存在著許多xml或html文件,這些文件中也有大量的特征信息需要去提取。同時本文所提出的演化確認(rèn)方法并不是一種通用性的方法,因此有它的適用范圍和局限性。

    (1)本文方法需要找到同一個軟件的兩個不同版本,并按上文所述方法進(jìn)行處理和整合;若只有一個版本,則實(shí)驗(yàn)效果會受到很大的影響。

    (2)本文的實(shí)驗(yàn)結(jié)論建立在大量實(shí)驗(yàn)結(jié)果的平均值上,實(shí)驗(yàn)數(shù)據(jù)真實(shí)可靠,實(shí)驗(yàn)結(jié)果可信度高,但是主題模型是一種概率模型,對于極少數(shù)的特殊情況可能會有一定的誤差。

    (3)數(shù)據(jù)源、數(shù)據(jù)預(yù)處理和代碼書寫的規(guī)范程度都會影響最終的結(jié)果。

    本文將軟件演化與機(jī)器學(xué)習(xí)進(jìn)行創(chuàng)新性交叉研究,并采用真實(shí)的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行證明,這給了人們很多啟示和未來的研究方向。首先在設(shè)置JGibbLDA運(yùn)行參數(shù)時,對于兩個超參數(shù)α和β,是否能提出一種有理論依據(jù)或有大量實(shí)驗(yàn)證明的方法;其次,在對軟件源代碼的處理上,能否引入其他的信息,包括一些簡單的圖片;最后,能否研究出新的方法將演化確認(rèn)進(jìn)行得更好。同時,將進(jìn)一步研究主題模型是否還能應(yīng)用在軟件工程的其他領(lǐng)域,并對本文所開發(fā)的確認(rèn)工具進(jìn)行完善和擴(kuò)展,以支持更多語言的源代碼。

    References:

    [1]Von Krogh G,Haefliger S,Spaeth S,et al.Carrots and rainbows:motivation and social practice in open source software development[J].MIS Quarterly,2012,36(2):649-676.

    [2]Ghapanchi A H,Wohlin C,Aurum A.Resources contributing to gaining competitive advantage for open source software projects:an application of resource-based theory[J].International Journal of Project Management,2014,32(1):139-152.

    [3]Wang Huaimin,Shi Peichang,Ding Bo,et al.Online evolution of software services[J].Chinese Journal of Software, 2011,34(2):318-328.

    [4]Balsamo S,Marco A D,Inverardi P,et al.Model-based performance prediction in software development:a survey[J]. IEEE Transactions on Software Engineering,2004,30(5): 295-310.

    [5]Guttag J V,Horowitz E,Musser D R.Abstract data types and software validation[J].Communications of the ACM, 1978,21(12):1048-1064.

    [6]Thomas N C,Reeves Jr H L.Experience from quality assurance in nuclear power plant protection system software validation[J].IEEE Transactions on Nuclear Science,1980,27 (1):899-908.

    [7]Heiner M.Petri net based software validation,ICSI TR-92-022[R].Berkeley,USA:International Computer Science Institute,1992.

    [8]Silva V D,Kroening D,Weissenbacher G.A survey of automated techniques for formal software verification[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2008,27(7):1165-1178.

    [9]Ivan?i? F,Yang Z,Ganai M K,et al.Efficient SAT-based bounded model checking for software verification[J].Theoretical Computer Science,2008,404(3):256-274.

    [10]Komuravelli A,Gurfinkel A,Chaki S,et al.Automatic abstraction in SMT-based unbounded software model checking [C]//LNCS 8044:Proceedings of the 25th International Conference on Computer Aided Verification,Saint Petersburg,Russia,Jul 13-19,2013.Berlin,Heidelberg:Springer, 2013:846-862.

    [11]Bérard B,Bidoit M,Finkel A,et al.Systems and software verification:model-checking techniques and tools[M].Berlin,Heidelberg:Springer,2001.

    [12]Philippaerts P,Mühlberg J T,Penninckx W,et al.Software verification with VeriFast:industrial case studies[J].Science of Computer Programming,2014,82:77-97.

    [13]Dai Fei,Li Tong,Xie Zhongwen,et al.Towards an algebraic semantics of software evolution process models[J].Journal of Software,2012,23(4):846-863.

    [14]Zhang Ying,Su Lili,Yang Zhifan,et al.Multi-label emotion tagging for online news by supervised topic model[C]// LNCS 9313:Proceedings of the 17thAsia-Pacific Web Conference on Web Technologies and Applications,Guangzhou,China,Sep 18-20,2015.[S.l.]:Springer International Publishing,2015:67-79.

    [15]Lin Tianyi,Tian Wentao,Mei Qiaozhu,et al.The dual-sparse topic model:mining focused topics and focused terms in short text[C]//Proceedings of the 23rd International Conference on World Wide Web,Seoul,Apr 7-11,2014.New York: ACM,2014:539-550.

    [16]Guo Zhen,Zhang Zhongfei,Zhu Shenghuo,et al.A two-level topic model towards knowledge discovery from citation networks[J].IEEE Transactions on Knowledge and Data Engineering,2014,26(4):780-794.

    [17]Gao J,Espinoza R,He J.Testing coverage analysis for software component validation[C]//Proceedings of the 29th Annual International Computer Software and Applications Conference,Edinburgh,Jul 26-28,2005.Piscataway,USA: IEEE,2005,1:463-470.

    [18]Wei Qiang,Jin Zhi,Xu Yan.Service discovery for Internet of things based on probabilistic topic model[J].Journal of Software,2014,25(8):1640-1658.

    [19]Li Meng,Zhao Junfeng,Xie Bing.Obtaining functional topics from source code based on topic modeling and static analysis [J].Scientia Sinica Informationis,2014,44(1):54-69.

    [20]Qian Xiao,Jun Cheng.Human action recognition using topic model[C]//Proceedings of the 2014 IEEE International Conference on Information Science and Technology,Shenzhen, China,Apr 26-28,2014.Piscataway,USA:IEEE,2014.

    [21]Kinoshita A,Takasu A,Adachi J.Real-time traffic incident detection using a probabilistic topic model[J].Information Systems,2015,54:169-188.

    [22]Guo Qun,Lu Xiaoqiang,Yuan Yuan.Video quality assessment via supervised topic model[C]//Proceedings of the 2nd IEEE China Summit and International Conference on Signal and Information Processing,Xi'an,China,Jul 9-13,2014.Piscataway,USA:IEEE,2014:636-640.

    [23]Zhang Tianbing,Luo Wang.Image quality assessment using author topic model[C]//Proceedings of the 2013 International Conference on Information Technology and Applications, Chengdu,China,Nov 16-17,2013.Piscataway,USA:IEEE, 2013:63-66.

    [24]Xu Ge,Wang Houfeng.The development of topic models in natural language processing[J].Chinese Journal of Computer,2014,34(8):1423-1436.

    [25]Cassar G,Barnaghi P,Moessner K.Probabilistic matchmaking methods for automated service discovery[J].IEEE Transactions on Services Computing,2014,7(4):654-666.

    [26]Blei D M,Ng A Y,Jordan M I.Latent Dirichlet allocation[J]. The Journal of Machine Learning Research,2003,3:993-1022.

    [27]Steyvers M,Griffiths T.Probabilistic topic models[J].Handbook of Latent SemanticAnalysis,2007,427(7):424-440.

    [28]Dit B,Revelle M,Gethers M,et al.Feature location in source code:a taxonomy and survey[J].Journal of Software: Evolution and Process,2013,25(1):53-95.

    [29]Hoffman M D,Blei D M,Bach F R.Online learning for latent Dirichlet allocation[J].Advances in Neural Information Processing Systems,2010,23:856-864.

    [30]Teh Y W,Jordan M I,Beal M J,et al.Hierarchical Dirichlet processes[J].Journal of the American Statistical Association,2012,101(476):1566-1581.

    [31]Blei D,Carin L,Dunson D.Probabilistic topic models[J]. IEEE Signal Processing Magazine,2010,27(6):55-65.

    [32]Wang C,Paisley J W,Blei D M.Online variational inference for the hierarchical Dirichlet process[J].Journal of Machine Learning Research,2011,15:752-760.

    [33]Griffiths T L,Steyvers M.Finding scientific topics[J].Proceedings of the National Academy of Sciences,2004,101 (S1):5228-5235.

    [34]Minka T P.Estimating a Dirichlet distribution[J].UAI,2003, 39(3273):115.

    [35]Heinrich G.Parameter estimation for text analysis[R].Germany:University of Leipzig,2005.

    [36]Wang Zhenzhen,He Ming,Du Yongping.Text similarity computing based on topic model LDA[J].Computer Science,2013,40(12):229-232.

    [37]Abebe S L,Haiduc S,Marcus A,et al.Analyzing the evolution of the source code vocabulary[C]//Proceedings of the 13th European Conference on Software Maintenance and Reengineering,Kaiserslautern,Germany,Mar 24-27,2009. Piscataway,USA:IEEE,2009:189-198.

    [38]He Yun,Wang Wei,Li Tong,et al.Behavior and topic oriented software feature location method[J].Journal of Frontiers of Computer Science and Technology,2014,8(12): 1452-1462.

    [39]Han Junming,Wang Wei,Li Tong,et al.Feature location method of evolved software[J].Journal of Frontiers of Computer Science and Technology,2016,10(9):1201-1210.

    [40]Ju Xiaolin,Jiang Shujuan,Zhang Yanmei,et al.Advanced in fault localization techniques[J].Journal of Frontiers of Computer Science and Technology,2012,6(6):481-494.

    [41]Zhai K,Boyd-Graber J,Asadi N,et al.Mr.LDA:a flexible large scale topic modeling package using variational inference in MapReduce[C]//Proceedings of the 2014 International Conference on World Wide Web,Seoul,Apr 7-11,2014. New York:ACM,2014:879-888.

    [42]Marcus A,Sergeyev A,Rajlich V,et al.An information retrieval approach to concept location in source code[C]//Proceedings of the 11th Working Conference on Reverse Engineering,Delft,Netherlands,Nov 8-12,2004.Washington: IEEE Computer Society,2004:214-223.

    附中文參考文獻(xiàn):

    [3]王懷民,史佩昌,丁博,等.軟件服務(wù)的在線演化[J].計(jì)算機(jī)學(xué)報(bào),2011,34(2):318-328.

    [13]代飛,李彤,謝仲文,等.一種軟件演化過程模型的代數(shù)語義[J].軟件學(xué)報(bào),2012,23(4):846-863.

    [18]魏強(qiáng),金芝,許焱.基于概率主題模型的物聯(lián)網(wǎng)服務(wù)發(fā)現(xiàn)[J].軟件學(xué)報(bào),2014,25(8):1640-1658.

    [19]李萌,趙俊峰,謝冰.基于主題建模和靜態(tài)分析技術(shù)的軟件代碼功能性主題獲取方法[J].中國科學(xué):信息科學(xué), 2014,44(1):54-69.

    [24]徐戈,王厚峰.自然語言處理中主題模型的發(fā)展[J].計(jì)算機(jī)學(xué)報(bào),2014,34(8):1423-1436.

    [36]王振振,何明,杜永萍.基于LDA主題模型的文本相似度計(jì)算[J].計(jì)算機(jī)科學(xué),2013,40(12):229-232.

    [38]何云,王煒,李彤,等.面向行為主題的軟件特征定位方法[J].計(jì)算機(jī)科學(xué)與探索,2014,8(12):1452-1462.

    [39]韓俊明,王煒,李彤,等.演化軟件的特征定位方法[J].計(jì)算機(jī)科學(xué)與探索,2016,10(9):1201-1210.

    [40]鞠小林,姜淑娟,張艷梅,等.軟件故障定位技術(shù)進(jìn)展[J].計(jì)算機(jī)科學(xué)與探索,2012,6(6):481-494.

    HAN Junming was born in 1988.He is an M.S.candidate at Yunnan University.His research interests include software engineering,software evolution and data mining.

    韓俊明(1988—),男,云南文山人,云南大學(xué)碩士研究生,主要研究領(lǐng)域?yàn)檐浖こ?,軟件演化,?shù)據(jù)挖掘。

    WANG Wei was born in 1979.He received the Ph.D.degree in system analysis and integration from Yunnan University in 2009.Now he is an associate professor at Yunnan University,and the member of CCF.His research interests include software engineering,software evolution and data mining.

    王煒(1979—),男,云南昆明人,2009年于云南大學(xué)系統(tǒng)分析與集成專業(yè)獲得博士學(xué)位,現(xiàn)為云南大學(xué)副教授,CCF會員,主要研究領(lǐng)域?yàn)檐浖こ蹋浖莼?,?shù)據(jù)挖掘。發(fā)表學(xué)術(shù)論文15篇,出版教材1部,主持國家級項(xiàng)目1項(xiàng)、省部級項(xiàng)目5項(xiàng)。

    LI Tong was born in 1963.He received the Ph.D.degree in software engineering from De Montfort University in 2007.Now he is a professor and Ph.D.supervisor at Yunnan University,and the senior member of CCF.His research interests include software engineering and information security.

    李彤(1963—),男,河北石家莊人,2007年于英國De Montfort大學(xué)軟件工程專業(yè)獲得博士學(xué)位,現(xiàn)為云南大學(xué)軟件學(xué)院黨委書記、教授、博士生導(dǎo)師,CCF高級會員,主要研究領(lǐng)域?yàn)檐浖こ?,信息安全。發(fā)表學(xué)術(shù)論文100余篇、專著2部、教材5部,主持國家級項(xiàng)目5項(xiàng)、省部級項(xiàng)目14項(xiàng)、其他項(xiàng)目20余項(xiàng)。

    HE Yun was born in 1989.He is a Ph.D.candidate at Yunnan University,and the student member of CCF.His research interests include software engineering,software evolution and data mining.

    何云(1989—),男,云南建水人,云南大學(xué)博士研究生,CCF學(xué)生會員,主要研究領(lǐng)域?yàn)檐浖こ蹋浖莼?,?shù)據(jù)挖掘。

    Approach of Open Source Software Oriented Evolving Validation*

    HAN Junming1,WANG Wei1,2+,LI Tong1,2,HE Yun1
    1.College of Software,Yunnan University,Kunming 650091,China
    2.Key Laboratory for Software Engineering of Yunnan Province,Kunming 650091,China
    +Corresponding author:E-mail:wangwei@ynu.edu.cn

    Software evolution is a hot research field in software engineering.Because the open source software has the characteristics of group intelligence development and the process of evolution uncontrollable and not modeling, the traditional validation method can not apply to open source software.This paper proposes a software validation method from semantic function,attempts to cluster the codes in the way of the topic,and each topic presents a function module in software system.This paper transfers the evolving validation into finding the mapping relation between the function module and the requirements of software evolution.Finally,this paper takes advantage of source codes in open software,makes experiment and gets many actual data,then analyzes these data,the results make clear that the proposed method is better than the comparison method in distinguishing whether evolved or not, and it can be used to verify the software evolution.

    software evolution;validation;topic model;open source software

    10.3778/j.issn.1673-9418.1604026

    A

    TP311.5

    *The National Natural Science Foundation of China under Grant Nos.61462092,61262024,61379032(國家自然科學(xué)基金);the Key Project of Natural Science Foundation of Yunnan Province under Grant No.2015FA014(云南省自然科學(xué)基金重點(diǎn)項(xiàng)目);the Natural Science Foundation of Yunnan Province under Grant No.2013FB008(云南省自然科學(xué)基金).

    Received 2016-04,Accepted 2016-06.

    CNKI網(wǎng)絡(luò)優(yōu)先出版:2016-06-27,http://www.cnki.net/kcms/detail/11.5602.TP.20160627.0929.008.html

    HAN Junming,WANG Wei,LI Tong,et al.Approach of open source software oriented evolving validation. Journal of Frontiers of Computer Science and Technology,2017,11(4):539-555.

    摘 要:軟件演化確認(rèn)是軟件工程領(lǐng)域的一個重點(diǎn)和熱點(diǎn)的研究方向。由于開源軟件具有群智開發(fā),演化過程不可控和不可建模等特點(diǎn),使得傳統(tǒng)的確認(rèn)方法不適合于開源軟件,故從功能語義角度提出了一種軟件演化確認(rèn)方法,試圖將代碼按主題的方式進(jìn)行聚類,每一個主題表征軟件系統(tǒng)的一個功能集合,演化確認(rèn)工作被轉(zhuǎn)化為功能集合與演化需求之間的映射關(guān)系。通過對現(xiàn)有開源軟件的源代碼進(jìn)行實(shí)驗(yàn),獲取了大量的真實(shí)可靠實(shí)驗(yàn)數(shù)據(jù),對這些實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析后得出的實(shí)驗(yàn)結(jié)果表明該方法相較基于文本的基線方法,更能有效區(qū)分是否已經(jīng)演化,可以用于對軟件演化進(jìn)行確認(rèn)工作。

    猜你喜歡
    查全率查準(zhǔn)率源代碼
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    基于TXL的源代碼插樁技術(shù)研究
    海量圖書館檔案信息的快速檢索方法
    基于數(shù)據(jù)挖掘技術(shù)的網(wǎng)絡(luò)信息過濾系統(tǒng)設(shè)計(jì)
    軟件源代碼非公知性司法鑒定方法探析
    基于詞嵌入語義的精準(zhǔn)檢索式構(gòu)建方法
    大數(shù)據(jù)環(huán)境下的文本信息挖掘方法
    基于深度特征分析的雙線性圖像相似度匹配算法
    揭秘龍湖產(chǎn)品“源代碼”
    中文分詞技術(shù)對中文搜索引擎的查準(zhǔn)率及查全率的影響
    哪个播放器可以免费观看大片| 国内精品宾馆在线| 日韩强制内射视频| 99久久中文字幕三级久久日本| 亚洲精品久久久久久婷婷小说| 看十八女毛片水多多多| 人妻制服诱惑在线中文字幕| 97超碰精品成人国产| 日日啪夜夜爽| 男人狂女人下面高潮的视频| 亚洲精品成人av观看孕妇| 男人爽女人下面视频在线观看| 一本一本综合久久| 亚洲婷婷狠狠爱综合网| 91精品伊人久久大香线蕉| 日本av手机在线免费观看| 99九九线精品视频在线观看视频| 欧美性感艳星| 久久综合国产亚洲精品| 一级a做视频免费观看| 国产伦精品一区二区三区视频9| 国产亚洲5aaaaa淫片| 午夜福利在线在线| 中文天堂在线官网| 国产精品一二三区在线看| 日韩亚洲欧美综合| 一二三四中文在线观看免费高清| 激情五月婷婷亚洲| 亚洲av免费在线观看| 日韩伦理黄色片| 国产真实伦视频高清在线观看| 午夜福利高清视频| 久久久久久久久久久免费av| 尾随美女入室| 看免费成人av毛片| 欧美人与善性xxx| 国产精品一区二区三区四区免费观看| 伦精品一区二区三区| 国产精品不卡视频一区二区| 久久精品人妻少妇| 五月开心婷婷网| 日韩,欧美,国产一区二区三区| 久久韩国三级中文字幕| 亚洲欧美成人精品一区二区| 免费人成在线观看视频色| 夜夜爽夜夜爽视频| 欧美一级a爱片免费观看看| 男人添女人高潮全过程视频| tube8黄色片| 亚洲在线观看片| av在线app专区| 真实男女啪啪啪动态图| 日本三级黄在线观看| 高清毛片免费看| 国产日韩欧美在线精品| 亚洲天堂国产精品一区在线| 亚洲天堂国产精品一区在线| 男女那种视频在线观看| av黄色大香蕉| 久久久a久久爽久久v久久| 最近最新中文字幕大全电影3| 高清在线视频一区二区三区| 中文字幕免费在线视频6| 少妇熟女欧美另类| 成人二区视频| 狂野欧美白嫩少妇大欣赏| 久久久久精品性色| 一本久久精品| 日韩欧美精品免费久久| 亚洲va在线va天堂va国产| 性色av一级| 久久精品国产鲁丝片午夜精品| 直男gayav资源| 成年av动漫网址| av卡一久久| 人妻制服诱惑在线中文字幕| 99视频精品全部免费 在线| 亚洲精品成人久久久久久| 好男人视频免费观看在线| 91午夜精品亚洲一区二区三区| 日韩欧美 国产精品| 日韩一本色道免费dvd| 日韩一本色道免费dvd| 汤姆久久久久久久影院中文字幕| 日本与韩国留学比较| 日韩中字成人| www.色视频.com| av又黄又爽大尺度在线免费看| 九色成人免费人妻av| 观看美女的网站| 久久6这里有精品| 美女cb高潮喷水在线观看| 丝袜脚勾引网站| 美女高潮的动态| 国产欧美日韩一区二区三区在线 | 日韩av免费高清视频| 97在线视频观看| 国产亚洲最大av| 69人妻影院| 欧美成人一区二区免费高清观看| 亚洲va在线va天堂va国产| 熟女人妻精品中文字幕| 精品人妻熟女av久视频| 成年免费大片在线观看| 女的被弄到高潮叫床怎么办| 亚洲不卡免费看| 欧美潮喷喷水| 国产精品不卡视频一区二区| 岛国毛片在线播放| 欧美日韩综合久久久久久| 国产乱人视频| 免费高清在线观看视频在线观看| 少妇被粗大猛烈的视频| 精品午夜福利在线看| a级毛片免费高清观看在线播放| 国产高清有码在线观看视频| 在现免费观看毛片| 国产精品国产三级国产专区5o| 久热久热在线精品观看| 老女人水多毛片| 国产午夜精品一二区理论片| 日本熟妇午夜| 永久免费av网站大全| 国产精品偷伦视频观看了| 欧美bdsm另类| 国产成年人精品一区二区| 偷拍熟女少妇极品色| av国产久精品久网站免费入址| 国产 精品1| 国产精品久久久久久久久免| 中文在线观看免费www的网站| 精品久久久久久久人妻蜜臀av| 人人妻人人爽人人添夜夜欢视频 | 国产毛片在线视频| 国产白丝娇喘喷水9色精品| 寂寞人妻少妇视频99o| 26uuu在线亚洲综合色| 免费播放大片免费观看视频在线观看| 男女边摸边吃奶| 1000部很黄的大片| 国产精品一区二区性色av| 黄片wwwwww| 亚洲av福利一区| 91在线精品国自产拍蜜月| 国内精品宾馆在线| 极品教师在线视频| 免费少妇av软件| 亚洲国产日韩一区二区| av天堂中文字幕网| 午夜福利网站1000一区二区三区| 久久99蜜桃精品久久| 亚洲综合色惰| 深爱激情五月婷婷| 禁无遮挡网站| 久久精品久久久久久久性| 国产亚洲av片在线观看秒播厂| 欧美高清成人免费视频www| 亚洲av二区三区四区| 亚洲精品乱码久久久久久按摩| 亚洲欧美成人综合另类久久久| 丰满乱子伦码专区| 日日摸夜夜添夜夜爱| 人妻少妇偷人精品九色| 婷婷色av中文字幕| 最近最新中文字幕大全电影3| 精品少妇黑人巨大在线播放| 全区人妻精品视频| 男女边摸边吃奶| 黄片wwwwww| 国产成人福利小说| 一二三四中文在线观看免费高清| 亚洲最大成人手机在线| 韩国av在线不卡| 精品人妻一区二区三区麻豆| kizo精华| 老司机影院毛片| av在线观看视频网站免费| 爱豆传媒免费全集在线观看| 综合色av麻豆| 丝袜美腿在线中文| 最近2019中文字幕mv第一页| 国产欧美日韩一区二区三区在线 | 欧美变态另类bdsm刘玥| 国产毛片a区久久久久| 久久热精品热| 国产真实伦视频高清在线观看| 亚州av有码| 国产高清有码在线观看视频| 少妇熟女欧美另类| tube8黄色片| 99久久九九国产精品国产免费| 在线观看av片永久免费下载| 国产一区二区在线观看日韩| 麻豆国产97在线/欧美| 三级男女做爰猛烈吃奶摸视频| 搞女人的毛片| 亚洲av日韩在线播放| 国产乱人视频| 亚洲欧洲国产日韩| 精品久久国产蜜桃| 精品久久久精品久久久| 久久精品久久久久久久性| 日韩电影二区| 夜夜看夜夜爽夜夜摸| 久久久久精品久久久久真实原创| 狂野欧美激情性xxxx在线观看| 禁无遮挡网站| 亚洲久久久久久中文字幕| av专区在线播放| av天堂中文字幕网| 黄片无遮挡物在线观看| 爱豆传媒免费全集在线观看| 久久精品久久精品一区二区三区| 国产美女午夜福利| 又爽又黄a免费视频| 亚洲精华国产精华液的使用体验| 国产有黄有色有爽视频| 亚洲美女视频黄频| 男女国产视频网站| 欧美成人a在线观看| 韩国高清视频一区二区三区| 成人美女网站在线观看视频| 大香蕉久久网| 午夜日本视频在线| 日韩大片免费观看网站| 国产黄片视频在线免费观看| 水蜜桃什么品种好| 男女那种视频在线观看| 最近中文字幕2019免费版| 国产精品福利在线免费观看| 国产国拍精品亚洲av在线观看| 欧美日韩国产mv在线观看视频 | 成人鲁丝片一二三区免费| av在线老鸭窝| 国产高清不卡午夜福利| av播播在线观看一区| 午夜激情久久久久久久| 一级毛片我不卡| 国产精品久久久久久久久免| 欧美高清成人免费视频www| 大陆偷拍与自拍| 亚洲欧美成人精品一区二区| 成人亚洲欧美一区二区av| 美女主播在线视频| 激情 狠狠 欧美| 下体分泌物呈黄色| 午夜精品一区二区三区免费看| 伦理电影大哥的女人| av免费观看日本| 少妇裸体淫交视频免费看高清| 在线免费观看不下载黄p国产| 97在线人人人人妻| 国产成人freesex在线| 只有这里有精品99| 亚洲自偷自拍三级| 丰满少妇做爰视频| 亚洲精品一区蜜桃| 国产欧美亚洲国产| 亚洲熟女精品中文字幕| 国产高清国产精品国产三级 | 美女cb高潮喷水在线观看| 直男gayav资源| 少妇高潮的动态图| 亚洲成人精品中文字幕电影| 狂野欧美激情性xxxx在线观看| 国产淫片久久久久久久久| 久久精品国产鲁丝片午夜精品| 十八禁网站网址无遮挡 | 久久人人爽人人片av| 日韩一区二区视频免费看| 午夜福利网站1000一区二区三区| 99久久中文字幕三级久久日本| 久久久久久久精品精品| 秋霞在线观看毛片| 中文资源天堂在线| 亚洲精品亚洲一区二区| 亚洲内射少妇av| 国产精品一区www在线观看| 日韩欧美一区视频在线观看 | 色婷婷久久久亚洲欧美| 男女那种视频在线观看| 久久久久久九九精品二区国产| 一区二区av电影网| 丝袜美腿在线中文| 蜜桃久久精品国产亚洲av| 伊人久久精品亚洲午夜| 99热国产这里只有精品6| 天天躁日日操中文字幕| 成人亚洲精品av一区二区| 伊人久久精品亚洲午夜| 国产一区二区在线观看日韩| 亚洲精品影视一区二区三区av| 极品少妇高潮喷水抽搐| 看免费成人av毛片| 国产精品秋霞免费鲁丝片| 好男人视频免费观看在线| 欧美高清性xxxxhd video| 在线a可以看的网站| 亚洲美女视频黄频| 成人无遮挡网站| 国产日韩欧美亚洲二区| 欧美区成人在线视频| 日日撸夜夜添| 性色avwww在线观看| 直男gayav资源| 午夜福利在线观看免费完整高清在| 黑人高潮一二区| 日韩欧美精品免费久久| 国产精品蜜桃在线观看| 在线精品无人区一区二区三 | 午夜福利在线在线| 视频中文字幕在线观看| 热re99久久精品国产66热6| 国产精品99久久久久久久久| 黄片wwwwww| 一区二区三区乱码不卡18| 国产 一区 欧美 日韩| 天堂中文最新版在线下载 | 99久国产av精品国产电影| 国产综合懂色| 午夜福利在线观看免费完整高清在| 国产男女内射视频| 国产乱来视频区| 亚洲欧美成人精品一区二区| 亚洲成人中文字幕在线播放| av卡一久久| 国产综合懂色| 精品人妻偷拍中文字幕| 一级毛片久久久久久久久女| 在线亚洲精品国产二区图片欧美 | av在线观看视频网站免费| 91在线精品国自产拍蜜月| 精品亚洲乱码少妇综合久久| 高清午夜精品一区二区三区| 国产黄a三级三级三级人| 午夜爱爱视频在线播放| 久久久欧美国产精品| 日韩欧美精品v在线| 久久综合国产亚洲精品| 免费看日本二区| 伦理电影大哥的女人| 亚洲一级一片aⅴ在线观看| 禁无遮挡网站| 日韩成人伦理影院| 日本wwww免费看| 国内精品宾馆在线| 看黄色毛片网站| 国产精品成人在线| 在线观看免费高清a一片| 国产精品麻豆人妻色哟哟久久| 国内少妇人妻偷人精品xxx网站| 男女边吃奶边做爰视频| 一级av片app| 国产老妇女一区| 国产亚洲午夜精品一区二区久久 | 国产午夜福利久久久久久| 在线观看国产h片| 中文字幕制服av| 边亲边吃奶的免费视频| 啦啦啦在线观看免费高清www| 天堂俺去俺来也www色官网| 网址你懂的国产日韩在线| 成人国产av品久久久| 成年av动漫网址| 欧美最新免费一区二区三区| 男人舔奶头视频| 听说在线观看完整版免费高清| 午夜精品国产一区二区电影 | 交换朋友夫妻互换小说| 又大又黄又爽视频免费| av国产久精品久网站免费入址| 亚洲精品中文字幕在线视频 | 99久久中文字幕三级久久日本| av女优亚洲男人天堂| 人妻一区二区av| 少妇人妻 视频| 51国产日韩欧美| 成人免费观看视频高清| 九色成人免费人妻av| 韩国高清视频一区二区三区| 白带黄色成豆腐渣| 亚洲内射少妇av| a级毛色黄片| 久久女婷五月综合色啪小说 | 建设人人有责人人尽责人人享有的 | 亚洲av免费在线观看| 国产探花在线观看一区二区| 亚洲av日韩在线播放| 成人无遮挡网站| 国产一区二区三区综合在线观看 | 99re6热这里在线精品视频| 久久久成人免费电影| 中文字幕亚洲精品专区| 日本与韩国留学比较| 国产人妻一区二区三区在| 免费人成在线观看视频色| 亚洲av.av天堂| 国产精品蜜桃在线观看| 欧美亚洲 丝袜 人妻 在线| 美女cb高潮喷水在线观看| 91精品一卡2卡3卡4卡| 啦啦啦在线观看免费高清www| 美女视频免费永久观看网站| 2021天堂中文幕一二区在线观| 丝袜脚勾引网站| 大话2 男鬼变身卡| 午夜老司机福利剧场| 岛国毛片在线播放| av在线天堂中文字幕| 免费少妇av软件| 国产成人91sexporn| 国产亚洲一区二区精品| 久久精品国产亚洲av涩爱| 国产探花极品一区二区| 亚洲怡红院男人天堂| 在线免费观看不下载黄p国产| h日本视频在线播放| 久久久久久久午夜电影| 亚洲天堂国产精品一区在线| freevideosex欧美| 毛片女人毛片| a级一级毛片免费在线观看| 久久99热这里只有精品18| 国产精品一二三区在线看| 免费观看在线日韩| 久久影院123| 国产精品久久久久久久久免| 亚洲激情五月婷婷啪啪| 久久午夜福利片| 麻豆成人av视频| 大码成人一级视频| 欧美成人午夜免费资源| 神马国产精品三级电影在线观看| 亚洲va在线va天堂va国产| 欧美人与善性xxx| 国产黄a三级三级三级人| 18禁动态无遮挡网站| 你懂的网址亚洲精品在线观看| 亚洲av电影在线观看一区二区三区 | 成年免费大片在线观看| 欧美三级亚洲精品| 欧美zozozo另类| 91精品一卡2卡3卡4卡| 亚州av有码| 丝瓜视频免费看黄片| 国产亚洲5aaaaa淫片| 精品一区二区三区视频在线| 国产精品一区二区在线观看99| 一级二级三级毛片免费看| 在线观看人妻少妇| 在线观看一区二区三区| 国产美女午夜福利| 人体艺术视频欧美日本| 久久综合国产亚洲精品| 黄色欧美视频在线观看| 男女下面进入的视频免费午夜| 99热全是精品| 午夜福利网站1000一区二区三区| 欧美zozozo另类| 91狼人影院| 日本猛色少妇xxxxx猛交久久| 成人亚洲精品av一区二区| 亚洲精品乱久久久久久| 18禁在线播放成人免费| 美女被艹到高潮喷水动态| 高清日韩中文字幕在线| 中文字幕免费在线视频6| 国产精品福利在线免费观看| 国产精品99久久99久久久不卡 | 18+在线观看网站| 爱豆传媒免费全集在线观看| 国产永久视频网站| 好男人视频免费观看在线| 内射极品少妇av片p| 丰满人妻一区二区三区视频av| 国产成人aa在线观看| 人妻夜夜爽99麻豆av| 性插视频无遮挡在线免费观看| 日日摸夜夜添夜夜添av毛片| 精品久久久久久久久av| 亚洲人成网站高清观看| 精品一区二区免费观看| 国产一级毛片在线| 免费高清在线观看视频在线观看| 精品一区二区三区视频在线| 亚洲欧美一区二区三区黑人 | 91久久精品国产一区二区成人| 可以在线观看毛片的网站| 成人国产av品久久久| 亚洲第一区二区三区不卡| 国产成人a∨麻豆精品| 国产一区二区三区综合在线观看 | 亚洲成人精品中文字幕电影| 国产黄色视频一区二区在线观看| 九九在线视频观看精品| 色播亚洲综合网| 麻豆成人av视频| 噜噜噜噜噜久久久久久91| 国产淫语在线视频| 97超视频在线观看视频| 亚洲图色成人| 97人妻精品一区二区三区麻豆| 免费黄色在线免费观看| 亚洲av欧美aⅴ国产| 色婷婷久久久亚洲欧美| 肉色欧美久久久久久久蜜桃 | 搞女人的毛片| 一级二级三级毛片免费看| 97超碰精品成人国产| 久久久久久久午夜电影| 国产色婷婷99| xxx大片免费视频| 高清在线视频一区二区三区| 91aial.com中文字幕在线观看| 狂野欧美白嫩少妇大欣赏| 久久热精品热| 狂野欧美激情性bbbbbb| 91久久精品电影网| 色婷婷久久久亚洲欧美| 亚洲欧美精品自产自拍| 一区二区三区乱码不卡18| 国产精品一区二区三区四区免费观看| 久久97久久精品| 精品酒店卫生间| 久久6这里有精品| 久久久久国产网址| 黄色怎么调成土黄色| 亚洲国产精品999| 国产精品精品国产色婷婷| 赤兔流量卡办理| 欧美精品国产亚洲| 在线观看一区二区三区激情| 亚洲自偷自拍三级| 男女那种视频在线观看| 亚洲一级一片aⅴ在线观看| 亚洲精品乱码久久久v下载方式| 久久精品久久久久久噜噜老黄| 中文字幕免费在线视频6| av国产免费在线观看| 晚上一个人看的免费电影| 亚洲成人中文字幕在线播放| 国产精品伦人一区二区| 蜜臀久久99精品久久宅男| 久久精品国产亚洲网站| 亚洲精品乱码久久久久久按摩| 水蜜桃什么品种好| 神马国产精品三级电影在线观看| 99热全是精品| 国产精品无大码| 成人二区视频| 欧美日韩在线观看h| 美女视频免费永久观看网站| 免费观看a级毛片全部| 18禁动态无遮挡网站| 搡女人真爽免费视频火全软件| 免费黄网站久久成人精品| 少妇人妻 视频| 国产日韩欧美亚洲二区| 欧美精品国产亚洲| 美女被艹到高潮喷水动态| 一级毛片电影观看| 亚洲精品一二三| 午夜免费鲁丝| 国产探花极品一区二区| 一二三四中文在线观看免费高清| 成人免费观看视频高清| 18禁在线无遮挡免费观看视频| 大陆偷拍与自拍| 国产精品嫩草影院av在线观看| 亚洲av欧美aⅴ国产| 国产精品国产三级国产专区5o| 国产黄频视频在线观看| 蜜桃亚洲精品一区二区三区| 久久精品国产自在天天线| 亚洲av在线观看美女高潮| 美女国产视频在线观看| 亚洲天堂国产精品一区在线| av又黄又爽大尺度在线免费看| 可以在线观看毛片的网站| 欧美少妇被猛烈插入视频| 亚洲欧美成人精品一区二区| 日本av手机在线免费观看| 成人高潮视频无遮挡免费网站| 啦啦啦中文免费视频观看日本| 一个人看的www免费观看视频| 午夜老司机福利剧场| 国产成人精品久久久久久| 大片免费播放器 马上看| 夜夜看夜夜爽夜夜摸| 午夜老司机福利剧场| 内射极品少妇av片p| 青春草亚洲视频在线观看| 九草在线视频观看| av国产久精品久网站免费入址| 亚洲国产高清在线一区二区三| 丝袜脚勾引网站| 国产极品天堂在线| 色视频www国产| 菩萨蛮人人尽说江南好唐韦庄| 国产爽快片一区二区三区| 97人妻精品一区二区三区麻豆| 国产 精品1| 你懂的网址亚洲精品在线观看| 亚洲欧美日韩卡通动漫| 亚洲最大成人中文| a级毛片免费高清观看在线播放| 免费少妇av软件| 亚洲天堂av无毛| 人妻少妇偷人精品九色| 边亲边吃奶的免费视频| 禁无遮挡网站| 三级男女做爰猛烈吃奶摸视频| 最近中文字幕高清免费大全6| 日本熟妇午夜| 校园人妻丝袜中文字幕|