专利名称:一种基于函数ns图的程序理解的结果可视化方法
技术领域:
本发明涉及一种基于函数NS图的程序理解的结果可视化方法。
背景技术:
软件系统的维护问题促进了逆向工程领域的发展,逆向工程的各种任务,如再文档、软件重构等,均需要程序理解技术的支撑,程序理解成为软件工程的重要研究内容,在软件维护和逆向工程方面有广泛的应用。程序理解结果可视化表示的研究,将运用计算机可视化技术,正确地表示程序理解的结果。实践证明,运用形象化的方式表示程序概念时, 将大大提高阅读程序的效率。
发明内容
本发明要解决现有程序理解效率低的问题,提供了一种提高程序理解效率的基于函数NS图的程序理解的结果可视化方法。本发明的技术方案一种基于函数NS图的程序理解的结果可视化方法,其步骤如下步骤1 将待分析的函数源代码解析为控制结构表;步骤2 对控制结构表中的各个控制结构进行标准化处理;所述控制结构的标准结构包括(1)顺序结构,可分为定义声明结构和运算操作结构;(2)循环结构,可分为for结构、while结构和do-while结构;(3)选择结构,可分为if结构和switch结构;(4)由选择结构所派生的子分支结构,可分为true、false、case, deault等结构;步骤3 将各个标准的控制结构转化为NS图对应的图元部件,获得图元部件表;步骤4 计算各个图元部件的外形特征,并将其写入对应的图元部件表;步骤5 计算各个图元部件的坐标特征,并将其写入对应的图元部件表;步骤6 根据图元部件表,生成NS图,得到程序理解的结果。进一步,步骤1的处理步骤如下步骤1. 1 获得待分析的函数源代码;步骤1. 2 对函数源代码进行词法分析、语法分析、语义分析;步骤1. 3 在进行步骤1. 2的同时,提取函数的控制结构信息,并保存于控制结构表中。进一步,步骤4中的图元部件的外形特征分为横向参数表示图元部件的宽度;纵向参数Vi,表示图元部件的高度;步骤4的处理步骤如下步骤4. 1 计算各个图元部件的初始外形特征;遍历控制结构表,计算各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 1. 1 判断图元部件是否存在子图元部件,如果判断结果为是,则计算子图元部件的外形特征;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的外形特征;步骤4. 1. 2 判断图元部件的类型,计算图元部件的外形特征;(1)顺序结构 比=h(表达语句的宽度); Vi = ν (表达语句的高度);(2)循环结构比=[h (循环条件语句的宽度),h’ h’ Vi = V (循环条件语句的高度)+V’ !+V' 2+·
2'(3)选择结构、= [h(选择条件语句的宽度),h’广h’ 2+·Vi = ν (选择条件语句的高度)+[V’ !,V^2,.(4)子分支结构hi = [h,” h,2,· · ·,h,· · ·,h,Jmax ;
..,h
+ν,,
j,h n]r .· · +V,
+h'
+h'
Vi = ν' !+ν' 2+. . . +ν' j+. . . +ν'
表示当前图元部件的子图元
其中,h” Vi表示当前图元部件的外形特征;h’ j, V’ 部件的坐标特征,j = l,2,...,n,n=当前图元部件的子图元部件数目;步骤4. 2 计算各个图元部件的特征调整参数,图元部件特征调整参数分为横向特征调整参数Phi和纵向特征调整参数Pvi ;h— = [h” h2,· · ·,Iii, · · ·,hn]max ;phi = Iimax-Iii ;pvi = 0 ;其中,i = l,2,...,n,n=图元部件表中图元部件数目;步骤4. 3 调整各个图元部件的外形特征,遍历控制结构表,调整各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 3. 1 判断图元部件是否需要调整外形特征,如果判断结果为是,则执行步骤4. 3. 2 ;如果判断结果为否,则结束本次调整图元部件的外形特征;步骤4. 3. 2 调整图元部件的外形特征;hi = hi+phi ;Vi = Vi+pvi ;步骤4. 3. 3 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤 4. 3. 4 ;如果判断结果为否,则结束本次调整图元部件的外形特征;步骤4. 3. 4 判断图元部件的类型,计算子图元部件的特征调整参数;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;(1)循环结构P,hJ = Phi ;p,vJ = 0;(2)选择结构P,hJ = Phi/n ;
ν,max = [V,” V,2,· · ·,ν,ρ · · ·,V,Jmax ;P,vJ = V,max_v,j ;(3)子分支结构p,hJ = phi;ρ,vj = pvi/n ;其中Phi表示当前图元部件的调整特征参数;p’ w、p’ vJ表示当前图元部件的子图元部件的调整特征参数,j = l,2,...,n,n=当前图元部件的子图元部件数目;步骤4. 3. 5 调整子图元部件的外形特征;h' j = h' j+p' hJ ;v' j = v' j+p' vJ ;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,调整各个子控制结构所对应的子图元部件的外形特征。进一步,步骤5中的图元部件的坐标特征分为横坐标参数Xi ;纵坐标参数yi ;遍历控制结构表,计算各个控制结构所对应的图元部件的坐标特征;其中每个控制结构处理过程为步骤5. 1 计算图元部件的坐标特征;X1 = 0 ;Y1 = 0 ;Xi = 0 ;Yi = Yh+VH ;其中,i = 2,3,...,η,η=图元部件表中图元部件数目;步骤5.2 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤 5. 3 ;如果结果为否,则结束本次计算图元部件的坐标特征;步骤5. 3 判断图元部件的类型,计算子图元部件的坐标特征;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;(1)循环结构
X' !=Xi ;
y'!=Yi ;
x,j=Xi ;
=f H+V,
⑵选择结构
=Xi ;
y'!=Yi ;
x,j=X,J-^h'
=Yi ;
⑶子分支结构
=Xi ;
y'!=Yi ;
χ,,=Xi ;
r j = r —ν,w ;其中,\、71表示当前图元部件的坐标特征;x、、y、表示当前图元部件的子图元部件的坐标特征,j = 2,3,.. .,η,η =当前图元部件的子图元部件数目;此步骤为递归运算, 遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的坐标特征。本发明的技术构思是,将程序理解的结果通过函数NS图来表示,使得程序理解的结果可视化、形象化,从而大大提高了程序阅读的效率。本发明的有益效果程序理解的结果可视化、形象化,使得程序阅读的效率高。
图1是本发明的流程图。
图2是本发明的标准化的控制结构表示意图。
图3是本发明的控制结构表与图元部件表的转换示意图。
图4是本发明的图元部件的初始外形特征的示意图。
图5是本发明的if结构的图元部件外形特征调整示意图。
图6是本发明的switch结构的图元部件外形特征调整示意图。
图7是本发明的for结构的图元部件外形特征调整示意图。
图8是本发明的图元部件的调整后外形特征示意图。
图9是本发明的图元部件的坐标计算示意图。
图10是本发明的标准控制结构NS图表示示意图。
具体实施例方式参照图1-10,一种基于函数NS图的程序理解的结果可视化方法,其步骤如下步骤1 将待分析的函数源代码解析为控制结构表;步骤2 对控制结构表中的各个控制结构进行标准化处理;所述控制结构的标准结构包括(1)顺序结构,可分为定义声明结构和运算操作结构;(2)循环结构,可分为for结构、while结构和do-while结构;(3)选择结构,可分为if结构和switch结构;(4)由选择结构所派生的子分支结构,可分为true、false、case, deault等结构;步骤3 将各个标准的控制结构转化为NS图对应的图元部件,获得图元部件表;步骤4 计算各个图元部件的外形特征,并将其写入对应的图元部件表;步骤5 计算各个图元部件的坐标特征,并将其写入对应的图元部件表;步骤6 根据图元部件表,生成NS图,得到程序理解的结果。进一步,步骤1的处理步骤如下步骤1. 1 获得待分析的函数源代码;步骤1. 2 对函数源代码进行词法分析、语法分析、语义分析;步骤1. 3 在进行步骤1. 2的同时,提取函数的控制结构信息,并保存于控制结构表中。
进一步,步骤4中的图元部件的外形特征分为横向参数表示图元部件的宽度;纵向参数Vi,表示图元部件的高度;步骤4的处理步骤如下步骤4. 1 计算各个图元部件的初始外形特征;遍历控制结构表,计算各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 1. 1 判断图元部件是否存在子图元部件,如果判断结果为是,则计算子图元部件的外形特征;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的外形特征;步骤4. 1. 2 判断图元部件的类型,计算图元部件的外形特征;(1)顺序结构Iii = h (表达语句的宽度);Vi = ν (表达语句的高度);(2)循环结构比=[h (循环条件语句的宽度),h’ 1;h’Vi = ν (循环条件语句的高度)+ν’ !+ν'
表示当前图元部件的子图元(3)选择结构、= [h(选择条件语句的宽度),h’广h’ _Vi = ν (选择条件语句的高度)+[V’ V’ 2,. . .,V’(4)子分支结构hi = [h,” h,2,· · ·,h,· · ·,h,Jmax ;Vi = V,!+V' 2+. . . +V,j+. · · +V,n ;其中,、、Vi表示当前图元部件的外形特征;h’」、ν’ 部件的坐标特征,j = l,2,...,n,n=当前图元部件的子图元部件数目;步骤4. 2 计算各个图元部件的特征调整参数,图元部件特征调整参数分为横向特征调整参数Phi和纵向特征调整参数Pvi ;h— = [h” h2,· · ·,hi,· · ·,hn]max ;phi = hmax_hi;pvi = 0;其中,i = l,2,...,n,n=图元部件表中图元部件数目;
步骤4.3 调整各个图元部件的外形特征,遍历控制结构表,调整各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 3. 1 判断图元部件是否需要调整外形特征,如果判断结果为是,则执行步骤4. 3. 2 ;如果判断结果为否,则结束本次调整图元部件的外形特征;步骤4. 3. 2 调整图元部件的外形特征;hi = hi+Ρω ;Vi = Vi+pvi ;步骤4. 3. 3 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤 4. 3. 4 ;如果判断结果为否,则结束本次调整图元部件的外形特征;步骤4. 3. 4 判断图元部件的类型,计算子图元部件的特征调整参数;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;
(1)循环结构p' hJ = Phi ;p,vJ = 0 ;(2)选择结构P,hJ = Phi/n ;V,max = [V,” V,2,· · ·,V,· · ·,V,Jmax ;P' vJ = ν' fflax-v' j ;(3)子分支结构p' hJ = Phi ;p,vJ = pvi/n;其中Phi表示当前图元部件的调整特征参数;P’ w、P’ vJ表示当前图元部件的子图元部件的调整特征参数,j = l,2,...,n,n=当前图元部件的子图元部件数目;步骤4. 3. 5 调整子图元部件的外形特征;h' j = h' j+p' hJ ;v' j = v' j+p' vJ ;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,调整各个子控制结构所对应的子图元部件的外形特征。进一步,步骤5中的图元部件的坐标特征分为横坐标参数Xi ;纵坐标参数yi ;遍历控制结构表,计算各个控制结构所对应的图元部件的坐标特征;其中每个控制结构处理过程为步骤5. 1 计算图元部件的坐标特征;X1 = O;Y1 = 0 ;Xi = O;Yi = Yi-i+v^!;其中,i = 2,3,...,n,n=图元部件表中图元部件数目;步骤5.2 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤 5. 3 ;如果结果为否,则结束本次计算图元部件的坐标特征;步骤5. 3 判断图元部件的类型,计算子图元部件的坐标特征;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;(1)循环结构χ' ! = Xi ;y' ! = Yi ;x' j = Xi ;Ifi = I' j-i+v' ;(2)选择结构Xj1=Xi;y' ! = Yi ;x' j = x' j^+h' ;
y' j = Yi ;(3)子分支结构X, i = Xi ;y' ! = Yi ;χ, j = Xi ;r j = r Η+ν,w ;其中,\、71表示当前图元部件的坐标特征;x、、y 表示当前图元部件的子图元部件的坐标特征,j = 2,3,.. .,η,η =当前图元部件的子图元部件数目;此步骤为递归运算, 遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的坐标特征。本发明的技术构思是,将程序理解的结果通过函数NS图来表示,使得程序理解的结果可视化、形象化,从而大大提高了程序阅读的效率。本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围的不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。
权利要求
1.一种基于函数NS图的程序理解的结果可视化方法,其步骤如下 步骤1 将待分析的函数源代码解析为控制结构表;步骤2 对控制结构表中的各个控制结构进行标准化处理;所述控制结构的标准结构包括(1)顺序结构,可分为定义声明结构和运算操作结构;(2)循环结构,可分为for结构、while结构和do-while结构;(3)选择结构,可分为if结构和switch结构;(4)由选择结构所派生的子分支结构,可分为true、false、case,deault等结构; 步骤3 将各个标准的控制结构转化为NS图对应的图元部件,获得图元部件表; 步骤4 计算各个图元部件的外形特征,并将其写入对应的图元部件表;步骤5 计算各个图元部件的坐标特征,并将其写入对应的图元部件表; 步骤6 根据图元部件表,生成NS图,得到程序理解的结果。
2.根据权利要求1所述的一种基于函数NS图的程序理解的结果可视化方法,其特征在于步骤1的处理步骤如下步骤1. 1 获得待分析的函数源代码;步骤1. 2 对函数源代码进行词法分析、语法分析、语义分析;步骤1. 3 在进行步骤1. 2的同时,提取函数的控制结构信息,并保存于控制结构表中。
3.根据权利要求1或2所述的一种基于函数NS图的程序理解的结果可视化方法,其特征在于步骤4中的图元部件的外形特征分为横向参数表示图元部件的宽度;纵向参数Vi,表示图元部件的高度;步骤4的处理步骤如下步骤4. 1 计算各个图元部件的初始外形特征;遍历控制结构表,计算各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 1. 1 判断图元部件是否存在子图元部件,如果判断结果为是,则计算子图元部件的外形特征;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的外形特征;步骤4. 1. 2 判断图元部件的类型,计算图元部件的外形特征;(1)顺序结构比=h(表达语句的宽度); Vi = ν (表达语句的高度);(2)循环结构hi = [h (循环条件语句的宽度),h’ h’ 2,...,h’ j, h’ Jfflax ; Vi = ν (循环条件语句的高度)+ν’ !+v' 2+...+v' j+...+ν’ n;(3)选择结构hi = [h(选择条件语句的宽度),h,^h' 2+· · · +h,j+h' Jfflax ; Vi = ν (选择条件语句的高度)+ [ν’ V’ 2,. . .,V’」,...,V’ Jfflax ;(4)子分支结构hi — [h ι,h 2,· · ·,h j,· · ·,h Jmax ;Vi = V,!+V' 2+. . . +V,j+. · · +V,n ;其中,h” Vi表示当前图元部件的外形特征;h’ J.V'彳表示当前图元部件的子图元部件的坐标特征,j = l,2,...,n,n=当前图元部件的子图元部件数目;步骤4. 2 计算各个图元部件的特征调整参数,图元部件特征调整参数分为横向特征调整参数Phi和纵向特征调整参数Pvi ; hmax — [h” h2,· · ·,h" · · ·,hn]mas ;Phi — hmax hi ;Pvi = 0 ;其中,i = l,2,...,n,n=图元部件表中图元部件数目;步骤4. 3 调整各个图元部件的外形特征,遍历控制结构表,调整各个控制结构所对应的图元部件的外形特征;其中每个控制结构处理过程为步骤4. 3. 1 判断图元部件是否需要调整外形特征,如果判断结果为是,则执行步骤 4. 3. 2 ;如果判断结果为否,则结束本次调整图元部件的外形特征; 步骤4. 3. 2 调整图元部件的外形特征; hi = hi+phi ; Vi = Vi+Pvi ;步骤4. 3. 3 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤 4. 3. 4 ;如果判断结果为否,则结束本次调整图元部件的外形特征;步骤4. 3. 4 判断图元部件的类型,计算子图元部件的特征调整参数;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;(1)循环结构 P,hj = Ρω ;P,Vj = 0 ;(2)选择结构 P,hj = Phi/n ;V max — tV 1' V 2' · · · ‘ V i' · · · ‘ V Jmax ;D, . = V, -V,■.Irj vjv max v j,(3)子分支结构 P,hj = Ρω ;P,Vj = Pvi/n ;其中Phi表示当前图元部件的调整特征参数;P’ w、P’ vJ表示当前图元部件的子图元部件的调整特征参数,j = l,2,...,n,n=当前图元部件的子图元部件数目; 步骤4. 3. 5 调整子图元部件的外形特征; h,j = h,J+p,hJ ; V,j = V,,P,vj ;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,调整各个子控制结构所对应的子图元部件的外形特征。
4.根据权利要求3所述的一种基于函数NS图的程序理解的结果可视化方法,其特征在于步骤5中的图元部件的坐标特征分为横坐标参数Xi ;纵坐标参数yi ;遍历控制结构表,计算各个控制结构所对应的图元部件的坐标特征;其中每个控制结构处理过程为 步骤5. 1 计算图元部件的坐标特征;X1 = 0 ; Y1 = 0 ; Xi = 0 ;Yi = Yi-I+Vi-I ;其中,i = 2,3,...,η,η=图元部件表中图元部件数目;步骤5. 2 判断图元部件是否存在子图元部件,如果判断结果为是,则执行步骤5. 3 ;如果结果为否,则结束本次计算图元部件的坐标特征;步骤5.3 判断图元部件的类型,计算子图元部件的坐标特征;存在子图元部件的图元部件所对应的控制结构只有循环结构、选择结构和子分支结构;(1)循环结构 X,ι = Xi ;y' ι = Yi ;X,j = Xi ;y’ j = y’ j-i+v' j-i ;(2)选择结构X 1 — Xi ;y' ι = Yi ;X, = X, +h, ·A j A j-1 11 j-1,y j — Ji (3)子分支结构 x,ι = Xi ;y' ι = Yi ;X,j = Xi ;y’ j = y’ j-i+v' j-i ;其中,X^yi表示当前图元部件的坐标特征;χ’ ^y'彳表示当前图元部件的子图元部件的坐标特征,j = 2,3,. . .,η,η =当前图元部件的子图元部件数目;此步骤为递归运算,遍历图元部件对应的控制结构的子控制结构表,计算各个子控制结构所对应的子图元部件的坐标特征。
全文摘要
一种基于函数NS图的程序理解的结果可视化方法,其步骤如下步骤1将待分析的函数源代码解析为控制结构表;步骤2对控制结构表中的各个控制结构进行标准化处理;步骤3将各个标准的控制结构转化为NS图对应的图元部件,获得图元部件表;步骤4计算各个图元部件的外形特征,并将其写入对应的图元部件表;步骤5计算各个图元部件的坐标特征,并将其写入对应的图元部件表;步骤6根据图元部件表,生成NS图,得到程序理解的结果。本发明的有益效果程序理解的结果可视化、形象化,使得程序阅读的效率高。
文档编号G06F9/44GK102214097SQ20111015385
公开日2011年10月12日 申请日期2011年6月9日 优先权日2011年6月9日
发明者古辉, 林道淼 申请人:浙江工业大学