• <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)率及查全率的影響
    中文字幕久久专区| 国产精品久久久久久久电影| 免费高清在线观看视频在线观看| 亚洲自偷自拍三级| 美女内射精品一级片tv| 成人亚洲精品av一区二区| 男人添女人高潮全过程视频| 九九在线视频观看精品| 国产一区二区在线观看日韩| 青春草亚洲视频在线观看| 能在线免费看毛片的网站| 免费看日本二区| 人妻 亚洲 视频| 国产av码专区亚洲av| 欧美日韩在线观看h| 2018国产大陆天天弄谢| 春色校园在线视频观看| 精品99又大又爽又粗少妇毛片| 欧美丝袜亚洲另类| 在线观看人妻少妇| 日本欧美国产在线视频| 久久久a久久爽久久v久久| 亚洲在久久综合| 国产高潮美女av| 久久精品久久久久久噜噜老黄| 亚洲最大成人av| 亚洲欧美中文字幕日韩二区| 国产精品久久久久久精品电影| 国精品久久久久久国模美| 麻豆乱淫一区二区| 久久久久久久久久成人| 亚洲精品成人久久久久久| 久久ye,这里只有精品| 亚洲国产精品成人久久小说| 精品视频人人做人人爽| 亚洲成人av在线免费| 亚洲av国产av综合av卡| av一本久久久久| 色婷婷久久久亚洲欧美| 亚洲三级黄色毛片| 交换朋友夫妻互换小说| 日韩大片免费观看网站| 亚洲综合精品二区| 国产成人精品一,二区| 免费av不卡在线播放| 久久久久精品久久久久真实原创| 毛片一级片免费看久久久久| 亚洲美女搞黄在线观看| 最近中文字幕2019免费版| 国产精品av视频在线免费观看| 天美传媒精品一区二区| 亚洲久久久久久中文字幕| 伊人久久精品亚洲午夜| 欧美bdsm另类| 视频中文字幕在线观看| 热re99久久精品国产66热6| 18+在线观看网站| 国产爱豆传媒在线观看| 久久久久久久午夜电影| 成年免费大片在线观看| 在线精品无人区一区二区三 | av网站免费在线观看视频| 在线观看三级黄色| 国产精品一区www在线观看| 亚洲三级黄色毛片| 日韩一本色道免费dvd| 亚洲精品国产成人久久av| 最近2019中文字幕mv第一页| 国产成人午夜福利电影在线观看| 亚洲精品乱码久久久久久按摩| 精品久久国产蜜桃| 国产69精品久久久久777片| 在线播放无遮挡| freevideosex欧美| av在线天堂中文字幕| 99热全是精品| 日本熟妇午夜| 久久久久久伊人网av| 欧美成人一区二区免费高清观看| 亚洲在线观看片| 制服丝袜香蕉在线| 大码成人一级视频| 色婷婷久久久亚洲欧美| 91狼人影院| 欧美亚洲 丝袜 人妻 在线| 国产视频首页在线观看| 又爽又黄无遮挡网站| 亚洲性久久影院| 亚洲成人精品中文字幕电影| 毛片一级片免费看久久久久| 男女无遮挡免费网站观看| 亚洲欧美一区二区三区黑人 | 美女主播在线视频| 欧美xxxx黑人xx丫x性爽| 99久久人妻综合| 国产av码专区亚洲av| 亚洲国产欧美在线一区| 国产精品一区www在线观看| 欧美变态另类bdsm刘玥| 日韩欧美精品v在线| 日韩成人av中文字幕在线观看| 婷婷色av中文字幕| av福利片在线观看| 亚洲av福利一区| 亚洲国产色片| 欧美+日韩+精品| 精华霜和精华液先用哪个| 免费观看无遮挡的男女| 涩涩av久久男人的天堂| 22中文网久久字幕| 色视频在线一区二区三区| 晚上一个人看的免费电影| 免费大片黄手机在线观看| 亚洲成人中文字幕在线播放| 六月丁香七月| 国产探花在线观看一区二区| 久久精品人妻少妇| 精品少妇久久久久久888优播| 久久久久久久大尺度免费视频| 白带黄色成豆腐渣| 国产精品人妻久久久影院| 亚洲国产精品成人久久小说| 亚洲最大成人中文| 爱豆传媒免费全集在线观看| 亚洲欧美日韩另类电影网站 | 亚洲成人av在线免费| 亚洲国产欧美在线一区| 男人狂女人下面高潮的视频| 夫妻性生交免费视频一级片| 亚洲av免费在线观看| 麻豆成人午夜福利视频| 国产成人一区二区在线| 搡女人真爽免费视频火全软件| 少妇猛男粗大的猛烈进出视频 | 九色成人免费人妻av| 在线免费观看不下载黄p国产| 亚洲国产精品999| 精华霜和精华液先用哪个| 国模一区二区三区四区视频| 日韩一区二区视频免费看| 日日啪夜夜撸| 校园人妻丝袜中文字幕| 涩涩av久久男人的天堂| 亚洲真实伦在线观看| 亚洲精品久久午夜乱码| 老师上课跳d突然被开到最大视频| 国产午夜福利久久久久久| a级毛片免费高清观看在线播放| 国产中年淑女户外野战色| 色5月婷婷丁香| 大话2 男鬼变身卡| 国产视频首页在线观看| 99久久人妻综合| 午夜福利网站1000一区二区三区| 18禁在线播放成人免费| videos熟女内射| 国产高潮美女av| 国产综合精华液| 九九爱精品视频在线观看| 亚洲国产高清在线一区二区三| 有码 亚洲区| 99热这里只有是精品在线观看| 久久鲁丝午夜福利片| 精品久久久久久电影网| 熟女人妻精品中文字幕| 国产精品一区二区三区四区免费观看| 一级片'在线观看视频| 日韩一区二区三区影片| 全区人妻精品视频| av一本久久久久| 狠狠精品人妻久久久久久综合| 三级男女做爰猛烈吃奶摸视频| 亚洲国产欧美在线一区| 午夜精品国产一区二区电影 | 国产黄片视频在线免费观看| 免费少妇av软件| 亚洲真实伦在线观看| 美女内射精品一级片tv| 色5月婷婷丁香| 国产成人91sexporn| 日韩免费高清中文字幕av| 国产欧美日韩精品一区二区| 亚洲欧美精品专区久久| 亚洲欧美日韩卡通动漫| 亚洲人成网站高清观看| 久久国产乱子免费精品| 好男人在线观看高清免费视频| 欧美日本视频| 18禁裸乳无遮挡动漫免费视频 | 日韩精品有码人妻一区| 欧美xxxx性猛交bbbb| 亚洲欧美日韩东京热| www.色视频.com| 婷婷色综合www| 尾随美女入室| xxx大片免费视频| 久久99热6这里只有精品| 亚洲av二区三区四区| 久久久久久国产a免费观看| 美女视频免费永久观看网站| 成人毛片60女人毛片免费| 久久ye,这里只有精品| 别揉我奶头 嗯啊视频| 在线观看av片永久免费下载| 久久97久久精品| 乱码一卡2卡4卡精品| 身体一侧抽搐| 日日摸夜夜添夜夜爱| 免费少妇av软件| 久久国产乱子免费精品| 亚洲精品第二区| av天堂中文字幕网| 嫩草影院精品99| 涩涩av久久男人的天堂| 国产真实伦视频高清在线观看| 性色avwww在线观看| 欧美变态另类bdsm刘玥| 97超视频在线观看视频| 免费看av在线观看网站| 亚洲精品aⅴ在线观看| 色视频在线一区二区三区| 日本一本二区三区精品| 男人舔奶头视频| videossex国产| 小蜜桃在线观看免费完整版高清| 国产成人91sexporn| 人妻系列 视频| 三级男女做爰猛烈吃奶摸视频| 国产高清国产精品国产三级 | 免费观看av网站的网址| 校园人妻丝袜中文字幕| 联通29元200g的流量卡| 日韩制服骚丝袜av| 久久精品夜色国产| 国产午夜福利久久久久久| 最近中文字幕高清免费大全6| 青春草视频在线免费观看| 26uuu在线亚洲综合色| av女优亚洲男人天堂| 人妻制服诱惑在线中文字幕| 久久影院123| 一级爰片在线观看| 少妇人妻 视频| 少妇人妻精品综合一区二区| 亚洲欧美精品自产自拍| 18禁在线播放成人免费| 夜夜爽夜夜爽视频| 亚洲怡红院男人天堂| 最近的中文字幕免费完整| 插逼视频在线观看| 午夜亚洲福利在线播放| 欧美老熟妇乱子伦牲交| 亚洲内射少妇av| 亚洲人成网站在线播| 国产爱豆传媒在线观看| 日韩亚洲欧美综合| 久久女婷五月综合色啪小说 | 午夜免费观看性视频| 国产亚洲5aaaaa淫片| 亚洲综合精品二区| 老司机影院毛片| 99九九线精品视频在线观看视频| 国产在线男女| 亚洲一级一片aⅴ在线观看| 欧美3d第一页| 久久久久久久久久久免费av| 国产精品女同一区二区软件| 国产在线男女| 国产成人福利小说| 精品一区二区三卡| 亚洲精品色激情综合| 建设人人有责人人尽责人人享有的 | 成人无遮挡网站| 赤兔流量卡办理| 一区二区av电影网| 欧美成人精品欧美一级黄| 国产爱豆传媒在线观看| 一级毛片我不卡| 成人高潮视频无遮挡免费网站| 日本猛色少妇xxxxx猛交久久| 日本三级黄在线观看| 国产精品无大码| 熟女人妻精品中文字幕| 国产免费一级a男人的天堂| 日日摸夜夜添夜夜爱| 久久亚洲国产成人精品v| 大片电影免费在线观看免费| 亚洲在线观看片| 99久久精品热视频| 亚洲国产精品成人久久小说| 1000部很黄的大片| 最近手机中文字幕大全| 亚洲欧美日韩东京热| 国产视频首页在线观看| 少妇的逼水好多| 亚洲av免费在线观看| 国产久久久一区二区三区| 精品人妻视频免费看| 下体分泌物呈黄色| 肉色欧美久久久久久久蜜桃 | 制服丝袜香蕉在线| 国产亚洲av嫩草精品影院| 欧美最新免费一区二区三区| 天天躁日日操中文字幕| h日本视频在线播放| 成人漫画全彩无遮挡| a级一级毛片免费在线观看| 成人国产av品久久久| 波野结衣二区三区在线| 久久6这里有精品| 亚洲精品一二三| 国产男人的电影天堂91| 观看免费一级毛片| 久久久久久伊人网av| 成年av动漫网址| 久久99蜜桃精品久久| 日韩 亚洲 欧美在线| 亚洲av日韩在线播放| 美女内射精品一级片tv| 欧美最新免费一区二区三区| videossex国产| 色综合色国产| 国精品久久久久久国模美| 人妻一区二区av| 一边亲一边摸免费视频| av线在线观看网站| eeuss影院久久| 久久精品国产亚洲网站| 一区二区三区精品91| 成年人午夜在线观看视频| 色网站视频免费| 男男h啪啪无遮挡| 一个人看视频在线观看www免费| av一本久久久久| 午夜免费观看性视频| 午夜激情久久久久久久| 国产成人a区在线观看| 免费电影在线观看免费观看| 最近最新中文字幕大全电影3| 在线观看一区二区三区| 中文字幕亚洲精品专区| 欧美bdsm另类| 丝瓜视频免费看黄片| 亚洲天堂av无毛| a级毛色黄片| 日日啪夜夜撸| 性色av一级| 亚洲精品自拍成人| 国产片特级美女逼逼视频| 全区人妻精品视频| 国内精品宾馆在线| 日韩欧美 国产精品| 男插女下体视频免费在线播放| h日本视频在线播放| 色播亚洲综合网| 日韩国内少妇激情av| 亚洲最大成人av| 国产午夜精品一二区理论片| 亚洲精品国产成人久久av| 亚洲av中文字字幕乱码综合| 亚洲最大成人av| 国产精品人妻久久久久久| 亚洲内射少妇av| 日韩电影二区| 精品一区在线观看国产| 18+在线观看网站| 亚洲精品国产色婷婷电影| 久久这里有精品视频免费| 日韩三级伦理在线观看| 成人一区二区视频在线观看| 国产成人福利小说| 97超碰精品成人国产| 夫妻午夜视频| 尾随美女入室| 69人妻影院| 欧美97在线视频| 国产av不卡久久| 国产精品麻豆人妻色哟哟久久| 亚洲综合色惰| 乱码一卡2卡4卡精品| 日韩大片免费观看网站| 亚洲三级黄色毛片| 综合色av麻豆| 中文资源天堂在线| 成人漫画全彩无遮挡| 国产伦在线观看视频一区| 亚洲av一区综合| 中文资源天堂在线| 亚洲色图综合在线观看| 夫妻性生交免费视频一级片| 久久国内精品自在自线图片| 亚洲电影在线观看av| 99久国产av精品国产电影| 成年女人看的毛片在线观看| 黄色视频在线播放观看不卡| 久久99精品国语久久久| 啦啦啦啦在线视频资源| 黄片无遮挡物在线观看| 亚洲精品456在线播放app| 亚洲精品成人久久久久久| 国产欧美日韩一区二区三区在线 | 国产久久久一区二区三区| 久久99热这里只有精品18| 中文字幕人妻熟人妻熟丝袜美| 精品久久久久久电影网| 成人美女网站在线观看视频| 精品久久国产蜜桃| 91狼人影院| 久久精品久久精品一区二区三区| 人人妻人人澡人人爽人人夜夜| 国模一区二区三区四区视频| 在线看a的网站| 精品一区二区三区视频在线| 国产精品国产三级专区第一集| 国产中年淑女户外野战色| 亚洲精品,欧美精品| 久久精品夜色国产| 亚洲av日韩在线播放| 国内精品宾馆在线| 久久热精品热| 日韩一区二区三区影片| 国产黄色免费在线视频| 晚上一个人看的免费电影| 视频区图区小说| 成年av动漫网址| 亚洲av.av天堂| 又黄又爽又刺激的免费视频.| 国产成人精品婷婷| 中文资源天堂在线| 在线观看免费高清a一片| 女人久久www免费人成看片| 成人无遮挡网站| 永久网站在线| av女优亚洲男人天堂| 婷婷色麻豆天堂久久| 日本黄色片子视频| 男女边摸边吃奶| 乱系列少妇在线播放| 成人毛片60女人毛片免费| 亚洲欧美日韩另类电影网站 | 99久久中文字幕三级久久日本| tube8黄色片| 一级片'在线观看视频| 免费看不卡的av| 亚洲精品久久午夜乱码| 大陆偷拍与自拍| 美女cb高潮喷水在线观看| 99精国产麻豆久久婷婷| 国产人妻一区二区三区在| 亚洲av国产av综合av卡| 欧美极品一区二区三区四区| 亚洲av免费在线观看| 久热这里只有精品99| 欧美日韩视频高清一区二区三区二| 不卡视频在线观看欧美| 亚洲高清免费不卡视频| 纵有疾风起免费观看全集完整版| 欧美丝袜亚洲另类| 亚洲国产av新网站| 成人美女网站在线观看视频| 青春草亚洲视频在线观看| 大香蕉久久网| 亚洲精品国产av成人精品| 制服丝袜香蕉在线| 成年免费大片在线观看| 久久久成人免费电影| a级毛色黄片| 美女脱内裤让男人舔精品视频| 卡戴珊不雅视频在线播放| 在线a可以看的网站| 亚洲最大成人手机在线| 亚洲一区二区三区欧美精品 | 亚洲自偷自拍三级| 日本一本二区三区精品| 亚洲精品国产色婷婷电影| 国产欧美亚洲国产| 国产精品熟女久久久久浪| 汤姆久久久久久久影院中文字幕| 高清毛片免费看| 亚州av有码| 久久久欧美国产精品| 校园人妻丝袜中文字幕| 肉色欧美久久久久久久蜜桃 | 免费播放大片免费观看视频在线观看| 免费少妇av软件| 青春草亚洲视频在线观看| 网址你懂的国产日韩在线| 色婷婷久久久亚洲欧美| 亚洲最大成人av| 成年版毛片免费区| 亚洲四区av| 自拍偷自拍亚洲精品老妇| 亚洲av在线观看美女高潮| 成人国产av品久久久| 亚洲国产欧美在线一区| 久久亚洲国产成人精品v| 毛片一级片免费看久久久久| 男的添女的下面高潮视频| 免费看日本二区| 国产精品国产三级国产av玫瑰| av专区在线播放| 免费大片18禁| 欧美最新免费一区二区三区| 最近2019中文字幕mv第一页| 又大又黄又爽视频免费| 男女那种视频在线观看| 日韩强制内射视频| 欧美人与善性xxx| 亚洲va在线va天堂va国产| 纵有疾风起免费观看全集完整版| 国产v大片淫在线免费观看| 精品一区二区免费观看| 看黄色毛片网站| av卡一久久| 在线看a的网站| 国产精品伦人一区二区| 精品午夜福利在线看| 97超碰精品成人国产| 嫩草影院入口| 日韩av在线免费看完整版不卡| 国产爽快片一区二区三区| 国产欧美另类精品又又久久亚洲欧美| 国产精品不卡视频一区二区| 大片免费播放器 马上看| 国产精品一区二区性色av| 男人狂女人下面高潮的视频| 精品午夜福利在线看| 99re6热这里在线精品视频| 日本一二三区视频观看| 中文欧美无线码| 新久久久久国产一级毛片| 国产高清国产精品国产三级 | 99久久中文字幕三级久久日本| 18+在线观看网站| 欧美xxxx黑人xx丫x性爽| 久久久午夜欧美精品| 国产乱人偷精品视频| 狂野欧美激情性xxxx在线观看| 看十八女毛片水多多多| 国产精品久久久久久精品电影小说 | 3wmmmm亚洲av在线观看| 精品视频人人做人人爽| 卡戴珊不雅视频在线播放| 22中文网久久字幕| 别揉我奶头 嗯啊视频| a级毛片免费高清观看在线播放| 黄色日韩在线| 国产黄色视频一区二区在线观看| 日韩制服骚丝袜av| 在线播放无遮挡| 婷婷色综合www| 少妇人妻一区二区三区视频| 中文字幕久久专区| 色播亚洲综合网| 亚洲精品视频女| 亚洲图色成人| 听说在线观看完整版免费高清| 亚洲国产高清在线一区二区三| 亚洲精品中文字幕在线视频 | 亚洲欧美精品自产自拍| 晚上一个人看的免费电影| 日本猛色少妇xxxxx猛交久久| 五月开心婷婷网| 午夜激情福利司机影院| av免费在线看不卡| av在线亚洲专区| 久久久久九九精品影院| 深夜a级毛片| 国产色爽女视频免费观看| 久久久久久久精品精品| 人人妻人人澡人人爽人人夜夜| 麻豆乱淫一区二区| 国产一区亚洲一区在线观看| 久久精品国产亚洲av涩爱| 一个人观看的视频www高清免费观看| 国产有黄有色有爽视频| 少妇熟女欧美另类| 国产欧美另类精品又又久久亚洲欧美| 人妻制服诱惑在线中文字幕| 最近2019中文字幕mv第一页| 亚洲av男天堂| 不卡视频在线观看欧美| 水蜜桃什么品种好| 亚洲av.av天堂| 内射极品少妇av片p| 丝袜脚勾引网站| 免费av毛片视频| 尾随美女入室| 精品一区二区三区视频在线| 女人久久www免费人成看片| 欧美xxxx性猛交bbbb| 我的女老师完整版在线观看| 免费看光身美女| 亚洲欧美中文字幕日韩二区| 少妇人妻久久综合中文| 在线精品无人区一区二区三 | 日韩视频在线欧美| av卡一久久| 亚洲欧美精品专区久久| 一级毛片aaaaaa免费看小| 97热精品久久久久久| av播播在线观看一区| 黄色欧美视频在线观看| 嫩草影院入口| 91aial.com中文字幕在线观看| 亚洲丝袜综合中文字幕| 日韩欧美精品免费久久| 国产精品无大码| 80岁老熟妇乱子伦牲交| 高清欧美精品videossex| 久久久久精品久久久久真实原创| 国产精品不卡视频一区二区| 久久久久网色| 久久久久精品久久久久真实原创| 中文资源天堂在线|