王 崢,程平遠(yuǎn)
(南陽職業(yè)學(xué)院,河南 南陽 474500)
通常情況下可將軟件社區(qū)分為兩大部分,即開發(fā)社區(qū)和應(yīng)用社區(qū),與軟件工程相關(guān)的內(nèi)容都可以被涵蓋其中。而軟件工程的主體部分可以是多種文本形式的,也就具有更為豐富的語義。在構(gòu)建軟件工程開源生態(tài)的大數(shù)據(jù)體系時,一定要充分考慮到開發(fā)的具體環(huán)節(jié)、軟件的鏡像和應(yīng)用、開發(fā)制品、問題咨詢以及應(yīng)用過程等因素,并且能夠覆蓋GitHub,Docker Hub和Apache等多種類型的主流開源社區(qū),使相關(guān)人員對軟件工程進(jìn)行實驗和研究工作時,能夠以此為依據(jù)從全局的角度去考慮各類問題。在所構(gòu)建的軟件工程開源生態(tài)的大數(shù)據(jù)體系中,主要總結(jié)并概括了3種數(shù)據(jù)的具體類型:開發(fā)數(shù)據(jù)、應(yīng)用數(shù)據(jù)和交付數(shù)據(jù)。
研究中所構(gòu)建的大數(shù)據(jù)采集處理框架具有模式多樣以及增量式的顯著優(yōu)勢,而對于各種類型的軟件數(shù)據(jù)都能夠高效地完成收集、分析、處理和整合等工作。在研究中主要以定向采集、有效感知、增量檢測和多元關(guān)聯(lián)等先進(jìn)技術(shù)為基礎(chǔ),有針對性地設(shè)置了分布式爬蟲,可以直接下載相應(yīng)的數(shù)據(jù)包,并且也能夠獲取到局域應(yīng)用程序接口和網(wǎng)頁爬蟲的相關(guān)信息數(shù)據(jù)。在下載數(shù)據(jù)包時,很多軟件社區(qū)不僅會壓縮并且保存以往獲得的歷史數(shù)據(jù),還會將數(shù)據(jù)存儲的地址提供給軟件工程的開發(fā)者;而針對網(wǎng)頁爬蟲中存在的信息數(shù)據(jù),開發(fā)者應(yīng)先針對具體的格式和實際特點進(jìn)行深入研究,在充分考慮到網(wǎng)頁爬蟲常用的匹配方式的基礎(chǔ)上獲取數(shù)據(jù)信息。在實際工作中,經(jīng)常會遇到重復(fù)爬行和效率偏低的問題,通常所采用的處理方式是應(yīng)用分布式的網(wǎng)絡(luò)爬蟲技術(shù),并行處理相關(guān)的信息數(shù)據(jù)從而提升工作中的實際爬取效率(見圖1)。
圖1 軟件工程開源生態(tài)大數(shù)據(jù)的采集處理框架
軟件工程的開源生態(tài)大數(shù)據(jù)還具有多樣化、大規(guī)模以及較強異構(gòu)性的特點。為了構(gòu)建一個更為全面并且科學(xué)的軟件工程大數(shù)據(jù)的匯聚和共享平臺,在實際工作中應(yīng)嚴(yán)格遵循以實際需求獲取、開放共享、平臺匯聚以及分類存儲的原則。在這種模式下,一般情況下都建議采用非結(jié)構(gòu)化存儲和結(jié)構(gòu)化存儲兩種相結(jié)合的方式。對于本地數(shù)據(jù)應(yīng)添加一個檢索功能,在確定本地數(shù)據(jù)的查詢、控制以及共享等功能的基本單位時建議提供相應(yīng)的知識描述模塊。為更好地表述出不同表之間的邏輯關(guān)聯(lián)關(guān)系,這一平臺還應(yīng)具備知識描述和檢索的功能。平臺應(yīng)將統(tǒng)一的訪問門戶提供給使用者,且在實時跟蹤使用者使用需求的基礎(chǔ)上不斷改進(jìn)和完善動態(tài)數(shù)據(jù)。數(shù)據(jù)資源的接口應(yīng)具有全面性和統(tǒng)一性,讓使用者能夠迅速找到自身所需要的數(shù)據(jù)信息。在實際工作中可將平臺放置在阿里云和UCloud上,在共享平臺直接存儲那些規(guī)模較小的數(shù)據(jù),而對于那些較大規(guī)模的數(shù)據(jù)信息建議讓共享單位對其進(jìn)行單獨管理[1]。
針對軟件工程中存在的主要問題,應(yīng)先建立更為全面的軟件缺陷知識圖譜,而這一圖譜則要在科學(xué)運用主題模型LDA和文本相似度算法的基礎(chǔ)上來更有針對性地抽取關(guān)系并識別實體,其并不支持所有數(shù)據(jù)源的知識擴(kuò)展工作,缺陷報告的數(shù)據(jù)以及源代碼數(shù)據(jù)對其有重要的影響。社區(qū)平臺中的工作人員應(yīng)對所構(gòu)建的CWE KG模塊進(jìn)行有效編輯,與軟件弱點有較強關(guān)聯(lián)的各類文檔數(shù)據(jù)對其會產(chǎn)生直接影響。為保證軟件開發(fā)過程中的在線問答效果,筆者有針對性地建立了HDSKG模塊。同樣,為了更好地識別實體并抽取關(guān)系,筆者采用了基于規(guī)則和依賴解析的方式,這一模式必須具備所收集到的在線問答數(shù)據(jù)作為支持,其擴(kuò)展性也會受到一定限制。以數(shù)據(jù)開發(fā)為基礎(chǔ)的軟件工程開源生態(tài)大數(shù)據(jù)所提煉出的軟件知識圖譜,語義更為豐富、規(guī)模更大并且所涵蓋的內(nèi)容更廣泛,且具備有效查詢、搜索和儲存知識圖譜的功能,以此為基礎(chǔ)進(jìn)行數(shù)據(jù)分析、融合和深度挖掘等工作。在數(shù)據(jù)分析的工作中,圖譜可與Word文檔、郵件列表日志、PDF文檔、網(wǎng)頁文檔、軟件源代碼和各類系統(tǒng)的版本記錄等多種類型的軟件工程數(shù)據(jù)相融合,同時具備更高的智能化程度,能夠及時地補全各類有較強關(guān)聯(lián)性的軟件數(shù)據(jù)以及整合出更易于被理解和接受的數(shù)據(jù)知識。
在軟件工程開源生態(tài)大數(shù)據(jù)中,相關(guān)的開發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù)作用十分關(guān)鍵,在實際的研究工作中一定要重點關(guān)注基于缺陷和社區(qū)問答數(shù)據(jù)的軟件代碼缺陷的智能定位與修復(fù)技術(shù)。軟件缺陷出現(xiàn)的概率與代碼的實際規(guī)模呈現(xiàn)出正比例關(guān)系。同時,缺陷報告文本附著的元數(shù)據(jù)以及缺陷報告與關(guān)聯(lián)代碼之間的密切關(guān)聯(lián)性都是其自身的顯著特點。在實際工作中所構(gòu)建的文本主題模型應(yīng)不僅能起到有效的監(jiān)督作用,還能明確具體預(yù)測和訓(xùn)練方法。這一方法比傳統(tǒng)更具修復(fù)能力,無論是實時的數(shù)據(jù)還是歷史數(shù)據(jù)都能夠?qū)⑵溆行迯?fù),還能夠?qū)⒄Z義相似度和文本相似度這兩大內(nèi)容緊密結(jié)合,缺陷智能定位的精度更高。在實際所采用的開源項目包含著多個子項目,如JDT,PDE和Platform等子項目,在進(jìn)行相同內(nèi)容的工作時,這些子項目對信息數(shù)據(jù)的預(yù)測準(zhǔn)確度得到了較大提高。由于缺陷定位的精準(zhǔn)性會受到缺陷報告中文本附加信息影響,研究人員提出了L2SS+模型簇的概念,并對多個數(shù)據(jù)集合進(jìn)行了實驗工作,從實驗中也更為明確了所構(gòu)建的產(chǎn)品模塊信息是能夠直接影響到缺陷定位的準(zhǔn)確性的,在同類工作中其準(zhǔn)確率提高了20%左右[2]。
研究人員為了更好地認(rèn)知并掌握軟件工程開源生態(tài)大數(shù)據(jù)中交付數(shù)據(jù)和應(yīng)用數(shù)據(jù),在工作中還可以根據(jù)對上下文的感知情況來更有針對性地推薦軟件的問答資源,這一研究內(nèi)容在軟件問答推薦領(lǐng)域中都具有前瞻性。以往也有一些研究感知考慮到上下文的感知情況,但其主要還是考慮代碼本身的關(guān)鍵詞,對于其中的語義內(nèi)容以及存在于系統(tǒng)中的大量問答知識都沒有被充分地考慮到,本系統(tǒng)研究人員主要采用的方法是將代碼上下文中的關(guān)鍵詞抽取出來并借助于檢索功能來縮小問答數(shù)據(jù)的實際集合,使每一個問答數(shù)據(jù)與上下文之間的關(guān)聯(lián)性能夠被計算出來,在整體排序各類計算結(jié)果后,直接推薦給軟件工程的開發(fā)者。
通過以上的論述,本文對軟件工程開源生態(tài)大數(shù)據(jù)概述及基于軟件工程開源生態(tài)大數(shù)據(jù)的智能化軟件開發(fā)兩個方面的內(nèi)容進(jìn)行了詳細(xì)分析和探討,對其大數(shù)據(jù)的體系以及框架中的各類功能進(jìn)行了深入研究和探索,并對其知識圖譜構(gòu)造、缺陷智能定位與修復(fù)以及問答資源推薦等關(guān)鍵技術(shù)進(jìn)行了闡述,在對面向智能化軟件開發(fā)的各類開源生態(tài)大數(shù)據(jù)的研究工作中具有很強的實際應(yīng)用價值。