面向智能化软件开发的开源生态大数据
點(diǎn)擊上方藍(lán)字關(guān)注我們
面向智能化軟件開(kāi)發(fā)的開(kāi)源生態(tài)大數(shù)據(jù)
張洋1,?王濤1,?尹剛2,3,?余躍1,?黃井泉3
1?國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073
2?綠色計(jì)算產(chǎn)業(yè)聯(lián)盟,北京 100036
3?湖南智擎科技有限公司,湖南 長(zhǎng)沙 410073
?
摘要:開(kāi)源軟件開(kāi)發(fā)過(guò)程中包含大量有價(jià)值的數(shù)據(jù),針對(duì)其數(shù)據(jù)規(guī)模巨大、碎片分散、快速膨脹的特點(diǎn),研究了軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系,提出了一種自生長(zhǎng)的采集處理框架與匯聚共享環(huán)境,闡述了基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的智能化軟件開(kāi)發(fā),以及基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)分析挖掘的典型應(yīng)用,為面向智能化軟件開(kāi)發(fā)的開(kāi)源生態(tài)大數(shù)據(jù)研究與應(yīng)用提供相關(guān)指導(dǎo)。
關(guān)鍵詞:?智能化軟件開(kāi)發(fā)?;?開(kāi)源軟件?;?開(kāi)源生態(tài)?;?大數(shù)據(jù)
論文引用格式:
張洋, 王濤, 尹剛, 等. 面向智能化軟件開(kāi)發(fā)的開(kāi)源生態(tài)大數(shù)據(jù)[J]. 大數(shù)據(jù), 2021, 7(1): 94-106.
ZHANG Y, WANG T, YIN G, et al. Big data of open source ecosystem for intelligent software development[J]. Big Data Research, 2021, 7(1): 94-106.
1 引言
自20世紀(jì)末以來(lái),開(kāi)源軟件在現(xiàn)代社會(huì)的各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,取得了令人矚目的成就。Black Duck公司2017年的調(diào)查報(bào)告顯示,全球86%的企業(yè)在搭建業(yè)務(wù)時(shí)全部或部分使用了開(kāi)源軟件,其中60%的公司還在增加開(kāi)源軟件的使用比重。開(kāi)源軟件的開(kāi)發(fā)活動(dòng)以互聯(lián)網(wǎng)軟件社區(qū)為平臺(tái),其開(kāi)發(fā)過(guò)程和制品數(shù)據(jù)對(duì)外開(kāi)放,允許不同類(lèi)型的開(kāi)發(fā)者參與其中,形成一種大眾參與的開(kāi)源模式,給開(kāi)源世界帶來(lái)了強(qiáng)大的生產(chǎn)力。開(kāi)源模式中大眾貢獻(xiàn)者可以自由地實(shí)踐分布式協(xié)同,催生了許多群體化軟件開(kāi)發(fā)方法和一系列優(yōu)質(zhì)的開(kāi)源社區(qū)。特別是,近年來(lái)云計(jì)算、大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)等對(duì)國(guó)民經(jīng)濟(jì)發(fā)展產(chǎn)生重大影響的信息化基礎(chǔ)設(shè)施絕大多數(shù)是以開(kāi)源軟件為核心構(gòu)建而成的,開(kāi)源軟件已經(jīng)在全球軟件產(chǎn)業(yè)占據(jù)主導(dǎo)地位。
與傳統(tǒng)工業(yè)化軟件生產(chǎn)相比,大眾化開(kāi)源軟件生產(chǎn)的開(kāi)發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù)高度開(kāi)放且規(guī)模巨大。目前,支持大眾化軟件生產(chǎn)和應(yīng)用活動(dòng)的開(kāi)源社區(qū)包含了大量有價(jià)值的數(shù)據(jù),如軟件代碼、軟件版本、容器鏡像等軟件制品和過(guò)程數(shù)據(jù),以及軟件問(wèn)答、軟件評(píng)價(jià)等軟件交流和反饋數(shù)據(jù),這些數(shù)據(jù)涵蓋開(kāi)發(fā)數(shù)據(jù)、交付數(shù)據(jù)及應(yīng)用數(shù)據(jù)等全維度數(shù)據(jù)類(lèi)型,涉及開(kāi)發(fā)制品、開(kāi)發(fā)過(guò)程、軟件產(chǎn)品、軟件鏡像、咨詢(xún)討論與應(yīng)用問(wèn)答等各個(gè)方面,具有規(guī)模巨大、碎片分散、快速膨脹的特點(diǎn)。如何構(gòu)造高擴(kuò)展、高性能的軟件工程開(kāi)源生態(tài)大數(shù)據(jù)處理體系結(jié)構(gòu),建立多源異質(zhì)、廣泛關(guān)聯(lián)、語(yǔ)義豐富、覆蓋全面的軟件工程開(kāi)源生態(tài)大數(shù)據(jù)環(huán)境,分析提煉軟件知識(shí)并設(shè)計(jì)實(shí)現(xiàn)輔助開(kāi)發(fā)工具,以提升軟件開(kāi)發(fā)的智能化程度,已成為重要的科學(xué)問(wèn)題。
本文研究了軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系,并提出了一種自生長(zhǎng)的采集處理框架與匯聚共享環(huán)境;然后,介紹了基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的智能化軟件開(kāi)發(fā),以及基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)分析挖掘的典型應(yīng)用,以期為面向智能化軟件開(kāi)發(fā)的開(kāi)源生態(tài)大數(shù)據(jù)研究與應(yīng)用提供相關(guān)指導(dǎo)。
2 軟件工程開(kāi)源生態(tài)大數(shù)據(jù)
傳統(tǒng)軟件數(shù)據(jù)挖掘主要關(guān)注同質(zhì)和局部軟件工程數(shù)據(jù),難以適應(yīng)軟件工程開(kāi)源生態(tài)大數(shù)據(jù)呈現(xiàn)出的異構(gòu)多源、類(lèi)型復(fù)雜、持續(xù)增長(zhǎng)、廣泛互聯(lián)等新特性,全局視角下考察軟件大數(shù)據(jù)價(jià)值仍面臨巨大挑戰(zhàn)。本文以“主動(dòng)感知、定向采集、多源關(guān)聯(lián)、增量檢測(cè)”機(jī)制構(gòu)建自生長(zhǎng)的軟件大數(shù)據(jù)環(huán)境,建立綜合互聯(lián)的大樣本軟件數(shù)據(jù)集合,以支持多維度、多譜系、貫通性的軟件知識(shí)提煉和智能釋放。
2.1 軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系
通過(guò)對(duì)軟件生態(tài)進(jìn)行全面梳理和分析,本文將軟件社區(qū)分為開(kāi)發(fā)社區(qū)和應(yīng)用社區(qū),涵蓋軟件開(kāi)發(fā)、發(fā)布和應(yīng)用等不同階段,對(duì)軟件工程大數(shù)據(jù)進(jìn)行調(diào)研分析。軟件工程大數(shù)據(jù)以代碼、文檔、開(kāi)發(fā)記錄等文本為主體,語(yǔ)義豐富。為此,本文構(gòu)建了系統(tǒng)的軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系(如圖1所示),涉及開(kāi)發(fā)制品、開(kāi)發(fā)過(guò)程、軟件產(chǎn)品、軟件鏡像、咨詢(xún)討論和應(yīng)用問(wèn)答等各個(gè)方面,覆蓋GitHub、Apache、Topcoder、Docker Hub、OSCHINA以及Stack Overflow等各類(lèi)型主流開(kāi)源社區(qū),為軟件工程研究和實(shí)驗(yàn)提供了一個(gè)較完整的全局視圖。
圖1???軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系
該體系主要包括開(kāi)發(fā)數(shù)據(jù)、交付數(shù)據(jù)和應(yīng)用數(shù)據(jù)三大類(lèi),每一類(lèi)又被細(xì)分為多個(gè)子類(lèi)。最終,該分類(lèi)體系與當(dāng)前的多種軟件倉(cāng)庫(kù)、社區(qū)和論壇的具體數(shù)據(jù)格式建立了映射。具體如下。
(1)開(kāi)發(fā)數(shù)據(jù)
開(kāi)發(fā)數(shù)據(jù)以軟件工程中軟件開(kāi)發(fā)設(shè)計(jì)的制品和過(guò)程為核心,其中開(kāi)發(fā)制品包括源代碼、編譯文件和提交日志,開(kāi)發(fā)過(guò)程則涉及開(kāi)發(fā)人員、合并申請(qǐng)、問(wèn)題跟蹤、郵件交互、持續(xù)集成和競(jìng)爭(zhēng)式開(kāi)發(fā)等多個(gè)方面。具體地,開(kāi)發(fā)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源包括版本庫(kù)、Issue庫(kù)、郵件列表、評(píng)測(cè)工具和競(jìng)賽系統(tǒng),涉及的數(shù)據(jù)源實(shí)例有GitHub、Apache和Topcoder等。
(2)交付數(shù)據(jù)
交付數(shù)據(jù)主要是交付生產(chǎn)環(huán)境的軟件產(chǎn)品,同時(shí)隨著虛擬化技術(shù)和容器技術(shù)的發(fā)展,軟件鏡像作為一種特殊的軟件產(chǎn)品交付方式逐步興起并大量存在,因此其也單獨(dú)作為交付數(shù)據(jù)的一個(gè)子類(lèi)。軟件產(chǎn)品數(shù)據(jù)涉及軟件的方方面面信息,包括軟件描述、軟件標(biāo)簽、軟件分類(lèi)和可執(zhí)行程序本身;軟件鏡像與之類(lèi)似,包括鏡像描述和鏡像文件等。交付數(shù)據(jù)主要來(lái)源于軟件產(chǎn)品頁(yè)面、軟件包和鏡像倉(cāng)庫(kù),具體實(shí)例包括OpenHub和Docker Hub等。
(3)應(yīng)用數(shù)據(jù)
應(yīng)用數(shù)據(jù)主要包括資訊討論和應(yīng)用問(wèn)答,其中資訊討論包括在線文檔、社區(qū)反饋、文檔標(biāo)簽以及其他屬性等;應(yīng)用問(wèn)答則主要針對(duì)以提問(wèn)和解答為主要形式的在線社區(qū)活動(dòng),涉及的數(shù)據(jù)包括問(wèn)題與回復(fù)、問(wèn)題標(biāo)簽和其他屬性等。應(yīng)用數(shù)據(jù)的主要數(shù)據(jù)來(lái)源為在線文檔和在線問(wèn)答,具體實(shí)例有OSCHINA和Stack Overflow等。
在此基礎(chǔ)上,本文提出了分布式異構(gòu)存儲(chǔ)的總體策略,設(shè)計(jì)和制定了多源異構(gòu)的軟件工程大數(shù)據(jù)管理框架與環(huán)境。其總體主要包括以下4個(gè)層次。
● 數(shù)據(jù)源:軟件工程大數(shù)據(jù)涵蓋開(kāi)發(fā)、發(fā)布、應(yīng)用、運(yùn)維等不同過(guò)程、不同類(lèi)型和不同源的數(shù)據(jù),包括版本庫(kù)、代碼倉(cāng)庫(kù)、配置制品、軟件鏡像等。
● 數(shù)據(jù)存儲(chǔ):主要實(shí)現(xiàn)對(duì)大規(guī)模異構(gòu)軟件工程大數(shù)據(jù)的高效存儲(chǔ)和訪問(wèn)。
● 數(shù)據(jù)處理:圍繞特定的任務(wù)和目標(biāo),將存儲(chǔ)的數(shù)據(jù)按需展開(kāi),并進(jìn)行相應(yīng)的處理,形成軟件知識(shí)庫(kù)。通過(guò)數(shù)據(jù)解析、融合等技術(shù)進(jìn)行數(shù)據(jù)的二次加工和處理,包括通過(guò)分析不同數(shù)據(jù)類(lèi)型之間的關(guān)聯(lián)和依賴(lài)、基于圖數(shù)據(jù)庫(kù)等存儲(chǔ)技術(shù)構(gòu)建軟件領(lǐng)域的知識(shí)圖譜,進(jìn)一步通過(guò)數(shù)據(jù)按需展開(kāi)機(jī)制有效降低存儲(chǔ)資源的占用情況。
● 數(shù)據(jù)實(shí)例:通過(guò)豐富的接口和服務(wù),針對(duì)不同的需求和應(yīng)用提供相應(yīng)的數(shù)據(jù)服務(wù)。針對(duì)圍繞的不同數(shù)據(jù)類(lèi)型,對(duì)外提供的數(shù)據(jù)服務(wù)被分為4類(lèi),包括以項(xiàng)目為中心的數(shù)據(jù)服務(wù)、以測(cè)試為目標(biāo)的數(shù)據(jù)服務(wù)、以人為中心的數(shù)據(jù)服務(wù)和以運(yùn)維為目標(biāo)的數(shù)據(jù)服務(wù)等。
2.2 軟件工程開(kāi)源生態(tài)大數(shù)據(jù)采集處理框架
本文提出一種“增量式、多模式”的自生長(zhǎng)數(shù)據(jù)采集處理框架(如圖2所示),該框架能夠針對(duì)不同類(lèi)型的軟件數(shù)據(jù)進(jìn)行匯聚、收集和整理。具體地,針對(duì)網(wǎng)頁(yè)數(shù)據(jù)、版本庫(kù)數(shù)據(jù)、缺陷庫(kù)數(shù)據(jù)等不同類(lèi)型的數(shù)據(jù),本文研究了主動(dòng)感知、定向采集、多源關(guān)聯(lián)和增量檢測(cè)等關(guān)鍵技術(shù),設(shè)計(jì)部署了分布式爬蟲(chóng),實(shí)現(xiàn)了網(wǎng)頁(yè)爬蟲(chóng)、基于應(yīng)用程序接口(application programming interface,API)的數(shù)據(jù)獲取和數(shù)據(jù)包直接下載等多種收集方式。具體如下。
圖2???軟件工程開(kāi)源生態(tài)大數(shù)據(jù)采集處理框架
● 基于網(wǎng)絡(luò)爬蟲(chóng)的數(shù)據(jù)收集方法:針對(duì)特定的軟件庫(kù)采用定點(diǎn)爬取的方式,通過(guò)分析特定數(shù)據(jù)源網(wǎng)頁(yè)中的數(shù)據(jù)特點(diǎn)和Schema格式,基于爬蟲(chóng)常用的標(biāo)簽匹配和正則表達(dá)式匹配等策略獲取相應(yīng)的數(shù)據(jù)信息。為了解決爬取效率低和重復(fù)爬取的問(wèn)題,采用分布式網(wǎng)絡(luò)爬蟲(chóng)技術(shù)進(jìn)行多任務(wù)的并行處理,從而大幅提高大規(guī)模軟件數(shù)據(jù)的爬取效率,另外,基于時(shí)間戳等信息實(shí)現(xiàn)周期性、增量式爬取,避免數(shù)據(jù)的重復(fù)獲取。其中,多數(shù)軟件數(shù)據(jù)基于爬蟲(chóng)技術(shù)獲取,包括Apache基金項(xiàng)目的源碼、郵件、網(wǎng)頁(yè)和版本控制,Eclipse社區(qū)項(xiàng)目的缺陷報(bào)告和代碼,配資代碼庫(kù)和Docker Hub中的元數(shù)據(jù)信息、代碼制品及容器的Dockerfile,CSDN的博客、問(wèn)答和論壇等。
● 基于API的數(shù)據(jù)收集方法:除了網(wǎng)絡(luò)爬蟲(chóng),部分開(kāi)源軟件庫(kù)對(duì)外提供獲取和下載數(shù)據(jù)信息的開(kāi)放API,因此可以通過(guò)調(diào)用API的方式獲取相應(yīng)的數(shù)據(jù)信息,其中包括Topcoder的眾包開(kāi)發(fā)數(shù)據(jù)、Apache基金會(huì)項(xiàng)目的缺陷報(bào)告等。
● 數(shù)據(jù)包直接下載方法:一些社區(qū)對(duì)歷史數(shù)據(jù)進(jìn)行壓縮存檔,并直接對(duì)外提供數(shù)據(jù)下載地址,例如Stack Overflow社區(qū)的文檔數(shù)據(jù)等。
在此基礎(chǔ)上,軟件工程開(kāi)源生態(tài)大數(shù)據(jù)采集處理框架整體可分為3層,包括數(shù)據(jù)獲取層、數(shù)據(jù)分析層以及持久化層,通過(guò)3個(gè)層次的協(xié)同配合,最終完成從數(shù)據(jù)的最初采集、數(shù)據(jù)的分析處理,到最后數(shù)據(jù)的展示。其中,數(shù)據(jù)獲取層的主要功能是完成數(shù)據(jù)的采集工作,為平臺(tái)提供高效、穩(wěn)定、持續(xù)、準(zhǔn)確的數(shù)據(jù)服務(wù)。數(shù)據(jù)分析層對(duì)數(shù)據(jù)獲取層獲取的頁(yè)面信息進(jìn)行抽取,提取出每個(gè)頁(yè)面中的關(guān)鍵信息,并對(duì)抽取結(jié)果進(jìn)行驗(yàn)證,通過(guò)驗(yàn)證的頁(yè)面數(shù)據(jù)會(huì)被存儲(chǔ)到數(shù)據(jù)庫(kù)中,為數(shù)據(jù)分析做準(zhǔn)備。該層還有一些數(shù)據(jù)挖掘算法,對(duì)所抽取的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析操作,包括社區(qū)關(guān)聯(lián)、軟件評(píng)估等。持久化層按照最終需要展示的數(shù)據(jù)格式,對(duì)之前得到的數(shù)據(jù)處理結(jié)果進(jìn)行處理,并將處理結(jié)果存放于數(shù)據(jù)緩沖池中,最終源源不斷地向展示平臺(tái)傳輸,為平臺(tái)的展示提供數(shù)據(jù)支持。
2.3 軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的匯聚共享
針對(duì)軟件工程開(kāi)源生態(tài)大數(shù)據(jù)規(guī)模大、多樣性和異構(gòu)性的特點(diǎn),本文采用開(kāi)放共享、分散存儲(chǔ)、平臺(tái)匯聚、按需獲取的方式,形成一個(gè)大規(guī)模軟件工程大數(shù)據(jù)共享平臺(tái),如圖3所示。目前該平臺(tái)已實(shí)現(xiàn)對(duì)全球PB級(jí)開(kāi)源代碼和鏡像等軟件工程大數(shù)據(jù)的跟蹤、獲取,為軟件工程研究和實(shí)踐提供了堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ)。
圖3???軟件工程大數(shù)據(jù)共享平臺(tái)
軟件工程大數(shù)據(jù)共享平臺(tái)采用分散存儲(chǔ)、平臺(tái)匯聚的模式提供共享管理和在線訪問(wèn)統(tǒng)一入口,屏蔽底層數(shù)據(jù)存儲(chǔ)的分散性和多樣性,提供風(fēng)格一致的門(mén)戶(hù)環(huán)境。具體存儲(chǔ)結(jié)合實(shí)際數(shù)據(jù)特征采用結(jié)構(gòu)化存儲(chǔ)與非結(jié)構(gòu)化存儲(chǔ)相結(jié)合的方式,平臺(tái)核心架構(gòu)設(shè)計(jì)如下。
● 以多源異構(gòu)的軟件工程開(kāi)源生態(tài)大數(shù)據(jù)為數(shù)據(jù)源,基于網(wǎng)絡(luò)爬蟲(chóng)技術(shù)實(shí)現(xiàn)數(shù)據(jù)的定向收集和通用收集,同時(shí)還包括基于API的數(shù)據(jù)獲取和直接獲取。
● 采用結(jié)構(gòu)化與非結(jié)構(gòu)化相結(jié)合的方式進(jìn)行存儲(chǔ),針對(duì)元數(shù)據(jù)信息主要采用基于關(guān)系數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)的方式進(jìn)行存儲(chǔ),并結(jié)合聯(lián)合文件系統(tǒng)(aufx和zfs等)等技術(shù)支持非結(jié)構(gòu)化數(shù)據(jù)(尤其是文檔和代碼)的有效存儲(chǔ)。為了減少數(shù)據(jù)存儲(chǔ)的資源占用問(wèn)題,針對(duì)軟件版本數(shù)據(jù)提供了按需進(jìn)行版本分支展開(kāi)的機(jī)制。
● 為本地?cái)?shù)據(jù)增加索引,提供知識(shí)描述表作為本地?cái)?shù)據(jù)描述、共享和權(quán)限控制的基本單位,同時(shí)支持知識(shí)描述表的繼承關(guān)系和多種映射規(guī)則定義,并提供知識(shí)圖譜作為知識(shí)描述表之間邏輯關(guān)聯(lián)關(guān)系的描述工具和知識(shí)檢索工具。
● 平臺(tái)提供統(tǒng)一訪問(wèn)門(mén)戶(hù),并可根據(jù)需求動(dòng)態(tài)調(diào)整數(shù)據(jù)類(lèi)別條目,通過(guò)統(tǒng)一資源接口,支持用戶(hù)快速獲得原始或加工過(guò)的各類(lèi)軟件工程數(shù)據(jù)。
平臺(tái)被部署于UCloud和阿里云上,提供匯聚數(shù)據(jù)說(shuō)明及訪問(wèn)入口,小規(guī)模數(shù)據(jù)集被直接上傳至共享平臺(tái),大規(guī)模數(shù)據(jù)集/應(yīng)用服務(wù)由數(shù)據(jù)共享單位自行管理。該平臺(tái)具有高度靈活性和可擴(kuò)展性,能夠基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系建立多樣化的數(shù)據(jù)類(lèi)型導(dǎo)航機(jī)制,涉及的典型軟件工程數(shù)據(jù)包括軟件工程科研數(shù)據(jù)、開(kāi)源代碼數(shù)據(jù)、Docker鏡像數(shù)據(jù)以及知識(shí)圖譜數(shù)據(jù)等不同類(lèi)型。
3 基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的智能化軟件開(kāi)發(fā)
立足于軟件工程開(kāi)源生態(tài)大數(shù)據(jù),越來(lái)越多的研究團(tuán)隊(duì)基于不同類(lèi)型的開(kāi)源大數(shù)據(jù)進(jìn)行智能化的軟件開(kāi)發(fā)研究。如圖4所示,從基于代碼、日志、郵件等開(kāi)發(fā)數(shù)據(jù)的知識(shí)圖譜構(gòu)造,到融合缺陷、社區(qū)問(wèn)答等開(kāi)發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù)的軟件代碼缺陷定位與修復(fù)、問(wèn)答資源推薦,再到針對(duì)配置文件、容器鏡像等交付數(shù)據(jù)的運(yùn)維數(shù)據(jù)管理,這些前沿探索為人們更好地利用開(kāi)源大數(shù)據(jù)輔助智能化軟件開(kāi)發(fā)提供了方法指導(dǎo)與工具支持。
3.1 基于開(kāi)發(fā)數(shù)據(jù)的軟件知識(shí)圖譜構(gòu)造
相關(guān)研究針對(duì)軟件缺陷發(fā)現(xiàn)而構(gòu)造的軟件缺陷知識(shí)圖譜(bug knowledge graph,BKG)利用主題模型LDA(latent dirichlet allocation)和文本相似度算法分別自動(dòng)化地進(jìn)行實(shí)體識(shí)別和關(guān)系抽取,但其受限于缺陷報(bào)告數(shù)據(jù)和源代碼數(shù)據(jù),不支持其他數(shù)據(jù)源的知識(shí)擴(kuò)展。針對(duì)通用軟件的弱點(diǎn),相關(guān)研究推理并構(gòu)造了CWE KG(common weakness enumeration knowledge graph),通過(guò)預(yù)定義的模板進(jìn)行規(guī)范,采取社區(qū)平臺(tái)的方式進(jìn)行人工編輯,但是其并非自動(dòng)化方法,受限于與軟件弱點(diǎn)相關(guān)的文檔數(shù)據(jù),不支持其他數(shù)據(jù)源的知識(shí)擴(kuò)展。此外,針對(duì)軟件開(kāi)發(fā)在線問(wèn)答,相關(guān)研究構(gòu)造了HDSKG(harvesting domain specific knowledge graph),通過(guò)依賴(lài)解析和基于規(guī)則的方法進(jìn)行實(shí)體和關(guān)系的識(shí)別,采用支持向量機(jī)(support vector machine,SVM)的分類(lèi)算法評(píng)估三元組,但是其是半自動(dòng)化方法,主要來(lái)源于Stack Overflow的在線問(wèn)答數(shù)據(jù),可擴(kuò)展性受限。因此,基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)中的開(kāi)發(fā)數(shù)據(jù),相關(guān)研究通過(guò)探索面向多源異質(zhì)、動(dòng)態(tài)增長(zhǎng)的軟件大數(shù)據(jù)的軟件知識(shí)自動(dòng)識(shí)別、抽取、關(guān)聯(lián)與融合過(guò)程,提煉出大規(guī)模、內(nèi)容全面、語(yǔ)義豐富的軟件知識(shí)圖譜,為軟件構(gòu)造過(guò)程中的智能化輔助服務(wù)提供了基礎(chǔ)支撐。給定一個(gè)可復(fù)用的軟件項(xiàng)目及與其相關(guān)的大量軟件項(xiàng)目數(shù)據(jù),這些研究提出的方法能夠自動(dòng)從中抽取出概念、實(shí)體等結(jié)點(diǎn),并建立這些結(jié)點(diǎn)之間多源異構(gòu)、類(lèi)型豐富的關(guān)系,形成這個(gè)軟件項(xiàng)目特定的一個(gè)軟件項(xiàng)目知識(shí)圖譜。該知識(shí)圖譜基于圖數(shù)據(jù)庫(kù),實(shí)現(xiàn)了對(duì)知識(shí)圖譜的存儲(chǔ)、索引、查詢(xún)等基礎(chǔ)支持的建立,為軟件項(xiàng)目數(shù)據(jù)的解析、關(guān)聯(lián)融合與知識(shí)挖掘提煉提供了支撐環(huán)境。在數(shù)據(jù)解析方面,圖譜兼容多種不同類(lèi)型的軟件工程數(shù)據(jù),包括:軟件源代碼、各種版本控制系統(tǒng)(如SVN、Git)的版本記錄、郵件列表日志、缺陷追蹤系統(tǒng)日志、HTML網(wǎng)頁(yè)文檔、Word文檔、PDF文檔等。同時(shí),該知識(shí)圖譜構(gòu)造工具內(nèi)置了多種可追蹤性關(guān)聯(lián)分析與知識(shí)補(bǔ)全模塊,能夠充分對(duì)不同來(lái)源的軟件數(shù)據(jù)間的語(yǔ)義關(guān)聯(lián)進(jìn)行智能恢復(fù)補(bǔ)全,且能夠從數(shù)據(jù)中提煉出更適合管理者、開(kāi)發(fā)者與復(fù)用者理解的知識(shí)。
圖4???基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的智能化軟件開(kāi)發(fā)研究
3.2 基于缺陷與社區(qū)問(wèn)答數(shù)據(jù)的軟件代碼缺陷智能定位與修復(fù)
基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)中的開(kāi)發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù),相關(guān)研究團(tuán)隊(duì)圍繞基于缺陷和社區(qū)問(wèn)答數(shù)據(jù)的軟件代碼缺陷智能定位與修復(fù)問(wèn)題開(kāi)展了大量研究。他們針對(duì)缺陷報(bào)告與關(guān)聯(lián)代碼間的詞共現(xiàn)關(guān)系、缺陷報(bào)告文本附著的元數(shù)據(jù),以及代碼規(guī)模越大越容易出現(xiàn)軟件缺陷等特點(diǎn),構(gòu)造了一個(gè)基本的監(jiān)督式文本主題模型STMLocator,并給出了相關(guān)訓(xùn)練與預(yù)測(cè)算法。相較于傳統(tǒng)的信息檢索方法以及基于頻譜的方法,該方法能夠?qū)⑿迯?fù)歷史作為監(jiān)督信息,同時(shí)將文本相似度與語(yǔ)義相似度結(jié)合,實(shí)現(xiàn)更高精度的缺陷定位。在開(kāi)源項(xiàng)目Eclipse的多個(gè)子項(xiàng)目(PDE、Platform、JDT)收集的真實(shí)數(shù)據(jù)上的預(yù)測(cè)準(zhǔn)確率相較同類(lèi)工作最高提升23.6%。另外,為了研究缺陷報(bào)告文本附加信息對(duì)缺陷定位的影響,Wang Y J等人提出了L2SS+模型簇,在多個(gè)實(shí)際數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,L2SS+CM模型,即產(chǎn)品模塊信息對(duì)缺陷定位準(zhǔn)確率影響最顯著,預(yù)測(cè)準(zhǔn)確率較同類(lèi)工作最高提升18.7%。在基于社區(qū)問(wèn)答網(wǎng)站的軟件缺陷修復(fù)信息智能推薦技術(shù)方面,為了進(jìn)一步精確獲取和分類(lèi)社區(qū)問(wèn)答網(wǎng)站的內(nèi)容,相關(guān)研究分析了網(wǎng)站文本內(nèi)容的自動(dòng)標(biāo)簽推薦問(wèn)題,針對(duì)標(biāo)簽與文本詞之間的共現(xiàn)關(guān)系、標(biāo)簽之間的關(guān)聯(lián)關(guān)系等特點(diǎn),Tang S J等人提出了一個(gè)iTAG深度學(xué)習(xí)模型,并給出了相關(guān)訓(xùn)練與預(yù)測(cè)算法。在從Stack Overflow程序員社區(qū)問(wèn)答網(wǎng)站等獲取的真實(shí)數(shù)據(jù)集上,iTAG模型較其他同類(lèi)工作(#TagSpace、Maxide等)在預(yù)測(cè)準(zhǔn)確率上有顯著提升。另外,iTAG模型在結(jié)果可視化解釋、發(fā)現(xiàn)更多合理的標(biāo)簽等方面具有優(yōu)勢(shì)。
3.3 基于上下文感知的軟件問(wèn)答資源推薦技術(shù)
近些年,相關(guān)研究團(tuán)隊(duì)立足于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)中的應(yīng)用數(shù)據(jù)和交付數(shù)據(jù),圍繞上下文感知的軟件問(wèn)答資源推薦技術(shù)開(kāi)展了富有成效的研究。目前大部分的軟件問(wèn)答推薦系統(tǒng)沒(méi)有考慮上下文,有的雖然考慮了上下文,但是還是以代碼本身關(guān)鍵詞為主,沒(méi)有考慮其中的語(yǔ)義信息,也沒(méi)有充分挖掘已有的海量的問(wèn)答知識(shí)。參考文獻(xiàn)針對(duì)此設(shè)計(jì)了基于主題模型的軟件問(wèn)答推薦系統(tǒng),推薦系統(tǒng)通過(guò)主題模型組織整理現(xiàn)有的全量問(wèn)答數(shù)據(jù),并推斷用戶(hù)代碼的行為,通過(guò)不同場(chǎng)景下的用戶(hù)行為抽取不同的代碼上下文,根據(jù)代碼上下文向開(kāi)發(fā)人員推薦不同的問(wèn)答。推薦問(wèn)答的關(guān)鍵操作是計(jì)算代碼上下文與問(wèn)答數(shù)據(jù)的相關(guān)性,其中的一個(gè)關(guān)鍵問(wèn)題在于問(wèn)答數(shù)據(jù)的范圍,直觀的選擇是計(jì)算代碼上下文與全量問(wèn)答數(shù)據(jù)的相關(guān)性,然而這在實(shí)際應(yīng)用中是不可能的,因此首先要做的是縮小計(jì)算范圍,計(jì)算代碼上下文和一部分問(wèn)答數(shù)據(jù)的相關(guān)性。為了縮小計(jì)算的范圍,降低計(jì)算復(fù)雜度,Shao B等人抽取代碼上下文中的關(guān)鍵詞,利用關(guān)鍵詞檢索得到較小的問(wèn)答數(shù)據(jù)集合,然后計(jì)算代碼上下文和每一個(gè)問(wèn)答數(shù)據(jù)的相關(guān)性,對(duì)所有結(jié)果進(jìn)行排序后推薦給開(kāi)發(fā)人員。推薦系統(tǒng)監(jiān)測(cè)開(kāi)發(fā)人員開(kāi)發(fā)代碼,當(dāng)開(kāi)發(fā)人員停止代碼或者程序運(yùn)行時(shí),拋出異常等行為觸發(fā)推薦機(jī)制,推薦系統(tǒng)通過(guò)抽象語(yǔ)法樹(shù)和主題模型分析代碼上下文,抽取關(guān)鍵詞,檢索多源數(shù)據(jù),對(duì)返回的數(shù)據(jù)進(jìn)行分析排序,并最終展示給用戶(hù)。
3.4 面向軟件一體化開(kāi)發(fā)運(yùn)維的數(shù)據(jù)匯聚和知識(shí)管理
基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)中的交付數(shù)據(jù),相關(guān)研究團(tuán)隊(duì)針對(duì)Docker鏡像設(shè)計(jì)了一種海量數(shù)據(jù)匯聚、管理、知識(shí)抽取和質(zhì)量評(píng)價(jià)的系統(tǒng)化方案和服務(wù)。其成果首先實(shí)現(xiàn)了增量式、高并發(fā)的Docker數(shù)據(jù)匯聚和管理方法,支持對(duì)Docker Hub上百萬(wàn)級(jí)Docker項(xiàng)目數(shù)據(jù)的自動(dòng)獲取與增量更新,實(shí)現(xiàn)了項(xiàng)目數(shù)據(jù)的可發(fā)現(xiàn)和可追蹤。具體地,在數(shù)據(jù)匯聚方面,針對(duì)Docker項(xiàng)目數(shù)據(jù)量大、難以獲取項(xiàng)目整體列表等技術(shù)問(wèn)題,參考文獻(xiàn)提出了一種增量式的數(shù)據(jù)并發(fā)獲取方式,突破了高命中率的檢索關(guān)鍵詞生成算法、高效的Docker項(xiàng)目元數(shù)據(jù)更新比對(duì)與融合算法,從而提高數(shù)據(jù)獲取的覆蓋度以及對(duì)Docker項(xiàng)目數(shù)據(jù)更新的敏感度。在基于返回的檢索結(jié)果列表進(jìn)行Docker項(xiàng)目詳細(xì)元數(shù)據(jù)獲取的過(guò)程中,考慮到檢索結(jié)構(gòu)數(shù)據(jù)量大(通常能夠達(dá)到萬(wàn)級(jí)或十萬(wàn)級(jí)),他們采用“分而治之”的策略,對(duì)大規(guī)模的搜索返回結(jié)果實(shí)施并發(fā)的多線程獲取方式,顯著地提升了數(shù)據(jù)匯聚效率。最后,基于多種啟發(fā)性規(guī)則對(duì)初步獲取的Docker項(xiàng)目元數(shù)據(jù)進(jìn)行分析、對(duì)比和過(guò)濾,識(shí)別其中的冗余和更新內(nèi)容,保證數(shù)據(jù)內(nèi)容的一致以及數(shù)據(jù)內(nèi)容的更新,實(shí)現(xiàn)了海量Docker項(xiàng)目相關(guān)數(shù)據(jù)的高效匯聚和增量更新。
4 基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)分析挖掘的典型應(yīng)用
近年來(lái),越來(lái)越多的基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)分析挖掘的應(yīng)用誕生,并不斷發(fā)展。其中,針對(duì)軟件問(wèn)答社區(qū)(如Stack Overflow)、開(kāi)源軟件項(xiàng)目(如Apache、安卓項(xiàng)目等)、軟件開(kāi)發(fā)工具(如Eclipse)、開(kāi)發(fā)者數(shù)據(jù)(眾包開(kāi)發(fā)者數(shù)據(jù)、開(kāi)發(fā)過(guò)程數(shù)據(jù)等)類(lèi)型的數(shù)據(jù)進(jìn)行了匯聚和收集整理,OSSEAN構(gòu)建了面向全球開(kāi)源軟件的檢索與分析平臺(tái)。OSSEAN平臺(tái)的基本思路為:在軟件消費(fèi)社區(qū)中找到關(guān)于軟件項(xiàng)目的文檔;利用這些文檔對(duì)軟件進(jìn)行評(píng)估、比較、排序。通過(guò)獲取到的海量的開(kāi)源社區(qū)數(shù)據(jù),OSSEAN平臺(tái)能夠提供一些有趣的服務(wù),如開(kāi)源生態(tài)系統(tǒng)的度量、軟件排序以及熱點(diǎn)話題分析。OSSEAN平臺(tái)數(shù)據(jù)獲取模塊已覆蓋全球20多個(gè)主要的開(kāi)源社區(qū),并對(duì)這些社區(qū)進(jìn)行持續(xù)監(jiān)控、實(shí)時(shí)抓取,抓取和分析的數(shù)據(jù)包括超過(guò)14 0萬(wàn)個(gè)開(kāi)源項(xiàng)目/倉(cāng)庫(kù)的元數(shù)據(jù)以及超過(guò)2 000萬(wàn)條在線討論數(shù)據(jù)。同時(shí),OSSEAN平臺(tái)的跨社區(qū)關(guān)聯(lián)與分析模塊通過(guò)對(duì)多源異構(gòu)數(shù)據(jù)的深度互聯(lián),建立相應(yīng)的異質(zhì)信息網(wǎng)絡(luò),并在此基礎(chǔ)上實(shí)現(xiàn)對(duì)開(kāi)源軟件的分析、檢索與排序等服務(wù)。
SnowGraph(software knowledge graph)在對(duì)開(kāi)源社區(qū)軟件項(xiàng)目進(jìn)行大量調(diào)研與實(shí)踐的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了軟件項(xiàng)目知識(shí)圖譜自動(dòng)構(gòu)造支持平臺(tái)。對(duì)于一個(gè)待復(fù)用的軟件項(xiàng)目,SnowGraph能夠以自動(dòng)化的方法對(duì)其中的多源異構(gòu)數(shù)據(jù)進(jìn)行處理,將分散、非結(jié)構(gòu)化的信息提煉為廣泛關(guān)聯(lián)、語(yǔ)義性強(qiáng)的知識(shí),并以知識(shí)圖譜的形式進(jìn)行表示;在此基礎(chǔ)上,將知識(shí)圖譜融入機(jī)器對(duì)無(wú)結(jié)構(gòu)文本的處理過(guò)程,進(jìn)而為復(fù)用者提供準(zhǔn)確有效的智能問(wèn)答服務(wù),從而提高軟件復(fù)用過(guò)程的效率與質(zhì)量。目前,SnowGraph的項(xiàng)目原始數(shù)據(jù)規(guī)模大約為500 GB,其中包含軟件項(xiàng)目源代碼、軟件開(kāi)發(fā)版本記錄、軟件缺陷追蹤記錄、軟件開(kāi)發(fā)郵件記錄以及Stack Overflow在線論壇記錄等。最終,SnowGraph自動(dòng)構(gòu)造了192個(gè)軟件項(xiàng)目知識(shí)圖譜,圖數(shù)據(jù)庫(kù)規(guī)模大約為100 GB。此外,SnowGraph平臺(tái)集成了軟件項(xiàng)目的智能問(wèn)答服務(wù)系統(tǒng),即開(kāi)發(fā)人員在復(fù)用一個(gè)軟件項(xiàng)目時(shí),提出與軟件領(lǐng)域相關(guān)的開(kāi)發(fā)問(wèn)題,知識(shí)圖譜返回相應(yīng)的代碼/文檔作為答案,從而輔助開(kāi)發(fā)人員進(jìn)行軟件復(fù)用。與BKG、CWE KG、HDSKG等其他主流軟件知識(shí)圖譜相比,SnowGraph采取了多種信息抽取的方法來(lái)協(xié)同進(jìn)行知識(shí)圖譜的全自動(dòng)化構(gòu)造,自動(dòng)化程度更高,并且具備很好的通用性和可擴(kuò)展性,能夠?qū)ξ磥?lái)可能出現(xiàn)的新的知識(shí)需求、知識(shí)來(lái)源,以及知識(shí)抽取、關(guān)聯(lián)、提煉等進(jìn)行支持。此外,SnowGraph實(shí)體類(lèi)型和關(guān)系類(lèi)型明顯比其他主流軟件知識(shí)圖譜豐富,從而在對(duì)應(yīng)的軟件知識(shí)表示和知識(shí)利用的任務(wù)上具備更好的效果。
CodeWisdom開(kāi)發(fā)了代碼大數(shù)據(jù)與智能化軟件開(kāi)發(fā)研究成果展示與服務(wù)平臺(tái)。該平臺(tái)在GitHub等開(kāi)源軟件社區(qū)的軟件代碼及軟件開(kāi)發(fā)歷史、Stack Overflow等軟件開(kāi)發(fā)問(wèn)答網(wǎng)站的問(wèn)答知識(shí),以及API文檔等互聯(lián)網(wǎng)軟件開(kāi)發(fā)資源的基礎(chǔ)上,利用程序分析、深度學(xué)習(xí)、自然語(yǔ)言處理、知識(shí)圖譜、數(shù)據(jù)挖掘等技術(shù),充分發(fā)掘代碼大數(shù)據(jù)中蘊(yùn)含的知識(shí),通過(guò)檢索、推薦、問(wèn)答、可視化等多種手段提供智能化軟件開(kāi)發(fā)支持。
5 結(jié)束語(yǔ)
本文提出了軟件工程開(kāi)源生態(tài)大數(shù)據(jù)體系,構(gòu)建了自生長(zhǎng)的采集處理框架和匯聚共享環(huán)境,并闡述了基于軟件工程開(kāi)源生態(tài)大數(shù)據(jù)的智能化軟件開(kāi)發(fā)的相關(guān)研究以及典型應(yīng)用情況。面向智能化軟件開(kāi)發(fā)的開(kāi)源生態(tài)大數(shù)據(jù)研究具有很強(qiáng)的研究意義和實(shí)際價(jià)值,未來(lái)需要進(jìn)行進(jìn)一步的深入探索。
作者簡(jiǎn)介
張洋(1991-),男,博士,國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院助理研究員,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員,主要研究方向?yàn)閷?shí)證軟工程、軟件版本庫(kù)挖掘、DevOps等。
王濤(1986-),男,博士,國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院副研究員,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員,主要研究方向?yàn)榉植际接?jì)算、軟件工程、數(shù)據(jù)挖掘等。
尹剛(1975-),男,博士,綠色計(jì)算產(chǎn)業(yè)聯(lián)盟實(shí)踐教學(xué)工作委員會(huì)副主任,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員,主要研究方向?yàn)樵诰€教育、分布式計(jì)算、軟件工程、數(shù)據(jù)挖掘、云計(jì)算等。
余躍(1988-),男,博士,國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院副研究員,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員,主要研究方向?yàn)閿?shù)據(jù)挖掘、實(shí)證軟件工程、社交化編碼等。
黃井泉(1986-),男,湖南智擎科技有限公司高級(jí)工程師,主要研究方向?yàn)樵诰€教育、軟件工程、數(shù)據(jù)挖掘等。
聯(lián)系我們:
Tel:010-81055448
? ? ? ?010-81055490
? ? ? ?010-81055534
E-mail:bdr@bjxintong.com.cn?
http://www.infocomm-journal.com/bdr
http://www.j-bigdataresearch.com.cn/
轉(zhuǎn)載、合作:010-81055537
大數(shù)據(jù)期刊
《大數(shù)據(jù)(Big Data Research,BDR)》雙月刊是由中華人民共和國(guó)工業(yè)和信息化部主管,人民郵電出版社主辦,中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專(zhuān)家委員會(huì)學(xué)術(shù)指導(dǎo),北京信通傳媒有限責(zé)任公司出版的期刊,已成功入選中文科技核心期刊、中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)刊、中國(guó)計(jì)算機(jī)學(xué)會(huì)推薦中文科技期刊,并被評(píng)為2018年、2019年國(guó)家哲學(xué)社會(huì)科學(xué)文獻(xiàn)中心學(xué)術(shù)期刊數(shù)據(jù)庫(kù)“綜合性人文社會(huì)科學(xué)”學(xué)科最受歡迎期刊。
關(guān)注《大數(shù)據(jù)》期刊微信公眾號(hào),獲取更多內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的面向智能化软件开发的开源生态大数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【2017年第1期】大数据能力开放平台创
- 下一篇: 《大数据》再获新荣誉——“综合性人文社会