專利名稱:一種基于函數(shù)ns圖的程序理解的結(jié)果可視化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法。
背景技術(shù):
軟件系統(tǒng)的維護(hù)問題促進(jìn)了逆向工程領(lǐng)域的發(fā)展,逆向工程的各種任務(wù),如再文檔、軟件重構(gòu)等,均需要程序理解技術(shù)的支撐,程序理解成為軟件工程的重要研究?jī)?nèi)容,在軟件維護(hù)和逆向工程方面有廣泛的應(yīng)用。程序理解結(jié)果可視化表示的研究,將運(yùn)用計(jì)算機(jī)可視化技術(shù),正確地表示程序理解的結(jié)果。實(shí)踐證明,運(yùn)用形象化的方式表示程序概念時(shí), 將大大提高閱讀程序的效率。
發(fā)明內(nèi)容
本發(fā)明要解決現(xiàn)有程序理解效率低的問題,提供了一種提高程序理解效率的基于函數(shù)NS圖的程序理解的結(jié)果可視化方法。本發(fā)明的技術(shù)方案一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其步驟如下步驟1 將待分析的函數(shù)源代碼解析為控制結(jié)構(gòu)表;步驟2 對(duì)控制結(jié)構(gòu)表中的各個(gè)控制結(jié)構(gòu)進(jìn)行標(biāo)準(zhǔn)化處理;所述控制結(jié)構(gòu)的標(biāo)準(zhǔn)結(jié)構(gòu)包括(1)順序結(jié)構(gòu),可分為定義聲明結(jié)構(gòu)和運(yùn)算操作結(jié)構(gòu);(2)循環(huán)結(jié)構(gòu),可分為for結(jié)構(gòu)、while結(jié)構(gòu)和do-while結(jié)構(gòu);(3)選擇結(jié)構(gòu),可分為if結(jié)構(gòu)和switch結(jié)構(gòu);(4)由選擇結(jié)構(gòu)所派生的子分支結(jié)構(gòu),可分為true、false、case, deault等結(jié)構(gòu);步驟3 將各個(gè)標(biāo)準(zhǔn)的控制結(jié)構(gòu)轉(zhuǎn)化為NS圖對(duì)應(yīng)的圖元部件,獲得圖元部件表;步驟4 計(jì)算各個(gè)圖元部件的外形特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟5 計(jì)算各個(gè)圖元部件的坐標(biāo)特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟6 根據(jù)圖元部件表,生成NS圖,得到程序理解的結(jié)果。進(jìn)一步,步驟1的處理步驟如下步驟1. 1 獲得待分析的函數(shù)源代碼;步驟1. 2 對(duì)函數(shù)源代碼進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義分析;步驟1. 3 在進(jìn)行步驟1. 2的同時(shí),提取函數(shù)的控制結(jié)構(gòu)信息,并保存于控制結(jié)構(gòu)表中。進(jìn)一步,步驟4中的圖元部件的外形特征分為橫向參數(shù)表示圖元部件的寬度;縱向參數(shù)Vi,表示圖元部件的高度;步驟4的處理步驟如下步驟4. 1 計(jì)算各個(gè)圖元部件的初始外形特征;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 1. 1 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則計(jì)算子圖元部件的外形特征;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征;步驟4. 1. 2 判斷圖元部件的類型,計(jì)算圖元部件的外形特征;(1)順序結(jié)構(gòu) 比=h(表達(dá)語(yǔ)句的寬度); Vi = ν (表達(dá)語(yǔ)句的高度);(2)循環(huán)結(jié)構(gòu)比=[h (循環(huán)條件語(yǔ)句的寬度),h’ h’ Vi = V (循環(huán)條件語(yǔ)句的高度)+V’ !+V' 2+·
2'(3)選擇結(jié)構(gòu)、= [h(選擇條件語(yǔ)句的寬度),h’廣h’ 2+·Vi = ν (選擇條件語(yǔ)句的高度)+[V’ !,V^2,.(4)子分支結(jié)構(gòu)hi = [h,” h,2,· · ·,h,· · ·,h,Jmax ;
..,h
+ν,,
j,h n]r .· · +V,
+h'
+h'
Vi = ν' !+ν' 2+. . . +ν' j+. . . +ν'
表示當(dāng)前圖元部件的子圖元
其中,h” Vi表示當(dāng)前圖元部件的外形特征;h’ j, V’ 部件的坐標(biāo)特征,j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目;步驟4. 2 計(jì)算各個(gè)圖元部件的特征調(diào)整參數(shù),圖元部件特征調(diào)整參數(shù)分為橫向特征調(diào)整參數(shù)Phi和縱向特征調(diào)整參數(shù)Pvi ;h— = [h” h2,· · ·,Iii, · · ·,hn]max ;phi = Iimax-Iii ;pvi = 0 ;其中,i = l,2,...,n,n=圖元部件表中圖元部件數(shù)目;步驟4. 3 調(diào)整各個(gè)圖元部件的外形特征,遍歷控制結(jié)構(gòu)表,調(diào)整各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 3. 1 判斷圖元部件是否需要調(diào)整外形特征,如果判斷結(jié)果為是,則執(zhí)行步驟4. 3. 2 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征;步驟4. 3. 2 調(diào)整圖元部件的外形特征;hi = hi+phi ;Vi = Vi+pvi ;步驟4. 3. 3 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟 4. 3. 4 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征;步驟4. 3. 4 判斷圖元部件的類型,計(jì)算子圖元部件的特征調(diào)整參數(shù);存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);(1)循環(huán)結(jié)構(gòu)P,hJ = Phi ;p,vJ = 0;(2)選擇結(jié)構(gòu)P,hJ = Phi/n ;
ν,max = [V,” V,2,· · ·,ν,ρ · · ·,V,Jmax ;P,vJ = V,max_v,j ;(3)子分支結(jié)構(gòu)p,hJ = phi;ρ,vj = pvi/n ;其中Phi表示當(dāng)前圖元部件的調(diào)整特征參數(shù);p’ w、p’ vJ表示當(dāng)前圖元部件的子圖元部件的調(diào)整特征參數(shù),j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目;步驟4. 3. 5 調(diào)整子圖元部件的外形特征;h' j = h' j+p' hJ ;v' j = v' j+p' vJ ;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,調(diào)整各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征。進(jìn)一步,步驟5中的圖元部件的坐標(biāo)特征分為橫坐標(biāo)參數(shù)Xi ;縱坐標(biāo)參數(shù)yi ;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的坐標(biāo)特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟5. 1 計(jì)算圖元部件的坐標(biāo)特征;X1 = 0 ;Y1 = 0 ;Xi = 0 ;Yi = Yh+VH ;其中,i = 2,3,...,η,η=圖元部件表中圖元部件數(shù)目;步驟5.2 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟 5. 3 ;如果結(jié)果為否,則結(jié)束本次計(jì)算圖元部件的坐標(biāo)特征;步驟5. 3 判斷圖元部件的類型,計(jì)算子圖元部件的坐標(biāo)特征;存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);(1)循環(huán)結(jié)構(gòu)
X' !=Xi ;
y'!=Yi ;
x,j=Xi ;
=f H+V,
⑵選擇結(jié)構(gòu)
=Xi ;
y'!=Yi ;
x,j=X,J-^h'
=Yi ;
⑶子分支結(jié)構(gòu)
=Xi ;
y'!=Yi ;
χ,,=Xi ;
r j = r —ν,w ;其中,\、71表示當(dāng)前圖元部件的坐標(biāo)特征;x、、y、表示當(dāng)前圖元部件的子圖元部件的坐標(biāo)特征,j = 2,3,.. .,η,η =當(dāng)前圖元部件的子圖元部件數(shù)目;此步驟為遞歸運(yùn)算, 遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的坐標(biāo)特征。本發(fā)明的技術(shù)構(gòu)思是,將程序理解的結(jié)果通過函數(shù)NS圖來(lái)表示,使得程序理解的結(jié)果可視化、形象化,從而大大提高了程序閱讀的效率。本發(fā)明的有益效果程序理解的結(jié)果可視化、形象化,使得程序閱讀的效率高。
圖1是本發(fā)明的流程圖。
圖2是本發(fā)明的標(biāo)準(zhǔn)化的控制結(jié)構(gòu)表示意圖。
圖3是本發(fā)明的控制結(jié)構(gòu)表與圖元部件表的轉(zhuǎn)換示意圖。
圖4是本發(fā)明的圖元部件的初始外形特征的示意圖。
圖5是本發(fā)明的if結(jié)構(gòu)的圖元部件外形特征調(diào)整示意圖。
圖6是本發(fā)明的switch結(jié)構(gòu)的圖元部件外形特征調(diào)整示意圖。
圖7是本發(fā)明的for結(jié)構(gòu)的圖元部件外形特征調(diào)整示意圖。
圖8是本發(fā)明的圖元部件的調(diào)整后外形特征示意圖。
圖9是本發(fā)明的圖元部件的坐標(biāo)計(jì)算示意圖。
圖10是本發(fā)明的標(biāo)準(zhǔn)控制結(jié)構(gòu)NS圖表示示意圖。
具體實(shí)施例方式參照?qǐng)D1-10,一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其步驟如下步驟1 將待分析的函數(shù)源代碼解析為控制結(jié)構(gòu)表;步驟2 對(duì)控制結(jié)構(gòu)表中的各個(gè)控制結(jié)構(gòu)進(jìn)行標(biāo)準(zhǔn)化處理;所述控制結(jié)構(gòu)的標(biāo)準(zhǔn)結(jié)構(gòu)包括(1)順序結(jié)構(gòu),可分為定義聲明結(jié)構(gòu)和運(yùn)算操作結(jié)構(gòu);(2)循環(huán)結(jié)構(gòu),可分為for結(jié)構(gòu)、while結(jié)構(gòu)和do-while結(jié)構(gòu);(3)選擇結(jié)構(gòu),可分為if結(jié)構(gòu)和switch結(jié)構(gòu);(4)由選擇結(jié)構(gòu)所派生的子分支結(jié)構(gòu),可分為true、false、case, deault等結(jié)構(gòu);步驟3 將各個(gè)標(biāo)準(zhǔn)的控制結(jié)構(gòu)轉(zhuǎn)化為NS圖對(duì)應(yīng)的圖元部件,獲得圖元部件表;步驟4 計(jì)算各個(gè)圖元部件的外形特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟5 計(jì)算各個(gè)圖元部件的坐標(biāo)特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟6 根據(jù)圖元部件表,生成NS圖,得到程序理解的結(jié)果。進(jìn)一步,步驟1的處理步驟如下步驟1. 1 獲得待分析的函數(shù)源代碼;步驟1. 2 對(duì)函數(shù)源代碼進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義分析;步驟1. 3 在進(jìn)行步驟1. 2的同時(shí),提取函數(shù)的控制結(jié)構(gòu)信息,并保存于控制結(jié)構(gòu)表中。
進(jìn)一步,步驟4中的圖元部件的外形特征分為橫向參數(shù)表示圖元部件的寬度;縱向參數(shù)Vi,表示圖元部件的高度;步驟4的處理步驟如下步驟4. 1 計(jì)算各個(gè)圖元部件的初始外形特征;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 1. 1 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則計(jì)算子圖元部件的外形特征;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征;步驟4. 1. 2 判斷圖元部件的類型,計(jì)算圖元部件的外形特征;(1)順序結(jié)構(gòu)Iii = h (表達(dá)語(yǔ)句的寬度);Vi = ν (表達(dá)語(yǔ)句的高度);(2)循環(huán)結(jié)構(gòu)比=[h (循環(huán)條件語(yǔ)句的寬度),h’ 1;h’Vi = ν (循環(huán)條件語(yǔ)句的高度)+ν’ !+ν'
表示當(dāng)前圖元部件的子圖元(3)選擇結(jié)構(gòu)、= [h(選擇條件語(yǔ)句的寬度),h’廣h’ _Vi = ν (選擇條件語(yǔ)句的高度)+[V’ V’ 2,. . .,V’(4)子分支結(jié)構(gòu)hi = [h,” h,2,· · ·,h,· · ·,h,Jmax ;Vi = V,!+V' 2+. . . +V,j+. · · +V,n ;其中,、、Vi表示當(dāng)前圖元部件的外形特征;h’」、ν’ 部件的坐標(biāo)特征,j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目;步驟4. 2 計(jì)算各個(gè)圖元部件的特征調(diào)整參數(shù),圖元部件特征調(diào)整參數(shù)分為橫向特征調(diào)整參數(shù)Phi和縱向特征調(diào)整參數(shù)Pvi ;h— = [h” h2,· · ·,hi,· · ·,hn]max ;phi = hmax_hi;pvi = 0;其中,i = l,2,...,n,n=圖元部件表中圖元部件數(shù)目;
步驟4.3 調(diào)整各個(gè)圖元部件的外形特征,遍歷控制結(jié)構(gòu)表,調(diào)整各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 3. 1 判斷圖元部件是否需要調(diào)整外形特征,如果判斷結(jié)果為是,則執(zhí)行步驟4. 3. 2 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征;步驟4. 3. 2 調(diào)整圖元部件的外形特征;hi = hi+Ρω ;Vi = Vi+pvi ;步驟4. 3. 3 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟 4. 3. 4 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征;步驟4. 3. 4 判斷圖元部件的類型,計(jì)算子圖元部件的特征調(diào)整參數(shù);存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);
(1)循環(huán)結(jié)構(gòu)p' hJ = Phi ;p,vJ = 0 ;(2)選擇結(jié)構(gòu)P,hJ = Phi/n ;V,max = [V,” V,2,· · ·,V,· · ·,V,Jmax ;P' vJ = ν' fflax-v' j ;(3)子分支結(jié)構(gòu)p' hJ = Phi ;p,vJ = pvi/n;其中Phi表示當(dāng)前圖元部件的調(diào)整特征參數(shù);P’ w、P’ vJ表示當(dāng)前圖元部件的子圖元部件的調(diào)整特征參數(shù),j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目;步驟4. 3. 5 調(diào)整子圖元部件的外形特征;h' j = h' j+p' hJ ;v' j = v' j+p' vJ ;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,調(diào)整各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征。進(jìn)一步,步驟5中的圖元部件的坐標(biāo)特征分為橫坐標(biāo)參數(shù)Xi ;縱坐標(biāo)參數(shù)yi ;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的坐標(biāo)特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟5. 1 計(jì)算圖元部件的坐標(biāo)特征;X1 = O;Y1 = 0 ;Xi = O;Yi = Yi-i+v^!;其中,i = 2,3,...,n,n=圖元部件表中圖元部件數(shù)目;步驟5.2 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟 5. 3 ;如果結(jié)果為否,則結(jié)束本次計(jì)算圖元部件的坐標(biāo)特征;步驟5. 3 判斷圖元部件的類型,計(jì)算子圖元部件的坐標(biāo)特征;存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);(1)循環(huán)結(jié)構(gòu)χ' ! = Xi ;y' ! = Yi ;x' j = Xi ;Ifi = I' j-i+v' ;(2)選擇結(jié)構(gòu)Xj1=Xi;y' ! = Yi ;x' j = x' j^+h' ;
y' j = Yi ;(3)子分支結(jié)構(gòu)X, i = Xi ;y' ! = Yi ;χ, j = Xi ;r j = r Η+ν,w ;其中,\、71表示當(dāng)前圖元部件的坐標(biāo)特征;x、、y 表示當(dāng)前圖元部件的子圖元部件的坐標(biāo)特征,j = 2,3,.. .,η,η =當(dāng)前圖元部件的子圖元部件數(shù)目;此步驟為遞歸運(yùn)算, 遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的坐標(biāo)特征。本發(fā)明的技術(shù)構(gòu)思是,將程序理解的結(jié)果通過函數(shù)NS圖來(lái)表示,使得程序理解的結(jié)果可視化、形象化,從而大大提高了程序閱讀的效率。本說(shuō)明書實(shí)施例所述的內(nèi)容僅僅是對(duì)發(fā)明構(gòu)思的實(shí)現(xiàn)形式的列舉,本發(fā)明的保護(hù)范圍的不應(yīng)當(dāng)被視為僅限于實(shí)施例所陳述的具體形式,本發(fā)明的保護(hù)范圍也及于本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明構(gòu)思所能夠想到的等同技術(shù)手段。
權(quán)利要求
1.一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其步驟如下 步驟1 將待分析的函數(shù)源代碼解析為控制結(jié)構(gòu)表;步驟2 對(duì)控制結(jié)構(gòu)表中的各個(gè)控制結(jié)構(gòu)進(jìn)行標(biāo)準(zhǔn)化處理;所述控制結(jié)構(gòu)的標(biāo)準(zhǔn)結(jié)構(gòu)包括(1)順序結(jié)構(gòu),可分為定義聲明結(jié)構(gòu)和運(yùn)算操作結(jié)構(gòu);(2)循環(huán)結(jié)構(gòu),可分為for結(jié)構(gòu)、while結(jié)構(gòu)和do-while結(jié)構(gòu);(3)選擇結(jié)構(gòu),可分為if結(jié)構(gòu)和switch結(jié)構(gòu);(4)由選擇結(jié)構(gòu)所派生的子分支結(jié)構(gòu),可分為true、false、case,deault等結(jié)構(gòu); 步驟3 將各個(gè)標(biāo)準(zhǔn)的控制結(jié)構(gòu)轉(zhuǎn)化為NS圖對(duì)應(yīng)的圖元部件,獲得圖元部件表; 步驟4 計(jì)算各個(gè)圖元部件的外形特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟5 計(jì)算各個(gè)圖元部件的坐標(biāo)特征,并將其寫入對(duì)應(yīng)的圖元部件表; 步驟6 根據(jù)圖元部件表,生成NS圖,得到程序理解的結(jié)果。
2.根據(jù)權(quán)利要求1所述的一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其特征在于步驟1的處理步驟如下步驟1. 1 獲得待分析的函數(shù)源代碼;步驟1. 2 對(duì)函數(shù)源代碼進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義分析;步驟1. 3 在進(jìn)行步驟1. 2的同時(shí),提取函數(shù)的控制結(jié)構(gòu)信息,并保存于控制結(jié)構(gòu)表中。
3.根據(jù)權(quán)利要求1或2所述的一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其特征在于步驟4中的圖元部件的外形特征分為橫向參數(shù)表示圖元部件的寬度;縱向參數(shù)Vi,表示圖元部件的高度;步驟4的處理步驟如下步驟4. 1 計(jì)算各個(gè)圖元部件的初始外形特征;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 1. 1 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則計(jì)算子圖元部件的外形特征;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征;步驟4. 1. 2 判斷圖元部件的類型,計(jì)算圖元部件的外形特征;(1)順序結(jié)構(gòu)比=h(表達(dá)語(yǔ)句的寬度); Vi = ν (表達(dá)語(yǔ)句的高度);(2)循環(huán)結(jié)構(gòu)hi = [h (循環(huán)條件語(yǔ)句的寬度),h’ h’ 2,...,h’ j, h’ Jfflax ; Vi = ν (循環(huán)條件語(yǔ)句的高度)+ν’ !+v' 2+...+v' j+...+ν’ n;(3)選擇結(jié)構(gòu)hi = [h(選擇條件語(yǔ)句的寬度),h,^h' 2+· · · +h,j+h' Jfflax ; Vi = ν (選擇條件語(yǔ)句的高度)+ [ν’ V’ 2,. . .,V’」,...,V’ Jfflax ;(4)子分支結(jié)構(gòu)hi — [h ι,h 2,· · ·,h j,· · ·,h Jmax ;Vi = V,!+V' 2+. . . +V,j+. · · +V,n ;其中,h” Vi表示當(dāng)前圖元部件的外形特征;h’ J.V'彳表示當(dāng)前圖元部件的子圖元部件的坐標(biāo)特征,j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目;步驟4. 2 計(jì)算各個(gè)圖元部件的特征調(diào)整參數(shù),圖元部件特征調(diào)整參數(shù)分為橫向特征調(diào)整參數(shù)Phi和縱向特征調(diào)整參數(shù)Pvi ; hmax — [h” h2,· · ·,h" · · ·,hn]mas ;Phi — hmax hi ;Pvi = 0 ;其中,i = l,2,...,n,n=圖元部件表中圖元部件數(shù)目;步驟4. 3 調(diào)整各個(gè)圖元部件的外形特征,遍歷控制結(jié)構(gòu)表,調(diào)整各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的外形特征;其中每個(gè)控制結(jié)構(gòu)處理過程為步驟4. 3. 1 判斷圖元部件是否需要調(diào)整外形特征,如果判斷結(jié)果為是,則執(zhí)行步驟 4. 3. 2 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征; 步驟4. 3. 2 調(diào)整圖元部件的外形特征; hi = hi+phi ; Vi = Vi+Pvi ;步驟4. 3. 3 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟 4. 3. 4 ;如果判斷結(jié)果為否,則結(jié)束本次調(diào)整圖元部件的外形特征;步驟4. 3. 4 判斷圖元部件的類型,計(jì)算子圖元部件的特征調(diào)整參數(shù);存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);(1)循環(huán)結(jié)構(gòu) P,hj = Ρω ;P,Vj = 0 ;(2)選擇結(jié)構(gòu) P,hj = Phi/n ;V max — tV 1' V 2' · · · ‘ V i' · · · ‘ V Jmax ;D, . = V, -V,■.Irj vjv max v j,(3)子分支結(jié)構(gòu) P,hj = Ρω ;P,Vj = Pvi/n ;其中Phi表示當(dāng)前圖元部件的調(diào)整特征參數(shù);P’ w、P’ vJ表示當(dāng)前圖元部件的子圖元部件的調(diào)整特征參數(shù),j = l,2,...,n,n=當(dāng)前圖元部件的子圖元部件數(shù)目; 步驟4. 3. 5 調(diào)整子圖元部件的外形特征; h,j = h,J+p,hJ ; V,j = V,,P,vj ;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,調(diào)整各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的外形特征。
4.根據(jù)權(quán)利要求3所述的一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其特征在于步驟5中的圖元部件的坐標(biāo)特征分為橫坐標(biāo)參數(shù)Xi ;縱坐標(biāo)參數(shù)yi ;遍歷控制結(jié)構(gòu)表,計(jì)算各個(gè)控制結(jié)構(gòu)所對(duì)應(yīng)的圖元部件的坐標(biāo)特征;其中每個(gè)控制結(jié)構(gòu)處理過程為 步驟5. 1 計(jì)算圖元部件的坐標(biāo)特征;X1 = 0 ; Y1 = 0 ; Xi = 0 ;Yi = Yi-I+Vi-I ;其中,i = 2,3,...,η,η=圖元部件表中圖元部件數(shù)目;步驟5. 2 判斷圖元部件是否存在子圖元部件,如果判斷結(jié)果為是,則執(zhí)行步驟5. 3 ;如果結(jié)果為否,則結(jié)束本次計(jì)算圖元部件的坐標(biāo)特征;步驟5.3 判斷圖元部件的類型,計(jì)算子圖元部件的坐標(biāo)特征;存在子圖元部件的圖元部件所對(duì)應(yīng)的控制結(jié)構(gòu)只有循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和子分支結(jié)構(gòu);(1)循環(huán)結(jié)構(gòu) X,ι = Xi ;y' ι = Yi ;X,j = Xi ;y’ j = y’ j-i+v' j-i ;(2)選擇結(jié)構(gòu)X 1 — Xi ;y' ι = Yi ;X, = X, +h, ·A j A j-1 11 j-1,y j — Ji (3)子分支結(jié)構(gòu) x,ι = Xi ;y' ι = Yi ;X,j = Xi ;y’ j = y’ j-i+v' j-i ;其中,X^yi表示當(dāng)前圖元部件的坐標(biāo)特征;χ’ ^y'彳表示當(dāng)前圖元部件的子圖元部件的坐標(biāo)特征,j = 2,3,. . .,η,η =當(dāng)前圖元部件的子圖元部件數(shù)目;此步驟為遞歸運(yùn)算,遍歷圖元部件對(duì)應(yīng)的控制結(jié)構(gòu)的子控制結(jié)構(gòu)表,計(jì)算各個(gè)子控制結(jié)構(gòu)所對(duì)應(yīng)的子圖元部件的坐標(biāo)特征。
全文摘要
一種基于函數(shù)NS圖的程序理解的結(jié)果可視化方法,其步驟如下步驟1將待分析的函數(shù)源代碼解析為控制結(jié)構(gòu)表;步驟2對(duì)控制結(jié)構(gòu)表中的各個(gè)控制結(jié)構(gòu)進(jìn)行標(biāo)準(zhǔn)化處理;步驟3將各個(gè)標(biāo)準(zhǔn)的控制結(jié)構(gòu)轉(zhuǎn)化為NS圖對(duì)應(yīng)的圖元部件,獲得圖元部件表;步驟4計(jì)算各個(gè)圖元部件的外形特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟5計(jì)算各個(gè)圖元部件的坐標(biāo)特征,并將其寫入對(duì)應(yīng)的圖元部件表;步驟6根據(jù)圖元部件表,生成NS圖,得到程序理解的結(jié)果。本發(fā)明的有益效果程序理解的結(jié)果可視化、形象化,使得程序閱讀的效率高。
文檔編號(hào)G06F9/44GK102214097SQ20111015385
公開日2011年10月12日 申請(qǐng)日期2011年6月9日 優(yōu)先權(quán)日2011年6月9日
發(fā)明者古輝, 林道淼 申請(qǐng)人:浙江工業(yè)大學(xué)