亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種組件協(xié)議挖掘方法、裝置及系統(tǒng)的制作方法

文檔序號(hào):9217007閱讀:569來源:國知局
一種組件協(xié)議挖掘方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及程序挖掘技術(shù)領(lǐng)域,尤其涉及一種組件協(xié)議挖掘方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 軟件組件的接口函數(shù)之間通常存在著時(shí)序約束。使用軟件組件時(shí)需要遵守的時(shí)序 約束構(gòu)成了該組件的一個(gè)協(xié)議,即組件協(xié)議。這種協(xié)議規(guī)定了接口函數(shù)之間調(diào)用的先后順 序。如下所示,分別展示了類java.util.Stack和java.util.Iteration的一個(gè)時(shí)序約束:
[0003] (1)調(diào)用Stack類的peekO函數(shù)查看棧頂元素之前,應(yīng)該先調(diào)用pushO函數(shù)向棧 中插入一個(gè)元素;
[0004] (2)調(diào)用Iteration類的next()函數(shù)獲取下一個(gè)元素之前應(yīng)該先調(diào)用hasNext() 函數(shù)查看下一個(gè)元素是否存在。
[0005] 這種約束信息可以用于程序說明、程序測試和程序驗(yàn)證等領(lǐng)域。例如:程序違 反上述時(shí)序約束(1)時(shí),會(huì)導(dǎo)致EmptyStackException異常;違反時(shí)序約束(2)會(huì)導(dǎo)致 NoSuchElementException異常。
[0006] 程序約束挖掘是自動(dòng)的獲得組件協(xié)議的有效方法。其通常包括靜態(tài)挖掘方法和動(dòng) 態(tài)挖掘方法。其中,動(dòng)態(tài)挖掘方法不需要以程序源代碼作為輸入且可以避免靜態(tài)挖掘方法 中存在的不可達(dá)路徑、復(fù)雜數(shù)據(jù)結(jié)構(gòu)和指針別名等問題,適用范圍更加廣泛。當(dāng)前,動(dòng)態(tài)挖 掘方法主要有兩階段步驟:第一階段采用插粧技術(shù)對(duì)目標(biāo)應(yīng)用程序進(jìn)行插粧,然后通過運(yùn) 行目標(biāo)應(yīng)用程序收集表征程序執(zhí)行軌跡的函數(shù)調(diào)用信息,并將函數(shù)調(diào)用信息存儲(chǔ)在軌跡文 件中;第二階段將軌跡文件作為輸入,采用序列化數(shù)據(jù)挖掘方法提取組件協(xié)議。
[0007] 然而采用上述動(dòng)態(tài)挖掘方法,在與一個(gè)組件相關(guān)的函數(shù)調(diào)用信息數(shù)量過少時(shí),易 導(dǎo)致過擬合問題,即獲得的組件協(xié)議缺乏準(zhǔn)確性和完備性,而要獲得足夠的函數(shù)調(diào)用信息, 需要耗費(fèi)大量的人力來運(yùn)行程序和收集函數(shù)調(diào)用信息;且采用中間文件作為函數(shù)調(diào)用信息 的存儲(chǔ)方式,需要導(dǎo)出文件后,再統(tǒng)一進(jìn)行組件挖掘,限制了組件協(xié)議的挖掘效率。
[0008] 可見,現(xiàn)有的組件協(xié)議挖掘方法存在人力耗費(fèi)大和挖掘效率低的技術(shù)問題。

【發(fā)明內(nèi)容】

