亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向智能化軟件開發(fā)的開源生態(tài)大數(shù)據(jù)

        2021-01-21 04:30:06張洋王濤尹剛余躍黃井泉
        大數(shù)據(jù) 2021年1期
        關(guān)鍵詞:開源代碼圖譜

        張洋,王濤,尹剛,余躍,黃井泉

        1. 國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;2. 綠色計(jì)算產(chǎn)業(yè)聯(lián)盟,北京 100036;3. 湖南智擎科技有限公司,湖南 長(zhǎng)沙 410073

        1 引言

        自20世紀(jì)末以來,開源軟件在現(xiàn)代社會(huì)的各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,取得了令人矚目的成就。Black Duck公司2017年的調(diào)查報(bào)告[1]顯示,全球86%的企業(yè)在搭建業(yè)務(wù)時(shí)全部或部分使用了開源軟件,其中60%的公司還在增加開源軟件的使用比重。開源軟件的開發(fā)活動(dòng)以互聯(lián)網(wǎng)軟件社區(qū)為平臺(tái),其開發(fā)過程和制品數(shù)據(jù)對(duì)外開放,允許不同類型的開發(fā)者參與其中,形成一種大眾參與的開源模式[2],給開源世界帶來了強(qiáng)大的生產(chǎn)力。開源模式中大眾貢獻(xiàn)者可以自由地實(shí)踐分布式協(xié)同,催生了許多群體化軟件開發(fā)方法和一系列優(yōu)質(zhì)的開源社區(qū)。特別是,近年來云計(jì)算、大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)等對(duì)國(guó)民經(jīng)濟(jì)發(fā)展產(chǎn)生重大影響的信息化基礎(chǔ)設(shè)施絕大多數(shù)是以開源軟件為核心構(gòu)建而成的,開源軟件已經(jīng)在全球軟件產(chǎn)業(yè)占據(jù)主導(dǎo)地位。

        與傳統(tǒng)工業(yè)化軟件生產(chǎn)相比,大眾化開源軟件生產(chǎn)的開發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù)高度開放且規(guī)模巨大。目前,支持大眾化軟件生產(chǎn)和應(yīng)用活動(dòng)的開源社區(qū)包含了大量有價(jià)值的數(shù)據(jù),如軟件代碼、軟件版本、容器鏡像等軟件制品和過程數(shù)據(jù),以及軟件問答、軟件評(píng)價(jià)等軟件交流和反饋數(shù)據(jù),這些數(shù)據(jù)涵蓋開發(fā)數(shù)據(jù)、交付數(shù)據(jù)及應(yīng)用數(shù)據(jù)等全維度數(shù)據(jù)類型,涉及開發(fā)制品、開發(fā)過程、軟件產(chǎn)品、軟件鏡像、咨詢討論與應(yīng)用問答等各個(gè)方面,具有規(guī)模巨大、碎片分散、快速膨脹的特點(diǎn)。如何構(gòu)造高擴(kuò)展、高性能的軟件工程開源生態(tài)大數(shù)據(jù)處理體系結(jié)構(gòu),建立多源異質(zhì)、廣泛關(guān)聯(lián)、語義豐富、覆蓋全面的軟件工程開源生態(tài)大數(shù)據(jù)環(huán)境,分析提煉軟件知識(shí)并設(shè)計(jì)實(shí)現(xiàn)輔助開發(fā)工具,以提升軟件開發(fā)的智能化程度,已成為重要的科學(xué)問題。

        本文研究了軟件工程開源生態(tài)大數(shù)據(jù)體系,并提出了一種自生長(zhǎng)的采集處理框架與匯聚共享環(huán)境;然后,介紹了基于軟件工程開源生態(tài)大數(shù)據(jù)的智能化軟件開發(fā),以及基于軟件工程開源生態(tài)大數(shù)據(jù)分析挖掘的典型應(yīng)用,以期為面向智能化軟件開發(fā)的開源生態(tài)大數(shù)據(jù)研究與應(yīng)用提供相關(guān)指導(dǎo)。

        2 軟件工程開源生態(tài)大數(shù)據(jù)

        傳統(tǒng)軟件數(shù)據(jù)挖掘主要關(guān)注同質(zhì)和局部軟件工程數(shù)據(jù),難以適應(yīng)軟件工程開源生態(tài)大數(shù)據(jù)呈現(xiàn)出的異構(gòu)多源、類型復(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 軟件工程開源生態(tài)大數(shù)據(jù)體系

        通過對(duì)軟件生態(tài)進(jìn)行全面梳理和分析,本文將軟件社區(qū)分為開發(fā)社區(qū)和應(yīng)用社區(qū),涵蓋軟件開發(fā)、發(fā)布和應(yīng)用等不同階段,對(duì)軟件工程大數(shù)據(jù)進(jìn)行調(diào)研分析。軟件工程大數(shù)據(jù)以代碼、文檔、開發(fā)記錄等文本為主體,語義豐富。為此,本文構(gòu)建了系統(tǒng)的軟件工程開源生態(tài)大數(shù)據(jù)體系(如圖1所示),涉及開發(fā)制品、開發(fā)過程、軟件產(chǎn)品、軟件鏡像、咨詢討論和應(yīng)用問答等各個(gè)方面,覆蓋GitHub、Apache、Topcoder、Docker Hub、OSCHINA以及Stack Overflow等各類型主流開源社區(qū),為軟件工程研究和實(shí)驗(yàn)提供了一個(gè)較完整的全局視圖。

        圖1 軟件工程開源生態(tài)大數(shù)據(jù)體系

        該體系主要包括開發(fā)數(shù)據(jù)、交付數(shù)據(jù)和應(yīng)用數(shù)據(jù)三大類,每一類又被細(xì)分為多個(gè)子類。最終,該分類體系與當(dāng)前的多種軟件倉(cāng)庫(kù)、社區(qū)和論壇的具體數(shù)據(jù)格式建立了映射。具體如下。

        (1)開發(fā)數(shù)據(jù)

        開發(fā)數(shù)據(jù)以軟件工程中軟件開發(fā)設(shè)計(jì)的制品和過程為核心,其中開發(fā)制品包括源代碼、編譯文件和提交日志,開發(fā)過程則涉及開發(fā)人員、合并申請(qǐng)、問題跟蹤、郵件交互、持續(xù)集成和競(jìng)爭(zhēng)式開發(fā)等多個(gè)方面。具體地,開發(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è)子類。軟件產(chǎn)品數(shù)據(jù)涉及軟件的方方面面信息,包括軟件描述、軟件標(biāo)簽、軟件分類和可執(zhí)行程序本身;軟件鏡像與之類似,包括鏡像描述和鏡像文件等。交付數(shù)據(jù)主要來源于軟件產(chǎn)品頁面、軟件包和鏡像倉(cāng)庫(kù),具體實(shí)例包括OpenHub和Docker Hub等。

        (3)應(yīng)用數(shù)據(jù)

        應(yīng)用數(shù)據(jù)主要包括資訊討論和應(yīng)用問答,其中資訊討論包括在線文檔、社區(qū)反饋、文檔標(biāo)簽以及其他屬性等;應(yīng)用問答則主要針對(duì)以提問和解答為主要形式的在線社區(qū)活動(dòng),涉及的數(shù)據(jù)包括問題與回復(fù)、問題標(biāo)簽和其他屬性等。應(yīng)用數(shù)據(jù)的主要數(shù)據(jù)來源為在線文檔和在線問答,具體實(shí)例有OSCHINA和Stack Overflow等。

        在此基礎(chǔ)上,本文提出了分布式異構(gòu)存儲(chǔ)的總體策略,設(shè)計(jì)和制定了多源異構(gòu)的軟件工程大數(shù)據(jù)管理框架與環(huán)境。其總體主要包括以下4個(gè)層次。

        ● 數(shù)據(jù)源:軟件工程大數(shù)據(jù)涵蓋開發(fā)、發(fā)布、應(yīng)用、運(yùn)維等不同過程、不同類型和不同源的數(shù)據(jù),包括版本庫(kù)、代碼倉(cāng)庫(kù)、配置制品、軟件鏡像等。

        ● 數(shù)據(jù)存儲(chǔ):主要實(shí)現(xiàn)對(duì)大規(guī)模異構(gòu)軟件工程大數(shù)據(jù)的高效存儲(chǔ)和訪問。

        ● 數(shù)據(jù)處理:圍繞特定的任務(wù)和目標(biāo),將存儲(chǔ)的數(shù)據(jù)按需展開,并進(jìn)行相應(yīng)的處理,形成軟件知識(shí)庫(kù)。通過數(shù)據(jù)解析、融合等技術(shù)進(jìn)行數(shù)據(jù)的二次加工和處理,包括通過分析不同數(shù)據(jù)類型之間的關(guān)聯(lián)和依賴、基于圖數(shù)據(jù)庫(kù)等存儲(chǔ)技術(shù)構(gòu)建軟件領(lǐng)域的知識(shí)圖譜,進(jìn)一步通過數(shù)據(jù)按需展開機(jī)制有效降低存儲(chǔ)資源的占用情況。

        ● 數(shù)據(jù)實(shí)例:通過豐富的接口和服務(wù),針對(duì)不同的需求和應(yīng)用提供相應(yīng)的數(shù)據(jù)服務(wù)。針對(duì)圍繞的不同數(shù)據(jù)類型,對(duì)外提供的數(shù)據(jù)服務(wù)被分為4類,包括以項(xiàng)目為中心的數(shù)據(jù)服務(wù)、以測(cè)試為目標(biāo)的數(shù)據(jù)服務(wù)、以人為中心的數(shù)據(jù)服務(wù)和以運(yùn)維為目標(biāo)的數(shù)據(jù)服務(wù)等。

        2.2 軟件工程開源生態(tài)大數(shù)據(jù)采集處理框架

        本文提出一種“增量式、多模式”的自生長(zhǎng)數(shù)據(jù)采集處理框架(如圖2所示),該框架能夠針對(duì)不同類型的軟件數(shù)據(jù)進(jìn)行匯聚、收集和整理。具體地,針對(duì)網(wǎng)頁數(shù)據(jù)、版本庫(kù)數(shù)據(jù)、缺陷庫(kù)數(shù)據(jù)等不同類型的數(shù)據(jù),本文研究了主動(dòng)感知、定向采集、多源關(guān)聯(lián)和增量檢測(cè)等關(guān)鍵技術(shù),設(shè)計(jì)部署了分布式爬蟲,實(shí)現(xiàn)了網(wǎng)頁爬蟲、基于應(yīng)用程序接口(application programming interface,API)的數(shù)據(jù)獲取和數(shù)據(jù)包直接下載等多種收集方式。具體如下。

        ● 基于網(wǎng)絡(luò)爬蟲的數(shù)據(jù)收集方法:針對(duì)特定的軟件庫(kù)采用定點(diǎn)爬取的方式,通過分析特定數(shù)據(jù)源網(wǎng)頁中的數(shù)據(jù)特點(diǎn)和Schema格式,基于爬蟲常用的標(biāo)簽匹配和正則表達(dá)式匹配等策略獲取相應(yīng)的數(shù)據(jù)信息。為了解決爬取效率低和重復(fù)爬取的問題,采用分布式網(wǎng)絡(luò)爬蟲技術(shù)進(jìn)行多任務(wù)的并行處理,從而大幅提高大規(guī)模軟件數(shù)據(jù)的爬取效率,另外,基于時(shí)間戳等信息實(shí)現(xiàn)周期性、增量式爬取,避免數(shù)據(jù)的重復(fù)獲取。其中,多數(shù)軟件數(shù)據(jù)基于爬蟲技術(shù)獲取,包括Apache基金項(xiàng)目的源碼、郵件、網(wǎng)頁和版本控制,Eclipse社區(qū)項(xiàng)目的缺陷報(bào)告和代碼,配資代碼庫(kù)和Docker Hub中的元數(shù)據(jù)信息、代碼制品及容器的Dockerfile,CSDN的博客、問答和論壇等。

        ● 基于API的數(shù)據(jù)收集方法:除了網(wǎng)絡(luò)爬蟲,部分開源軟件庫(kù)對(duì)外提供獲取和下載數(shù)據(jù)信息的開放API,因此可以通過調(diào)用API的方式獲取相應(yīng)的數(shù)據(jù)信息,其中包括Topcoder的眾包開發(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ǔ)上,軟件工程開源生態(tài)大數(shù)據(jù)采集處理框架整體可分為3層,包括數(shù)據(jù)獲取層、數(shù)據(jù)分析層以及持久化層,通過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ù)獲取層獲取的頁面信息進(jìn)行抽取,提取出每個(gè)頁面中的關(guān)鍵信息,并對(duì)抽取結(jié)果進(jìn)行驗(yàn)證,通過驗(yàn)證的頁面數(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 軟件工程開源生態(tài)大數(shù)據(jù)采集處理框架

        2.3 軟件工程開源生態(tài)大數(shù)據(jù)的匯聚共享

        針對(duì)軟件工程開源生態(tài)大數(shù)據(jù)規(guī)模大、多樣性和異構(gòu)性的特點(diǎn),本文采用開放共享、分散存儲(chǔ)、平臺(tái)匯聚、按需獲取的方式,形成一個(gè)大規(guī)模軟件工程大數(shù)據(jù)共享平臺(tái),如圖3所示。目前該平臺(tái)已實(shí)現(xiàn)對(duì)全球PB級(jí)開源代碼和鏡像等軟件工程大數(shù)據(jù)的跟蹤、獲取,為軟件工程研究和實(shí)踐提供了堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ)。

        圖3 軟件工程大數(shù)據(jù)共享平臺(tái)

        軟件工程大數(shù)據(jù)共享平臺(tái)采用分散存儲(chǔ)、平臺(tái)匯聚的模式提供共享管理和在線訪問統(tǒng)一入口,屏蔽底層數(shù)據(jù)存儲(chǔ)的分散性和多樣性,提供風(fēng)格一致的門戶環(huán)境。具體存儲(chǔ)結(jié)合實(shí)際數(shù)據(jù)特征采用結(jié)構(gòu)化存儲(chǔ)與非結(jié)構(gòu)化存儲(chǔ)相結(jié)合的方式,平臺(tái)核心架構(gòu)設(shè)計(jì)如下。

        ● 以多源異構(gòu)的軟件工程開源生態(tài)大數(shù)據(jù)為數(shù)據(jù)源,基于網(wǎng)絡(luò)爬蟲技術(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ǔ)的資源占用問題,針對(duì)軟件版本數(shù)據(jù)提供了按需進(jìn)行版本分支展開的機(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)一訪問門戶,并可根據(jù)需求動(dòng)態(tài)調(diào)整數(shù)據(jù)類別條目,通過統(tǒng)一資源接口,支持用戶快速獲得原始或加工過的各類軟件工程數(shù)據(jù)。

        平臺(tái)被部署于UCloud和阿里云上,提供匯聚數(shù)據(jù)說明及訪問入口,小規(guī)模數(shù)據(jù)集被直接上傳至共享平臺(tái),大規(guī)模數(shù)據(jù)集/應(yīng)用服務(wù)由數(shù)據(jù)共享單位自行管理。該平臺(tái)具有高度靈活性和可擴(kuò)展性,能夠基于軟件工程開源生態(tài)大數(shù)據(jù)體系建立多樣化的數(shù)據(jù)類型導(dǎo)航機(jī)制,涉及的典型軟件工程數(shù)據(jù)包括軟件工程科研數(shù)據(jù)、開源代碼數(shù)據(jù)、Docker鏡像數(shù)據(jù)以及知識(shí)圖譜數(shù)據(jù)等不同類型。

        3 基于軟件工程開源生態(tài)大數(shù)據(jù)的智能化軟件開發(fā)

        立足于軟件工程開源生態(tài)大數(shù)據(jù),越來越多的研究團(tuán)隊(duì)基于不同類型的開源大數(shù)據(jù)進(jìn)行智能化的軟件開發(fā)研究。如圖4所示,從基于代碼、日志、郵件等開發(fā)數(shù)據(jù)的知識(shí)圖譜構(gòu)造,到融合缺陷、社區(qū)問答等開發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù)的軟件代碼缺陷定位與修復(fù)、問答資源推薦,再到針對(duì)配置文件、容器鏡像等交付數(shù)據(jù)的運(yùn)維數(shù)據(jù)管理,這些前沿探索為人們更好地利用開源大數(shù)據(jù)輔助智能化軟件開發(fā)提供了方法指導(dǎo)與工具支持。

        3.1 基于開發(fā)數(shù)據(jù)的軟件知識(shí)圖譜構(gòu)造

        相關(guān)研究針對(duì)軟件缺陷發(fā)現(xiàn)而構(gòu)造的軟件缺陷知識(shí)圖譜(bug knowledge graph,BKG)[3]利用主題模型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)[4],通過預(yù)定義的模板進(jìn)行規(guī)范,采取社區(qū)平臺(tái)的方式進(jìn)行人工編輯,但是其并非自動(dòng)化方法,受限于與軟件弱點(diǎn)相關(guān)的文檔數(shù)據(jù),不支持其他數(shù)據(jù)源的知識(shí)擴(kuò)展。此外,針對(duì)軟件開發(fā)在線問答,相關(guān)研究構(gòu)造了HDSKG(harvesting domain specific knowledge graph)[5],通過依賴解析和基于規(guī)則的方法進(jìn)行實(shí)體和關(guān)系的識(shí)別,采用支持向量機(jī)(support vector machine,SVM)的分類算法評(píng)估三元組,但是其是半自動(dòng)化方法,主要來源于Stack Overflow的在線問答數(shù)據(jù),可擴(kuò)展性受限。因此,基于軟件工程開源生態(tài)大數(shù)據(jù)中的開發(fā)數(shù)據(jù),相關(guān)研究通過探索面向多源異質(zhì)、動(dòng)態(tài)增長(zhǎng)的軟件大數(shù)據(jù)的軟件知識(shí)自動(dòng)識(shí)別、抽取、關(guān)聯(lián)與融合過程,提煉出大規(guī)模、內(nèi)容全面、語義豐富的軟件知識(shí)圖譜,為軟件構(gòu)造過程中的智能化輔助服務(wù)提供了基礎(chǔ)支撐[6-7]。給定一個(gè)可復(fù)用的軟件項(xiàng)目及與其相關(guān)的大量軟件項(xiàng)目數(shù)據(jù),這些研究提出的方法能夠自動(dòng)從中抽取出概念、實(shí)體等結(jié)點(diǎn),并建立這些結(jié)點(diǎn)之間多源異構(gòu)、類型豐富的關(guān)系,形成這個(gè)軟件項(xiàng)目特定的一個(gè)軟件項(xiàng)目知識(shí)圖譜。該知識(shí)圖譜基于圖數(shù)據(jù)庫(kù),實(shí)現(xiàn)了對(duì)知識(shí)圖譜的存儲(chǔ)、索引、查詢等基礎(chǔ)支持的建立,為軟件項(xiàng)目數(shù)據(jù)的解析、關(guān)聯(lián)融合與知識(shí)挖掘提煉提供了支撐環(huán)境。在數(shù)據(jù)解析方面,圖譜兼容多種不同類型的軟件工程數(shù)據(jù),包括:軟件源代碼、各種版本控制系統(tǒng)(如SVN、Git)的版本記錄、郵件列表日志、缺陷追蹤系統(tǒng)日志、HTML網(wǎng)頁文檔、Word文檔、PDF文檔等。同時(shí),該知識(shí)圖譜構(gòu)造工具內(nèi)置了多種可追蹤性關(guān)聯(lián)分析與知識(shí)補(bǔ)全模塊,能夠充分對(duì)不同來源的軟件數(shù)據(jù)間的語義關(guān)聯(lián)進(jìn)行智能恢復(fù)補(bǔ)全,且能夠從數(shù)據(jù)中提煉出更適合管理者、開發(fā)者與復(fù)用者理解的知識(shí)。

        圖4 基于軟件工程開源生態(tài)大數(shù)據(jù)的智能化軟件開發(fā)研究

        3.2 基于缺陷與社區(qū)問答數(shù)據(jù)的軟件代碼缺陷智能定位與修復(fù)

        基于軟件工程開源生態(tài)大數(shù)據(jù)中的開發(fā)數(shù)據(jù)和應(yīng)用數(shù)據(jù),相關(guān)研究團(tuán)隊(duì)圍繞基于缺陷和社區(qū)問答數(shù)據(jù)的軟件代碼缺陷智能定位與修復(fù)問題開展了大量研究[8-9]。他們針對(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)的信息檢索方法[10]以及基于頻譜的方法[11],該方法能夠?qū)⑿迯?fù)歷史作為監(jiān)督信息,同時(shí)將文本相似度與語義相似度結(jié)合,實(shí)現(xiàn)更高精度的缺陷定位。在開源項(xiàng)目Eclipse的多個(gè)子項(xiàng)目(PDE、Platform、JDT)收集的真實(shí)數(shù)據(jù)上的預(yù)測(cè)準(zhǔn)確率相較同類工作最高提升23.6%。另外,為了研究缺陷報(bào)告文本附加信息對(duì)缺陷定位的影響,Wang Y J等人[8]提出了L2SS+模型簇,在多個(gè)實(shí)際數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,L2SS+CM模型,即產(chǎn)品模塊信息對(duì)缺陷定位準(zhǔn)確率影響最顯著,預(yù)測(cè)準(zhǔn)確率較同類工作最高提升18.7%。在基于社區(qū)問答網(wǎng)站的軟件缺陷修復(fù)信息智能推薦技術(shù)方面,為了進(jìn)一步精確獲取和分類社區(qū)問答網(wǎng)站的內(nèi)容,相關(guān)研究分析了網(wǎng)站文本內(nèi)容的自動(dòng)標(biāo)簽推薦問題,針對(duì)標(biāo)簽與文本詞之間的共現(xiàn)關(guān)系、標(biāo)簽之間的關(guān)聯(lián)關(guān)系等特點(diǎn),Tang S J等人[9]提出了一個(gè)iTAG深度學(xué)習(xí)模型,并給出了相關(guān)訓(xùn)練與預(yù)測(cè)算法。在從Stack Overflow程序員社區(qū)問答網(wǎng)站等獲取的真實(shí)數(shù)據(jù)集上,iTAG模型較其他同類工作(#TagSpace[12]、Maxide[13]等)在預(yù)測(cè)準(zhǔn)確率上有顯著提升。另外,iTAG模型在結(jié)果可視化解釋、發(fā)現(xiàn)更多合理的標(biāo)簽等方面具有優(yōu)勢(shì)。

        3.3 基于上下文感知的軟件問答資源推薦技術(shù)

        近些年,相關(guān)研究團(tuán)隊(duì)立足于軟件工程開源生態(tài)大數(shù)據(jù)中的應(yīng)用數(shù)據(jù)和交付數(shù)據(jù),圍繞上下文感知的軟件問答資源推薦技術(shù)開展了富有成效的研究[14]。目前大部分的軟件問答推薦系統(tǒng)沒有考慮上下文,有的雖然考慮了上下文,但是還是以代碼本身關(guān)鍵詞為主,沒有考慮其中的語義信息,也沒有充分挖掘已有的海量的問答知識(shí)[15-17]。參考文獻(xiàn)[14]針對(duì)此設(shè)計(jì)了基于主題模型的軟件問答推薦系統(tǒng),推薦系統(tǒng)通過主題模型組織整理現(xiàn)有的全量問答數(shù)據(jù),并推斷用戶代碼的行為,通過不同場(chǎng)景下的用戶行為抽取不同的代碼上下文,根據(jù)代碼上下文向開發(fā)人員推薦不同的問答。推薦問答的關(guān)鍵操作是計(jì)算代碼上下文與問答數(shù)據(jù)的相關(guān)性,其中的一個(gè)關(guān)鍵問題在于問答數(shù)據(jù)的范圍,直觀的選擇是計(jì)算代碼上下文與全量問答數(shù)據(jù)的相關(guān)性,然而這在實(shí)際應(yīng)用中是不可能的,因此首先要做的是縮小計(jì)算范圍,計(jì)算代碼上下文和一部分問答數(shù)據(jù)的相關(guān)性。為了縮小計(jì)算的范圍,降低計(jì)算復(fù)雜度,Shao B等人[14]抽取代碼上下文中的關(guān)鍵詞,利用關(guān)鍵詞檢索得到較小的問答數(shù)據(jù)集合,然后計(jì)算代碼上下文和每一個(gè)問答數(shù)據(jù)的相關(guān)性,對(duì)所有結(jié)果進(jìn)行排序后推薦給開發(fā)人員。推薦系統(tǒng)監(jiān)測(cè)開發(fā)人員開發(fā)代碼,當(dāng)開發(fā)人員停止代碼或者程序運(yùn)行時(shí),拋出異常等行為觸發(fā)推薦機(jī)制,推薦系統(tǒng)通過抽象語法樹和主題模型分析代碼上下文,抽取關(guān)鍵詞,檢索多源數(shù)據(jù),對(duì)返回的數(shù)據(jù)進(jìn)行分析排序,并最終展示給用戶。

        為了充分體現(xiàn)人性化關(guān)懷,醫(yī)院對(duì)于掛號(hào)窗口,實(shí)行分專窗管理,開設(shè)老殘?jiān)熊妼4啊和T急診建卡及掛號(hào)專窗、退換號(hào)專窗、未帶身份證及卡異常等特殊情況處理專窗,并加強(qiáng)了醫(yī)生停診、換診的信息管理,實(shí)現(xiàn)醫(yī)生停診、換診申請(qǐng)網(wǎng)上提交并審核,保證了充足的號(hào)源。

        3.4 面向軟件一體化開發(fā)運(yùn)維的數(shù)據(jù)匯聚和知識(shí)管理

        基于軟件工程開源生態(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ù)[18-19]。其成果首先實(shí)現(xiàn)了增量式、高并發(fā)的Docker數(shù)據(jù)匯聚和管理方法,支持對(duì)Docker Hub上百萬級(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ù)問題,參考文獻(xiàn)[18-19]提出了一種增量式的數(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ù)獲取的過程中,考慮到檢索結(jié)構(gòu)數(shù)據(jù)量大(通常能夠達(dá)到萬級(jí)或十萬級(jí)),他們采用“分而治之”的策略,對(duì)大規(guī)模的搜索返回結(jié)果實(shí)施并發(fā)的多線程獲取方式,顯著地提升了數(shù)據(jù)匯聚效率。最后,基于多種啟發(fā)性規(guī)則對(duì)初步獲取的Docker項(xiàng)目元數(shù)據(jù)進(jìn)行分析、對(duì)比和過濾,識(shí)別其中的冗余和更新內(nèi)容,保證數(shù)據(jù)內(nèi)容的一致以及數(shù)據(jù)內(nèi)容的更新,實(shí)現(xiàn)了海量Docker項(xiàng)目相關(guān)數(shù)據(jù)的高效匯聚和增量更新。

        4 基于軟件工程開源生態(tài)大數(shù)據(jù)分析挖掘的典型應(yīng)用

        近年來,越來越多的基于軟件工程開源生態(tài)大數(shù)據(jù)分析挖掘的應(yīng)用誕生,并不斷發(fā)展。其中,針對(duì)軟件問答社區(qū)(如Stack Overflow)、開源軟件項(xiàng)目(如Apache、安卓項(xiàng)目等)、軟件開發(fā)工具(如Eclipse)、開發(fā)者數(shù)據(jù)(眾包開發(fā)者數(shù)據(jù)、開發(fā)過程數(shù)據(jù)等)類型的數(shù)據(jù)進(jìn)行了匯聚和收集整理,OSSEAN構(gòu)建了面向全球開源軟件的檢索與分析平臺(tái)。OSSEAN平臺(tái)的基本思路為:在軟件消費(fèi)社區(qū)中找到關(guān)于軟件項(xiàng)目的文檔;利用這些文檔對(duì)軟件進(jìn)行評(píng)估、比較、排序。通過獲取到的海量的開源社區(qū)數(shù)據(jù),OSSEAN平臺(tái)能夠提供一些有趣的服務(wù),如開源生態(tài)系統(tǒng)的度量、軟件排序以及熱點(diǎn)話題分析。OSSEAN平臺(tái)數(shù)據(jù)獲取模塊已覆蓋全球20多個(gè)主要的開源社區(qū),并對(duì)這些社區(qū)進(jìn)行持續(xù)監(jiān)控、實(shí)時(shí)抓取,抓取和分析的數(shù)據(jù)包括超過140萬個(gè)開源項(xiàng)目/倉(cāng)庫(kù)的元數(shù)據(jù)以及超過2 000萬條在線討論數(shù)據(jù)。同時(shí),OSSEAN平臺(tái)的跨社區(qū)關(guān)聯(lián)與分析模塊通過對(duì)多源異構(gòu)數(shù)據(jù)的深度互聯(lián),建立相應(yīng)的異質(zhì)信息網(wǎng)絡(luò),并在此基礎(chǔ)上實(shí)現(xiàn)對(duì)開源軟件的分析、檢索與排序等服務(wù)[20]。

        SnowGraph(software knowledge graph)在對(duì)開源社區(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)、語義性強(qiáng)的知識(shí),并以知識(shí)圖譜的形式進(jìn)行表示;在此基礎(chǔ)上,將知識(shí)圖譜融入機(jī)器對(duì)無結(jié)構(gòu)文本的處理過程,進(jìn)而為復(fù)用者提供準(zhǔn)確有效的智能問答服務(wù),從而提高軟件復(fù)用過程的效率與質(zhì)量。目前,SnowGraph的項(xiàng)目原始數(shù)據(jù)規(guī)模大約為500 GB,其中包含軟件項(xiàng)目源代碼、軟件開發(fā)版本記錄、軟件缺陷追蹤記錄、軟件開發(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ù)系統(tǒng),即開發(fā)人員在復(fù)用一個(gè)軟件項(xiàng)目時(shí),提出與軟件領(lǐng)域相關(guān)的開發(fā)問題,知識(shí)圖譜返回相應(yīng)的代碼/文檔作為答案,從而輔助開發(fā)人員進(jìn)行軟件復(fù)用。與BKG[3]、CWE KG[4]、HDSKG[5]等其他主流軟件知識(shí)圖譜相比,SnowGraph采取了多種信息抽取的方法來協(xié)同進(jìn)行知識(shí)圖譜的全自動(dòng)化構(gòu)造,自動(dòng)化程度更高,并且具備很好的通用性和可擴(kuò)展性,能夠?qū)ξ磥砜赡艹霈F(xiàn)的新的知識(shí)需求、知識(shí)來源,以及知識(shí)抽取、關(guān)聯(lián)、提煉等進(jìn)行支持。此外,SnowGraph實(shí)體類型和關(guān)系類型明顯比其他主流軟件知識(shí)圖譜豐富,從而在對(duì)應(yīng)的軟件知識(shí)表示和知識(shí)利用的任務(wù)上具備更好的效果。

        CodeWisdom開發(fā)了代碼大數(shù)據(jù)與智能化軟件開發(fā)研究成果展示與服務(wù)平臺(tái)。該平臺(tái)在GitHub等開源軟件社區(qū)的軟件代碼及軟件開發(fā)歷史、Stack Overflow等軟件開發(fā)問答網(wǎng)站的問答知識(shí),以及API文檔等互聯(lián)網(wǎng)軟件開發(fā)資源的基礎(chǔ)上,利用程序分析、深度學(xué)習(xí)、自然語言處理、知識(shí)圖譜、數(shù)據(jù)挖掘等技術(shù),充分發(fā)掘代碼大數(shù)據(jù)中蘊(yùn)含的知識(shí),通過檢索、推薦、問答、可視化等多種手段提供智能化軟件開發(fā)支持。

        5 結(jié)束語

        本文提出了軟件工程開源生態(tài)大數(shù)據(jù)體系,構(gòu)建了自生長(zhǎng)的采集處理框架和匯聚共享環(huán)境,并闡述了基于軟件工程開源生態(tài)大數(shù)據(jù)的智能化軟件開發(fā)的相關(guān)研究以及典型應(yīng)用情況。面向智能化軟件開發(fā)的開源生態(tài)大數(shù)據(jù)研究具有很強(qiáng)的研究意義和實(shí)際價(jià)值,未來需要進(jìn)行進(jìn)一步的深入探索。

        猜你喜歡
        開源代碼圖譜
        繪一張成長(zhǎng)圖譜
        五毛錢能買多少頭牛
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        補(bǔ)腎強(qiáng)身片UPLC指紋圖譜
        中成藥(2017年3期)2017-05-17 06:09:01
        大家說:開源、人工智能及創(chuàng)新
        開源中國(guó)開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        主動(dòng)對(duì)接你思維的知識(shí)圖譜
        日韩精品极品视频在线观看蜜桃| 国产精品成人国产乱| 无码夜色一区二区三区| 亚洲AV无码一区二区一二区色戒| 亚洲一区二区视频免费看| 精品国产午夜肉伦伦影院| 亚洲av福利无码无一区二区| 狠干狠爱无码区| 日韩精品首页在线观看| 国产精品一区av在线| 国产精品兄妹在线观看麻豆| 日本a级特黄特黄刺激大片| 亚洲黄片久久| 色播视频在线观看麻豆| 亚洲av片在线观看| 日韩毛片基地一区二区三区| 亚洲中文字幕有综合久久| 亚洲色图在线免费视频| 免费国产黄网站在线观看可以下载 | 区一区二区三区四视频在线观看| 国产精品成人免费视频一区| 欧性猛交ⅹxxx乱大交| 久久青青草视频免费观看| 日本一区二区视频在线| 日本一卡2卡3卡4卡无卡免费网站| 亚洲久无码中文字幕热| 精品在线视频免费在线观看视频 | 日韩精品一区二区三区视频 | 久久无码一二三四| av天堂在线免费播放| 国内永久福利在线视频图片| 真实国产老熟女粗口对白| 九九99久久精品午夜剧场免费| 宅男视频一区二区三区在线观看| 曰韩无码无遮挡a级毛片| 熟妇五十路六十路息与子| 亚洲av永久久无久之码精| 亚洲字幕中文综合久久| 中国凸偷窥xxxx自由视频妇科| 欧美日韩激情在线一区二区| 综合亚洲二区三区四区在线 |