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

    軟件開發(fā)活動(dòng)數(shù)據(jù)的數(shù)據(jù)質(zhì)量問題?

    2019-06-11 07:40:10涂菲菲周明輝
    軟件學(xué)報(bào) 2019年5期
    關(guān)鍵詞:開發(fā)者代碼報(bào)告

    涂菲菲,周明輝

    1(高可信軟件技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室(北京大學(xué)),北京 100871)

    2(北京大學(xué) 信息科學(xué)技術(shù)學(xué)院,北京 100871)

    軟件開發(fā)支持工具(例如問題追蹤系統(tǒng)、版本控制系統(tǒng))已被廣泛應(yīng)用于開源和商業(yè)軟件的開發(fā)中,這些軟件開發(fā)支持工具在使用過程中產(chǎn)生了大量的數(shù)據(jù),這些數(shù)據(jù)統(tǒng)稱為軟件開發(fā)活動(dòng)數(shù)據(jù).軟件開發(fā)活動(dòng)數(shù)據(jù)覆蓋范圍非常廣,例如代碼提交[1]、功能需求的討論[2]、開發(fā)者在集成開發(fā)環(huán)境中的操作步驟[3]等.軟件開發(fā)活動(dòng)數(shù)據(jù)被廣泛應(yīng)用于軟件開發(fā)過程中的各種決策,例如比較不同軟件方法之間的效果[1]、估算開發(fā)者的生產(chǎn)效率[4]、預(yù)測軟件質(zhì)量[5].

    軟件開發(fā)活動(dòng)數(shù)據(jù)的廣泛使用,使其數(shù)據(jù)質(zhì)量受到了越來越多的關(guān)注.如果軟件開發(fā)活動(dòng)數(shù)據(jù)存在質(zhì)量問題,這可能使得基于問題數(shù)據(jù)的方法、軟件產(chǎn)生的結(jié)果存在偏差,甚至無效.例如,Kim等人[6]在利用問題追蹤數(shù)據(jù)智能化預(yù)測任務(wù)完成時(shí)間的工作中,將問題報(bào)告被標(biāo)記為“已解決”的時(shí)間點(diǎn)視為該任務(wù)完成的時(shí)刻.然而Zheng等人[7]發(fā)現(xiàn):任務(wù)完成的時(shí)間存在問題——開發(fā)者在完成任務(wù)后可能并不會(huì)及時(shí)將問題報(bào)告標(biāo)記為“已解決”,而是在之后清理問題追蹤系統(tǒng)時(shí),通過腳本進(jìn)行批量處理,即“任務(wù)完成時(shí)間”并不能真正代表任務(wù)被解決的時(shí)刻.因此,Kim等人的結(jié)果存在偏差.

    雖然已有一些研究工作注意到了數(shù)據(jù)質(zhì)量問題[7-9],但文獻(xiàn)中往往只隱式地提及這些數(shù)據(jù)質(zhì)量問題,缺乏對這些數(shù)據(jù)質(zhì)量問題進(jìn)行綜合分析的工作.并且數(shù)據(jù)質(zhì)量問題并沒有引起足夠的重視,多數(shù)工作并不會(huì)提及其數(shù)據(jù)處理的細(xì)節(jié),例如數(shù)據(jù)獲取來源、數(shù)據(jù)質(zhì)量情況、數(shù)據(jù)預(yù)處理步驟等.為了揭示潛在的數(shù)據(jù)質(zhì)量問題,以更好地幫助軟件開發(fā)活動(dòng)數(shù)據(jù)的應(yīng)用,本文主要研究回答以下兩個(gè)問題.

    1)軟件開發(fā)活動(dòng)數(shù)據(jù)可能存在哪些質(zhì)量問題?

    2)如何發(fā)現(xiàn)和解決軟件開發(fā)活動(dòng)數(shù)據(jù)的質(zhì)量問題?

    本文通過文獻(xiàn)調(diào)研和訪談,并基于自有經(jīng)驗(yàn)對數(shù)據(jù)進(jìn)行分析,總結(jié)出 9種潛在的數(shù)據(jù)質(zhì)量問題,覆蓋了數(shù)據(jù)產(chǎn)生、數(shù)據(jù)收集、數(shù)據(jù)使用等3個(gè)階段,并提出方法以幫助對數(shù)據(jù)問題的發(fā)現(xiàn)和修正.

    本文第1節(jié)主要介紹相關(guān)背景.第2節(jié)介紹本文的研究方法.第3節(jié)從數(shù)據(jù)質(zhì)量問題覆蓋的3個(gè)階段出發(fā),對軟件開發(fā)活動(dòng)數(shù)據(jù)的質(zhì)量問題進(jìn)行詳細(xì)介紹.第 4節(jié)總結(jié)發(fā)現(xiàn)和解決軟件開發(fā)活動(dòng)數(shù)據(jù)質(zhì)量問題的方法.最后對本文工作進(jìn)行總結(jié)并展望未來工作.

    1 背景介紹

    常見的軟件開發(fā)活動(dòng)數(shù)據(jù)包括問題追蹤數(shù)據(jù)和版本控制數(shù)據(jù).

    · 問題追蹤數(shù)據(jù)是指在項(xiàng)目開發(fā)過程中出現(xiàn)的各種缺陷以及新增加的功能需求等的解決過程留下的數(shù)據(jù),每個(gè)缺陷或者功能需求被稱為一個(gè)問題(issue).每個(gè)問題都包含一些特定信息,如誰發(fā)現(xiàn)的這個(gè)問題、這個(gè)問題被分配給誰來解決、這個(gè)問題的當(dāng)前狀態(tài)、這個(gè)問題的優(yōu)先級(jí)等等.問題報(bào)告的數(shù)量能在一定程度上反映代碼的質(zhì)量,問題報(bào)告的解決速度能夠反映開源項(xiàng)目的活躍程度等,因此,問題追蹤數(shù)據(jù)對于分析軟件項(xiàng)目的最佳實(shí)踐具有重要意義.

    · 版本控制數(shù)據(jù)是指代碼庫每一次變更的歷史數(shù)據(jù),每次代碼更新都被稱為一個(gè)代碼提交(commit).每次代碼提交記錄了修改的原因、誰做了修改、修改了什么.版本控制數(shù)據(jù)不僅記錄了當(dāng)前的代碼庫,還記錄了整個(gè)代碼庫演化的過程,這些數(shù)據(jù)對于分析項(xiàng)目的歷史、當(dāng)前狀態(tài)以及未來都非常有價(jià)值.

    1.1 問題追蹤數(shù)據(jù)

    問題追蹤系統(tǒng)主要用于幫助開發(fā)人員追蹤軟件缺陷和需求,目前最常見的問題追蹤系統(tǒng)有 Bugzilla和JIRA等.

    對于每個(gè)問題報(bào)告,問題追蹤系統(tǒng)記錄了報(bào)告的基本信息和報(bào)告的歷史活動(dòng)兩部分.

    · 第1部分是報(bào)告的基本信息,主要包括序列號(hào)、報(bào)告標(biāo)題、報(bào)告人(reporter)、問題描述(description)、報(bào)告當(dāng)前的狀態(tài)(status)、處理意見(resolution)、問題產(chǎn)生的環(huán)境等信息,如圖1所示.

    · 問題追蹤數(shù)據(jù)具有一個(gè)特點(diǎn):問題報(bào)告的信息有可能隨著時(shí)間而發(fā)生改變.例如,一個(gè)問題被報(bào)告到問題追蹤系統(tǒng)之后,會(huì)被其他人評論,會(huì)被調(diào)整優(yōu)先級(jí),在問題解決之后其狀態(tài)會(huì)被標(biāo)記為“已解決”狀態(tài),甚至在關(guān)閉之后被重新打開.這些操作都會(huì)使該問題報(bào)告的信息發(fā)生變動(dòng).因此,問題報(bào)告的第二部分是報(bào)告的歷史活動(dòng),如圖2所示.表中的每一行記錄了對報(bào)告的一次修改,記錄的內(nèi)容包括修改人(who)、修改時(shí)間(when)、修改域(what)、修改前的值(removed)和修改后的值(added).

    Fig.1 Basic information of issue report of #212077 in Gnome圖1 Gnome項(xiàng)目的212077號(hào)問題報(bào)告的基本信息

    Fig.2 Activity history of issue report of #667796 in Gnome圖2 Gnome項(xiàng)目的667796號(hào)問題報(bào)告的歷史活動(dòng)

    1.2 版本控制數(shù)據(jù)

    版本控制系統(tǒng)的核心要求是能夠方便團(tuán)隊(duì)協(xié)同開發(fā)以及記錄歷史版本,目前最常見的版本控制系統(tǒng)有Git、Mercurial、SVN 和 CVS等.

    版本控制系統(tǒng)在代碼提交日志里記錄了開發(fā)者的每次代碼提交信息.如圖3所示,開發(fā)者的一次代碼提交,一般包括如下信息:提交者、作者、代碼提交的時(shí)間、代碼修改的時(shí)間、對該次提交的注解、修改的文件以及對每個(gè)文件修改的內(nèi)容.

    Fig.3 A code commit log in Linux kernel圖3 Linux kernel項(xiàng)目的一條代碼提交日志

    2 研究方法

    問題追蹤數(shù)據(jù)和版本控制數(shù)據(jù)記錄了軟件從需求到代碼實(shí)現(xiàn)的過程,是軟件開發(fā)中非常重要的數(shù)據(jù).本文研究主要針對這兩類數(shù)據(jù).

    為了對數(shù)據(jù)質(zhì)量問題進(jìn)行全面的總結(jié),我們首先在DBLP數(shù)據(jù)庫中進(jìn)行檢索,時(shí)間范圍是2000年~2017年,檢索時(shí)采用的英文關(guān)鍵詞包括“bug report”“issue report”“code repository”“software repository”,共檢索到 501 篇文章;然后,對檢索出的論文,通過人工審查方式移除掉與研究問題無關(guān)的論文,并通過查閱相關(guān)論文的參考文獻(xiàn)和相關(guān)研究人員發(fā)表的論文列表來進(jìn)一步識(shí)別出遺漏的論文.

    進(jìn)一步地,我們基于自身的研究和實(shí)踐經(jīng)驗(yàn),對Gnome、Mozilla和Linux kernel數(shù)據(jù)進(jìn)行分析,觀察可能的錯(cuò)誤所在,并跟研究社區(qū)進(jìn)行互動(dòng)以理解數(shù)據(jù)問題存在的廣度與深度.

    在調(diào)研的過程中,我們發(fā)現(xiàn)許多工作并不會(huì)清楚地說明論文中使用的數(shù)據(jù)集的來源,對數(shù)據(jù)進(jìn)行的預(yù)處理也很少提及,例如,Tamrawi等人[10]在任務(wù)分配的工作中并沒有提及如何建立郵箱地址和獨(dú)立開發(fā)者之間的關(guān)聯(lián)關(guān)系.另外,在調(diào)研的過程中,我們?nèi)コ恕皢栴}報(bào)告錯(cuò)誤分類”這一類已經(jīng)非常有影響力的工作.我們更多關(guān)注的是在軟件開發(fā)活動(dòng)數(shù)據(jù)的分析中,容易忽略的數(shù)據(jù)質(zhì)量問題.

    3 數(shù)據(jù)質(zhì)量問題

    本節(jié)回答第1個(gè)研究問題:軟件開發(fā)活動(dòng)數(shù)據(jù)可能存在哪些質(zhì)量問題?

    數(shù)據(jù)質(zhì)量問題可能產(chǎn)生于與數(shù)據(jù)有關(guān)的任何階段,其產(chǎn)生的原因也多種多樣.在使用軟件開發(fā)支持工具的過程中,工具記錄了與開發(fā)活動(dòng)相關(guān)的數(shù)據(jù),這個(gè)過程為數(shù)據(jù)的產(chǎn)生過程.數(shù)據(jù)使用者通過各種方式,將軟件開發(fā)支持工具記錄的數(shù)據(jù)收集到本地,這個(gè)過程為數(shù)據(jù)的收集過程.數(shù)據(jù)使用者基于自身對數(shù)據(jù)的理解,利用數(shù)據(jù)解決各種研究問題,這個(gè)過程為數(shù)據(jù)的使用過程.

    如圖4所示,我們根據(jù)問題可能產(chǎn)生的時(shí)間點(diǎn),即數(shù)據(jù)產(chǎn)生階段、數(shù)據(jù)收集階段和數(shù)據(jù)使用階段,將數(shù)據(jù)質(zhì)量問題分為3類.數(shù)據(jù)產(chǎn)生階段的數(shù)據(jù)質(zhì)量問題包括前文提到過的“任務(wù)完成時(shí)間”的陷阱、問題追蹤數(shù)據(jù)的創(chuàng)建時(shí)間錯(cuò)誤和版本控制數(shù)據(jù)中的時(shí)間問題.數(shù)據(jù)收集階段的數(shù)據(jù)質(zhì)量問題包括爬取數(shù)據(jù)不完整問題和隱私保護(hù)和安全保護(hù)等導(dǎo)致的數(shù)據(jù)不完整問題.數(shù)據(jù)使用階段的數(shù)據(jù)質(zhì)量問題包括未來數(shù)據(jù)泄露問題、郵箱地址的問題、版本控制數(shù)據(jù)中關(guān)于作者與提交者的問題.

    Fig.4 Three phases of data quality problems of software developemt activity data圖4 軟件開發(fā)活動(dòng)數(shù)據(jù)的數(shù)據(jù)質(zhì)量問題產(chǎn)生的3個(gè)階段

    不同階段的數(shù)據(jù)問題具有不同的特性.數(shù)據(jù)產(chǎn)生階段的問題通常是因?yàn)檐浖_發(fā)流程(支持工具或基礎(chǔ)設(shè)施)等所造成的數(shù)據(jù)使用者無法控制的問題.數(shù)據(jù)收集階段的問題多數(shù)可以通過優(yōu)化數(shù)據(jù)收集方法而得到解決或者部分解決,屬于部分可控.數(shù)據(jù)使用階段的問題在本文中多指“數(shù)據(jù)誤用問題”,即數(shù)據(jù)使用者忽略了數(shù)據(jù)本身的某些特征,誤用數(shù)據(jù)導(dǎo)致問題.這類問題往往較為隱蔽不易發(fā)現(xiàn),需要數(shù)據(jù)使用者對數(shù)據(jù)有深刻的理解.

    這 9個(gè)數(shù)據(jù)質(zhì)量問題有些源自數(shù)據(jù)經(jīng)驗(yàn),有些是從文獻(xiàn)中歸納總結(jié)的.為了使本文更具實(shí)踐價(jià)值,對于每一個(gè)數(shù)據(jù)問題,我們列出其影響的項(xiàng)目.如果數(shù)據(jù)問題源于數(shù)據(jù)經(jīng)驗(yàn),那么其影響的項(xiàng)目就是指Gnome、Mozilla、Linux kernal;如果數(shù)據(jù)問題源于文獻(xiàn)調(diào)研,那么除了Gnome、Mozilla、Linux kernal,其影響的項(xiàng)目還包括相應(yīng)文獻(xiàn)中涉及的項(xiàng)目.表1列出了這9個(gè)數(shù)據(jù)質(zhì)量問題的來源和影響的項(xiàng)目.

    Table 1 Nine data quality problems of software developemt activity data表1 軟件開發(fā)活動(dòng)數(shù)據(jù)的9個(gè)數(shù)據(jù)質(zhì)量問題

    3.1 數(shù)據(jù)產(chǎn)生階段的數(shù)據(jù)質(zhì)量問題

    數(shù)據(jù)產(chǎn)生階段的數(shù)據(jù)質(zhì)量問題主要是指,記錄在軟件開發(fā)支持工具中的數(shù)據(jù)并不能真實(shí)地反映真實(shí)的開發(fā)活動(dòng).這些有問題的數(shù)據(jù)產(chǎn)生的原因多種多樣,可能是軟件在記錄過程中出現(xiàn)了問題,也可能是由于特殊的軟件開發(fā)實(shí)踐.

    對于許多工作來說,時(shí)間是一個(gè)非常重要的研究因素[6,16,17].直觀上,相較于其他文本數(shù)據(jù)而言,數(shù)據(jù)中記錄的時(shí)間的準(zhǔn)確性相對較高.因?yàn)闀r(shí)間的記錄形式簡單,通常為數(shù)字;含義明確,表示了某項(xiàng)活動(dòng)發(fā)生時(shí)的系統(tǒng)時(shí)間.而且時(shí)間通常是由軟件自動(dòng)記錄,不涉及人工輸入.但是我們所發(fā)現(xiàn)的數(shù)據(jù)產(chǎn)生階段的數(shù)據(jù)質(zhì)量問題全部與時(shí)間相關(guān).

    3.1.1 問題報(bào)告的創(chuàng)建時(shí)間錯(cuò)誤

    當(dāng)問題報(bào)告被創(chuàng)建時(shí),問題追蹤系統(tǒng)自動(dòng)記錄了該問題報(bào)告的創(chuàng)建時(shí)間.如圖2所示,在Gnome項(xiàng)目中,有一些問題報(bào)告的創(chuàng)建時(shí)間為1970年.這顯然是錯(cuò)誤的時(shí)間數(shù)據(jù),因?yàn)镚nome基金會(huì)最初建立于2000年(https://en.wikipedia.org/wiki/The_GNOME_Project),不可能在 1970年報(bào)告問題.這類問題的出現(xiàn)可能是源于軟件記錄的錯(cuò)誤.軟件系統(tǒng)中記錄的時(shí)間通常與UNIX時(shí)間戳對應(yīng),而UNIX時(shí)間戳是從1970年1月1日開始計(jì)算.因此當(dāng)軟件系統(tǒng)發(fā)生錯(cuò)誤時(shí),記錄的錯(cuò)誤時(shí)間通常在1970年附近.

    3.1.2 版本控制數(shù)據(jù)中的時(shí)間問題

    前文已經(jīng)介紹,版本控制系統(tǒng)中存在代碼作者和代碼提交者兩種不同的角色:代碼作者指實(shí)際寫代碼的人,代碼提交者指將寫好的代碼提交到版本控制系統(tǒng)中的人.根據(jù)活動(dòng)發(fā)生的時(shí)間看,代碼提交的時(shí)間不會(huì)早于寫代碼的時(shí)間.如果代碼提交者同時(shí)也是代碼作者,那么代碼提交的時(shí)間可能與寫代碼的時(shí)間相同,或者代碼提交的時(shí)間晚于寫代碼的時(shí)間.如果代碼提交者和代碼作者不同,那么代碼提交的時(shí)間晚于寫代碼的時(shí)間.在 Linux kernel中,存在一些代碼提交數(shù)據(jù),它們的代碼提交者和作者不同,但是代碼提交時(shí)間和寫代碼時(shí)間相同.根據(jù)前面的分析,這明顯是存在問題的數(shù)據(jù).那么在根據(jù)時(shí)間戳追溯代碼變更的過程時(shí),這個(gè)問題就會(huì)造成困擾.

    3.1.3 “任務(wù)完成時(shí)間”的陷阱

    “任務(wù)完成時(shí)間”的陷阱就是前文中舉例的問題.有許多工作利用問題報(bào)告的“任務(wù)完成時(shí)間”來預(yù)測一個(gè)新的問題需要的修復(fù)時(shí)間.計(jì)算方法是:一個(gè)問題報(bào)告的“任務(wù)完成時(shí)間”(即問題報(bào)告被標(biāo)記為“已解決”的時(shí)間)與該問題報(bào)告的創(chuàng)建時(shí)間之間的時(shí)間差,即為修復(fù)該問題所需的時(shí)間.Kim等人的工作就是通過這種計(jì)算方法來預(yù)測任務(wù)完成的時(shí)間.但是,Zheng等人發(fā)現(xiàn),如果將把問題報(bào)告標(biāo)記為“已解決”的人視為解決該問題的人,那么按照每人每天來統(tǒng)計(jì)工作量,則會(huì)發(fā)現(xiàn)有的人一天內(nèi)解決了超過200個(gè)問題.據(jù)估計(jì),每人每天解決9個(gè)問題即為上限.一人一天內(nèi)解決200個(gè)問題,這極大地超過了人的能力限制.因此,這明顯是有問題的數(shù)據(jù).Zheng等人發(fā)現(xiàn),開發(fā)者在完成任務(wù)后可能并不會(huì)及時(shí)將問題報(bào)告標(biāo)記為“已解決”,而是在之后清理問題追蹤系統(tǒng)時(shí),通過腳本進(jìn)行批量處理.因此,“任務(wù)完成時(shí)間”并不能真正代表任務(wù)被解決的時(shí)刻.而基于問題時(shí)間數(shù)據(jù)的研究結(jié)果產(chǎn)生了偏差.

    3.2 數(shù)據(jù)收集階段的數(shù)據(jù)質(zhì)量問題

    數(shù)據(jù)收集階段的數(shù)據(jù)質(zhì)量問題主要是指,數(shù)據(jù)使用者收集到的數(shù)據(jù)與軟件開發(fā)支持工具產(chǎn)生的數(shù)據(jù)不完全一樣,在這一節(jié)中列舉的數(shù)據(jù)質(zhì)量問題主要是指數(shù)據(jù)不完整.無論是通過爬蟲從網(wǎng)站上爬取數(shù)據(jù),還是通過API或者某些工具同步數(shù)據(jù),或者是直接從官方鏈接下載整理好的數(shù)據(jù)集,收集到的數(shù)據(jù)都可能會(huì)出現(xiàn)不完整的問題.

    3.2.1 爬取數(shù)據(jù)不完整問題

    在官方?jīng)]有提供數(shù)據(jù)集或者沒有可用 API下載數(shù)據(jù)的情況下,數(shù)據(jù)使用者們往往需要自己編寫爬蟲來爬取數(shù)據(jù).這就很容易遇到爬取數(shù)據(jù)不完整的情況[11].主要是兩點(diǎn)原因:網(wǎng)絡(luò)問題以及反爬蟲機(jī)制.網(wǎng)絡(luò)問題主要是指網(wǎng)頁加載慢、網(wǎng)絡(luò)延遲或者丟包等問題;反爬蟲機(jī)制是指被爬取的網(wǎng)站采取的防御措施.因?yàn)檫@兩點(diǎn)原因,當(dāng)使用爬蟲爬取數(shù)據(jù)時(shí),數(shù)據(jù)往往不完整.

    3.2.2 隱私保護(hù)導(dǎo)致的數(shù)據(jù)不完整問題

    開源社區(qū)為了保護(hù)貢獻(xiàn)者的隱私,會(huì)采取一些列措施使得外部人員無法批量獲取貢獻(xiàn)者名單和郵箱地址.如圖2所示,在Gnome社區(qū)中,如果不登錄賬號(hào),則無法看到貢獻(xiàn)者完整的郵箱地址[4].由于無法獲得完整的郵箱地址,只有開發(fā)者的昵稱,于是就喪失了郵件地址的域名這部分信息,而這部分信息往往包含了的背景信息,例如公司、學(xué)校等,因此可能會(huì)對開發(fā)者的背景分析造成困擾.

    3.2.3 安全保護(hù)導(dǎo)致的數(shù)據(jù)不完整問題

    Zhu等人的工作[11]提供了多個(gè)版本的Mozilla問題追蹤數(shù)據(jù),其中,2011和2012兩個(gè)版本為通過爬蟲爬取的數(shù)據(jù),2013的版本為Mozilla官方提供的數(shù)據(jù).通過3個(gè)版本的數(shù)據(jù)比較,他們發(fā)現(xiàn)有些問題報(bào)告Mozilla社區(qū)并不會(huì)開放出來,因?yàn)檫@些問題可能涉及到 Mozilla的核心安全.當(dāng)確認(rèn)這些報(bào)告并不會(huì)產(chǎn)生安全隱患后,這些報(bào)告會(huì)重新開放出來.這種數(shù)據(jù)問題對于研究“安全”相關(guān)問題的人來說非常重要,因?yàn)檫@些曾經(jīng)被隱藏起來的問題是真正涉及到安全的問題,是非常具有研究價(jià)值的對象.

    3.3 數(shù)據(jù)使用階段的數(shù)據(jù)質(zhì)量問題

    數(shù)據(jù)使用階段的數(shù)據(jù)質(zhì)量問題是指,數(shù)據(jù)使用者由于對數(shù)據(jù)產(chǎn)生的上下文不了解,而基于數(shù)據(jù)建立了錯(cuò)誤的假設(shè).

    3.3.1 未來數(shù)據(jù)泄露問題

    問題報(bào)告的屬性一直在隨著問題修復(fù)的進(jìn)程而被不斷修改.但是許多問題追蹤數(shù)據(jù)的使用者并沒有清楚地認(rèn)識(shí)到這一點(diǎn),并且沒有仔細(xì)區(qū)別實(shí)驗(yàn)中所使用的數(shù)據(jù)是否與研究問題的應(yīng)用場景所匹配.因此,可能產(chǎn)生在研究實(shí)驗(yàn)中,錯(cuò)誤的使用了來自“未來”的信息[12].例如在Sun等人[18]的研究中,他們使用問題報(bào)告的標(biāo)題進(jìn)行重復(fù)報(bào)告檢測.然而,問題報(bào)告的標(biāo)題會(huì)不斷修改.他們在實(shí)驗(yàn)中使用的問題報(bào)告的標(biāo)題已經(jīng)是經(jīng)過反復(fù)修改的.但是重復(fù)報(bào)告檢測的應(yīng)用場景,主要是發(fā)生在問題報(bào)告創(chuàng)建之初.因此,應(yīng)用問題報(bào)告創(chuàng)建時(shí)的原始標(biāo)題來檢測該報(bào)告是否重復(fù)更為合適.這種數(shù)據(jù)使用問題主要是因?yàn)闆]有理解“問題報(bào)告的屬性一直在隨著問題修復(fù)的進(jìn)程而被不斷修改”這一事實(shí),忽略了數(shù)據(jù)產(chǎn)生的上下文,對數(shù)據(jù)建立了錯(cuò)誤的假設(shè).這種錯(cuò)誤使用未來數(shù)據(jù)的問題也普遍存在于數(shù)據(jù)挖掘領(lǐng)域,也稱為數(shù)據(jù)泄露問題,是數(shù)據(jù)挖掘的十大錯(cuò)誤之一.

    3.3.2 郵箱地址的問題

    在軟件數(shù)據(jù)倉庫挖掘中,一個(gè)郵箱地址通常代表了一個(gè)開發(fā)者.但是一個(gè)郵箱地址并不是單純地對應(yīng)一個(gè)開發(fā)者,而是存在“多對一”和“一對多”的關(guān)系.一個(gè)郵箱地址對應(yīng)多個(gè)開發(fā)者,這種情況是指“一個(gè)郵箱地址”是公共郵箱(郵件列表地址)或者代表了特殊標(biāo)識(shí),例如 platform-help-inbox@eclipse.com 和 nobody@mozilla.org.前者可以被看作是問題報(bào)告分發(fā)過程中的 HUB,而后者則是代表了目前這個(gè)問題報(bào)告沒有指派,任何人都可以嘗試解決這個(gè)問題.在研究問題報(bào)告分配任務(wù)時(shí),如果目的是將問題報(bào)告分配給具體的真實(shí)開發(fā)者,那么“多對一”將引入噪音.多個(gè)郵箱地址對應(yīng)一個(gè)開發(fā)者,這是因?yàn)殚_發(fā)者擁有多個(gè)賬戶.這些賬戶的使用場景可能不同,例如,私人郵箱和公司郵箱;或者開發(fā)者所屬單位發(fā)生了變化,即開發(fā)者跳槽了,因此擁有多個(gè)賬戶.在研究開發(fā)者工作效率或者開發(fā)者網(wǎng)絡(luò)時(shí),“一對多”將使結(jié)果產(chǎn)生偏差.

    3.3.3 版本控制數(shù)據(jù)中關(guān)于作者與提交者的問題

    在版本控制系統(tǒng)的提交日志中,代碼提交者(committer)和代碼作者(author)代表了兩種不同的身份.Git將代碼提交者和代碼作者分別用committer和author記錄.但是SVN和CVS并沒有區(qū)分這兩種不同的身份.在SVN和CVS中,只存在author這個(gè)域,但是author實(shí)際記錄的卻是代碼提交者.因此,如果按照Git的習(xí)慣去理解SVN和CVS的數(shù)據(jù),以為author記錄的是代碼作者,那么就對數(shù)據(jù)有了誤解,產(chǎn)生了錯(cuò)誤的假設(shè).

    4 數(shù)據(jù)質(zhì)量問題的發(fā)現(xiàn)和修正

    本節(jié)回答第2個(gè)研究問題:如何發(fā)現(xiàn)和解決軟件開發(fā)活動(dòng)數(shù)據(jù)的質(zhì)量問題?

    4.1 問題的發(fā)現(xiàn)

    在前面的分析中可以看出,有的數(shù)據(jù)質(zhì)量問題很容易理解,比較容易發(fā)現(xiàn),例如問題報(bào)告的創(chuàng)建時(shí)間錯(cuò)誤,通過常識(shí)和統(tǒng)計(jì)分析及數(shù)據(jù)可視化可以發(fā)現(xiàn);但有的數(shù)據(jù)質(zhì)量問題比較隱蔽,例如未來數(shù)據(jù)泄露問題,需要對數(shù)據(jù)上下文有清楚的理解.

    4.1.1 理解數(shù)據(jù)上下文

    對于數(shù)據(jù)產(chǎn)生的上下文的理解,是應(yīng)用數(shù)據(jù)的基礎(chǔ).在第 3.3節(jié)中,我們反復(fù)強(qiáng)調(diào)了理解數(shù)據(jù)上下文的重要性.對數(shù)據(jù)理解不重復(fù)或者存在誤解,都會(huì)對研究結(jié)果產(chǎn)生影響.Mockus[19]認(rèn)為,理解數(shù)據(jù)產(chǎn)生的上下文應(yīng)至少包含以下幾點(diǎn):1) 數(shù)據(jù)產(chǎn)生的方式,例如數(shù)據(jù)是由系統(tǒng)自動(dòng)產(chǎn)生還是人工輸入、是否存在缺省值;2) 數(shù)據(jù)是否存在修改/刪除/過濾/缺損的情況,以及這些被修改/刪除/過濾/缺損的數(shù)據(jù)對結(jié)果是否有影響.

    以“任務(wù)完成時(shí)間”的陷阱為例.在一般情況下,問題報(bào)告是在開發(fā)者解決了對應(yīng)的問題后,手動(dòng)將問題報(bào)告關(guān)閉并標(biāo)記為“已解決”.但是 Zheng等人發(fā)現(xiàn)一天之內(nèi)解決上百個(gè)問題報(bào)告,這已經(jīng)不是正常情況下的處理流程.據(jù)他們發(fā)現(xiàn),這種現(xiàn)象一般是由腳本批處理造成的.有 3個(gè)原因?qū)е铝诉@種特殊的問題報(bào)告處理流程:第一,問題報(bào)告由其他系統(tǒng)進(jìn)行管理,兩邊系統(tǒng)進(jìn)行數(shù)據(jù)同步,批量關(guān)閉了報(bào)告;第二,某個(gè)時(shí)間點(diǎn)集中清理問題追蹤系統(tǒng)中遺留的長期未解決的問題,將這些報(bào)告批量關(guān)閉;第三,當(dāng)版本控制系統(tǒng)中的問題修復(fù)了,其關(guān)聯(lián)的問題報(bào)告可能會(huì)被批量關(guān)閉.這3種情況下,數(shù)據(jù)都是系統(tǒng)自動(dòng)處理,而非人工手動(dòng)輸入.這就是因?yàn)閷?shù)據(jù)產(chǎn)生的方式理解不充分而產(chǎn)生的數(shù)據(jù)質(zhì)量問題.

    4.1.2 統(tǒng)計(jì)分析及數(shù)據(jù)可視化

    發(fā)現(xiàn)問題的一個(gè)有效手段是統(tǒng)計(jì)分析.最簡單地,統(tǒng)計(jì)數(shù)據(jù)的平均值、中位數(shù)、最大值、最小值、四分位數(shù),就可以對數(shù)據(jù)的分布有一個(gè)大概的認(rèn)識(shí).在這個(gè)過程中,如果有分布非常不均衡的現(xiàn)象,一些突出的問題已經(jīng)可以被識(shí)別出來,例如郵箱地址問題中的一對多問題.此外,還可以通過擬合一些概率分布模型來發(fā)現(xiàn)數(shù)據(jù)中的異常值.以“任務(wù)完成時(shí)間”的陷阱為例,Zheng等人通過泊松分布定位出了異常的“任務(wù)完成時(shí)間”.

    數(shù)據(jù)可視化是數(shù)據(jù)分析中一個(gè)有效的技術(shù)手段[20].當(dāng)數(shù)據(jù)以直觀的圖形形式展示在分析者面前時(shí),分析者往往能夠一眼洞悉數(shù)據(jù)背后隱藏的信息并轉(zhuǎn)化知識(shí)以及智慧[21].通過數(shù)據(jù)可視化,可以對數(shù)據(jù)的整體走向有一個(gè)清楚的認(rèn)識(shí),對于其中的異常點(diǎn)也能夠輕而易舉的捕捉到.例如,在揭示“任務(wù)完成時(shí)間”陷阱的過程中,Zheng等人通過數(shù)據(jù)可視化展示出了該數(shù)據(jù)質(zhì)量問題日益嚴(yán)重的發(fā)展趨勢.另外,在可視化問題追蹤數(shù)據(jù)的過程中找到了1970年這個(gè)異常點(diǎn),因此發(fā)現(xiàn)了問題報(bào)告的創(chuàng)建時(shí)間錯(cuò)誤.

    4.2 問題的修正

    在發(fā)現(xiàn)了軟件開發(fā)活動(dòng)數(shù)據(jù)的質(zhì)量問題后,可以嘗試通過兩種方法對問題數(shù)據(jù)進(jìn)行修正來降低數(shù)據(jù)質(zhì)量問題帶來的負(fù)面影響,即利用冗余數(shù)據(jù)進(jìn)行修正和挖掘用戶行為模式進(jìn)行修正.所幸,豐富的軟件開發(fā)活動(dòng)數(shù)據(jù)資源使得這兩種數(shù)據(jù)修正方式成為可能.這兩種數(shù)據(jù)修正方法分別適用于不同的研究問題和背景:利用冗余數(shù)據(jù)進(jìn)行修正的方法能夠很好地適用于時(shí)間存在問題的數(shù)據(jù),例如“任務(wù)完成時(shí)間”陷阱;挖掘用戶行為模式進(jìn)行修正適用于需要進(jìn)行用戶身份識(shí)別的問題,例如郵箱地址的問題.數(shù)據(jù)問題的修正方法與研究問題和背景密切相關(guān),仔細(xì)分辨研究問題的動(dòng)機(jī)、背景,了解數(shù)據(jù)產(chǎn)生的上下文,不僅可以發(fā)現(xiàn)問題,也是修正數(shù)據(jù)必不可少的步驟.

    4.2.1 利用冗余數(shù)據(jù)進(jìn)行修正

    冗余數(shù)據(jù)是指,軟件開發(fā)活動(dòng)數(shù)據(jù)中與原數(shù)據(jù)用途、含義相近的數(shù)據(jù).在軟件開發(fā)活動(dòng)數(shù)據(jù)中,一項(xiàng)開發(fā)活動(dòng)可能在多個(gè)不同的系統(tǒng)或者相近的活動(dòng)中留下痕跡.這些就是互為冗余的數(shù)據(jù).特別強(qiáng)調(diào),這里的冗余并非貶義詞,而是指數(shù)據(jù)的意義相近(并非完全相同需要去除的冗余數(shù)據(jù)).

    以“任務(wù)完成時(shí)間”的陷阱為例.冗余數(shù)據(jù)可能存在于同一個(gè)系統(tǒng)中,也可能存在于不同的系統(tǒng)中.“任務(wù)完成時(shí)間”的陷阱中,有問題的數(shù)據(jù)是問題報(bào)告被標(biāo)記為“已解決”的時(shí)間.這個(gè)數(shù)據(jù)原本是想表示該問題被解決的時(shí)間.但是當(dāng)它出現(xiàn)了問題,它就并不能起到應(yīng)有的作用了.因此,從這個(gè)數(shù)據(jù)原本表示的含義出發(fā),結(jié)合“已解決”時(shí)間產(chǎn)生的上下文,即與該數(shù)據(jù)相關(guān)的軟件開發(fā)活動(dòng),分別在同一個(gè)系統(tǒng)和不同的系統(tǒng)中尋找意思相近的數(shù)據(jù).在同一個(gè)系統(tǒng)中,即問題追蹤系統(tǒng)中,每一個(gè)問題報(bào)告的最后一條評論時(shí)間基本可以等視為問題被解決的時(shí)間.因?yàn)楫?dāng)一個(gè)問題被解決后,就很少會(huì)有人再去關(guān)注它、討論它.那么就可以將原先錯(cuò)誤的“任務(wù)完成時(shí)間”修改為更為準(zhǔn)確的問題報(bào)告最后一條評論時(shí)間.在不同的系統(tǒng)當(dāng)中,例如版本控制系統(tǒng),與該問題報(bào)告對應(yīng)的代碼的提交時(shí)間可以等視為問題為解決的時(shí)間.因?yàn)橥ǔG闆r下的處理流程就是:在代碼庫中提交了代碼修改,然后將問題報(bào)告標(biāo)記為“已解決”.這些都是從數(shù)據(jù)的含義出發(fā),理解了開發(fā)實(shí)踐過程,找到的解決方法.

    這種方法也可以應(yīng)用到問題報(bào)告的創(chuàng)建時(shí)間的修正上,例如,可以用問題報(bào)告的第1條評論的時(shí)間或者第1次信息被修改的時(shí)候來預(yù)估問題報(bào)告的創(chuàng)建時(shí)間.利用冗余數(shù)據(jù)進(jìn)行修正的方法在修正軟件開發(fā)活動(dòng)的時(shí)間上具有一定的通用性,因?yàn)檐浖_發(fā)活動(dòng)是一系列連貫的活動(dòng),根據(jù)該項(xiàng)活動(dòng)前后的活動(dòng)數(shù)據(jù),就可以對原來錯(cuò)誤的數(shù)據(jù)進(jìn)行修正.

    4.2.2 挖掘用戶行為模式進(jìn)行修正

    軟件開發(fā)活動(dòng)數(shù)據(jù)記錄了軟件開發(fā)過程中開發(fā)者的一系列活動(dòng).軟件開發(fā)是一項(xiàng)連續(xù)的活動(dòng),每一個(gè)行為或活動(dòng)不可能單獨(dú)存在,也不會(huì)突然發(fā)生巨大的改變.我們假定一個(gè)用戶的行為模式是特定的,那么我們可以從歷史數(shù)據(jù)中挖掘出用戶的行為模式,進(jìn)而對問題數(shù)據(jù)進(jìn)行修正.

    這里以郵箱地址的問題為例.在解決“多對一”的問題時(shí),除了根據(jù)用戶名的命名規(guī)則和相似度進(jìn)行識(shí)別,還可以通過挖掘用戶行為模式進(jìn)行修正.例如在版本控制數(shù)據(jù)中,這些郵件地址的作者或者代碼提交者如果有著相近或者相同的行為習(xí)慣,那么這些郵件地址就很有可能指向同一個(gè)人.在這個(gè)問題中,行為習(xí)慣包括編寫或者提交過的文件、提交日志的書寫風(fēng)格和工作時(shí)區(qū).如果多個(gè)不同的賬戶修改同樣的代碼文件,那他們可能指向同一個(gè)人.不同的開發(fā)者有著不同的代碼風(fēng)格,也有著不同的代碼日志風(fēng)格,如果多個(gè)賬戶的代碼提交日志的書寫風(fēng)格類似,那么他們可能指向同一個(gè)人.假定開發(fā)者的物理位置不會(huì)頻繁發(fā)生改變,那么如果多個(gè),例如有相同書寫風(fēng)格的賬戶的物理位置相近,他們就更可能指向同一個(gè)人,而在版本控制數(shù)據(jù)中,該信息可以從時(shí)區(qū)信息中提取出來.

    同樣地,在識(shí)別“一對多”問題時(shí),也同樣可以通過挖掘用戶行為模式定位出那些公共賬號(hào),例如工作時(shí)區(qū).在開源開發(fā)中,開發(fā)者遍布世界各地.當(dāng)一個(gè)郵件地址對應(yīng)的時(shí)區(qū)信息經(jīng)常發(fā)生變化,具有較大不確定性,那么該賬號(hào)就很有可能是一個(gè)公共賬號(hào).

    5 總結(jié)與展望

    高質(zhì)量的數(shù)據(jù)是對軟件開發(fā)實(shí)踐進(jìn)行分析、預(yù)測、推薦的基礎(chǔ).隨著越來越多的工作圍繞軟件活動(dòng)開發(fā)數(shù)據(jù)展開,也逐漸有一些工作認(rèn)識(shí)到數(shù)據(jù)質(zhì)量的重要性并發(fā)現(xiàn)了數(shù)據(jù)中潛在的數(shù)據(jù)質(zhì)量問題.然而,人們對于軟件數(shù)據(jù)質(zhì)量問題的關(guān)注度還遠(yuǎn)不能匹配數(shù)據(jù)本身的重要性.因此,本文通過廣泛的文獻(xiàn)調(diào)研并深入分析數(shù)據(jù),總結(jié)出了9類數(shù)據(jù)質(zhì)量問題,并從發(fā)現(xiàn)問題和解決問題方面分別提出了建議.

    我們相信,隨著智能化軟件開發(fā)的蓬勃發(fā)展,數(shù)據(jù)質(zhì)量問題會(huì)得到越來越多的關(guān)注(鑒于智能軟件開發(fā)對于數(shù)據(jù)的依賴).同時(shí)希望有越來越多的努力構(gòu)建出可靠的數(shù)據(jù)集,或者構(gòu)建相應(yīng)的方法來產(chǎn)生可靠的數(shù)據(jù)集.未來工作我們將重點(diǎn)關(guān)注用自動(dòng)化的方法來檢測和修正問題數(shù)據(jù).

    猜你喜歡
    開發(fā)者代碼報(bào)告
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    一圖看懂十九大報(bào)告
    報(bào)告
    16%游戲開發(fā)者看好VR
    CHIP新電腦(2016年3期)2016-03-10 13:06:42
    報(bào)告
    iOS開發(fā)者調(diào)查
    電腦迷(2015年8期)2015-05-30 12:27:10
    iOS開發(fā)者調(diào)查
    電腦迷(2015年4期)2015-05-30 05:24:09
    一本精品99久久精品77| 国产精品一区二区性色av| 人人妻,人人澡人人爽秒播| 国产精品,欧美在线| 午夜亚洲福利在线播放| 蜜桃亚洲精品一区二区三区| 久久久久免费精品人妻一区二区| 此物有八面人人有两片| 噜噜噜噜噜久久久久久91| 最近在线观看免费完整版| 国产av一区在线观看免费| 国产成人freesex在线 | 91精品国产九色| 啦啦啦观看免费观看视频高清| 伦理电影大哥的女人| 成人三级黄色视频| 在线观看美女被高潮喷水网站| 在线免费观看不下载黄p国产| 乱码一卡2卡4卡精品| 白带黄色成豆腐渣| 婷婷色综合大香蕉| 久久人人爽人人爽人人片va| 一进一出好大好爽视频| 极品教师在线视频| 日韩 亚洲 欧美在线| 麻豆精品久久久久久蜜桃| 国产成人aa在线观看| 狠狠狠狠99中文字幕| 女人十人毛片免费观看3o分钟| 久久6这里有精品| 国产精品,欧美在线| 久久99热这里只有精品18| 久久精品人妻少妇| 国语自产精品视频在线第100页| 亚洲av电影不卡..在线观看| 最近2019中文字幕mv第一页| 免费av毛片视频| 五月玫瑰六月丁香| 在线观看一区二区三区| 看非洲黑人一级黄片| 亚洲国产精品sss在线观看| 国产熟女欧美一区二区| 黄色一级大片看看| 国内少妇人妻偷人精品xxx网站| h日本视频在线播放| 精品不卡国产一区二区三区| av.在线天堂| 国内精品美女久久久久久| 亚洲国产高清在线一区二区三| 欧美日韩综合久久久久久| 亚洲精品日韩在线中文字幕 | 亚洲欧美精品自产自拍| 日韩欧美精品v在线| 久久久久久伊人网av| 欧美精品国产亚洲| 亚洲欧美日韩卡通动漫| 日韩高清综合在线| 极品教师在线视频| 桃色一区二区三区在线观看| 高清毛片免费看| 久久精品国产亚洲网站| 一夜夜www| 插阴视频在线观看视频| 亚洲av不卡在线观看| 亚洲天堂国产精品一区在线| 少妇高潮的动态图| 人妻夜夜爽99麻豆av| 国产男靠女视频免费网站| 草草在线视频免费看| 床上黄色一级片| 国产黄色小视频在线观看| av卡一久久| 舔av片在线| 久久九九热精品免费| 亚洲欧美清纯卡通| 别揉我奶头~嗯~啊~动态视频| aaaaa片日本免费| 精品久久久久久久末码| 免费黄网站久久成人精品| 91在线观看av| 日本-黄色视频高清免费观看| 99在线视频只有这里精品首页| 亚洲欧美清纯卡通| 国产中年淑女户外野战色| 男女那种视频在线观看| 看免费成人av毛片| 又粗又爽又猛毛片免费看| 99久久中文字幕三级久久日本| 国产一区二区亚洲精品在线观看| 91在线精品国自产拍蜜月| 精品人妻偷拍中文字幕| 日韩成人伦理影院| 国产精品久久视频播放| 在现免费观看毛片| 午夜精品国产一区二区电影 | 丝袜喷水一区| 啦啦啦韩国在线观看视频| 免费看光身美女| 精品一区二区三区视频在线观看免费| 日韩人妻高清精品专区| 亚洲精品日韩av片在线观看| www.色视频.com| 久久人人爽人人爽人人片va| 成人午夜高清在线视频| 午夜福利在线观看吧| a级毛色黄片| 校园春色视频在线观看| 午夜免费男女啪啪视频观看 | 亚洲精品国产av成人精品 | 18禁在线播放成人免费| 99热这里只有精品一区| 我的老师免费观看完整版| 综合色av麻豆| 老司机午夜福利在线观看视频| 色综合色国产| 变态另类丝袜制服| 99热6这里只有精品| 日日摸夜夜添夜夜添av毛片| www.色视频.com| 99riav亚洲国产免费| 精品久久久久久久久久免费视频| 国内精品美女久久久久久| 亚洲内射少妇av| 美女高潮的动态| 国产伦在线观看视频一区| 精品久久久久久久久亚洲| 美女内射精品一级片tv| 波多野结衣巨乳人妻| 国产精品无大码| 天天躁日日操中文字幕| 日日摸夜夜添夜夜添小说| 国产av在哪里看| 亚洲av第一区精品v没综合| 在线播放国产精品三级| 97碰自拍视频| videossex国产| 啦啦啦韩国在线观看视频| 国产av在哪里看| 免费搜索国产男女视频| 精品久久久久久久人妻蜜臀av| av中文乱码字幕在线| 精品免费久久久久久久清纯| 久久久a久久爽久久v久久| 在线观看av片永久免费下载| 久久韩国三级中文字幕| 久久久久久久亚洲中文字幕| 欧美日韩在线观看h| 精品久久久久久久末码| 久久久久久久久中文| 亚洲国产精品sss在线观看| 精品久久久久久久末码| 99久久精品一区二区三区| 无遮挡黄片免费观看| 精品久久久久久久末码| 亚洲国产日韩欧美精品在线观看| 亚洲美女视频黄频| 99久久无色码亚洲精品果冻| 日日摸夜夜添夜夜添小说| 亚洲精品日韩av片在线观看| 国内精品宾馆在线| 国产精品乱码一区二三区的特点| 亚洲av成人av| 美女高潮的动态| 日本成人三级电影网站| 嫩草影院精品99| 国产精品久久电影中文字幕| 成人av一区二区三区在线看| 天天躁日日操中文字幕| 亚洲人成网站在线观看播放| www.色视频.com| 日韩 亚洲 欧美在线| 久久鲁丝午夜福利片| 99久久中文字幕三级久久日本| 国产中年淑女户外野战色| 黄色配什么色好看| 精品久久国产蜜桃| 亚洲av不卡在线观看| 国产午夜福利久久久久久| 黄色视频,在线免费观看| 国产久久久一区二区三区| 国产高清视频在线播放一区| 国产成人a∨麻豆精品| 大又大粗又爽又黄少妇毛片口| 国产三级在线视频| 国内精品宾馆在线| 亚洲av五月六月丁香网| 久久久久久国产a免费观看| 亚洲av不卡在线观看| 人妻夜夜爽99麻豆av| 少妇熟女aⅴ在线视频| 国产极品精品免费视频能看的| or卡值多少钱| 真实男女啪啪啪动态图| eeuss影院久久| 99在线视频只有这里精品首页| 伦精品一区二区三区| 丰满的人妻完整版| 性欧美人与动物交配| 亚洲人成网站在线播放欧美日韩| 我要看日韩黄色一级片| 又黄又爽又刺激的免费视频.| 欧美又色又爽又黄视频| 好男人在线观看高清免费视频| 久久久久免费精品人妻一区二区| 久久中文看片网| 国产69精品久久久久777片| 熟女电影av网| 亚洲性夜色夜夜综合| 亚洲久久久久久中文字幕| 亚洲成人久久性| 欧美在线一区亚洲| 亚洲欧美成人精品一区二区| 十八禁网站免费在线| 欧美中文日本在线观看视频| 国内少妇人妻偷人精品xxx网站| 男女视频在线观看网站免费| 熟妇人妻久久中文字幕3abv| 一进一出好大好爽视频| 蜜桃亚洲精品一区二区三区| 人人妻,人人澡人人爽秒播| 久久久久国内视频| 亚洲最大成人中文| 亚洲精品粉嫩美女一区| 少妇的逼好多水| 亚洲久久久久久中文字幕| 又粗又爽又猛毛片免费看| 国模一区二区三区四区视频| 久久久久国产精品人妻aⅴ院| 国产精品三级大全| 成人美女网站在线观看视频| 菩萨蛮人人尽说江南好唐韦庄 | 国产成人91sexporn| 中文字幕精品亚洲无线码一区| 国语自产精品视频在线第100页| a级毛片a级免费在线| 色av中文字幕| 夜夜看夜夜爽夜夜摸| 一夜夜www| 黄色欧美视频在线观看| 国产精品av视频在线免费观看| 毛片女人毛片| 99精品在免费线老司机午夜| 亚洲成人久久性| 日韩欧美三级三区| 禁无遮挡网站| 最近最新中文字幕大全电影3| 精品福利观看| 国产一区二区在线观看日韩| 欧美一区二区亚洲| 久久久国产成人精品二区| 91狼人影院| 久久精品国产自在天天线| 亚洲婷婷狠狠爱综合网| 国产精品一区www在线观看| 国产久久久一区二区三区| 人妻制服诱惑在线中文字幕| 免费看a级黄色片| 天堂√8在线中文| 观看美女的网站| 亚洲图色成人| 久久精品91蜜桃| 亚洲性夜色夜夜综合| 久久精品国产亚洲网站| 久久久久久久久中文| av在线观看视频网站免费| 狠狠狠狠99中文字幕| av在线老鸭窝| 久久久久久九九精品二区国产| 我要搜黄色片| 日本三级黄在线观看| 中文亚洲av片在线观看爽| a级毛片免费高清观看在线播放| 精品无人区乱码1区二区| 黄色一级大片看看| 91午夜精品亚洲一区二区三区| 欧美性感艳星| 国产精品久久久久久久久免| 国产熟女欧美一区二区| 久久久久久国产a免费观看| 99热全是精品| 精品国内亚洲2022精品成人| 国产一级毛片七仙女欲春2| 精品人妻视频免费看| 国产成人精品久久久久久| 露出奶头的视频| 内地一区二区视频在线| 人妻夜夜爽99麻豆av| 一区二区三区四区激情视频 | 免费在线观看成人毛片| 精品人妻一区二区三区麻豆 | av中文乱码字幕在线| 久久久久国内视频| 免费av观看视频| 少妇丰满av| 毛片女人毛片| 日韩成人伦理影院| 99热网站在线观看| 欧美成人一区二区免费高清观看| av黄色大香蕉| 成年女人看的毛片在线观看| 久久人人爽人人爽人人片va| 成人漫画全彩无遮挡| 国模一区二区三区四区视频| 久久久国产成人精品二区| 久久久精品大字幕| 99久久久亚洲精品蜜臀av| 国产精品三级大全| 少妇人妻精品综合一区二区 | 欧美高清性xxxxhd video| 一个人看的www免费观看视频| 久久精品国产亚洲av香蕉五月| 国产精品嫩草影院av在线观看| 不卡视频在线观看欧美| 欧美一区二区亚洲| 亚洲成av人片在线播放无| 精品久久久久久久久av| 欧美最黄视频在线播放免费| 国产成人福利小说| 亚洲av电影不卡..在线观看| 欧美成人一区二区免费高清观看| 亚洲国产精品合色在线| 欧美一区二区亚洲| 亚洲人成网站高清观看| 搡老岳熟女国产| 亚洲熟妇熟女久久| 国内少妇人妻偷人精品xxx网站| 国产一区二区在线av高清观看| 少妇被粗大猛烈的视频| 精品人妻偷拍中文字幕| 国产精品乱码一区二三区的特点| 亚洲成a人片在线一区二区| 国产aⅴ精品一区二区三区波| 久久久欧美国产精品| .国产精品久久| 18禁黄网站禁片免费观看直播| 99在线人妻在线中文字幕| 高清毛片免费观看视频网站| 久久99热6这里只有精品| 麻豆一二三区av精品| 国产乱人视频| 变态另类丝袜制服| 国产淫片久久久久久久久| 国产在视频线在精品| 欧美三级亚洲精品| 精品一区二区免费观看| 欧美激情在线99| 久久99热6这里只有精品| av专区在线播放| 欧美三级亚洲精品| 久久久成人免费电影| 日本a在线网址| 能在线免费观看的黄片| 淫妇啪啪啪对白视频| 九九在线视频观看精品| 少妇被粗大猛烈的视频| 搡老妇女老女人老熟妇| 日本撒尿小便嘘嘘汇集6| 国产av麻豆久久久久久久| 99精品在免费线老司机午夜| 亚洲欧美日韩东京热| 不卡视频在线观看欧美| 寂寞人妻少妇视频99o| 一a级毛片在线观看| 久久综合国产亚洲精品| 免费在线观看成人毛片| 国产探花在线观看一区二区| 国产极品精品免费视频能看的| 国产不卡一卡二| 男女视频在线观看网站免费| 女人被狂操c到高潮| 久久精品国产亚洲av涩爱 | 亚洲内射少妇av| 成人无遮挡网站| 中出人妻视频一区二区| 欧美日韩国产亚洲二区| 此物有八面人人有两片| 免费观看人在逋| 老师上课跳d突然被开到最大视频| 悠悠久久av| 欧美性感艳星| 老司机午夜福利在线观看视频| 国产精品一区二区三区四区免费观看 | 久久鲁丝午夜福利片| 男人舔女人下体高潮全视频| 在现免费观看毛片| a级一级毛片免费在线观看| 亚洲真实伦在线观看| 亚洲熟妇中文字幕五十中出| а√天堂www在线а√下载| 欧美丝袜亚洲另类| 看片在线看免费视频| 欧美日韩在线观看h| 一区二区三区免费毛片| 精品国内亚洲2022精品成人| 搡老岳熟女国产| 毛片一级片免费看久久久久| 乱码一卡2卡4卡精品| av.在线天堂| 国产av不卡久久| 国产片特级美女逼逼视频| 欧美日本视频| 欧美bdsm另类| 99riav亚洲国产免费| 亚洲欧美日韩东京热| 久久中文看片网| 非洲黑人性xxxx精品又粗又长| 免费无遮挡裸体视频| 久久婷婷人人爽人人干人人爱| 日本欧美国产在线视频| 日日摸夜夜添夜夜添小说| 亚洲成人中文字幕在线播放| 欧美成人a在线观看| 国产探花在线观看一区二区| 午夜影院日韩av| 亚洲高清免费不卡视频| 可以在线观看毛片的网站| 精品人妻视频免费看| 亚洲高清免费不卡视频| 成人欧美大片| 一级a爱片免费观看的视频| 99久久无色码亚洲精品果冻| 国产视频内射| 97超碰精品成人国产| 国产伦精品一区二区三区视频9| 免费观看的影片在线观看| 久久久久久久久中文| 国产真实伦视频高清在线观看| 精品免费久久久久久久清纯| 国产久久久一区二区三区| 日本-黄色视频高清免费观看| 国产成人福利小说| 色视频www国产| .国产精品久久| 亚洲国产欧美人成| 久久久国产成人精品二区| 欧美日韩综合久久久久久| 99在线人妻在线中文字幕| 一级av片app| 日本黄色视频三级网站网址| 97在线视频观看| 久久草成人影院| 寂寞人妻少妇视频99o| 一级毛片久久久久久久久女| 久久精品国产亚洲av天美| 1000部很黄的大片| 超碰av人人做人人爽久久| 亚洲久久久久久中文字幕| av.在线天堂| 欧美性猛交╳xxx乱大交人| 午夜精品国产一区二区电影 | 日韩中字成人| 看十八女毛片水多多多| 免费不卡的大黄色大毛片视频在线观看 | 亚洲成人精品中文字幕电影| 欧美xxxx黑人xx丫x性爽| 精品久久久久久久久久免费视频| 日本-黄色视频高清免费观看| 欧美日韩乱码在线| 欧美潮喷喷水| 久久亚洲精品不卡| 国产69精品久久久久777片| 如何舔出高潮| 特大巨黑吊av在线直播| 永久网站在线| 欧美成人一区二区免费高清观看| 久久亚洲国产成人精品v| 91麻豆精品激情在线观看国产| 久久99热6这里只有精品| 国产极品精品免费视频能看的| 亚洲av第一区精品v没综合| 亚洲人成网站高清观看| 成人三级黄色视频| 少妇猛男粗大的猛烈进出视频 | 一级毛片电影观看 | 日韩一区二区视频免费看| 3wmmmm亚洲av在线观看| 在现免费观看毛片| 免费无遮挡裸体视频| 亚洲性夜色夜夜综合| 精品久久久噜噜| 一区福利在线观看| a级毛色黄片| 三级男女做爰猛烈吃奶摸视频| 亚洲精品国产成人久久av| 天堂影院成人在线观看| 国产av在哪里看| 日韩欧美精品免费久久| 国产亚洲精品综合一区在线观看| 日韩欧美一区二区三区在线观看| 国产视频内射| 精品熟女少妇av免费看| 综合色丁香网| 大又大粗又爽又黄少妇毛片口| 国产 一区精品| av女优亚洲男人天堂| 国语自产精品视频在线第100页| 国产精品日韩av在线免费观看| 亚洲第一电影网av| 久久国产乱子免费精品| 国产精品美女特级片免费视频播放器| 少妇高潮的动态图| 露出奶头的视频| 一本精品99久久精品77| 自拍偷自拍亚洲精品老妇| 我要搜黄色片| 国产乱人偷精品视频| 久久欧美精品欧美久久欧美| 男插女下体视频免费在线播放| 亚洲中文日韩欧美视频| 国产精品免费一区二区三区在线| 成人鲁丝片一二三区免费| 欧美日韩综合久久久久久| 日韩欧美免费精品| 人妻丰满熟妇av一区二区三区| 日本 av在线| 国产69精品久久久久777片| 日韩人妻高清精品专区| 99久国产av精品国产电影| 精品不卡国产一区二区三区| 天天躁日日操中文字幕| 国产伦在线观看视频一区| 国内揄拍国产精品人妻在线| 99热全是精品| 国产一级毛片七仙女欲春2| 日日摸夜夜添夜夜爱| 一个人看视频在线观看www免费| 久久精品综合一区二区三区| 欧美最黄视频在线播放免费| 日韩三级伦理在线观看| 中文字幕人妻熟人妻熟丝袜美| 日韩精品有码人妻一区| 精品午夜福利视频在线观看一区| 天天躁夜夜躁狠狠久久av| 亚洲四区av| 亚洲中文字幕日韩| 在线观看午夜福利视频| 小说图片视频综合网站| 色播亚洲综合网| 免费看光身美女| 一夜夜www| 少妇熟女aⅴ在线视频| 偷拍熟女少妇极品色| 久久久久久久久中文| 欧美精品国产亚洲| 精品久久久久久久久久久久久| 久久国产乱子免费精品| 久久人人爽人人片av| 三级国产精品欧美在线观看| 日韩高清综合在线| 国产视频一区二区在线看| 99riav亚洲国产免费| 小说图片视频综合网站| 精品久久久久久久末码| 99久久九九国产精品国产免费| 舔av片在线| 午夜免费男女啪啪视频观看 | 亚洲欧美精品综合久久99| 午夜影院日韩av| 国产69精品久久久久777片| 欧美+亚洲+日韩+国产| 亚洲欧美日韩高清专用| 在线观看免费视频日本深夜| 亚洲婷婷狠狠爱综合网| 国产黄片美女视频| 性插视频无遮挡在线免费观看| 国产毛片a区久久久久| 狠狠狠狠99中文字幕| 黄色一级大片看看| 欧美在线一区亚洲| 精品少妇黑人巨大在线播放 | 日韩精品青青久久久久久| 欧美色视频一区免费| 国产亚洲精品久久久久久毛片| 91久久精品国产一区二区成人| 国产精品国产高清国产av| 天天躁日日操中文字幕| 成人亚洲欧美一区二区av| 高清毛片免费观看视频网站| 免费观看在线日韩| 毛片女人毛片| 成年女人看的毛片在线观看| 插阴视频在线观看视频| 熟女电影av网| 18禁裸乳无遮挡免费网站照片| 人人妻人人澡人人爽人人夜夜 | 久久久成人免费电影| 久久久久精品国产欧美久久久| 国产高清激情床上av| 欧美另类亚洲清纯唯美| 黄片wwwwww| 高清毛片免费看| 免费电影在线观看免费观看| 尤物成人国产欧美一区二区三区| 亚洲av免费在线观看| 日韩一区二区视频免费看| 男女边吃奶边做爰视频| 天堂av国产一区二区熟女人妻| 九色成人免费人妻av| 国产欧美日韩精品一区二区| 精品久久久久久久久av| 在线国产一区二区在线| 亚洲最大成人av| av在线亚洲专区| 两个人视频免费观看高清| 三级经典国产精品| 99riav亚洲国产免费| 亚洲欧美精品自产自拍| 可以在线观看的亚洲视频| 男人舔奶头视频| 亚洲成a人片在线一区二区| 国产精品无大码| 高清毛片免费看| 亚洲精品色激情综合| 青春草视频在线免费观看| 国国产精品蜜臀av免费|