[0009] 本發(fā)明提供一種組件協(xié)議挖掘方法、裝置及系統(tǒng),用以解決現(xiàn)有技術(shù)中的組件協(xié) 議挖掘方法存在的人力耗費(fèi)大和挖掘效率低的技術(shù)問題。
[0010] 第一方面,提供一種組件協(xié)議挖掘方法,所述方法應(yīng)用于服務(wù)器中,所述服務(wù)器與 N個(gè)客戶端連接,N為大于1的整數(shù),所述方法包括:
[0011] 發(fā)送開始插粧指令至所述N個(gè)客戶端,所述開始插粧指令中攜帶有需要挖掘的類 的M個(gè)函數(shù)的函數(shù)標(biāo)識(shí),M為大于1的整數(shù);
[0012] 接收所述N個(gè)客戶端發(fā)送的所述M個(gè)函數(shù)的函數(shù)調(diào)用信息;所述函數(shù)調(diào)用信息是 所述N個(gè)客戶端基于所述開始插粧指令收集的信息;
[0013] 根據(jù)所述函數(shù)調(diào)用信息更新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié)議。
[0014] 可選的,所述根據(jù)所述函數(shù)調(diào)用信息更新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié)議 之后,還包括:
[0015] 當(dāng)符合預(yù)設(shè)條件時(shí),發(fā)送停止插粧指令至所述N個(gè)客戶端,所述停止插粧指令中 攜帶有所述函數(shù)標(biāo)識(shí),以使所述N個(gè)客戶端基于所述停止插粧指令停止收集所述M個(gè)函數(shù) 的函數(shù)調(diào)用信息。
[0016] 可選的,所述預(yù)設(shè)條件具體為:
[0017] 所述組件協(xié)議中包括的函數(shù)數(shù)量大于等于第一閾值;所述第一閾值大于等于所述 類的公有函數(shù)的數(shù)量,和/或
[0018] 連續(xù)發(fā)生第一事件的次數(shù)大于等于第二閾值;所述第一事件為更新所述組件協(xié) 議,且所述組件協(xié)議沒有變化。
[0019] 第二方面,提供一種組件協(xié)議挖掘方法,所述方法應(yīng)用于客戶端中,所述客戶端與 服務(wù)器連接,所述方法包括:
[0020] 接收所述服務(wù)器發(fā)送的開始插粧指令,所述開始插粧指令中攜帶有需要挖掘的類 的M個(gè)函數(shù)的函數(shù)標(biāo)識(shí),M為大于1的整數(shù);
[0021] 從所述M個(gè)函數(shù)中確定出L個(gè)函數(shù);M彡L彡1 ;
[0022] 在所述客戶端上運(yùn)行目標(biāo)應(yīng)用程序時(shí),對(duì)所述目標(biāo)應(yīng)用程序的所述L個(gè)函數(shù)進(jìn)行 插粧,以收集所述L個(gè)函數(shù)的函數(shù)調(diào)用信息;
[0023] 發(fā)送所述函數(shù)調(diào)用信息至所述服務(wù)器,以使所述服務(wù)器根據(jù)所述函數(shù)調(diào)用信息更 新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié)議。
[0024] 可選的,所述從所述M個(gè)函數(shù)中確定出L個(gè)函數(shù),具體為:
[0025] 獲取所述目標(biāo)應(yīng)用程序的實(shí)時(shí)性要求參數(shù);所述實(shí)時(shí)性要求參數(shù)的數(shù)值與所述目 標(biāo)應(yīng)用程序要求的響應(yīng)速度呈正比;
[0026] 根據(jù)所述實(shí)時(shí)性要求參數(shù)從所述M個(gè)函數(shù)中確定出L個(gè)函數(shù),以使L與所述實(shí)時(shí) 性要求參數(shù)的數(shù)值呈反比。
[0027] 可選的,所述發(fā)送所述函數(shù)調(diào)用信息至所述服務(wù)器之后,還包括:
[0028] 接收所述服務(wù)器發(fā)送的停止插粧指令,所述停止插粧指令中攜帶有所述函數(shù)標(biāo) 識(shí);
[0029] 基于所述停止插粧指令停止收集所述L個(gè)函數(shù)的函數(shù)調(diào)用信息。
[0030] 第三方面,提供一種組件協(xié)議挖掘系統(tǒng),所述系統(tǒng)包括服務(wù)器和與所述服務(wù)器連 接的N個(gè)客戶端,N為大于1的整數(shù);
[0031] 其中,所述服務(wù)器用于發(fā)送開始插粧指令至所述N個(gè)客戶端,所述開始插粧指令 中攜帶有需要挖掘的類的M個(gè)函數(shù)的函數(shù)標(biāo)識(shí),M為大于1的整數(shù);
[0032] 所述N個(gè)客戶端用于接收所述開始插粧指令;以及從所述M個(gè)函數(shù)中確定出L個(gè) 函數(shù);M多L多1 ;以及在所述客戶端上運(yùn)行目標(biāo)應(yīng)用程序時(shí),對(duì)所述目標(biāo)應(yīng)用程序的所述 L個(gè)函數(shù)進(jìn)行插粧,以收集所述L個(gè)函數(shù)的函數(shù)調(diào)用信息;以及發(fā)送所述函數(shù)調(diào)用信息至所 述服務(wù)器;
[0033] 所述服務(wù)器還用于,接收所述N個(gè)客戶端發(fā)送的所述函數(shù)調(diào)用信息;并根據(jù)所述 函數(shù)調(diào)用信息更新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié)議。
[0034] 第四方面,提供一種組件協(xié)議挖掘裝置,具體為服務(wù)器,所述服務(wù)器與N個(gè)客戶端 連接,N為大于1的整數(shù),所述裝置包括:
[0035] 第一發(fā)送單元,用于發(fā)送開始插粧指令至所述N個(gè)客戶端,所述開始插粧指令中 攜帶有需要挖掘的類的M個(gè)函數(shù)的函數(shù)標(biāo)識(shí),M為大于1的整數(shù);
[0036] 第一接收單元,用于接收所述N個(gè)客戶端發(fā)送的所述M個(gè)函數(shù)的函數(shù)調(diào)用信息;所 述函數(shù)調(diào)用信息是所述N個(gè)客戶端基于所述開始插粧指令收集的信息;
[0037] 更新單元,用于根據(jù)所述函數(shù)調(diào)用信息更新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié) 議。
[0038] 第五方面,提供一種組件協(xié)議挖掘裝置,具體為客戶端,所述客戶端與服務(wù)器連 接,所述裝置包括:
[0039] 第二接收單元,用于接收所述服務(wù)器發(fā)送的開始插粧指令,所述開始插粧指令中 攜帶有需要挖掘的類的M個(gè)函數(shù)的函數(shù)標(biāo)識(shí),M為大于1的整數(shù);
[0040] 確定單元,用于從所述M個(gè)函數(shù)中確定出L個(gè)函數(shù);M彡L彡1 ;
[0041] 插粧單元,用于在所述客戶端上運(yùn)行目標(biāo)應(yīng)用程序時(shí),對(duì)所述目標(biāo)應(yīng)用程序的所 述L個(gè)函數(shù)進(jìn)行插粧,以收集所述L個(gè)函數(shù)的函數(shù)調(diào)用信息;
[0042] 第二發(fā)送單元,用于發(fā)送所述函數(shù)調(diào)用信息至所述服務(wù)器,以使所述服務(wù)器根據(jù) 所述函數(shù)調(diào)用信息更新所述服務(wù)器中存儲(chǔ)的所述類的組件協(xié)議。
[0043] 本申請(qǐng)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
[0044] 1、本申請(qǐng)實(shí)施例提供的組件協(xié)議挖掘方法、裝置及系統(tǒng),通過組網(wǎng)結(jié)構(gòu),服務(wù)器能 同時(shí)從多個(gè)客戶端獲取大量的函數(shù)調(diào)用信息,從而獲取更豐富和完善的程序執(zhí)行軌跡,不 需要耗費(fèi)大量的人力就提高了組件挖掘的準(zhǔn)確性和完備性,降低了數(shù)據(jù)獲取成本。
[0045] 2、本申請(qǐng)實(shí)施例提供的組件協(xié)議挖掘方法、裝置及系統(tǒng),無需進(jìn)行中間文件的存 儲(chǔ),具有較小的存儲(chǔ)空間開銷,由服務(wù)器在每次接收到一個(gè)函數(shù)調(diào)用信息后,就對(duì)已有的組 件協(xié)議進(jìn)行實(shí)時(shí)更新,即組件協(xié)議的挖掘與函數(shù)調(diào)用信息的獲取并發(fā)進(jìn)行,提高了組件協(xié) 議挖掘的效率。
[0046] 3、本申請(qǐng)實(shí)施例提供的組件協(xié)議挖掘方法、裝置及系統(tǒng),從多個(gè)客戶端獲取函數(shù) 調(diào)用信息,即不用對(duì)一個(gè)客戶端的一個(gè)程序進(jìn)行大量插粧來獲取足夠的函數(shù)調(diào)用信息,采 用根據(jù)應(yīng)用程序的實(shí)時(shí)性要求設(shè)置插粧數(shù)量,避免過度插粧對(duì)應(yīng)用程序?qū)崟r(shí)性造成較大影 響。
[0047] 4、本申請(qǐng)實(shí)施例提供的組件協(xié)議挖掘方法、裝置及系統(tǒng),在符合預(yù)設(shè)條件時(shí),停止 進(jìn)行函數(shù)調(diào)用信息的收集,有效緩解了服務(wù)器端和客戶端的計(jì)算壓力。
【附圖說明】
[0048] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述 中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1