首页 / 专利库 / 软件 / 软件 / 一种逆向提取Java软件程序类图的方法

一种逆向提取Java软件程序类图的方法

阅读:182发布:2023-02-16

专利汇可以提供一种逆向提取Java软件程序类图的方法专利检索,专利查询,专利分析的服务。并且本 发明 属于一种 软件 测试技术领域,特别涉及一种软件详细设计功能测试及提取软件程序类图的方法。其技术方案是:一种逆向提取Java软件程序类图的方法,包括步骤:A.静态分析程序类图;B. 选定 骨干类作为抽象的基准点,搜索骨干类之间的路径;C.对每一条路径,从路径的任意一端开始,对存在具有类?关系?类?关系?类这样性质的子路径与本发明列举的57条类图抽象规则相匹配的子路径进行抽象;D.若出现两个骨干类之间抽象后存在多种关系时,按规定的优先级抽象后的路径进行合并,得到抽象类图。本发明提供了一种逆向提取Java程序类图的方法,达到软件的代码实现与其详细设计之间的一致性验证的目的。,下面是一种逆向提取Java软件程序类图的方法专利的具体信息内容。

1.一种逆向提取Java软件程序类图的方法,其特征是包括以下步骤:
A.基于JDT的API接口,分析.class文件,获取Java程序的静态信息,提取类之间的继承、关联、聚合、依赖关系以及类与接口之间实现、关联、聚合、依赖关系;
B.选定体现主要流程的类作为骨干类,并将其作为抽象的基准点,搜索任意两个骨干类之间的路径;
C.对B步骤得到的每一条路径,从路径的任意一端开始,检查是否存在具有类-关系-类-关系-类这样性质的子路径与本步骤列举的57条类图抽象规则相匹配,若匹配,则用抽象规则的结果代替这条子路径;若不匹配,则跳过当前的类结点和关系结点,从下一个类结点开始遍历;直到不存在可以转换的路径,除此之外,骨干类不能被抽象掉;类图抽象规则包括:
其中,“-”表示分隔符,Class表示类,两个类之间为类存在的关系,共4种关系:
Generalization为泛化关系;Dependency为依赖关系;Association为关联关系,Aggregation为聚合关系;Left表示后一类位于前一类的左侧;Right表示后一类位于前一类的右侧; 表示推出符号,由 前描述的关系推出 后描述的关系;
D.若出现两个骨干类之间抽象后存在多种关系时,按照泛化关系优先于聚合关系优先于双向关联关系优先于单向关联关系优先于依赖关系的优先级确定保留哪个关系,对抽象后的路径进行合并,得到抽象类图。
2.根据权利要求1所述的逆向提取Java软件程序类图的方法,其特征是步骤B所述的选定体现主要流程的类作为骨干类的方法为:
借助用例模型:在业务领域专家的指导下找到与用例图或者活动图对应的那些框架片断,选为骨干类;
或者基于业务实体的层次分析:从能与业务实体对应起来的实体类开始,按照类间关系自底向上根据构件依赖关系标识层次,将处于较高层次上的那些类选为骨干类;
或者软件设计人员根据需要自定义骨干类;
或者软件测试人员根据需要自定义骨干类。

说明书全文

一种逆向提取Java软件程序类图的方法

技术领域

[0001] 本发明属于一种软件测试技术领域,特别涉及一种软件详细设计功能测试及提取软件程序类图的方法。

背景技术

