本發(fā)明涉及一種基于本體的推薦方法,特別涉及一種基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦方法。
背景技術(shù):
:文獻(xiàn)基于“喬冬春,劉曉燕,付曉東,等.一種基于本體的推薦系統(tǒng)模型[j].計(jì)算機(jī)工程,2014,40(11):282-287”中提出的一種基于本體的推薦方法。該方法提出一種基于本體的推薦系統(tǒng)模型。將本體引入到推薦系統(tǒng)中,使用owl語(yǔ)言對(duì)用戶和項(xiàng)目信息進(jìn)行描述,使用戶和項(xiàng)目具有語(yǔ)義信息的同時(shí),提高信息的結(jié)構(gòu)化描述水平。在推薦過(guò)程中,通過(guò)規(guī)則分析用戶行為信息并綜合考慮以提高模型的推薦質(zhì)量。實(shí)驗(yàn)結(jié)果證明,與傳統(tǒng)推薦模型相比,該模型在信息結(jié)構(gòu)化水平、語(yǔ)義描述等方面具有優(yōu)勢(shì)。采用該模型為用戶推薦項(xiàng)目能夠有效提高推薦的召回率和準(zhǔn)確率。但是該文獻(xiàn)中提出的推薦方法沒(méi)有給出推理機(jī)的支撐,當(dāng)用戶給定的信息不直接與推理結(jié)果關(guān)聯(lián)時(shí)會(huì)并不能給出推理結(jié)果,同時(shí),該方法也沒(méi)有在并發(fā)錯(cuò)誤測(cè)試工具推薦方面的應(yīng)用。技術(shù)實(shí)現(xiàn)要素:為了克服現(xiàn)有基于本體的推薦方法實(shí)用性差的不足,本發(fā)明提供一種基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦方法。該方法通過(guò)對(duì)現(xiàn)存并發(fā)錯(cuò)誤進(jìn)行研究,提取不同類型并發(fā)錯(cuò)誤的典型特點(diǎn),再對(duì)現(xiàn)存部分并發(fā)錯(cuò)誤測(cè)試工具進(jìn)行調(diào)研,研究不同測(cè)試工具的側(cè)重點(diǎn)和特點(diǎn),構(gòu)建并發(fā)錯(cuò)誤測(cè)試工具本體,同時(shí),根據(jù)并發(fā)錯(cuò)誤特點(diǎn)和并發(fā)錯(cuò)誤類型之間的聯(lián)系關(guān)系、測(cè)試工具側(cè)重點(diǎn)和并發(fā)程序之間的聯(lián)系關(guān)系,基于jena推理機(jī)建立規(guī)則文件對(duì)本體進(jìn)行完善,當(dāng)用戶給定的信息不直接與推理結(jié)果關(guān)聯(lián)時(shí)也能夠給出推理結(jié)果,最終實(shí)現(xiàn)基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦,實(shí)用性好。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案:一種基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦方法,其特點(diǎn)是包括以下步驟:步驟一、將并發(fā)錯(cuò)誤分為死鎖、數(shù)據(jù)競(jìng)爭(zhēng)、原子性違背以及順序違背四個(gè)大類,將數(shù)據(jù)競(jìng)爭(zhēng)進(jìn)一步分為寫-寫競(jìng)爭(zhēng)和讀-寫競(jìng)爭(zhēng),將原子性違背進(jìn)一步被分為單變量的原子性違背和多變量的原子性違背。使用protégé進(jìn)行本體構(gòu)建。步驟二、對(duì)現(xiàn)有的并發(fā)錯(cuò)誤測(cè)試工具進(jìn)行調(diào)研,找出不同的并發(fā)錯(cuò)誤測(cè)試工具的側(cè)重點(diǎn)和特點(diǎn)。步驟三、進(jìn)行本體構(gòu)建。構(gòu)建本體分成三個(gè)模塊,某些用戶清楚地知道待測(cè)程序可能存在的并發(fā)錯(cuò)誤類型或是要對(duì)待測(cè)程序進(jìn)行針對(duì)某種特定類型的并發(fā)錯(cuò)誤,使用模塊一,根據(jù)用戶給出的并發(fā)錯(cuò)誤類型進(jìn)行推薦,模塊一包括有bug實(shí)體、tool實(shí)體和problem實(shí)體。對(duì)于那些并不知道具體可能出現(xiàn)哪些類型的并發(fā)錯(cuò)誤的用戶使用模塊二或模塊三進(jìn)行推薦,模塊二給出了一些可能含有并發(fā)錯(cuò)誤程序的特征,模塊二根據(jù)程序含有的特征進(jìn)行推薦,模塊二包括有bug實(shí)體、tool實(shí)體、property實(shí)體和problem實(shí)體。如果用戶并不了解程序則使用模塊三進(jìn)行推薦,模塊三根據(jù)用戶的實(shí)際需求進(jìn)行推薦,模塊三包括有benefit實(shí)體、tool實(shí)體和problem實(shí)體。步驟四、使用jena推理機(jī)機(jī)制定義推理關(guān)系:在模塊一中,如果某工具a可對(duì)并發(fā)錯(cuò)誤b進(jìn)行檢測(cè),而用戶給出的待測(cè)程序c又恰好需要針對(duì)并發(fā)錯(cuò)誤b的檢測(cè),則為用戶推薦測(cè)試工具a。在模塊二中,如果某工具a可對(duì)并發(fā)錯(cuò)誤b進(jìn)行檢測(cè),而用戶給出的待測(cè)程序c又恰好需要針對(duì)并發(fā)錯(cuò)誤b的檢測(cè),則為用戶推薦測(cè)試工具a。在模塊三中,如果若用戶需要滿足性質(zhì)b、c、d的測(cè)試工具,而測(cè)試工具e恰好可滿足這些性質(zhì),則系統(tǒng)推薦使用工具e。根據(jù)上述的三條規(guī)則編寫生成規(guī)則文件后,將規(guī)則文件與protégé中的本體相關(guān)聯(lián),實(shí)現(xiàn)推薦。本發(fā)明的有益效果是:該方法通過(guò)對(duì)現(xiàn)存并發(fā)錯(cuò)誤進(jìn)行研究,提取不同類型并發(fā)錯(cuò)誤的典型特點(diǎn),再對(duì)現(xiàn)存部分并發(fā)錯(cuò)誤測(cè)試工具進(jìn)行調(diào)研,研究不同測(cè)試工具的側(cè)重點(diǎn)和特點(diǎn),構(gòu)建并發(fā)錯(cuò)誤測(cè)試工具本體,同時(shí),根據(jù)并發(fā)錯(cuò)誤特點(diǎn)和并發(fā)錯(cuò)誤類型之間的聯(lián)系關(guān)系、測(cè)試工具側(cè)重點(diǎn)和并發(fā)程序之間的聯(lián)系關(guān)系,基于jena推理機(jī)建立規(guī)則文件對(duì)本體進(jìn)行完善,當(dāng)用戶給定的信息不直接與推理結(jié)果關(guān)聯(lián)時(shí)也能夠給出推理結(jié)果,最終實(shí)現(xiàn)基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦,實(shí)用性好。本發(fā)明采用了來(lái)自卡耐基梅隆大學(xué)的一組包含有并發(fā)錯(cuò)誤的測(cè)試實(shí)例。首先是使用所有的測(cè)試工具對(duì)每個(gè)實(shí)例進(jìn)行測(cè)試,記錄所有成功找出錯(cuò)誤的工具耗時(shí),并計(jì)算平均耗時(shí)。判斷成功的標(biāo)準(zhǔn)就是使用推薦方法給出的工具進(jìn)行測(cè)試,若能成功找出錯(cuò)誤且耗時(shí)小于平均耗時(shí),則認(rèn)為推薦是成功的。由于加入了jena推理機(jī)的規(guī)則對(duì)本體進(jìn)行完善,當(dāng)用戶給定的信息不直接與推理結(jié)果關(guān)聯(lián)時(shí)也能夠給出推理結(jié)果。部分實(shí)驗(yàn)結(jié)果參考表1,計(jì)算可知,基于特定錯(cuò)誤類型進(jìn)行工具推薦模塊成功率達(dá)到88.71%,基于程序特征進(jìn)行工具推薦模塊成功率達(dá)到71.07%,基于用戶需求進(jìn)行工具推薦模塊成功率達(dá)到74.82%,平均成功率為78.2%。表1部分實(shí)驗(yàn)結(jié)果基于特定錯(cuò)誤類型基于程序特征類型基于用戶需求163.6%54.5%75%281.8%72.7%57.8%3100%62.5%66.3%483.3%66.7%89.3%5100%66.7%67.2%687.5%62.5%70%7100%63.3%67.5%880%100%88.4%9100%80%76.7%1090.9%81.8%90%下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作詳細(xì)說(shuō)明。附圖說(shuō)明圖1是本發(fā)明基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦方法的流程圖。圖2是本發(fā)明方法中并發(fā)錯(cuò)誤進(jìn)行分類之后的結(jié)構(gòu)圖。圖3是本發(fā)明方法中根據(jù)用戶對(duì)并發(fā)程序以及被測(cè)程序了解程度不同,把構(gòu)建的本體進(jìn)行劃分的構(gòu)架圖。圖4是本發(fā)明方法中模塊一本體的實(shí)體類關(guān)系圖。圖5是本發(fā)明方法中模塊二本體的實(shí)體類關(guān)系圖。圖6是本發(fā)明方法中模塊三本體的實(shí)體類關(guān)系圖。具體實(shí)施方式參照?qǐng)D1-6。本發(fā)明基于本體的并發(fā)錯(cuò)誤測(cè)試工具推薦方法具體步驟如下:首先通過(guò)對(duì)現(xiàn)存并發(fā)錯(cuò)誤進(jìn)行研究,提取不同類型并發(fā)錯(cuò)誤的典型特點(diǎn);然后對(duì)現(xiàn)存的并發(fā)錯(cuò)誤測(cè)試工具進(jìn)行調(diào)研,提取不同類型錯(cuò)誤的典型錯(cuò)誤;根據(jù)以上研究構(gòu)建根據(jù)用戶給出的并發(fā)錯(cuò)誤類型進(jìn)行推薦的模塊、根據(jù)程序含有的特征進(jìn)行推薦模塊、根據(jù)用戶需求進(jìn)行推薦的模塊共三個(gè)模塊的本體;并且基于jena推理機(jī)建立規(guī)則文件對(duì)本體進(jìn)行完善。對(duì)并行錯(cuò)誤進(jìn)行研究,通過(guò)對(duì)現(xiàn)有研究成果進(jìn)行分析和總結(jié),將并發(fā)錯(cuò)誤分為死鎖、數(shù)據(jù)競(jìng)爭(zhēng)、原子性違背以及順序違背四個(gè)大類,更進(jìn)一步還可以對(duì)數(shù)據(jù)競(jìng)爭(zhēng)進(jìn)一步分為寫-寫競(jìng)爭(zhēng)和讀-寫競(jìng)爭(zhēng),原子性違背可以進(jìn)一步被分類為單變量的原子性違背和多變量的原子性違背。使用protégé進(jìn)行本體的構(gòu)建,建立bug實(shí)體及其分支下的死鎖、數(shù)據(jù)競(jìng)爭(zhēng)、原子性違背、順序違背四個(gè)實(shí)例。參照表2和表3,對(duì)這些類型的并發(fā)錯(cuò)誤進(jìn)行進(jìn)一步研究,分析其特點(diǎn),通過(guò)對(duì)存在并發(fā)錯(cuò)誤的程序特點(diǎn)進(jìn)行研究,可以整理出一些與并發(fā)錯(cuò)誤有關(guān)的屬性,而這些屬性和并發(fā)錯(cuò)誤的類型存在著一對(duì)多的關(guān)系,屬性包括至少有一個(gè)線程處于等待狀態(tài)、至少有一個(gè)線程處于執(zhí)行狀態(tài)、至少有一個(gè)線程處于就緒狀態(tài)、所有線程都在等待一個(gè)被其它線程占用的鎖、至少有一個(gè)線程處于等待狀態(tài)超過(guò)一定可接受時(shí)間、所有線程都處于執(zhí)行狀態(tài)、沒(méi)有線程可以繼續(xù)執(zhí)行、線程數(shù)量大于空閑處理器內(nèi)核數(shù)量、有不正確或者非預(yù)期的結(jié)果出現(xiàn)、所有線程占用一個(gè)鎖、至少有線程占用一個(gè)鎖、對(duì)共享內(nèi)存訪問(wèn)來(lái)自多個(gè)線程、對(duì)共享內(nèi)存的訪問(wèn)中至少有一個(gè)是“寫”操作、對(duì)共享內(nèi)存的訪問(wèn)目標(biāo)內(nèi)存位置相同、共享內(nèi)存訪問(wèn)未受同步機(jī)制保護(hù)、共享內(nèi)存訪問(wèn)的目標(biāo)內(nèi)存地址只有一個(gè)、共享內(nèi)存訪問(wèn)的目標(biāo)內(nèi)存地址存在多個(gè)、對(duì)某一共享內(nèi)存的訪問(wèn)至少有兩個(gè),一個(gè)“讀”,一個(gè)“寫”,“讀”訪問(wèn)早于“寫”訪問(wèn)、對(duì)同一共享內(nèi)存至少有兩個(gè)“寫”訪問(wèn),中間沒(méi)有任何“讀”訪問(wèn)發(fā)生、對(duì)共享內(nèi)存的訪問(wèn)次序中至少有一個(gè)執(zhí)行次序是正確的、語(yǔ)句執(zhí)行具有原子性要求。使用protégé進(jìn)行本體的構(gòu)建,建立property實(shí)體及其分支下每個(gè)屬性的實(shí)例。表2并發(fā)錯(cuò)誤特征屬性整理表3完成了對(duì)并發(fā)錯(cuò)誤的研究之后本發(fā)明還對(duì)一些典型的并發(fā)錯(cuò)誤檢測(cè)工具(包括findbugs、jest、intelthreadchecker、atomfinder、keshmesh、relay、threadanalyzer、mtrat、doctorwatson、coverityprevent、pmd、valgrind、parallelinspector、unicon)進(jìn)行了研究,這些工具因?yàn)樗惴?、設(shè)計(jì)思想以及針對(duì)用戶群體不同有著不同的側(cè)重點(diǎn)和各自的特點(diǎn),結(jié)果參照表4。使用protégé進(jìn)行本體的構(gòu)建,建立tool實(shí)體及其分支下每個(gè)工具的實(shí)例,建立benefit實(shí)體以及每個(gè)側(cè)重點(diǎn)的實(shí)例。在進(jìn)行具體推理時(shí),建立problem實(shí)體以及相應(yīng)的實(shí)例。表4部分工具側(cè)重點(diǎn)整理完成了前期的準(zhǔn)備工作之后,本發(fā)明開(kāi)始進(jìn)行本體的構(gòu)建,由于使用的用戶對(duì)并發(fā)錯(cuò)誤了解程度不一,將構(gòu)建的本體分成了三個(gè)模塊,某些用戶清楚地知道待測(cè)程序可能存在的并發(fā)錯(cuò)誤類型或是要對(duì)待測(cè)程序進(jìn)行針對(duì)某種特定類型的并發(fā)錯(cuò)誤,對(duì)于這類用戶使用模塊一,根據(jù)用戶給出的并發(fā)錯(cuò)誤類型進(jìn)行推薦,此模塊中包括有bug實(shí)體、tool實(shí)體和problem實(shí)體。對(duì)于那些并不知道具體可能出現(xiàn)哪些類型的并發(fā)錯(cuò)誤的用戶可以使用模塊二或模塊三進(jìn)行推薦,模塊二給出了一些可能含有并發(fā)錯(cuò)誤程序的特征,模塊二可以根據(jù)程序含有的特征進(jìn)行推薦,此模塊包括此模塊中包括有bug實(shí)體、tool實(shí)體、property實(shí)體和problem實(shí)體。如果用戶并不了解程序即可使用模塊三進(jìn)行推薦,模塊三根據(jù)用戶的實(shí)際需求(可視化的報(bào)告、對(duì)java程序進(jìn)行檢測(cè)、對(duì)c語(yǔ)言程序進(jìn)行檢測(cè)、開(kāi)源)進(jìn)行推薦,模塊包括此模塊中包括有benefit實(shí)體、tool實(shí)體和problem實(shí)體。為了實(shí)現(xiàn)根據(jù)已知信息進(jìn)行推理,需要使用jena推理機(jī)機(jī)制,在模塊一中,定義推理關(guān)系:如果某工具a可對(duì)并發(fā)錯(cuò)誤b進(jìn)行檢測(cè),而用戶給出的待測(cè)程序c又恰好需要針對(duì)并發(fā)錯(cuò)誤b的檢測(cè),則為用戶推薦測(cè)試工具a。在模塊二中,定義推理關(guān)系:如果某工具a可對(duì)并發(fā)錯(cuò)誤b進(jìn)行檢測(cè),而用戶給出的待測(cè)程序c又恰好需要針對(duì)并發(fā)錯(cuò)誤b的檢測(cè),則為用戶推薦測(cè)試工具a。在模塊三中,定義推理關(guān)系:如果若用戶需要滿足性質(zhì)b,c,d的測(cè)試工具,而測(cè)試工具e恰好可以滿足這些性質(zhì),則系統(tǒng)將推薦使用工具e。根據(jù)上述的三條規(guī)則編寫生成規(guī)則文件后,將規(guī)則文件與protégé中的本體相關(guān)聯(lián),就可以實(shí)現(xiàn)推薦。另外,還可以同時(shí)使用多個(gè)模塊進(jìn)行推薦,使推薦的結(jié)果更加可靠。當(dāng)前第1頁(yè)12