專(zhuān)利解讀 | 蘇州空天信息研究院在軟件工程領(lǐng)域創(chuàng)新性地提出一種程序運(yùn)行過(guò)程符合性驗(yàn)證方法
蘇州空天信息研究院23室軟件工程技術(shù)部在充分發(fā)揮自身在技術(shù)研發(fā)、人才資源優(yōu)勢(shì)的基礎(chǔ)上,時(shí)刻關(guān)注和研究國(guó)內(nèi)外軟件工程領(lǐng)域的發(fā)展動(dòng)態(tài)和技術(shù)導(dǎo)向,不斷探索新方向,采用新技術(shù),研發(fā)優(yōu)化新產(chǎn)品,于2020年開(kāi)始著手研發(fā)技術(shù)體制驗(yàn)證平臺(tái)等產(chǎn)品。
蘇州空天信息研究院23室軟件工程技術(shù)部于2020年12月1日,申請(qǐng)了一篇名為《一種程序運(yùn)行過(guò)程符合性驗(yàn)證方法》的發(fā)明專(zhuān)利,本專(zhuān)利技術(shù)提供了一種程序運(yùn)行流程驗(yàn)證的方法,通過(guò)插樁埋點(diǎn)、數(shù)據(jù)建模等方法直觀、定量地展示出程序運(yùn)行時(shí)內(nèi)部的執(zhí)行流程信息,自2021年6月應(yīng)用于技術(shù)體制驗(yàn)證平臺(tái)以來(lái),取得了非??捎^的效益,避免了人工誤判的風(fēng)險(xiǎn)以及人力的損耗,填補(bǔ)了針對(duì)軟件運(yùn)行過(guò)程符合性驗(yàn)證的空白。
隨著軟件應(yīng)用規(guī)模的日益擴(kuò)大和軟件應(yīng)用環(huán)境的日益復(fù)雜,如何保證軟件質(zhì)量、軟件的規(guī)范性以及標(biāo)準(zhǔn)符合性等逐漸成為人們關(guān)注的焦點(diǎn),軟件自動(dòng)化驗(yàn)證技術(shù)也因此得到了迅猛的發(fā)展。軟件插樁技術(shù)是軟件自動(dòng)化驗(yàn)證中的關(guān)鍵技術(shù),對(duì)于軟件運(yùn)行時(shí)監(jiān)測(cè)有著重要的意義。所謂插樁,即在目標(biāo)程序內(nèi)部植入探針程序,通過(guò)探針程序嗅探目標(biāo)軟件內(nèi)部的運(yùn)行邏輯和流程并將特征數(shù)據(jù)拋出,分析這些特征數(shù)據(jù)獲取目標(biāo)程序控制流和數(shù)據(jù)流信息,進(jìn)而得到邏輯覆蓋等動(dòng)態(tài)信息,以此來(lái)實(shí)現(xiàn)對(duì)目標(biāo)程序的監(jiān)測(cè)。目標(biāo)代碼插樁技術(shù)因其高效性和低侵入性得到了很多軟件測(cè)試開(kāi)發(fā)者的青睞,被廣泛應(yīng)用于軟件系統(tǒng)監(jiān)控、軟件測(cè)試方法性能評(píng)價(jià)等領(lǐng)域,然而未應(yīng)用于軟件程序過(guò)程符合性驗(yàn)證中。
本發(fā)明提出了一種程序運(yùn)行過(guò)程符合性驗(yàn)證方法,包括動(dòng)態(tài)插樁和過(guò)程驗(yàn)證兩個(gè)環(huán)節(jié)。動(dòng)態(tài)插樁接收并解析用戶(hù)傳入的指令,執(zhí)行插樁啟停過(guò)程,并回傳過(guò)程數(shù)據(jù)日志;過(guò)程驗(yàn)證接收過(guò)程數(shù)據(jù)日志,提取日志中方法間的關(guān)系(包括順序、并行、選擇、循環(huán)等)建立過(guò)程圖模型,并將過(guò)程圖模型與標(biāo)準(zhǔn)規(guī)則進(jìn)行順序匹配,從而驗(yàn)證程序運(yùn)行過(guò)程的標(biāo)準(zhǔn)符合性。本發(fā)明的整體框架及工作情況如圖1所示。
圖1?本發(fā)明的整體架構(gòu)圖
動(dòng)態(tài)插樁的原理如圖2所示。動(dòng)態(tài)插樁工作時(shí),接收并處理用戶(hù)通過(guò)URL形式發(fā)來(lái)的終端請(qǐng)求,終端請(qǐng)求包括插樁動(dòng)作類(lèi)型、任務(wù)ID、目標(biāo)軟件端口號(hào)以及攔截規(guī)則等參數(shù);JavaAgent程序解析傳入的參數(shù),得到待插樁程序段的絕對(duì)位置以及插樁攔截方式,插樁攔截方式包括定位到包進(jìn)行攔截和定位到具體方法進(jìn)行攔截,根據(jù)攔截方式的不同,調(diào)用不同的JavaAgent字節(jié)碼處理程序?qū)r截目標(biāo)代碼進(jìn)行遍歷,并將遍歷得到的目標(biāo)字節(jié)碼添加至JavaAgent機(jī)制提供的插樁算法程序中;插樁算法程序獲得目標(biāo)字節(jié)碼后,判斷該字節(jié)碼的目標(biāo)程序類(lèi)是否已經(jīng)被加載至Java虛擬機(jī)中,若尚未加載,則根據(jù)JavaAgent程序中預(yù)先編寫(xiě)的部署程序?qū)⒉鍢墩Z(yǔ)句塊部署到目標(biāo)字節(jié)碼中,若已加載,則調(diào)用JavaAgent機(jī)制提供的attach功能將插樁語(yǔ)句塊部署到目標(biāo)字節(jié)碼中,插樁語(yǔ)句塊包括編輯完成的系統(tǒng)時(shí)間獲取語(yǔ)句塊與日志記錄語(yǔ)句塊,當(dāng)目標(biāo)軟件執(zhí)行到插樁點(diǎn)時(shí),執(zhí)行植入的代碼進(jìn)行信息獲取和日志信息生成,插樁日志作為最終圖形化驗(yàn)證對(duì)象的數(shù)據(jù)來(lái)源,需為文本文件格式,日志內(nèi)容由若干條目組成,條目描述信息細(xì)化至待測(cè)程序函數(shù)方法塊。
圖2 動(dòng)態(tài)插樁示意圖
過(guò)程驗(yàn)證的原理如圖3所示。
圖3?過(guò)程驗(yàn)證示意圖
過(guò)程驗(yàn)證工作時(shí),接收并處理過(guò)程數(shù)據(jù)日志,根據(jù)插樁日志中記錄的請(qǐng)求URI信息區(qū)分不同的操作,對(duì)于每一次操作,按照?qǐng)?zhí)行先后順序提取日志中的方法名,將方法名用數(shù)字編號(hào)形成數(shù)字鏈,通過(guò)一系列數(shù)字鏈實(shí)現(xiàn)對(duì)于某次任務(wù)不同操作軌跡信息的量化描述,插樁日志預(yù)處理原理如圖4所示;
圖4?插樁日志預(yù)處理示意圖
根據(jù)軌跡信息,采用算法生成過(guò)程圖模型,
算法存在3種關(guān)系,第一種是順序關(guān)系“>”,例如,“1>3”表示1出現(xiàn)在3前面,第二種是并行關(guān)系“|”,例如,“1|3”表示“1>3”且“3>1”,第三種是選擇關(guān)系“#”,例如,“1#3”表示從未出現(xiàn)過(guò)“1>3”和“3>1”,過(guò)程建模原理如圖5所示;
圖5?過(guò)程建模示意圖
將目標(biāo)軟件的軌跡過(guò)程圖模型與軟件運(yùn)行過(guò)程標(biāo)準(zhǔn)中既定的規(guī)則進(jìn)行匹配,驗(yàn)證目標(biāo)軟件的執(zhí)行順序是否符合規(guī)范,若不符合規(guī)范則報(bào)出相應(yīng)的錯(cuò)誤,錯(cuò)誤類(lèi)型包括兩種,一是規(guī)則中出現(xiàn)了未執(zhí)行的方法,二是規(guī)則順序不符合規(guī)范。
本專(zhuān)利既是蘇州空天信息研究院23室軟件工程技術(shù)部團(tuán)隊(duì)成員心血凝聚的結(jié)晶,也是科研創(chuàng)新實(shí)力的展示,為技術(shù)體制驗(yàn)證平臺(tái)提供了強(qiáng)有力的科技支撐,也為多個(gè)項(xiàng)目提供了核心技術(shù)支撐。蘇州空天信息研究院23室軟件工程技術(shù)部將始終注重新產(chǎn)品的研發(fā),并將知識(shí)產(chǎn)權(quán)作為重中之重,提高核心競(jìng)爭(zhēng)能力,促進(jìn)快速穩(wěn)健發(fā)展。
專(zhuān)利聯(lián)系作者:劉亮 部長(zhǎng)
蘇州空天信息研究院
2014年6月6日,原中國(guó)科學(xué)院電子學(xué)研究所(以下簡(jiǎn)稱(chēng)原電子所)與蘇州工業(yè)園區(qū)簽訂了共建中國(guó)科學(xué)院電子學(xué)研究所蘇州研究院(現(xiàn)更名為蘇州空天信息研究院,以下簡(jiǎn)稱(chēng)蘇研院)合作協(xié)議。協(xié)議的簽署,標(biāo)志著蘇研院的建設(shè)正式啟動(dòng)。
蘇研院是原電子所為滿(mǎn)足國(guó)家國(guó)防戰(zhàn)略科技需求,破解基地、人才等發(fā)展瓶頸,釋放創(chuàng)新生產(chǎn)力,與蘇州工業(yè)園區(qū)共同發(fā)起成立的地方事業(yè)法人單位。中國(guó)科學(xué)院正在實(shí)施以四類(lèi)機(jī)構(gòu)改革為核心的率先行動(dòng)計(jì)劃,其中,由中國(guó)科學(xué)院電子學(xué)研究所、遙感與數(shù)字地球研究所、光電研究院重組建設(shè)中國(guó)科學(xué)院空天信息研究院(以下簡(jiǎn)稱(chēng)空天院),是在空天電子信息技術(shù)領(lǐng)域?qū)嵤┑闹卮篌w制改革舉措之一,對(duì)四類(lèi)機(jī)構(gòu)改革具有示范意義。蘇研院作為原電子所的重要組成部分,是空天院優(yōu)化科研布局的重要承載平臺(tái)和科研成果轉(zhuǎn)化平臺(tái)。
蘇研院建設(shè)總投資10億元,規(guī)劃總占地面積約130余畝,位于蘇州工業(yè)園區(qū)納米城東南角、獨(dú)墅湖之畔,擬建設(shè)成20萬(wàn)平方米理念先進(jìn)、布局合理、功能配套齊全、環(huán)境優(yōu)美的現(xiàn)代科研園區(qū)。蘇研院是以開(kāi)展電子信息技術(shù)研發(fā)與應(yīng)用為主的實(shí)體機(jī)構(gòu),主要面向國(guó)防、國(guó)民經(jīng)濟(jì)和區(qū)域發(fā)展戰(zhàn)略需求,致力于電子信息技術(shù)領(lǐng)域核心關(guān)鍵技術(shù)突破、共性技術(shù)研發(fā)、應(yīng)用系統(tǒng)集成和成果產(chǎn)業(yè)化轉(zhuǎn)移。
蘇研院首期開(kāi)發(fā)建設(shè)了4.7萬(wàn)平方米科研、配套設(shè)施,擁有一支450余人的高水平技術(shù)研發(fā)隊(duì)伍,開(kāi)拓了平臺(tái)架構(gòu)技術(shù)、圖像解譯技術(shù)、星地信息處理技術(shù)等9個(gè)技術(shù)方向,科研保障體系全面建成,管理體系有效運(yùn)行,主持或參與承擔(dān)國(guó)家“863”任務(wù)、中科院重大任務(wù)、國(guó)防重點(diǎn)任務(wù)以及省市地區(qū)科技項(xiàng)目等科研任務(wù)近60項(xiàng)。
蘇研院將依托空天院的科研優(yōu)勢(shì),結(jié)合區(qū)域特色,在國(guó)家創(chuàng)新體系和區(qū)域源頭創(chuàng)新活動(dòng)中打造“示范效應(yīng)”,未來(lái)形成一支超過(guò)1000人規(guī)模的結(jié)構(gòu)合理、創(chuàng)新能力卓越、流動(dòng)有序的高水平研發(fā)隊(duì)伍,成為運(yùn)行管理體系先進(jìn)高效、重大任務(wù)保障有力、并與地方發(fā)展緊密融合的高水平研究機(jī)構(gòu)。在與區(qū)域發(fā)展戰(zhàn)略接軌的基礎(chǔ)上,匯聚和造就一流人才、培育和轉(zhuǎn)化一流成果、催生和布局一流產(chǎn)業(yè),為國(guó)家戰(zhàn)略需求和區(qū)域經(jīng)濟(jì)發(fā)展做出一流貢獻(xiàn)。
作 者 | 蘇州空天信息研究院二十三室
策 劃 | 姜 麗、馬秀強(qiáng)
校 對(duì) | 融媒體工作室
審 核 | 陳 倩