欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于語法樹的程序正確性驗(yàn)證方法

文檔序號:6574869閱讀:988來源:國知局
專利名稱:一種基于語法樹的程序正確性驗(yàn)證方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別是涉及一種程序設(shè)計(jì)正確性驗(yàn) 證的方法。
技術(shù)背景程序正確性驗(yàn)證是IT技能測評自動化的一項(xiàng)重要內(nèi)容,也是其中的 一個(gè)理論、技術(shù)難點(diǎn)。程序的正確性,是指對于給定領(lǐng)域的所有的輸入, 程序都能給出正確的輸出,程序都能給出正確的輸出。然而正如Dijkstm 所指出"我們可以通過測試發(fā)現(xiàn)程序中存在的錯誤,但無法證明不存在 錯誤。"通常情況下,即使是一個(gè)非常簡單的程序,都可能具有無限多個(gè) 可能的輸入。目前,進(jìn)行程序正確性驗(yàn)證通常有兩種方案第一種,完全拋棄檢查輸入一輸出的方法,通過形式語言理解來判斷程序的正確性;第二種 方案則維持采用檢査輸入一輸出的方法,但不是檢査所有的可能輸入, 而是檢査領(lǐng)域問題的各種"典型"輸入。限于形式語言理解研究的發(fā)展 水平,第一種方案的研究、發(fā)展非常緩慢。國內(nèi)外學(xué)者將研究的重點(diǎn)放 在第二種方案上,也就是典型測試數(shù)據(jù)的自動生成,并提出了一些切實(shí) 可的方法,如符號執(zhí)行方法、迭代張弛法等,但這些方法的效率以及驗(yàn) 證的準(zhǔn)確性不夠。 發(fā)明內(nèi)容本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種基于語法樹的程序正確性驗(yàn)證方法。本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下1)采用XML的格式將源程序轉(zhuǎn)換為程序語法樹,具體方法是分析待驗(yàn)證程序的語義信息,轉(zhuǎn)換成XML格式的語義表達(dá),映射為一棵無序標(biāo)簽樹。其中,程序名及程序中的各元素轉(zhuǎn)化為相應(yīng)層次的父節(jié)點(diǎn)和子節(jié)點(diǎn);程序中的操作符、操作數(shù)為葉子節(jié)點(diǎn)。使用一個(gè)虛擬根 節(jié)點(diǎn)將所有節(jié)點(diǎn)進(jìn)行組合。2) 對程序語法樹進(jìn)行優(yōu)化,具體方法是采用常量合并、同類語義合并、無用變量刪除以及復(fù)雜表達(dá)式拆分 的方法對l)中的程序語法樹進(jìn)行分析,排除語義的多樣性,使同一功能 呈現(xiàn)同 一 的語法樹表現(xiàn)形式。3) 使用XPath語句對2)中的優(yōu)化后的程序語法樹進(jìn)行表達(dá),每一 條XPath語句都對應(yīng)一個(gè)權(quán)重,具體方法是① 對于XPath語句組中的每一條XPath語句依次檢驗(yàn),如果XPath 語句在待驗(yàn)證語法樹中査詢結(jié)果與在匹配樹中的査詢結(jié)果一致,則此 XPath語句對應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中;② 一組XPath語句査詢完成,生成匹配樹,將得到的匹配度作為最 小匹配代價(jià)。4) 利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性,具體方法是將匹配樹與每一待驗(yàn)證樹進(jìn)行比較。取匹配樹的每條路徑并在待驗(yàn)證 樹中査找對應(yīng)路徑根節(jié)點(diǎn)。如果未找到該根節(jié)點(diǎn),則完全不匹配,源程 序整體錯誤,退出驗(yàn)證。如果找到該根節(jié)點(diǎn),則進(jìn)入5)。5) 對待驗(yàn)證樹中的單條路徑進(jìn)行驗(yàn)證,如果待驗(yàn)證樹中的節(jié)點(diǎn)n是查 詢樹的第k條路徑的根節(jié)點(diǎn),并且與以節(jié)點(diǎn)n為根的子樹和匹配樹中的 第k條路徑相匹配,則待驗(yàn)證樹與匹配樹在其第k條路徑上匹配,即驗(yàn) 證第k條路徑所對應(yīng)的源程序正確。6) 通過5)對待驗(yàn)證樹中的全路徑進(jìn)行驗(yàn)證,如果部分路徑上匹配, 則對應(yīng)該路徑的源程序正確;如果所有路徑上匹配,則源程序整體正確。本發(fā)明是一種基于語法樹的程序正確性驗(yàn)證方法,其主要功能是通過 該方法以程序的語法樹作為程序正確性的檢驗(yàn)對象,運(yùn)用無序標(biāo)簽樹語 義匹配算法,驗(yàn)證目標(biāo)程序的正確性。本方法實(shí)現(xiàn)程序的正確性自動驗(yàn)證,為計(jì)算機(jī)程序自動測評提供了方法保障。(1) 語義形式化。程序語法樹是程序結(jié)構(gòu)的樹狀表示,是形式化、規(guī) 范化的程序語義表示,是程序設(shè)計(jì)者思想的形式化表示,比源程序具有 更低的層次,能夠形象地抽象出程序結(jié)構(gòu),便于程序正確性的驗(yàn)證;(2) 高效性。引入Xpath使得在匹配XML文檔結(jié)構(gòu)樹時(shí)能夠準(zhǔn)確地找到某一個(gè)節(jié)點(diǎn)元素。將XPath比作文件管理路徑,通過文件管理路徑,按照一定的規(guī)則査找到所需要的文件。同理,根據(jù)XPath所制定的規(guī)則,能夠快速找到XML結(jié)構(gòu)文檔樹中的任何一個(gè)節(jié)點(diǎn)。每一條XPath語句都有一個(gè)返回結(jié)果,若查找到該節(jié)點(diǎn)則返回值為True,或節(jié)點(diǎn)的值;當(dāng)査詢節(jié)點(diǎn)不存在時(shí),返回結(jié)果為False。
具體實(shí)施方式
1方法中涉及到相關(guān)的定義及說明定義l (映射)設(shè)11= (V, E, root (Tl)), T2= (W, F, root (T2)) 為兩棵標(biāo)簽樹, 一個(gè)從T1到T2的映射M定義為^^「x『,并且對所有 H wl), (v2,w2)e M滿足以下的條件D V1 = V20M = W2,表示兩棵樹中參與映射的節(jié)點(diǎn)是一一對應(yīng)的; 2 ) vl =朋面tor(v2) O =朋ce加r(w2),表示映射保持節(jié)點(diǎn)對之間的祖 先后代關(guān)系。映身才M的定義域"。附"'")定義為"owflz'^M) = {v e F1e『(v, w) £ A/] ^ F; 日央射M的值;t或W""ge(A/)定義為Range(M) =e『| 3v e F : (v, w)e vlf} e『;定義2 (映射代價(jià))n"r,i ,賜,(r1)),r2"^F,觸々2)),為兩棵標(biāo)簽樹,M為一個(gè)從Tl到T2的映射,則定義M的映射代價(jià) y(M):,(M)= Z ))+ZH^W——義))+ Z"W^7))假設(shè)Q是一棵匹配樹,Qsub是Q的節(jié)點(diǎn)集中的一個(gè)子集。T是待 驗(yàn)證的考生答案程序語法樹,Tsub是T的節(jié)點(diǎn)集的一個(gè)子集。定義3(路徑包含匹配)如果存在一個(gè)Qsub到Tsub的映射g,滿 足以下3個(gè)條件,稱映射g是Q到T的一個(gè)路徑包含匹配,Q為被包含樹,D為包含樹O vl = v2 〈=> (vl) = g (v2) vl, v2是Qsub中的節(jié)點(diǎn)(g是 --個(gè)單射);2) label (vl) " label (g (vl))"表示兩個(gè)標(biāo)簽之間的近似距離在閥值范圍內(nèi);3) vl 二 ancestor (v2) 〈 = 〉 g (vl) = ancestor (g (v2"樹的路徑包含匹配,放寬了節(jié)點(diǎn)之間的對應(yīng)關(guān)系,要求保持節(jié)點(diǎn)的 祖先后代關(guān)系。程序正確性的驗(yàn)證轉(zhuǎn)化為匹配樹與待驗(yàn)證語法樹之間的 包含匹配問題。定義4 (樹的包含匹配代價(jià))e"r,&。。,(n)),r"『,F,脂/(r幼為兩棵 標(biāo)簽樹,則樹Q到樹T的樹包含代價(jià)rOw,A4fe,"=應(yīng)z+(M)1 M: 27J,其中A(M)的定義見定義2 。如果M是樹Q到樹D的樹包含匹配,并且有y(M卜:ra^M(e,T);則稱M是一個(gè)樹Q到樹T的具有最小匹配代價(jià)的樹包含匹配。顯然兩棵樹之間的匹配代價(jià)越小,兩棵樹的匹配度越高,匹配越好越相近。在實(shí)際操作中,根據(jù)樹的包含的定義,代碼實(shí)現(xiàn)上述的包含匹配算 法,根據(jù)映射代價(jià)的定義,計(jì)算匹配樹與待驗(yàn)證語法樹之間的匹配代價(jià), 最小匹配代價(jià)就是兩棵樹的匹配度,這是一個(gè)復(fù)雜的實(shí)現(xiàn)過程,在實(shí)際 中嘗試采用了另外一種簡便的方法。用-一組XPath語句來表示一顆匹配樹,每一條XPath語句都對應(yīng)一 個(gè)權(quán)重(0-1之間),該權(quán)重表示原匹配樹中對應(yīng)節(jié)點(diǎn)的重要性;用一個(gè) XPath語句組中的每一條XPath語句依次對XML表示的待驗(yàn)證語法樹進(jìn) 行査詢,如果查詢成功,即Xpath語句在待驗(yàn)證語法樹中査詢結(jié)果與在 匹配樹中的査詢結(jié)果一致,則這條XPath語句對應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中。--組XPath語句查詢完成,也就是一顆匹配樹與待驗(yàn) 證語法樹匹配完成,可以把得到的匹配度看作近似的最小匹配代價(jià)。實(shí) 際閱巻系統(tǒng)中經(jīng)使用驗(yàn)證,這是一種替代復(fù)雜方法的切實(shí)可行的解決方案。2基于XPath路徑的程序正確性驗(yàn)證算法引入XPath,是的在匹配XML文檔結(jié)構(gòu)樹時(shí)能夠準(zhǔn)確地找到某一個(gè)節(jié) 點(diǎn)元素??梢园裍Path比作文件管理路徑通過文件管理路徑,可以按 照一定的規(guī)則查找到所需要的文件;同樣,依據(jù)XPath所制定的規(guī)則, 也可以很方便地找到XML結(jié)構(gòu)文檔樹中的任何 - "個(gè)節(jié)點(diǎn)。每一條XPath 語句都有一個(gè)返回結(jié)果,若査找到該節(jié)點(diǎn)則返回值為True,或節(jié)點(diǎn)的值; 當(dāng)查詢節(jié)點(diǎn)不存在時(shí),返回結(jié)果為False。匹配樹Q和每一待驗(yàn)證樹T進(jìn)行比較。取匹配樹Q的每條路徑p并 在待驗(yàn)證樹T中查找對應(yīng)路徑根節(jié)點(diǎn)。若沒找到該根節(jié)點(diǎn),說明完全不 匹配,則退出查詢;假設(shè)匹配樹Q有k條路徑,如果待驗(yàn)證樹T中的節(jié) 點(diǎn)n是査詢樹Q的k條路徑的根節(jié)點(diǎn),并且以n為根的子樹和匹配樹Q 中的k條路徑匹配,則說明待驗(yàn)證樹與匹配樹在其k條路徑上匹配。具體算法實(shí)現(xiàn)如下輸入匹配樹Q,待驗(yàn)證樹T;輸出 匹配度R;(1) R 二 0(2) 用XPath語句寫出匹配樹Q的所有從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑;(3) k為匹配樹Q的路徑總數(shù);(4) for匹配樹Q中按字母順序排列的每條路徑p;(5) 執(zhí)行XPath語句在待驗(yàn)證樹T中查找相應(yīng)的節(jié)點(diǎn),若找到就在 其相應(yīng)的匹配度上加上當(dāng)前XPath語句的權(quán)重;(6) 若沒有找到對應(yīng)節(jié)點(diǎn)則退出循環(huán);(7) endfor。
權(quán)利要求
1.一種基于語法樹的程序正確性驗(yàn)證方法,其特征在于該方法的具體步驟包括1)采用XML的格式將源程序轉(zhuǎn)換為程序語法樹,具體方法是分析待驗(yàn)證程序的語義信息,轉(zhuǎn)換成XML格式的語義表達(dá),映射為一棵無序標(biāo)簽樹;其中,程序名及程序中的各元素轉(zhuǎn)化為相應(yīng)層次的父節(jié)點(diǎn)和子節(jié)點(diǎn);程序中的操作符、操作數(shù)為葉子節(jié)點(diǎn);使用一個(gè)虛擬根節(jié)點(diǎn)將所有節(jié)點(diǎn)進(jìn)行組合;2)對程序語法樹進(jìn)行優(yōu)化,具體方法是采用常量合并、同類語義合并、無用變量刪除以及復(fù)雜表達(dá)式拆分的方法對1)中的程序語法樹進(jìn)行分析,排除語義的多樣性,使同一功能呈現(xiàn)同一的語法樹表現(xiàn)形式;3)使用XPath語句對2)中的優(yōu)化后的程序語法樹進(jìn)行表達(dá),每一條XPath語句都對應(yīng)一個(gè)權(quán)重,具體方法是①對于XPath語句組中的每一條XPath語句依次檢驗(yàn),如果XPath語句在待驗(yàn)證語法樹中查詢結(jié)果與在匹配樹中的查詢結(jié)果一致,則此XPath語句對應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中;②一組XPath語句查詢完成,生成匹配樹,將得到的匹配度作為最小匹配代價(jià);4)利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性,具體方法是將匹配樹與每一待驗(yàn)證樹進(jìn)行比較,取匹配樹的每條路徑并在待驗(yàn)證樹中查找對應(yīng)路徑根節(jié)點(diǎn);如果未找到該根節(jié)點(diǎn),則完全不匹配,源程序整體錯誤,退出驗(yàn)證;如果找到該根節(jié)點(diǎn),則進(jìn)入5);5)對待驗(yàn)證樹中的單條路徑進(jìn)行驗(yàn)證,如果待驗(yàn)證樹中的節(jié)點(diǎn)n是查詢樹的第k條路徑的根節(jié)點(diǎn),并且與以節(jié)點(diǎn)n為根的子樹和匹配樹中的第k條路徑相匹配,則待驗(yàn)證樹與匹配樹在其第k條路徑上匹配,即驗(yàn)證第k條路徑所對應(yīng)的源程序正確;6)通過5)對待驗(yàn)證樹中的全路徑進(jìn)行驗(yàn)證,如果部分路徑上匹配,則對應(yīng)該路徑的源程序正確;如果所有路徑上匹配,則源程序整體正確。
全文摘要
本發(fā)明涉及一種程序設(shè)計(jì)正確性驗(yàn)證的方法。目前進(jìn)行程序正確性驗(yàn)證方法效率低、驗(yàn)證的準(zhǔn)確性不夠。本發(fā)明方法具體包括采用XML的格式將源程序轉(zhuǎn)換為程序語法樹;對程序語法樹進(jìn)行優(yōu)化;使用XPath語句對優(yōu)化后的程序語法樹進(jìn)行表達(dá),每一條XPath語句都對應(yīng)一個(gè)權(quán)重;利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性;對待驗(yàn)證樹中的單條路徑進(jìn)行驗(yàn)證;對待驗(yàn)證樹中的全路徑進(jìn)行驗(yàn)證。本發(fā)明方法可以準(zhǔn)確驗(yàn)證源程序的準(zhǔn)確性,同時(shí)效率比現(xiàn)有方法大大提高。
文檔編號G06F11/36GK101261602SQ20081006094
公開日2008年9月10日 申請日期2008年4月8日 優(yōu)先權(quán)日2008年4月8日
發(fā)明者卿 吳, 周必水, 胡維華, 謝紅標(biāo) 申請人:杭州電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
三门县| 洞口县| 南康市| 略阳县| 涟源市| 马鞍山市| 收藏| 呼玛县| 莱芜市| 敖汉旗| 溧水县| 丰台区| 淳化县| 茌平县| 湛江市| 西乡县| 甘谷县| 浮山县| 姜堰市| 莱州市| 瑞金市| 佛教| 海丰县| 射洪县| 土默特右旗| 广德县| 新闻| 柳河县| 苗栗县| 铜鼓县| 丰镇市| 通江县| 嘉义县| 沙河市| 南通市| 广河县| 中山市| 宾阳县| 呼玛县| 门头沟区| 怀安县|