[0002] 目前的软件审查工具,主要侧重于对源代码的自动分析、对代码缺陷的自动检测,某种程度上忽视了程序是否符合软件详细设计的功能模划分,程序结构是否合理的检验,且对软件详细设计及其编程实现的审查,完全依赖于有经验的软件开发人员,尚未看到可用来检查程序结构是否符合设计要求的有效方法和支持工具。例如,为了建立代码与详细设计之间的对应关系,需要人工在程序代码中标注各段代码与软件详细设计文档中的定义的功能点之间的对应关系。尽管在模型驱动的软件开发过程中,软件的详细设计可以直接转换成程序代码,但是程序代码在软件开发的多次迭代中可能发生变化,因此,对软件的详细设计与源代码之间进行审查依然是必要的,以确认软件实现是否符合设计要求。
[0003] 由于在软件开发过程中,类与类之间关系的实现有多种方式,因此会存在这样的现象:软件设计模型中类A和类B之间存在着关联关系或者是依赖关系,而程序实现时类A和类B不存在直接的关系,而用其他类来实现类A与类B之间的关系。也就是说,设计类图与程序类图之间会相差很大,为了达到对软件的详细设计与源代码之间进行审查,需要一种提取抽象程序类图的方法,以得到更简化、更高抽象层次的程序类图。

发明内容

[0004] 本发明的目的是:提供一种逆向提取Java程序类图的方法,以达到软件的代码实现与其详细设计之间的一致性验证。
[0005] 本发明的技术方案是:一种逆向提取Java软件程序类图的方法,其特征是包括以下步骤:
[0006] A.基于JDT的API接口,分析.class文件,获取Java程序的静态信息,提取类之间的继承、关联、聚合、依赖关系以及类与接口之间实现、关联、聚合、依赖关系;
[0007] B.选定体现主要流程的类作为骨干类,并将其作为抽象的基准点,搜索任意两个骨干类之间的路径;
[0008] C.对B步骤得到的每一条路径,从路径的任意一端开始,检查是否存在具有类-关系-类-关系-类这样性质的子路径与本步骤列举的57条类图抽象规则相匹配,若匹配,则用抽象规则的结果代替这条子路径;若不匹配,则跳过当前的类结点和关系结点,从下一个类结点开始遍历;直到不存在可以转换的路径,除此之外,骨干类不能被抽象掉;类图抽象规则包括:
[0009]
[0010]
[0011]
[0012]
[0013]
[0014] 其中,“-”表示分隔符,Class表示类,两个类之间为类存在的关系,共4种关系:Generalization为泛化关系;Dependency为依赖关系;Association为关联关系,Aggregation为聚合关系;Left表示后一类位于前一类的左侧;Right表示后一类位于前一类的右侧; 表示推出符号,由 前描述的关系推出 后描述的关系;
[0015] 本步骤列举的57条规则是本发明能够逆向提取Java软件程序类图的关键;
[0016] D.若出现两个骨干类之间抽象后存在多种关系时,按照泛化关系优先于聚合关系优先于双向关联关系优先于单向关联关系优先于依赖关系的优先级确定保留哪个关系,对抽象后的路径进行合并,得到抽象类图。
[0017] 本发明通过对类图的抽象,来舍弃程序类图中具体细节,以突出其重要的结构特征,达到软件的代码实现与其详细设计之间的一致性验证的目的;本发明还可以在详细设计文档缺失的情况下,或者当软件设计者面对一个包含很多实现细节而难以迅速发现软件的关键设计要素和有这些要素所构成的软件结构情况时,为软件设计者提供一种准确理解程序的途径。

具体实施方式

[0018] 实施例1:一种逆向提取Java软件程序类图的方法,其特征是包括以下步骤:
[0019] A.基于JDT的API接口,分析.class文件,获取Java程序的静态信息,提取类之间的继承、关联、聚合、依赖关系以及类与接口之间实现、关联、聚合、依赖关系;
[0020] B.选定体现主要流程的类作为骨干类,并将其作为抽象的基准点,搜索任意两个骨干类之间的路径;
[0021] C.对B步骤得到的每一条路径,从路径的任意一端开始,检查是否存在具有类-关系-类-关系-类这样性质的子路径与本步骤列举的57条类图抽象规则相匹配,若匹配, 则用抽象规则的结果代替这条子路径;若不匹配,则跳过当前的类结点和关系结点,从下一个类结点开始遍历;直到不存在可以转换的路径,除此之外,骨干类不能被抽象掉;类图抽象规则包括:
[0022]
[0023]
[0024]
[0025]
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