[發(fā)明專利]一種基于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法及系統有效
| 申請?zhí)枺?/td> | 202011095616.3 | 申請日: | 2020-10-14 |
| 公開(公告)號: | CN112231175B | 公開(公告)日: | 2022-05-13 |
| 發(fā)明(設計)人: | 艾駿;鄒卓良;施韜;許嘉熙;邵義康 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F11/30 | 分類號: | G06F11/30;G06F8/41 |
| 代理公司: | 北京高沃律師事務所 11569 | 代理人: | 張夢澤 |
| 地址: | 100191 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 動態(tài) 仿真 軟件 狀態(tài) 監(jiān)控 選擇 方法 系統 | ||
1.一種基于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,包括:
確定目標軟件并獲取所述目標軟件完整的源代碼;
對所述源代碼進行靜態(tài)掃描,得到所述源代碼與軟件網絡的節(jié)點和邊之間的映射關系;
根據所述映射關系構建軟件網絡,記為第一軟件網絡;
對所述源代碼進行解析,得到結構化數據;
根據所述結構化數據對所述第一軟件網絡進行擴展,得到第二軟件網絡;
對所述第二軟件網絡的節(jié)點內部運行程序進行仿真分析,得到節(jié)點內仿真結果;
根據所述第二軟件網絡的節(jié)點間關系和所述節(jié)點內仿真結果生成運行路徑;
對所述運行路徑進行仿真分析得到節(jié)點間仿真結果;
根據所述節(jié)點間仿真結果計算監(jiān)控點價值量化指標值;
獲取價值量化指標值最大的節(jié)點作為監(jiān)控點;
本方法通過仿真路徑自動生成程序來自動化獲取路徑信息,程序功能如下:
1)當程序執(zhí)行中遇到調用邊,根據當前節(jié)點的內部仿真得到的關鍵字的執(zhí)行情況,以及邊屬性calltype判斷調用是否發(fā)生;
2)若調用發(fā)生,記錄原節(jié)點調用的位置,被調用節(jié)點的屬性args的內容為原節(jié)點傳遞給它的參數,程序執(zhí)行到被調用節(jié)點;
3)被調用節(jié)點作為當前執(zhí)行節(jié)點,重復步驟1)、2),直到沒有后續(xù)節(jié)點;
4)從當前節(jié)點返回發(fā)出調用的節(jié)點,返回值類型為被調用節(jié)點的屬性returntype,返回行數為邊屬性linenumber,從linenumber所示行數繼續(xù)執(zhí)行,重復步驟1),2),3),4);
5)返回到最開始運行的節(jié)點,一次仿真結束。
2.根據權利要求1所述的于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,所述根據所述映射關系構建軟件網絡,記為第一軟件網絡,包括:
將所述源代碼的函數作為第一軟件網絡中的節(jié)點;將所述源代碼中的依賴關系作為第一軟件網絡的邊。
3.根據權利要求1所述的于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,所述根據所述結構化數據對所述第一軟件網絡進行擴展,得到第二軟件網絡,包括:
獲取所述結構化數據中的預設參數;
將所述預設參數設置為所述第一軟件網絡中的節(jié)點的屬性和邊的屬性,得到第二軟件網絡。
4.根據權利要求3所述的于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,所述預設參數包括傳遞參數和源代碼的關鍵字類型。
5.根據權利要求1所述的于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,所述價值量化指標值包括參數依賴量、節(jié)點執(zhí)行的概率大小和節(jié)點執(zhí)行的關聯范圍大小。
6.根據權利要求1或5所述的于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇方法,其特征在于,所述獲取價值量化指標值最大的節(jié)點作為監(jiān)控點,包括:
根據各價值量化指標值累加得到的總值大小進行監(jiān)控價值排序;
將所述價值量化指標值最大的一批節(jié)點作為監(jiān)控點。
7.一種基于動態(tài)仿真的軟件狀態(tài)監(jiān)控點選擇系統,其特征在于,包括:
源代碼獲取模塊,用于確定目標軟件并獲取所述目標軟件完整的源代碼;
掃描模塊,用于對所述源代碼進行靜態(tài)掃描,得到所述源代碼與軟件網絡的節(jié)點和邊之間的映射關系;
第一軟件網絡構建模塊,用于根據所述映射關系構建軟件網絡,記為第一軟件網絡;
解析模塊,用于對所述源代碼進行解析,得到結構化數據;
第二軟件網絡構建模塊,用于根據所述結構化數據對所述第一軟件網絡進行擴展,得到第二軟件網絡;
第一仿真模塊,對所述第二軟件網絡的節(jié)點內部運行程序進行仿真分析,得到節(jié)點內仿真結果;
運行路徑生成模塊,用于根據所述第二軟件網絡的節(jié)點間關系和所述節(jié)點內仿真結果生成運行路徑;
第二仿真模塊,用于對所述運行路徑進行仿真分析得到節(jié)點間仿真結果;
價值量化指標值計算模塊,用于根據所述節(jié)點間仿真結果計算監(jiān)控點價值量化指標值;
監(jiān)控點選擇模塊,用于獲取價值量化指標值最大的節(jié)點作為監(jiān)控點;
本方法通過仿真路徑自動生成程序來自動化獲取路徑信息,程序功能如下:
1)當程序執(zhí)行中遇到調用邊,根據當前節(jié)點的內部仿真得到的關鍵字的執(zhí)行情況,以及邊屬性calltype判斷調用是否發(fā)生;
2)若調用發(fā)生,記錄原節(jié)點調用的位置,被調用節(jié)點的屬性args的內容為原節(jié)點傳遞給它的參數,程序執(zhí)行到被調用節(jié)點;
3)被調用節(jié)點作為當前執(zhí)行節(jié)點,重復步驟1)、2),直到沒有后續(xù)節(jié)點;
4)從當前節(jié)點返回發(fā)出調用的節(jié)點,返回值類型為被調用節(jié)點的屬性returntype,返回行數為邊屬性linenumber,從linenumber所示行數繼續(xù)執(zhí)行,重復步驟1),2),3),4);
5)返回到最開始運行的節(jié)點,一次仿真結束。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011095616.3/1.html,轉載請聲明來源鉆瓜專利網。





