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