一種軟件行為獲取、監(jiān)控與驗(yàn)證方法
【專利摘要】本發(fā)明涉及一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,包括:獲取軟件行為;監(jiān)控軟件行為;驗(yàn)證軟件行為。針對(duì)現(xiàn)有軟件行為監(jiān)測(cè)、分析和驗(yàn)證方法中存在的不僅需要修改程序源碼,而且編程負(fù)擔(dān)較重,缺乏監(jiān)控與分析粒度調(diào)控等問(wèn)題,本發(fā)明從基于Java的面向?qū)ο缶幊陶Z(yǔ)言的行為和屬性的分析出發(fā),結(jié)合UML和OCL技術(shù),提供一種較為通用的軟件行為獲取、監(jiān)控與驗(yàn)證方法,可以自動(dòng)生成監(jiān)控所需的AOP方面類,減少編碼人員工作量;在不修改待驗(yàn)證系統(tǒng)源代碼的情況下進(jìn)行監(jiān)控與驗(yàn)證;大量使用接口和動(dòng)態(tài)鏈接庫(kù),易于維護(hù)和修改。使用本發(fā)明對(duì)軟件系統(tǒng)進(jìn)行監(jiān)控和驗(yàn)證,可以對(duì)軟件系統(tǒng)的可信性進(jìn)行度量,并且保護(hù)軟件系統(tǒng)正常運(yùn)行。
【專利說(shuō)明】一種軟件行為獲取、監(jiān)控與驗(yàn)證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,既能夠監(jiān)控并保護(hù)軟件的運(yùn)行,又可以為可信軟件的度量和驗(yàn)證提供一定依據(jù)。
【背景技術(shù)】
[0002]當(dāng)前,以通信、存儲(chǔ)和計(jì)算為核心的信息基礎(chǔ)設(shè)施已經(jīng)滲透到政治、經(jīng)濟(jì)、軍事、文化和社會(huì)生活的各個(gè)層面,軟件作為信息基礎(chǔ)設(shè)施的靈魂,在信息社會(huì)中發(fā)揮著至關(guān)重要的作用。日趨龐大的軟件需求愈來(lái)愈多,復(fù)雜度愈來(lái)愈高,可用性要求愈來(lái)愈強(qiáng),軟件系統(tǒng)卻愈來(lái)愈脆弱,常常發(fā)生各種各樣的問(wèn)題,并對(duì)人們的工作生活帶來(lái)不利的影響,甚至造成巨大的損失。
[0003]軟件本質(zhì)上是代替人執(zhí)行一定的行為,軟件的可信性主要表現(xiàn)在其行為可信上,即要求軟件系統(tǒng)的運(yùn)行行為及其結(jié)果總是符合人們的期望。目前,Java作為一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,以其具有卓越的通用性、高效性、平臺(tái)移植性和安全性,而廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。
[0004]但正因?yàn)镴ava應(yīng)用廣泛,針對(duì)Java漏洞和缺陷的攻擊層出不窮,微軟信息安全團(tuán)隊(duì)在2011年底發(fā)表的一期信息安全研究顯示,在2011年內(nèi),微軟的防毒軟件總共偵測(cè)到2750萬(wàn)次貓準(zhǔn)Java漏洞的攻擊,平均每季度690萬(wàn)次,超越先前Adobe在Acrobat、Reader及Flash方面的漏洞,成為黑客的主要目標(biāo)。
[0005]目前,軟件分析是以軟件為對(duì)象通過(guò)靜態(tài)或動(dòng)態(tài)的方法進(jìn)行人工或自動(dòng)分析。大多數(shù)軟件的行為分析與驗(yàn)證方法及系統(tǒng)都是通過(guò)靜態(tài)編碼對(duì)待驗(yàn)證軟件進(jìn)行行為監(jiān)測(cè)、分析和驗(yàn)證,不僅需要修改程序源碼,且編程負(fù)擔(dān)較重,缺乏監(jiān)控與分析粒度的調(diào)控。在關(guān)注點(diǎn)方面,大多數(shù)監(jiān)測(cè)僅關(guān)注軟件本身,對(duì)軟件業(yè)務(wù)邏輯和行為交互缺少有效的監(jiān)測(cè)與驗(yàn)證。
[0006]申請(qǐng)?zhí)枮镃N201010618258.X的專利公開(kāi)了一種基于行為的軟件可信度量系統(tǒng)及方法,該系統(tǒng)及方法通過(guò)反匯編和靜態(tài)分析的方法獲得軟件預(yù)期行為,然后使用鉤子技術(shù)對(duì)軟件行為進(jìn)行監(jiān)測(cè)。該系統(tǒng)及方法未考慮到軟件設(shè)計(jì)的初衷,從軟件程序本身獲取軟件行為,若當(dāng)軟件未按照設(shè)計(jì)進(jìn)行編碼或軟件本身存在錯(cuò)誤時(shí),獲取到的行為本身即為錯(cuò)誤的預(yù)期行為,更不必說(shuō)后續(xù)的監(jiān)測(cè)工作。并且,其編碼和計(jì)算成本過(guò)高,增加了編程人員的勞動(dòng),且對(duì)系統(tǒng)執(zhí)行效率影響較大。
【發(fā)明內(nèi)容】
[0007]本發(fā)明從基于Java的面向?qū)ο缶幊陶Z(yǔ)言的行為和屬性的分析出發(fā),結(jié)合UML (Unified Model Language)和 OCL (Object Constraint Language)技術(shù),提供一種較為通用的軟件行為獲取、監(jiān)控與驗(yàn)證方法,該方法既能夠監(jiān)控并保護(hù)軟件的運(yùn)行,又可以為可信軟件的度量和驗(yàn)證提供一定依據(jù)。不需要對(duì)被監(jiān)控系統(tǒng)的源碼進(jìn)行任何修改,就可以對(duì)其行為進(jìn)行監(jiān)控與驗(yàn)證。對(duì)于提高軟件生產(chǎn)效率和產(chǎn)品質(zhì)量,保障軟件可信性,具有非常重要的研究意義和應(yīng)用價(jià)值。
[0008]為了達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案。
[0009]一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,包括以下步驟:
[0010]步驟1:獲取軟件行為。
[0011]步驟1.1:使用支持OCL約束的UML工具軟件讀取待驗(yàn)證軟件系統(tǒng)的工程文件,向類圖中添加OCL約束并導(dǎo)出一個(gè)含有OCL約束信息的XMI文件;
[0012]步驟1.2:從步驟1.1中得到的XMI文件中提取待驗(yàn)證軟件系統(tǒng)的軟件行為信息,對(duì)外提供程序接口,通過(guò)接口調(diào)用動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)提取XMI文件中的待驗(yàn)證軟件系統(tǒng)的軟件行為信息。
[0013]當(dāng)更換生成XMI文件的UML工具時(shí),不需要修改程序代碼并重新編譯,只需要根據(jù)XMI文件結(jié)構(gòu),重新編碼并生成一個(gè)實(shí)現(xiàn)接口的動(dòng)態(tài)鏈接庫(kù)替換原有動(dòng)態(tài)鏈接庫(kù)即可對(duì)新的XMI文件實(shí)現(xiàn)兼容;
[0014]步驟1.3:從步驟1.1中得到的XMI文件中提取OCL約束信息和軟件行為的其它相關(guān)信息,將形式化的OCL語(yǔ)言解析為易于理解和分析的自定義表達(dá)方式。對(duì)外提供程序接口,通過(guò)接口調(diào)用動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)對(duì)OCL語(yǔ)言的解析。
[0015]當(dāng)需要增加解析規(guī)則或修改相關(guān)方法時(shí),只需要修改動(dòng)態(tài)鏈接庫(kù)中接口的實(shí)現(xiàn),并重新生成動(dòng)態(tài)鏈接庫(kù)替換原動(dòng)態(tài)鏈接庫(kù)即可完成修改;
[0016]步驟1.4:將步驟1.2中得到的軟件行為信息和步驟1.3中解析后的OCL約束信息整合并生成一個(gè)軟件行為描述XML文件。
[0017]步驟2:監(jiān)控軟件行為。
[0018]步驟2.1:定義AOP方面類模板,使用特殊符號(hào)替換模板中可以根據(jù)需要修改的地方,每個(gè)特殊符號(hào)后有一個(gè)唯一的兩位數(shù)字編號(hào),用來(lái)區(qū)分位置;
[0019]步驟2.2:讀取步驟1.4中得到的軟件行為描述XML文件,根據(jù)軟件行為信息和約束,利用定義好的AOP方面類模板自動(dòng)生成能夠被編譯的AOP方面類;
[0020]步驟2.3:對(duì)aop.xml配置文件進(jìn)行修改,配置需要應(yīng)用監(jiān)控的包、類和方法的范圍;
[0021]步驟2.4:使用AspectJ框架提供的AOP織入器,將AOP方面類織入到待驗(yàn)證系統(tǒng)中,在不修改待驗(yàn)證軟件系統(tǒng)源代碼的情況下,對(duì)待驗(yàn)證軟件系統(tǒng)軟件行為進(jìn)行捕獲。
[0022]AspectJ框架是起步最早也是現(xiàn)階段應(yīng)用最廣的基于Java環(huán)境的AOP框架,使用AspectJ框架可以最大化兼容基于Java的軟件系統(tǒng);
[0023]步驟2.5:分析捕獲到的軟件行為并將結(jié)果記錄到數(shù)據(jù)庫(kù)中,將步驟1.4得到的軟件行為描述XML文件內(nèi)的信息與捕獲到的行為信息進(jìn)行比對(duì),若待驗(yàn)證系統(tǒng)軟件實(shí)際行為信息符合行為描述XML文件內(nèi)行為約束的描述,則通過(guò)驗(yàn)證,軟件行為繼續(xù)執(zhí)行。若沒(méi)有通過(guò)驗(yàn)證則終止軟件行為執(zhí)行,并將行為信息及錯(cuò)誤類型記錄到數(shù)據(jù)庫(kù)中;
[0024]步驟2.6:通過(guò)圖形用戶界面定時(shí)刷新已捕獲行為列表,并對(duì)沒(méi)有通過(guò)驗(yàn)證的行為記錄進(jìn)行標(biāo)記;
[0025]步驟2.7:通過(guò)圖形用戶界面查看捕獲到的行為,提供排序、查看詳細(xì)信息和查找等功能。
[0026]步驟3:驗(yàn)證軟件行為。[0027]步驟3.1:將軟件行為描述XML文件內(nèi)的信息與數(shù)據(jù)庫(kù)中的行為信息進(jìn)行比對(duì),若行為信息不符合行為描述XML文件內(nèi)行為約束的描述,則沒(méi)有通過(guò)驗(yàn)證,在行為信息中添加相關(guān)錯(cuò)誤信息,并進(jìn)行顯示和記錄;
[0028]步驟3.2:在圖形界面上以列表的形式顯示沒(méi)有通過(guò)驗(yàn)證的行為記錄和其錯(cuò)誤分類,提供排序、查看詳細(xì)信息和查找等功能;
[0029]步驟3.3:通過(guò)圖形用戶界顯示系統(tǒng)的開(kāi)啟時(shí)間、捕獲的行為總量、出錯(cuò)行為總量、出錯(cuò)比率、行為執(zhí)行平均時(shí)間等數(shù)據(jù)。
[0030]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
[0031]本發(fā)明對(duì)基于Java語(yǔ)言開(kāi)發(fā)的軟件系統(tǒng)具有良好的兼容性;可以自動(dòng)生成監(jiān)控所需的AOP方面類,減少編碼人員工作量;在不修改待驗(yàn)證系統(tǒng)源代碼的情況下進(jìn)行監(jiān)控與驗(yàn)證;大量使用接口和動(dòng)態(tài)鏈接庫(kù),易于維護(hù)和修改。使用本發(fā)明對(duì)軟件系統(tǒng)進(jìn)行監(jiān)控和驗(yàn)證,可以對(duì)軟件系統(tǒng)的可信性進(jìn)行度量,并且保護(hù)軟件系統(tǒng)正常運(yùn)行。
【專利附圖】
【附圖說(shuō)明】
[0032]圖1為一種軟件行為獲取、監(jiān)控與驗(yàn)證方法的流程圖。
【具體實(shí)施方式】
[0033]下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做進(jìn)一步說(shuō)明。
[0034]本發(fā)明所述的方法一部分在.NET Framework下執(zhí)行,用來(lái)提取軟件行為信息、解析OCL約束、生成軟件行為描述XML文件、生成AOP方面類、調(diào)整織入粒度、驗(yàn)證部分行為,以及為用戶提供圖形界面,顯示數(shù)據(jù)及簡(jiǎn)化操作。包括步驟1.2?1.4、步驟2.2?2.3、步驟2.6?2.7、步驟3.2?3.4 ;另一部分在待驗(yàn)證軟件系統(tǒng)下執(zhí)行,用來(lái)織入AOP方面類、捕獲待驗(yàn)證軟件系統(tǒng)行為、分析軟件行為以及驗(yàn)證部分軟件行為。包括步驟2.4和步驟2.5 ;其它步驟則沒(méi)有環(huán)境限制。
[0035]一種軟件行為獲取、監(jiān)控與驗(yàn)證方法的流程圖如圖1所示,包括以下步驟:
[0036]步驟1:獲取軟件行為。
[0037]步驟1.1:采用支持OCL約束語(yǔ)言和導(dǎo)出XMI文件的主流開(kāi)源UML工具(如StarUMD0通過(guò)UML工具,導(dǎo)入待驗(yàn)證軟件系統(tǒng)的UML設(shè)計(jì)文件,向UML設(shè)計(jì)類中添加OCL約束語(yǔ)言,這里可以自定義OCL語(yǔ)言前綴,方便之后的解析操作。選擇導(dǎo)出XMI文件選項(xiàng),根據(jù)提示即可生成帶有OCL約束的XMI文件;
[0038]步驟1.2:通過(guò)圖形用戶界面選擇步驟1.1得到的XMI文件,對(duì)軟件行為描述XML文件中需要的信息進(jìn)行提取。
[0039]將提取XMI文件信息的相關(guān)方法封裝到一個(gè)接口中,使用集成開(kāi)發(fā)環(huán)境建立一個(gè)動(dòng)態(tài)鏈接庫(kù),在這個(gè)動(dòng)態(tài)鏈接庫(kù)中使用.NET Framework中提供的XML文件相關(guān)操作實(shí)現(xiàn)接口中的方法。通過(guò)調(diào)用接口提供的方法對(duì)XMI文件中的軟件行為信息進(jìn)行提取,暫時(shí)保存在計(jì)算機(jī)內(nèi)存中。這樣做得好處是提高可維護(hù)性和兼容性,使用不同UML軟件導(dǎo)出的XMI文件格式和標(biāo)簽名稱可能都有所不同,當(dāng)更換生成XMI文件的UML工具時(shí),不需要修改程序代碼并重新編譯,只需要根據(jù)XMI文件結(jié)構(gòu),重新編碼并生成一個(gè)實(shí)現(xiàn)接口的動(dòng)態(tài)鏈接庫(kù)替換原有動(dòng)態(tài)鏈接庫(kù)即可對(duì)新的XMI文件實(shí)現(xiàn)兼容;[0040]步驟1.3:從步驟1.1中得到的XMI文件中提取出OCL約束信息和軟件行為其它相關(guān)信息,將形式化的OCL語(yǔ)言解析為易于理解和分析的自定義表達(dá)方式,用戶可根據(jù)自身需求對(duì)解析方法進(jìn)行定義。
[0041]具體實(shí)施是,將解析相關(guān)方法封裝到一個(gè)接口中,使用集成開(kāi)發(fā)環(huán)境建立一個(gè)動(dòng)態(tài)鏈接庫(kù),在這個(gè)動(dòng)態(tài)鏈接庫(kù)中實(shí)現(xiàn)接口中解析OCL約束相關(guān)方法,再通過(guò)調(diào)用接口提供的方法對(duì)OCL語(yǔ)言進(jìn)行解析,將解析結(jié)果按規(guī)則暫時(shí)保存在計(jì)算機(jī)內(nèi)存中。當(dāng)用戶希望增加解析規(guī)則或修改相關(guān)方法時(shí),只需要修改動(dòng)態(tài)鏈接庫(kù)中接口的實(shí)現(xiàn),并重新生成動(dòng)態(tài)鏈接庫(kù)替換原動(dòng)態(tài)鏈接庫(kù)即可完成修改;
[0042]步驟1.4:把步驟1.3中解析后的每一條OCL約束信息保存到一個(gè)XML標(biāo)簽中,將步驟1.2中得到的軟件行為信息按照包、類、方法和屬性的結(jié)構(gòu)生成一個(gè)軟件行為描述XML文件,并將保存解析后OCL約束信息的XML標(biāo)簽添加為與其相關(guān)類的子標(biāo)簽。
[0043]步驟2:監(jiān)控軟件行為。
[0044]步驟2.1:定義AOP方面類模板,使用一個(gè)可以被編譯的AOP方面類,將這個(gè)方面類Pointcut中需要填寫(xiě)捕獲行為范圍的部分刪除,改為一個(gè)可以被程序讀取的特殊符號(hào),將方面類的aroundMethods方法的聲明中函數(shù)名稱部分改為特殊符號(hào)。同樣,將函數(shù)中的涉及要在生成時(shí)做修改的部分也改為特殊符號(hào)。每個(gè)特殊符號(hào)后需要有一個(gè)唯一的兩位數(shù)字編號(hào),用來(lái)區(qū)分位置;
[0045]步驟2.2:為減少人工編碼成本,本發(fā)明用自動(dòng)生成AOP方面類的方法。具體實(shí)施是,在圖形用戶界面選擇要讀入的步驟1.1中得到的軟件行為描述XML文件,針對(duì)需要監(jiān)控和驗(yàn)證的行為,從軟件行為描述XML文件中提取相關(guān)信息,替換步驟2.1定義好的方面類中的相關(guān)特殊符號(hào),即可完成方面類的生成。對(duì)于以包為捕獲對(duì)象或?qū)Σ东@對(duì)象有特殊要求的需要自定義的AOP方面類,可以使用圖形用戶界面,對(duì)方面類的生成進(jìn)行簡(jiǎn)單配置,再生成方面類,只需少量人工編碼即可完成方面類的生成;
[0046]步驟2.3 =AspectJ框架中負(fù)責(zé)配置織入粒度的文件為aop.xml。在該文件中可以配置和剔除需要織入方面類的包、類或方法,修改該文件即可調(diào)成監(jiān)控與驗(yàn)證的粒度。具體實(shí)施是,從步驟1.1得到的軟件行為描述XML文件中提取出待驗(yàn)證系統(tǒng)的包、類結(jié)構(gòu)和需要應(yīng)用監(jiān)控和驗(yàn)證的相關(guān)方法的信息,通過(guò)圖形用戶界面對(duì)這些包、類和方法進(jìn)行增減,以達(dá)到配置目的。對(duì)于更為精細(xì)的配置,通過(guò)手工編輯aop.xml文件完成;
[0047]步驟2.4 Aspect J框架是起步最早也是現(xiàn)階段應(yīng)用最廣的AOP框架,本發(fā)明使用AspectJ提供的AOP織入器織入AOP方面類。按照AspectJ官方文檔提供的的配置方法,即可完成織入器的配置與安裝,使用該織入器即可織入步驟2.3中生成的方面類到待驗(yàn)證軟件系統(tǒng),對(duì)待驗(yàn)證軟件系統(tǒng)的行為進(jìn)行捕獲;
[0048]步驟2.5:在靜態(tài)類中實(shí)現(xiàn)一個(gè)靜態(tài)方法,該方法接受一個(gè)AOP中ProceedingJoinPoint類型的參數(shù),當(dāng)捕獲到需要進(jìn)行監(jiān)控與驗(yàn)證的行為后,將aroundMethods中以參數(shù)形式提供的ProceedingJoinPoint類的實(shí)例傳遞給這個(gè)靜態(tài)方法即可從ProceedingJoinPoint類中提供的方法和屬性中分析得到如包、類、方法名、參數(shù)個(gè)數(shù)和參數(shù)類型等信息,并將這些信息記錄到行為記錄數(shù)據(jù)庫(kù)中。同樣的,使用一個(gè)靜態(tài)方法,在捕獲到需要進(jìn)行監(jiān)控與驗(yàn)證的行為執(zhí)行結(jié)束后,再次分析ProceedingJoinPoint類實(shí)例和其它信息,將分析結(jié)果記錄到數(shù)據(jù)庫(kù)中。分析結(jié)果主要包括ID號(hào)、函數(shù)簽名、代碼位置、捕獲時(shí)間和參數(shù)等信息。在兩次記錄軟件行為信息之后,分別用步驟1.4得到的軟件行為描述XML文件內(nèi)的信息與捕獲到的行為信息進(jìn)行比對(duì),若沒(méi)有發(fā)現(xiàn)錯(cuò)誤則返回一個(gè)真實(shí)的返回值,并且讓行為繼續(xù)執(zhí)行。若發(fā)現(xiàn)錯(cuò)誤則返回一個(gè)空返回值,終止行為的執(zhí)行,并將錯(cuò)誤類型分類,連同行為相關(guān)信息一同記錄到數(shù)據(jù)庫(kù)中。可驗(yàn)證的行為包括:函數(shù)參數(shù)變化范圍,變量類型,屬性變化范圍,函數(shù)返回值是否正確,函數(shù)是否正常結(jié)束等;
[0049]步驟2.6:以定時(shí)刷新的形式顯示行為監(jiān)控與驗(yàn)證信息的列表,用紅色標(biāo)出運(yùn)行中出現(xiàn)問(wèn)題的行為。具體實(shí)施是,通過(guò)圖形用戶界面設(shè)定刷新的時(shí)間間隔,在每次刷新界面時(shí),將數(shù)據(jù)庫(kù)中記錄的驗(yàn)證后出現(xiàn)錯(cuò)誤的行為記錄顯示字體改為紅色;
[0050]步驟2.7:在圖形用戶界面上以列表的形式顯示出捕獲到的行為??梢愿鶕?jù)不同字段進(jìn)行升序及降序排列,選擇某一條記錄查看詳細(xì)信息,根據(jù)函數(shù)簽名、目標(biāo)類,時(shí)間段等信息對(duì)監(jiān)控到的行為進(jìn)行查找。
[0051]步驟3:驗(yàn)證軟件行為。
[0052]步驟3.1:讀取選定的數(shù)據(jù)庫(kù)中的記錄,與軟件行為描述XML文件中的約束信息進(jìn)行比對(duì),若沒(méi)有錯(cuò)誤則不進(jìn)行任何操作,若有錯(cuò)誤則將錯(cuò)誤類型分類,連同行為相關(guān)信息一同記錄到數(shù)據(jù)庫(kù)中,并且在圖形用戶界面上以列表形式顯示沒(méi)有通過(guò)驗(yàn)證的行為信息;
[0053]步驟3.2:在圖形用戶界面上以列表的形式顯示沒(méi)有通過(guò)驗(yàn)證的行為記錄及其錯(cuò)誤分類??梢愿鶕?jù)不同字段進(jìn)行升序及降序排列,選擇某一條記錄查看詳細(xì)信息,根據(jù)錯(cuò)誤類型、函數(shù)簽名、目標(biāo)類,時(shí)間段等信息對(duì)沒(méi)有通過(guò)驗(yàn)證的行為記錄進(jìn)行查找;
[0054]步驟3.3:通過(guò)對(duì)數(shù)據(jù)庫(kù)中的行為數(shù)據(jù)進(jìn)行讀取和分析,統(tǒng)計(jì)待驗(yàn)證軟件系統(tǒng)運(yùn)行時(shí)間、捕獲的行為總量、出錯(cuò)行為總量、出錯(cuò)比率、行為執(zhí)行平均時(shí)間等數(shù)據(jù),將結(jié)果以列表形式返回給圖形用戶界面。
[0055]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變形而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變形屬于本發(fā)明權(quán)利要求等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變形在內(nèi)。
【權(quán)利要求】
1.一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,其特征在于,既能夠監(jiān)控并保護(hù)軟件的運(yùn)行,又可以為可信軟件的度量和驗(yàn)證提供依據(jù);不需要對(duì)被監(jiān)控系統(tǒng)的源碼進(jìn)行任何修改,就可以對(duì)其行為進(jìn)行監(jiān)控與驗(yàn)證;所述方法包括以下步驟: 步驟1:獲取軟件行為; 步驟1.1:使用支持OCL約束的UML工具軟件讀取待驗(yàn)證軟件系統(tǒng)的工程文件,向類圖中添加OCL約束并導(dǎo)出一個(gè)含有OCL約束信息的XMI文件; 步驟1.2:從步驟1.1中得到的XMI文件中提取待驗(yàn)證軟件系統(tǒng)的軟件行為信息,對(duì)外提供程序接口,通過(guò)接口調(diào)用動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)提取XMI文件中的待驗(yàn)證軟件系統(tǒng)的軟件行為信息; 步驟1.3:從步驟1.1中得到的XMI文件中提取OCL約束信息和軟件行為的其它相關(guān)信息,將形式化的OCL語(yǔ)言解析為易于理解和分析的自定義表達(dá)方式;對(duì)外提供程序接口,通過(guò)接口調(diào)用動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)對(duì)OCL語(yǔ)言的解析; 步驟1.4:將步驟1.2中得到的軟件行為信息和步驟1.3中解析后的OCL約束信息整合并生成一個(gè)軟件行為描述XML文件; 步驟2:監(jiān)控軟件行為; 步驟2.1:定義AOP方面類模板,使用特殊符號(hào)替換模板中可以根據(jù)需要修改的地方,每個(gè)特殊符號(hào)后有一個(gè)唯一的兩位數(shù)字編號(hào),用來(lái)區(qū)分位置; 步驟2.2:讀取步驟1.4中得到的軟件行為描述XML文件,根據(jù)軟件行為信息和約束,利用定義好的AOP方面類模板·自動(dòng)生成能夠被編譯的AOP方面類; 步驟2.3:對(duì)aop.xml配置文件進(jìn)行修改,配置需要應(yīng)用監(jiān)控的包、類和方法的范圍;步驟2.4:使用AspectJ框架提供的AOP織入器,將AOP方面類織入到待驗(yàn)證系統(tǒng)中,在不修改待驗(yàn)證軟件系統(tǒng)源代碼的情況下,對(duì)待驗(yàn)證軟件系統(tǒng)軟件行為進(jìn)行捕獲; AspectJ框架是起步最早也是現(xiàn)階段應(yīng)用最廣的基于Java環(huán)境的AOP框架,使用AspectJ框架可以最大化兼容基于Java的軟件系統(tǒng); 步驟2.5:分析捕獲到的軟件行為并將結(jié)果記錄到數(shù)據(jù)庫(kù)中,將步驟1.4得到的軟件行為描述XML文件內(nèi)的信息與捕獲到的行為信息進(jìn)行比對(duì),若待驗(yàn)證系統(tǒng)軟件實(shí)際行為信息符合行為描述XML文件內(nèi)行為約束的描述,則通過(guò)驗(yàn)證,軟件行為繼續(xù)執(zhí)行;若沒(méi)有通過(guò)驗(yàn)證則終止軟件行為執(zhí)行,并將行為信息及錯(cuò)誤類型記錄到數(shù)據(jù)庫(kù)中; 步驟2.6:通過(guò)圖形用戶界面定時(shí)刷新已捕獲行為列表,并對(duì)沒(méi)有通過(guò)驗(yàn)證的行為記錄進(jìn)行標(biāo)記; 步驟2.7:通過(guò)圖形用戶界面查看捕獲到的行為,提供排序、查看詳細(xì)信息和查找等功倉(cāng)泛; 步驟3:驗(yàn)證軟件行為; 步驟3.1:將軟件行為描述XML文件內(nèi)的信息與數(shù)據(jù)庫(kù)中的行為信息進(jìn)行比對(duì),若行為信息不符合行為描述XML文件內(nèi)行為約束的描述,則沒(méi)有通過(guò)驗(yàn)證,在行為信息中添加相關(guān)錯(cuò)誤信息,并進(jìn)行顯示和記錄; 步驟3.2:在圖形界面上以列表的形式顯示沒(méi)有通過(guò)驗(yàn)證的行為記錄和其錯(cuò)誤分類,提供排序、查看詳細(xì)信息和查找等功能; 步驟3.3:通過(guò)圖形用戶界顯示系統(tǒng)的開(kāi)啟時(shí)間、捕獲的行為總量、出錯(cuò)行為總量、出錯(cuò)比率、行為執(zhí)行平均時(shí)間等數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,其特征在于,當(dāng)更換生成XMI文件的UML工具時(shí),不需要修改程序代碼并重新編譯,只需要根據(jù)XMI文件結(jié)構(gòu),重新編碼并生成一個(gè)實(shí)現(xiàn)接口的動(dòng)態(tài)鏈接庫(kù)替換原有動(dòng)態(tài)鏈接庫(kù)即可對(duì)新的XMI文件實(shí)現(xiàn)兼容。
3.根據(jù)權(quán)利要求1所述的一種軟件行為獲取、監(jiān)控與驗(yàn)證方法,其特征在于,當(dāng)需要增加解析規(guī)則或修改相關(guān)方法時(shí),只需要修改動(dòng)態(tài)鏈接庫(kù)中接口的實(shí)現(xiàn),并重新生成動(dòng)態(tài)鏈接庫(kù)替換原動(dòng)態(tài)鏈接庫(kù)即可完成修改。
【文檔編號(hào)】G06F21/56GK103714290SQ201310730756
【公開(kāi)日】2014年4月9日 申請(qǐng)日期:2013年12月26日 優(yōu)先權(quán)日:2013年12月26日
【發(fā)明者】王丹, 王曉曦, 蘇航, 龐俊彪, 杜金蓮, 趙文兵 申請(qǐng)人:北京工業(yè)大學(xué)