The invention provides an automatic generation method of system object graph based on code analysis, which is characterized by the following steps: obtaining class name, method name and statement set through soot analysis; and processing object creation statement and generating object set, processing object declaration statement and generating attribute value correspondence set, and mining. The idea of symbolic execution is used to acquire the method call statement and call process and generate the object call relation set. _: using the plant UML language rules, the above set is transformed into the object graph generation statement, thus the UML object graph is automatically generated. The automatic generation technology of system object graph based on code analysis can directly reflect the characteristics of runtime software architecture. Users can obtain object information (class attributes, object attributes) and object relationship (object call chain) through the technology without looking at tedious code, and enhance the readability and dimensionality of code. Protect nature.
【技术实现步骤摘要】
基于代码分析的系统对象图自动生成方法
本专利技术涉及一种基于代码分析的系统对象图自动生成方法。
技术介绍
近年来,面向对象的软件开发技术发展迅速并获得了广泛应用,在面向对象的分析、设计技术及面向对象的程序设计语言方面均获得了丰富的研究成果,面向对象的方法占据着主导地位。统一建模语言UML是面向对象软件开发中的一种通用、统一的图形模型语言,是用于软件系统规约化、可视化构造和建模的有效工具。所以,在软件工程中,工程师通常使用uml设计方法(即类图、时序图、对象图)进行系统的详细设计,从而按照详细设计来进行代码编写和软件开发,通过uml图生成代码,这个属于正向工程生成代码。然而在实际开发中,很可能是先完成了代码开发,再补充详细设计文档,或者希望从复杂的源代码中快捷地提取系统的架构信息,这就需要通过代码来自动生成uml图。该逆向工程能通过uml对象图直观地反映系统中对象的状态信息、关系等抽象结构,让工程师从架构角度看系统源代码或者方便获取系统uml对象图。目前,一些编程语言和编程环境已有从代码生成uml图这一逆向工程,其中类图是最常见的,时序图较少,而生成对象图的技术更是处于不成熟的状态。这些UML生成工具的问题是,当以代码逆向构建uml类及序列图时,可能无法自动地产生有用的uml图,或者产生多余的图表信息。因此,基于代码分析是生成uml对象图的前提,它可以改善源代码的输出产物,从中间代码中识别其组成部分作为对象图生成工具的输入。
技术实现思路
本专利技术的目的是提供一种基于代码分析的系统对象图自动生成方法。本专利技术采用以下技术方案:一种基于代码分析的系统对象图自动 ...
【技术保护点】
1.一种基于代码分析的系统对象图自动生成方法,其特征在于:包括以下步骤:步骤S1:通过soot分析获取类名、方法名和语句集;其中类的集合为C={C0,C1,C2,…Ci}其中Ci表示类名:方法的集合为Mi={Mi0,Mi1,Mi2,…Mij}其中Mij表示Ci的第j个方法;语句的集合为Uij={Uij0,Uij1,Uij2…Uijk}其中Uijk表示Mij的第k个语句;对象的集合为OBJ={obj0,obj1,obj2,…obji}其中obji表示第i个对象步骤S2:处理对象创建语句并生成对象集,处理对象声明语句并生成属性‑值对应集,采用符号执行的思想获取方法调用语句和调用过程并生成对象调用关系集;步骤S3:运用plantuml语言规则将上述集合转化为对象图生成语句,从而得到了自动生成的uml对象图。
【技术特征摘要】
1.一种基于代码分析的系统对象图自动生成方法,其特征在于:包括以下步骤:步骤S1:通过soot分析获取类名、方法名和语句集;其中类的集合为C={C0,C1,C2,…Ci}其中Ci表示类名:方法的集合为Mi={Mi0,Mi1,Mi2,…Mij}其中Mij表示Ci的第j个方法;语句的集合为Uij={Uij0,Uij1,Uij2…Uijk}其中Uijk表示Mij的第k个语句;对象的集合为OBJ={obj0,obj1,obj2,…obji}其中obji表示第i个对象步骤S2:处理对象创建语句并生成对象集,处理对象声明语句并生成属性-值对应集,采用符号执行的思想获取方法调用语句和调用过程并生成对象调用关系集;步骤S3:运用plantuml语言规则将上述集合转化为对象图生成语句,从而得到了自动生成的uml对象图。2.根据权利要求1所述的基于代码分析的系统对象图自动生成方法,其特征在于:步骤S1中soot的jtp阶段分析产物的语句格式:声明语句:定义形参pName:=@pId:pType赋值语句:普通赋值<Ci:TypeName>=Value调用式赋值$i=invokeinvoker.Mpq对象声明赋值obji=newCr调用语句:形如invokeuser.invoker.Mpq返回语句:形如returnresult;以上语句是在分析Ci的第j个方法,即Mij时产生的,其中,当第p个类的第q个方法Mpq为创建对象的方法时,格式为<Cr:void<init>(oValue0,oValue1,oValue2…)>pName为参数名,pId为参数号,pType为参数类型,invoker为被调用对象,user为调用对象,Cr为对象所属类的类名;result为返回值,oValue0,oValue1,oValue2…为对象实参值;形参表为param<Mij,pId,pName>;pId为参数号,pName为参数名;每个obji=&...
【专利技术属性】
技术研发人员:陈星,陈佳晴,陈世鸿,刘碧春,朱芳宁,
申请(专利权)人:福州大学,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。