CN102385505A - 针对面向对象程序设计语言源代码的软件可视化方法 - Google Patents
针对面向对象程序设计语言源代码的软件可视化方法 Download PDFInfo
- Publication number
- CN102385505A CN102385505A CN2010102668315A CN201010266831A CN102385505A CN 102385505 A CN102385505 A CN 102385505A CN 2010102668315 A CN2010102668315 A CN 2010102668315A CN 201010266831 A CN201010266831 A CN 201010266831A CN 102385505 A CN102385505 A CN 102385505A
- Authority
- CN
- China
- Prior art keywords
- node
- limit
- type
- class
- priority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种针对面向对象程序设计语言源代码的软件可视化方法,属于软件可视化技术领域。本发明包括如下步骤:①从源代码中提取关键信息;②获取原始图数据信息;③获取有向图数据信息;④设计图形布局;⑤进行可视化映射。本文提出了一种新的针对面向对象程序设计语言源代码的软件可视化方法,弥补了类图用于软件可视化中的不足,能够更准确直观的反应软件的内部结构和软件内类的地位和作用,便于使用者快速获得软件设计层次上的理解。
Description
技术领域
本发明涉及一种针对面向对象程序设计语言(Object-OrientedProgramming Language,OOPL)源代码的软件可视化方法,属于软件可视化技术领域。
背景技术
基于程序源代码获得软件的高级设计抽象的方法,最原始和直接的解决方案就是程序员通过阅读源代码,经过一系列脑力分析,最终用一些高度抽象的图形或者文字表达来阐述一个软件的内部结构和实现逻辑。
软件可视化通常采用软件自动化方式将软件系统的各种属性(包括关键字、类间关系等)或者各种属性的相关统计信息,通过静态或者动态的2D或3D的图形加以概括表示,从而展示软件系统的内部结构,软件的演化信息,和软件的行为特性,实现对源码的自动分析和抽象,产生能反映软件内部结构或者其他度量信息的高度概括的图形表示。通过对软件系统进行可视化可以获得软件的高级抽象,便于快速获得软件设计层次上的理解。
软件可视化的意义在于:①通过对软件进行可视化获得对软件系统设计层次上的抽象,便于系统的维护、巩固、移植和改进,为软件系统尤其是遗产系统的重构、再工程以及设计的恢复提供有力的帮助;②随着开源社区的发展和完善,开源系统尤其是基于Java代码的开源系统种类日臻完善和丰富,且代码量也在飞速增加,但其文档化往往又严重滞后甚至缺乏,所以软件可视化的作用也变的尤为重要。
类图是一种展现软件系统结构的可视化方式。
类图所表示的类间的关系包括:泛化,依赖,关联,聚合,组合,实现。其对应的代码特征如表1所示:
表1类图关系对应的代码特征
由表可以看出:关联关系、聚合关系和组合关系在语法上是没办法区分的,只有从语义上才能区分,除此以外,将类图用作软件源码逆向可视化,其缺点有:
①因为类图主要应用于正向开发中,当其应用于软件源码可视化这样的逆向过程中时,类图中的一些语义相关的关系很难得到正确的表达;
②在现有的一些自动化测试软件中或者某些IDE集成开发工具中提供了由源码到类图的实现,但是由其得到的类图往往由多个连通子图构成,且类图的布局方式有很大的随意性,所以表达不够简洁,清晰,不具有统一性,不利于用户快速了解软件的结构体系。
③类图只能表示软件系统中各个类之间的某些特定关系,对软件系统结构的表示也是通过这些关系体现的,所以在表示系统结构时也局限在了类及类关系层面,对某个具体类在系统中所扮演的角色、所起的作用的表述也具有同样的局限性。
因此类图不适用于软件可视化。
发明内容
本发明的目的是为了克服已有技术中存在的不足,提出一种针对面向对象程序设计语言源代码的软件可视化方法。
本发明的目的是通过以下技术方案实现的。
一种针对面向对象程序设计语言源代码的软件可视化方法,具体为:
步骤一、从源代码中提取关键信息。
从待处理的面向对象程序设计语言源代码中提取关键信息。所述关键信息包括:类所在的包、类名、父类、继承方式、类的类型、类的修饰符、类所包含的嵌套类、类属性的类型、类属性的修饰符、类构造函数参数、类方法的名字、类方法的参数、类方法的返回值类型以及类方法的修饰符。
所述继承方式包括一般继承(extends)和接口实现(implements)两种继承方式;
所述类的类型包括抽象类型、接口类型、普通类型和不确定类型。
步骤二、获取原始图数据信息。
将步骤一得到的关键信息按照表2所示的图的属性、表3所示的边的属性、表4所示的节点的属性的数据结构进行存储,即可到一个仅包含节点名称和边名称的原始图数据信息。
表2存储关键信息的数据结构设计表1-图的属性
属性名称 | 数据类型 |
包含的节点的名称 | 文本 |
包含的边名称 | 文本 |
表3存储关键信息的数据结构设计表2-边的属性
属性名称 | 数据类型 |
与其邻接的节点的名称 | 文本 |
优先级 | 正整数 |
表4存储关键信息的数据结构设计表3-节点的属性
属性名称 | 数据类型 |
节点类型 | 正整数 |
节点名称 | 文本 |
节点上文本的内容 | 文本 |
节点所在文件的创建时间 | 正实数 |
步骤三、获取有向图数据信息。
对步骤二得到原始图数据信息,依次使用冗余边的消减原则和存在环路时的消减原则进行处理,即可得到有向图数据信息;具体为:
步骤3.1:对原始图数据信息使用冗余边的消减原则进行处理:
设定V为原始图中节点的集合,如果节点A和B(A,B∈V)之间有多于1条的连线时,按照以下3种情况处理:
情况2:节点A和B之间的连线为非同向时,且在其中一个方向上存在的最高优先级高于另一个方向上存在的最高优先级,则保留一条优先级最高的边;删除其它边。
情况3:节点A和B之间的连线为非同向时,且在其中一个方向上存在的最高优先级与另一个方向上存在的最高优先级相等,则删除节点A和B之间的所有边。
原始图数据信息经过冗余边的消减原则处理后,即可去除多重边和只有一跳的环路。
步骤3.2:对经过步骤3.1处理后得到的图数据信息使用存在环路时的消减原则,分为4种情况进行处理:
情况1:若该环路上只存在一条优先级最低的边,则删除此边,解除环路。
情况2:若环路上存在2个或2个以上优先级最低的关系,且这些关系中的有一个节点的出度最大,则将指向该节点的边全部删除。这是因为该节点的出度最大说明它为其它节点提供了更多服务,其偏向于基础类。
情况3:如不属于情况1和情况2,则从步骤二所述原始图数据信息中查找优先级最低的边所涉及节点所在的文件的创建时间,如果能够找到一个创建时间最早的那个节点,将指向该节点的边全部删除;否则,将优先级最低的边全部删除。
经过步骤三的处理,即可获得有向图数据信息。
步骤四、设计图形布局。
在步骤三的基础上,根据图形布局算法设计图形布局。
所述图像布局算法包括但不限于:开源工具VCG(Visualization ofCompiler Graphs)中使用的深度优先布局算法。
优选的,所述图像布局算法具体为:
步骤4.1:设定画布的左上角为坐标原点,设定原点垂直向下方向为Y轴(纵轴)的正方向;原点水平向右方向为X轴(横轴)的正方向。
步骤4.2:对步骤三得到的有向图进行深度搜索,得到其最大深度d、层序号i,每层所包含的节点集合Vi、集合Vi所包含的节点的个数numi以及所有节点的各自所在层数deep;其中,d,i均为正整数且1≤i≤d。
步骤4.3:根据步骤4.2得到的结果,获得每个节点边框的左上角的坐标。
①每个节点边框的左上角的纵坐标y的计算方法:
设定H为画布的高度,根据公式1可得到有向图中每一层的高度差h:
h=(H-h1-h2)/(d-1) (1)
其中,h2和h1分别为画布的上、下留白高度;
根据公式2可得到该节点的左上角的纵坐标y:
y=h1+(i-1)×h (2)
②每个节点边框的左上角的横坐标x的计算方法:
第a步:将各层中的节点按照字母表升序排序;
第b步:通过公式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.4:对步骤三得到的有向图中的所有节点,根据每个节点上的文本的内容和样式,得到节点的边框长宽信息。
步骤4.5:根据步骤4.3得到的每个节点边框的左上角的坐标及步骤4.4得到的节点边框长宽信息得到与边框相关的线的开始点和结束点坐标。
步骤五、进行可视化映射。
在步骤四的基础上,根据预先定义的图形表示规则完成可视化数据的映射。图形表示规则包括定义节点颜色、节点形状、节点样式、边的颜色、边的形状、边的样式。
有益效果
本文提出了一种新的针对面向对象程序设计语言源代码的软件可视化方法,弥补了类图用于软件可视化中的不足,能够更准确直观的反应软件的内部结构和软件内类的地位和作用,便于使用者快速获得软件设计层次上的理解。
附图说明
图1为本发明关于针对面向对象程序设计语言源代码的软件可视化方法的实施例1中的流程示意图;
图2为本发明关于针对面向对象程序设计语言源代码的软件可视化方法的实施例1中的原始数据对应的原始图结构;
图3为本发明关于针对面向对象程序设计语言源代码的软件可视化方法的实施例1中的得到的有向图;
图4为本发明关于针对面向对象程序设计语言源代码的软件可视化方法的实施例1中的得到的布局效果图;
图5为本发明关于针对面向对象程序设计语言源代码的软件可视化方法的实施例1中得到的可视化效果图。
具体实施方式
下面结合附图和实施例对本发明技术方案进行详细描述。
实施例1:
源代码如下所示:
源码文件1:carlib.java:
import java.io.*;
interface CAR
{
public void start( );
public void stop( );
}
class SmallCar implements CAR
{
public void start( )
{
System.out.println(″smallcar start...″);
}
public void stop( )
{
System.out.println(″smallcar stop!″);
}
}
class BigCar implements CAR
{
public void start( )
{
System.out.println(″bigcar start...″);
}
public void stop( )
{
System.out.println(″bigcar stop!″);
}
}
源码文件2:Linklist.java:
public class Linklist {
public Link first;
//链表中数据项的个数
public int size;
public Linklist( ){
first=null;
size=0;
}
//在表头插入新的数据
public void insertFirst(CAR value){
Link link=new Link(value);
link.next=first;
first=link;
size++;
}
//判断链表是否为空
public boolean isEmpty( ){
return size==0;
}
//删除表头
public Link deleteFirst( ){
Link temp=first;
first=first.next;
size--;
temp.data.stop( );
return temp;
}
//输出链表中的所有数据
public void display( ){
Link curr=first;
while(curr!=null){
curr.data.start( );
curr=curr.next;
}
System.out.println( );
}
//返回链表中数据项的个数
public int size( ){
return size;
}
//获取从头至尾的第i个数据项
public Link get(int i){
if (i>size( )-1||i<0)
try {
throw new IndexOutOfBoundsException( );
}catch(Exception e){
e.printStackTrace( );
}
Link curr=first;
for (int n=0;n<size( );n++){
if (n==i)
return curr;
else
curr=curr.next;
}
return null ;
}
//输出从头至尾的第i个数据项
public void remove(int i){
if (i==0)
deleteFirst( );
else if (i==size( )-1)
get(i-1).next=null;
else {
get(i-1).next=get(i+1);
}
size--;
}
public class Link {
public CAR data;
public Link next;
public Link(CAR data){
this.data=data;
}
}
}
源码文件3:Link_list.java
public class Link_list {
public static void main(String[ ]args) {
Linklist ll=new Linklist( );
//插入汽车
SmallCar sc=new SmallCar( );
ll.insertFirst(sc);
BigCar bc=new BigCar( );
ll.insertFirst(bc);
ll.display( );
while (!ll.isEmpty( )){
ll.deleteFirst();
}
System.out.println(″Ok″);
}
}
针对上述3个Java的源码文件,使用本发明提出的方法进行可视化,其流程示意图如图1所示,具体操作步骤如下:
步骤一、从源代码中提取关键信息。
从源码文件1、2、3的源代码中提取关键信息,以Linklist类为例,提取的信息如下:
类所在的包、类名、父类、继承方式、类的类型、类的修饰符、类所包含的嵌套类等信息,如表5所示。
表5类相关信息
类构造函数参数、类方法的名字、类方法的参数、类方法的返回值类型以及类方法的修饰符等的信息,如表6所示。
表6方法相关信息
类属性的类型、类属性的修饰符等信息,如表7所示。
表7类属性
类属性 | 类属性的类型 | 类属性的修饰符 |
first | Link | public |
size | int | public |
步骤二、获取原始图数据信息。
将步骤一得到的关键信息存储到图以及与其相关的边和节点数据结构的相应位置,即可到一个仅包含节点名称和边名称的原始图数据信息,即得到一个图结构,如图2所示。其中,方框代表节点,方框内的文字为节点的名称,节点之间的有向边表示节点之间的服务关系,有向边上面的数字表示服务关系的优先级;其节点类型和节点所在类文件创建时间,如表8所示。
表8节点的其它相关属件
节点 | 节点类型 | 节点所在类文件创建时间 |
Linklist | 3 | 1273422602 |
Link | 3 | 1273422602 |
CAR | 2 | 1273420800 |
void | 4 | 0 |
boolean | 4 | 0 |
int | 4 | 0 |
Link_list | 3 | 1273423212 |
String | 4 | 0 |
SmallCar | 3 | 1273420800 |
BigCar | 3 | 1273420800 |
注:1表示抽象类,2表示接口类,3表示普通类,4表示未定类型。
步骤三、获取有向图数据信息。
对步骤二得到原始图数据信息,依次使用冗余边的消减原则和存在环路时的消减原则进行处理,即可得到有向图数据信息;具体为:
以节点Linklist与节点Link之间的冗余边为例,因为存在最高优先级的边所以将仅保留优先级为1的边,其它删除。其它节点间的冗余边按照前文所提方法均可消减掉。
因为此图中不存在环路所以删除所有冗余边后即可得到两点间仅含有一个边的有向无环图,如图3所示。
步骤四、设计图形布局。
经图形布局算法处理后,按照各个节点的位置坐标重新绘制得到图4:
步骤五、进行可视化映射。
在步骤四的基础上,根据预先定义的图形表示规则完成可视化数据的映射。图形表示规则中边的颜色、边的形状、边的样式,如表9所示。
表9边的颜色、形状和样式
节点颜色、节点形状、节点样式如表10所示。
表10节点颜色、节点形状、节点样式
实施例1的可视化效果图如图5所示。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
Claims (3)
1.一种针对面向对象程序设计语言源代码的软件可视化方法,其特征在于:其具体操作步骤为:
步骤一、从源代码中提取关键信息;
从待处理的面向对象程序设计语言源代码中提取关键信息;所述关键信息包括:类所在的包、类名、父类、继承方式、类的类型、类的修饰符、类所包含的嵌套类、类属性的类型、类属性的修饰符、类构造函数参数、类方法的名字、类方法的参数、类方法的返回值类型以及类方法的修饰符;
所述继承方式包括一般继承和接口实现两种继承方式;
所述类的类型包括抽象类型、接口类型、普通类型和不确定类型;
步骤二、获取原始图数据信息;
将步骤一得到的关键信息按照表2所示的图的属性、表3所示的边的属性、表4所示的节点的属性的数据结构进行存储,即可到一个仅包含节点名称和边名称的原始图数据信息;
表2存储关键信息的数据结构设计表1-图的属性
表3存储关键信息的数据结构设计表2-边的属性
表4存储关键信息的数据结构设计表3-节点的属性
步骤三、获取有向图数据信息;
对步骤二得到原始图数据信息,依次使用冗余边的消减原则和存在环路时的消减原则进行处理,即可得到有向图数据信息;具体为:
步骤3.1:对原始图数据信息使用冗余边的消减原则进行处理:
设定V为原始图中节点的集合,节点A,B∈V,如果节点A和B之间有多于1条的连线时,按照以下3种情况处理:
情况2:节点A和B之间的连线为非同向时,且在其中一个方向上存在的最高优先级高于另一个方向上存在的最高优先级,则保留一条优先级最高的边;删除其它边;
情况3:节点A和B之间的连线为非同向时,且在其中一个方向上存在的最高优先级与另一个方向上存在的最高优先级相等,则删除节点A和B之间的所有边;
原始图数据信息经过冗余边的消减原则处理后,即可去除多重边和只有一跳的环路;
步骤3.2:对经过步骤3.1处理后得到的图数据信息使用存在环路时的消减原则,分为4种情况进行处理:
情况1:若该环路上只存在一条优先级最低的边,则删除此边,解除环路;
情况2:若环路上存在2个或2个以上优先级最低的关系,且这些关系中的有一个节点的出度最大,则将指向该节点的边全部删除;这是因为该节点的出度最大说明它为其它节点提供了更多服务,其偏向于基础类;
情况3:如不属于情况1和情况2,则从步骤二所述原始图数据信息中查找优先级最低的边所涉及节点所在的文件的创建时间,如果能够找到一个创建时间最早的那个节点,将指向该节点的边全部删除;否则,将优先级最低的边全部删除;
经过步骤三的处理,即可获得有向图数据信息;
步骤四、设计图形布局;
在步骤三的基础上,根据图形布局算法设计图形布局;
所述图像布局算法具体为:
步骤五、进行可视化映射;
在步骤四的基础上,根据预先定义的图形表示规则完成可视化数据的映射;图形表示规则包括定义节点颜色、节点形状、节点样式、边的颜色、边的形状、边的样式。
2.如权利要求1所述的一种针对面向对象程序设计语言源代码的软件可视化方法,其特征在于:步骤四中所述图像布局算法包括但不限于:开源工具VCG中使用的深度优先布局算法。
3.如权利要求1或2所述的一种针对面向对象程序设计语言源代码的软件可视化方法,其特征在于:
优选的,步骤四中所述图像布局算法,具体为:
步骤4.1:设定画布的左上角为坐标原点,设定原点垂直向下方向为Y轴的正方向;原点水平向右方向为X轴的正方向;
步骤4.2:对步骤三得到的有向图进行深度搜索,得到其最大深度d、层序号i,每层所包含的节点集合Vi、集合Vi所包含的节点的个数numi以及所有节点的各自所在层数deep;其中,d,i均为正整数且1≤i≤d;
步骤4.3:根据步骤4.2得到的结果,获得每个节点边框的左上角的坐标;
①每个节点边框的左上角的纵坐标y的计算方法:
设定H为画布的高度,根据公式1可得到有向图中每一层的高度差h:
h=(H-h1-h2)/(d-1) (1)
其中,h2和h1分别为画布的上、下留白高度;
根据公式2可得到该节点的左上角的纵坐标y:
y=h1+(i-1)×h (2)
②每个节点边框的左上角的横坐标x的计算方法:
第a步:将各层中的节点按照字母表升序排序;
第b步:通过公式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.4:对步骤三得到的有向图中的所有节点,根据每个节点上的文本的内容和样式,得到节点的边框长宽信息;
步骤4.5:根据步骤4.3得到的每个节点边框的左上角的坐标及步骤4.4得到的节点边框长宽信息得到与边框相关的线的开始点和结束点坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010266831 CN102385505B (zh) | 2010-08-30 | 2010-08-30 | 针对面向对象程序设计语言源代码的软件可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010266831 CN102385505B (zh) | 2010-08-30 | 2010-08-30 | 针对面向对象程序设计语言源代码的软件可视化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102385505A true CN102385505A (zh) | 2012-03-21 |
CN102385505B CN102385505B (zh) | 2013-03-20 |
Family
ID=45824949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010266831 Expired - Fee Related CN102385505B (zh) | 2010-08-30 | 2010-08-30 | 针对面向对象程序设计语言源代码的软件可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102385505B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279631A (zh) * | 2013-06-27 | 2013-09-04 | 南京大学 | 设计模式制导的爪哇代码评审方法 |
CN105354266A (zh) * | 2015-10-23 | 2016-02-24 | 北京航空航天大学 | 一种基于富图模型RichGraph的图数据管理方法 |
CN105487913A (zh) * | 2015-12-18 | 2016-04-13 | 浙江工商大学 | 一种基于加权a指数的软件包重要性度量方法 |
US9760473B2 (en) | 2014-10-02 | 2017-09-12 | Institute For Information Industry | System and method for visualizing software programs |
CN110716712A (zh) * | 2018-07-13 | 2020-01-21 | 拜椰特(上海)软件技术有限公司 | 计算机编程语言用字符实现对象的方法 |
CN110908710A (zh) * | 2019-11-19 | 2020-03-24 | 天津大学 | 一种Web前端代码依赖关系可视化方法 |
CN115981711A (zh) * | 2023-03-20 | 2023-04-18 | 花瓣云科技有限公司 | 一种代码处理方法及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593222B (zh) * | 2013-09-29 | 2016-08-10 | 中国人民解放军第二炮兵装备研究院科研试验中心 | 一种逆向提取Java软件程序类图的方法 |
CN108280135B (zh) * | 2017-12-26 | 2021-08-10 | 创新先进技术有限公司 | 实现数据结构可视化的方法、装置和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020141647A1 (en) * | 2001-03-27 | 2002-10-03 | Kabushiki Kaisha Toshiba | Pattern evaluation method, pattern evaluation system and computer-readable recorded medium |
CN101571802A (zh) * | 2009-06-19 | 2009-11-04 | 北京航空航天大学 | 一种嵌入式软件测试数据可视化自动生成方法及系统 |
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
-
2010
- 2010-08-30 CN CN 201010266831 patent/CN102385505B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020141647A1 (en) * | 2001-03-27 | 2002-10-03 | Kabushiki Kaisha Toshiba | Pattern evaluation method, pattern evaluation system and computer-readable recorded medium |
CN101571802A (zh) * | 2009-06-19 | 2009-11-04 | 北京航空航天大学 | 一种嵌入式软件测试数据可视化自动生成方法及系统 |
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
Non-Patent Citations (1)
Title |
---|
艾 骏等: "实时嵌入式软件测试输入的可视化建模", 《北京航空航天大学学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279631A (zh) * | 2013-06-27 | 2013-09-04 | 南京大学 | 设计模式制导的爪哇代码评审方法 |
CN103279631B (zh) * | 2013-06-27 | 2016-01-20 | 南京大学 | 设计模式制导的爪哇代码评审方法 |
US9760473B2 (en) | 2014-10-02 | 2017-09-12 | Institute For Information Industry | System and method for visualizing software programs |
CN105354266A (zh) * | 2015-10-23 | 2016-02-24 | 北京航空航天大学 | 一种基于富图模型RichGraph的图数据管理方法 |
CN105487913A (zh) * | 2015-12-18 | 2016-04-13 | 浙江工商大学 | 一种基于加权a指数的软件包重要性度量方法 |
CN105487913B (zh) * | 2015-12-18 | 2018-07-31 | 浙江工商大学 | 一种基于加权a指数的软件包重要性度量方法 |
CN110716712A (zh) * | 2018-07-13 | 2020-01-21 | 拜椰特(上海)软件技术有限公司 | 计算机编程语言用字符实现对象的方法 |
CN110908710A (zh) * | 2019-11-19 | 2020-03-24 | 天津大学 | 一种Web前端代码依赖关系可视化方法 |
CN110908710B (zh) * | 2019-11-19 | 2023-08-29 | 天津大学 | 一种Web前端代码依赖关系可视化方法 |
CN115981711A (zh) * | 2023-03-20 | 2023-04-18 | 花瓣云科技有限公司 | 一种代码处理方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102385505B (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102385505B (zh) | 针对面向对象程序设计语言源代码的软件可视化方法 | |
Kehrer et al. | A rule-based approach to the semantic lifting of model differences in the context of model versioning | |
CN101957757B (zh) | 一种适用于软件可视化过程的图形布局方法 | |
Zhang et al. | New techniques for mining frequent patterns in unordered trees | |
Torlak | A constraint solver for software engineering: finding models and cores of large relational specifications | |
CN104407872A (zh) | 代码克隆的检测方法 | |
CN114692155B (zh) | 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法 | |
CN112364352A (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
De Lara et al. | A-posteriori typing for model-driven engineering | |
CN101944080A (zh) | 一种基于dxf文件格式的读取与xml转换的方法 | |
Zhang et al. | Query-based filtering and graphical view generation for clone analysis | |
CN117972111A (zh) | 一种基于在线图处理技术面向知识图谱的知识推理方法 | |
WO2024049796A1 (en) | Systems and methods for legacy mbse diagram data importation using element specific ml models and schema templates | |
CN102087666A (zh) | 一种基于节点与关键字覆盖关系的索引及其构建方法和查询方法 | |
CN110489448A (zh) | 基于Hadoop的大数据关联规则的挖掘方法 | |
Di Rocco et al. | Traceability visualization in metamodel change impact detection | |
Kleppe et al. | A graph-based semantics for UML class and object diagrams | |
Kimelfeld et al. | Maximally joining probabilistic data | |
CN105893668B (zh) | 一种基于流语义的物料形态变化功能分解方法 | |
Fish et al. | Computing reading trees for constraint diagrams | |
Kusel et al. | Common pitfalls of using QVT relations-graphical debugging as remedy | |
Chowdhury et al. | BEST: an efficient algorithm for mining frequent unordered embedded subtrees | |
Cunha et al. | Embedding model-driven spreadsheet queries in spreadsheet systems | |
CN111950257A (zh) | 一种文件解析方法和装置 | |
Bouassida et al. | Formalizing the framework design language F-UML |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20140830 |
|
EXPY | Termination of patent right or utility model |