一种适用于软件可视化过程的图形布局方法技术

技术编号:3939914 阅读:339 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种适用于软件可视化过程的图形布局方法,属于软件可视化技术领域。首先设定画布的左上角为坐标原点,其次对软件可视化过程中得到的待处理有向图进行深度搜索,根据搜索结果获得每个节点边框的左上角的坐标;此外根据每个节点上已设定好的文本的内容和样式,得到每个节点的边框长宽信息;根据每个节点边框的左上角的坐标及每个节点边框长宽信息即得到边框矩形的中心点坐标。本发明专利技术在图中的节点较多时,可尽量减少图中的交叉线;并且充分考虑到与某一个节点相连接的其它多个节点在几何空间上的布局,使这些节点在图中的位置相对集中,使层次化系统结构图的可读性比好。

【技术实现步骤摘要】

本专利技术涉及图形布局方法,特别涉及一种适用于软件可视化过程的图形布局方 法,属于软件可视化

技术介绍
软件可视化通常采用软件自动化方式将软件系统的各种属性(包括关键字、类间 关系等)或者各种属性的相关统计信息,通过静态或者动态的2D或3D的图形加以概括表 示,从而展示软件系统的内部结构,软件的演化信息,和软件的行为特性,实现对源码的自 动分析和抽象,产生能反映软件内部结构或者其他度量信息的高度概括的图形表示。通过 对软件系统进行可视化可以获得软件的高级抽象,便于快速获得软件设计层次上的理解。软件可视化的意义在于①通过对软件进行可视化获得对软件系统设计层次上的 抽象,便于系统的维护、巩固、移植和改进,为软件系统尤其是遗产系统的重构、再工程以及 设计的恢复提供有力的帮助;②随着开源社区的发展和完善,开源系统尤其是基于Java代 码的开源系统种类日臻完善和丰富,且代码量也在飞速增加,但其文档化往往又严重滞后 甚至缺乏,所以软件可视化的作用也变的尤为重要。文献《针对面向对象程序设计语言源代码的软件可视化方法》(国家专利,专利号 201010266831. 5)公开了一种针对面向对象程序设计语言源代码的软件可视化方法,其主 要步骤为步骤一、从源代码中提取关键信息。关键信息包括类所在的包、类名、父类、继承方式、类的类型、类的修饰符、类所包 含的嵌套类、类属性的类型、类属性的修饰符、类构造函数参数、类方法的名字、类方法的参 数、类方法的返回值类型以及类方法的修饰符。步骤二、获取原始图数据信息。将步骤一得到的关键信息按照表2所示的图的属性、表3所示的边的属性、表4所 示的节点的属性的数据结构进行存储,即可得到一个仅包含节点名称和边名称的原始图数 据信息。表2存储关键信息的数据结构设计表1-图的属性权利要求,其特征在于其具体步骤为步骤1设定画布的左上角为坐标原点;步骤2对软件可视化过程中得到的待处理有向图进行深度搜索,得到其最大深度d、层序号i、每层所包含的节点集合Vi、集合Vi所包含的节点的个数numi以及所有节点各自所在的层数deep;其中,d,i均为正整数且1≤i≤d;步骤3根据步骤2得到的结果,计算出每个节点边框的左上角的纵坐标y和横坐标x的值,获得每个节点边框的左上角的坐标;①计算出每个节点边框的左上角的纵坐标y的值;②计算出每个节点边框的左上角的横坐标x的值,其计算方法如下第a步将第1层中的节点按照字母表升序排序;第b步对第2层中的节点做以下处理按照入度从大到小的顺序对第2层中的节点进行排序,当有多于1个的节点的入度相同时,按字母表序排序;排序后的节点用qj表示;其中,1≤j≤num2,qj∈V2,且j为正整数;由q1节点得到指向该节点的前驱节点集合Vq1和数量zq1,zq1为正整数,将前驱节点集合Vq1中的节点按照出度从小到大在第1层中从第1个位置开始重新排序,节点集合v∈(V1 Vq1)中受影响的节点的位置依次后置,并将q1排在第二层的第一位;然后取q2节点,得到指向该节点的前驱节点集合Vq2和数量zq2,如果则将q2置于第2层的第2位,即正向排序,从前向后排;同时,集合中的节点按照出度从小到大在第一层中从zq1+1处开始从前向后重新排序,集合v∈(V1 (Vq1∪Vq2))中受影响的节点的位置依次后置;否则,即则将节点q2置于第2层的最后,即反向排序,从后向前排,并将集合Vq2中的节点从第1层的最后位置开始从后向前按照出度由小到大重新排序,集合v∈(V1 (Vq1∪Vq2))中受影响的节点的位置依次前置;当存在q3时,如果则排序继续按照q2中相关的排序方向进行第1层和第2层的排序;否则,变换排序方向;其他操作同q2中相关操作;以此类推,处理第2层中的其它未处理的节点;第c步如果存在第p层,p≥3且p为正整数,则依次对第p层节点做以下处理,否则直接执行步骤4;用Nk表示p 1层经排序后的第k个节点,k=1、2、......nump 1且k为正整数,依次得到第p 1层中从第1个到第nump 1个节点中的第k个节点Nk的后继节点集合Vk;如果并且k=1时,则将集合Vk∩Vp中的节点在第p层按照入度从小到大从第1个位置开始进行排序;如果并且k≠1时,则将集合Vk∩Vp中还未排序的节点按照入度从小到大依次排在已排序节点之后;最后,开始处理p 1层中的下一个节点的后继集合;依次循环,直到将p 1层中所有节点的后继节点集合处理完毕则退出循环;层数p每自增一层,重复执行第c步;第d步通过公式(3)得到同一层中两个相邻节点的距离w,通过公式(4)得到第s层,第t个节点的横坐标值x,其中,3≤s≤d,1≤t≤nums且s、t均为正整数;w=(W x1 x2)/(nums 1+2)(3)x=x1+t×w(4)其中,W为画布的宽度,x1,x2分别为第s层左右两边的留白;步骤4此外根据每个节点上已设定好的文本的内容和样式,得到每个节点的边框长宽信息;步骤5根据步骤3得到的每个节点边框的左上角的坐标及步骤4得到的节点边框长宽信息即得到边框矩形的中心点坐标;经过上述操作,由步骤3得到每个边框的左上角坐标,步骤4得到边框的长宽值,步骤5得到节点间连线的开始和结束坐标,即完成了所需的图形布局方法。FSA00000298365300011.tif,FSA00000298365300012.tif,FSA00000298365300013.tif,FSA00000298365300014.tif,FSA00000298365300021.tif,FSA00000298365300022.tif,FSA00000298365300023.tif2.如权利要求1所述的,其特征在于每 个节点边框的左上角的纵坐标y的值的计算方法为设定H为画布的高度,根据公式1可得到有向图中每一层的高度差h h = (Η )/((1-1) (1)其中,Ill和h2分别为画布的上、下留白高度;根据公式2可得到该节点的左上角的纵坐标y y = ^+(i-l) Xh (2)全文摘要本专利技术涉及,属于软件可视化
首先设定画布的左上角为坐标原点,其次对软件可视化过程中得到的待处理有向图进行深度搜索,根据搜索结果获得每个节点边框的左上角的坐标;此外根据每个节点上已设定好的文本的内容和样式,得到每个节点的边框长宽信息;根据每个节点边框的左上角的坐标及每个节点边框长宽信息即得到边框矩形的中心点坐标。本专利技术在图中的节点较多时,可尽量减少图中的交叉线;并且充分考虑到与某一个节点相连接的其它多个节点在几何空间上的布局,使这些节点在图中的位置相对集中,使层次化系统结构图的可读性比好。文档编号G06F9/44GK101957757SQ20101050330公开日2011年1月26日 申请日期2010年9月30日 优先权日2010年9月30日专利技术者万颖, 洪孝金, 王国强, 王崑声, 王志刚, 胡昌振, 郭刚 申请人:北京理工大学本文档来自技高网
...

【技术保护点】
一种适用于软件可视化过程的图形布局方法,其特征在于:其具体步骤为:步骤1:设定画布的左上角为坐标原点;步骤2:对软件可视化过程中得到的待处理有向图进行深度搜索,得到其最大深度d、层序号i、每层所包含的节点集合V↓[i]、集合V↓[i]所包含的节点的个数num↓[i]以及所有节点各自所在的层数deep;其中,d,i均为正整数且1≤i≤d;步骤3:根据步骤2得到的结果,计算出每个节点边框的左上角的纵坐标y和横坐标x的值,获得每个节点边框的左上角的坐标;①计算出每个节点边框的左上角的纵坐标y的值;②计算出每个节点边框的左上角的横坐标x的值,其计算方法如下:第a步:将第1层中的节点按照字母表升序排序;第b步:对第2层中的节点做以下处理:按照入度从大到小的顺序对第2层中的节点进行排序,当有多于1个的节点的入度相同时,按字母表序排序;排序后的节点用q↓[j]表示;其中,1≤j≤num↓[2],q↓[j]∈V↓[2],且j为正整数;由q↓[1]节点得到指向该节点的前驱节点集合V↓[q1]和数量z↓[q1],z↓[q1]为正整数,将前驱节点集合V↓[q1]中的节点按照出度从小到大在第1层中从第1个位置开始重新排序,节点集合v∈(V↓[1]-V↓[q1])中受影响的节点的位置依次后置,并将q↓[1]排在第二层的第一位;然后取q↓[2]节点,得到指向该节点的前驱节点集合V↓[q2]和数量z↓[q2],如果V↓[q1]∩V↓[q2]≠*,则将q↓[2]置于第2层的第2位,即正向排序,从前向后排;同时,集合(V↓[q2]∩*)中的节点按照出度从小到大在第一层中从z↓[q1]+1处开始从前向后重新排序,集合v∈(V↓[1]-(V↓[q1]∪V↓[q2]))中受影响的节点的位置依次后置;否则,即:V↓[q1]∩V↓[q2]=*,则将节点q↓[2]置于第2层的最后,即反向排序,从后向前排,并将集合V↓[q2]中的节点从第1层的最后位置开始从后向前按照出度由小到大重新排序,集合v∈(V↓[1]-(V↓[q1]∪V↓[q2]))中受影响的节点的位置依次前置;当存在q↓[3]时,如果V↓[q2]∩V↓[q3]≠*,则排序继续按照q↓[2]中相关的排序方向进行第1层和第2层的排序;否则,变换排序方向;其他操作同q↓[2]中相关操作;以此类推,处理第2层中的其它未处理的节点;第c步:如果存在第p层,p≥3且p为正整数,则依次对第p层节点做以下处理,否...

【技术特征摘要】

【专利技术属性】
技术研发人员:胡昌振王国强王崑声王志刚郭刚洪孝金万颖
申请(专利权)人:北京理工大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1