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

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

Info

Publication number
CN103593222B
CN103593222B CN201310451992.5A CN201310451992A CN103593222B CN 103593222 B CN103593222 B CN 103593222B CN 201310451992 A CN201310451992 A CN 201310451992A CN 103593222 B CN103593222 B CN 103593222B
Authority
CN
China
Prior art keywords
class
relation
key
abstract
path
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.)
Expired - Fee Related
Application number
CN201310451992.5A
Other languages
English (en)
Other versions
CN103593222A (zh
Inventor
于莉莉
张幼春
卢玲
高智杰
祝宇
邱薇
刘晓杰
吕益楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RESEARCH EXPERIMENTAL CENTER EQUIPMENT RESEARCH INSTITUTE SECOND ARTILLERY FORCE OF PLA
Original Assignee
RESEARCH EXPERIMENTAL CENTER EQUIPMENT RESEARCH INSTITUTE SECOND ARTILLERY FORCE OF PLA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by RESEARCH EXPERIMENTAL CENTER EQUIPMENT RESEARCH INSTITUTE SECOND ARTILLERY FORCE OF PLA filed Critical RESEARCH EXPERIMENTAL CENTER EQUIPMENT RESEARCH INSTITUTE SECOND ARTILLERY FORCE OF PLA
Priority to CN201310451992.5A priority Critical patent/CN103593222B/zh
Publication of CN103593222A publication Critical patent/CN103593222A/zh
Application granted granted Critical
Publication of CN103593222B publication Critical patent/CN103593222B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

一种逆向提取Java软件程序类图的方法
技术领域
本发明属于一种软件测试技术领域,特别涉及一种软件详细设计功能测试及提取软件程序类图的方法。
背景技术
目前的软件审查工具,主要侧重于对源代码的自动分析、对代码缺陷的自动检测,某种程度上忽视了程序是否符合软件详细设计的功能模块划分,程序结构是否合理的检验,且对软件详细设计及其编程实现的审查,完全依赖于有经验的软件开发人员,尚未看到可用来检查程序结构是否符合设计要求的有效方法和支持工具。例如,为了建立代码与详细设计之间的对应关系,需要人工在程序代码中标注各段代码与软件详细设计文档中的定义的功能点之间的对应关系。尽管在模型驱动的软件开发过程中,软件的详细设计可以直接转换成程序代码,但是程序代码在软件开发的多次迭代中可能发生变化,因此,对软件的详细设计与源代码之间进行审查依然是必要的,以确认软件实现是否符合设计要求。
由于在软件开发过程中,类与类之间关系的实现有多种方式,因此会存在这样的现象:软件设计模型中类A和类B之间存在着关联关系或者是依赖关系,而程序实现时类A和类B不存在直接的关系,而用其他类来实现类A与类B之间的关系。也就是说,设计类图与程序类图之间会相差很大,为了达到对软件的详细设计与源代码之间进行审查,需要一种提取抽象程序类图的方法,以得到更简化、更高抽象层次的程序类图。
发明内容
本发明的目的是:提供一种逆向提取Java程序类图的方法,以达到软件的代码实现与其详细设计之间的一致性验证。
本发明的技术方案是:一种逆向提取Java软件程序类图的方法,其特征是包括以下步骤:
A.基于JDT的API接口,分析.class文件,获取Java程序的静态信息,提取类之间的继承、关联、聚合、依赖关系以及类与接口之间实现、关联、聚合、依赖关系;
B.选定体现主要流程的类作为骨干类,并将其作为抽象的基准点,搜索任意两个骨干类之间的路径;
C.对B步骤得到的每一条路径,从路径的任意一端开始,检查是否存在具有类-关系-类-关系-类这样性质的子路径与本步骤列举的57条类图抽象规则相匹配,若匹配,则用抽象规则的结果代替这条子路径;若不匹配,则跳过当前的类结点和关系结点,从下一个类结点开始遍历;直到不存在可以转换的路径,除此之外,骨干类不能被抽象掉;类图抽象规则包括:
其中,“-”表示分隔符,Class表示类,两个类之间为类存在的关系,共4种关系:Generalization为泛化关系;Dependency为依赖关系;Association为关联关系,Aggregation为聚合关系;Left表示后一类位于前一类的左侧;Right表示后一类位于前一类的右侧;表示推出符号,由前描述的关系推出后描述的关系;
本步骤列举的57条规则是本发明能够逆向提取Java软件程序类图的关键;
D.若出现两个骨干类之间抽象后存在多种关系时,按照泛化关系优先于聚合关系优先于双向关联关系优先于单向关联关系优先于依赖关系的优先级确定保留哪个关系,对抽象后的路径进行合并,得到抽象类图。
本发明通过对类图的抽象,来舍弃程序类图中具体细节,以突出其重要的结构特征,达到软件的代码实现与其详细设计之间的一致性验证的目的;本发明还可以在详细设计文档缺失的情况下,或者当软件设计者面对一个包含很多实现细节而难以迅速发现软件的关键设计要素和有这些要素所构成的软件结构情况时,为软件设计者提供一种准确理解程序的途径。
具体实施方式
实施例1:一种逆向提取Java软件程序类图的方法,其特征是包括以下步骤:
A.基于JDT的API接口,分析.class文件,获取Java程序的静态信息,提取类之间的继承、关联、聚合、依赖关系以及类与接口之间实现、关联、聚合、依赖关系;
B.选定体现主要流程的类作为骨干类,并将其作为抽象的基准点,搜索任意两个骨干类之间的路径;
C.对B步骤得到的每一条路径,从路径的任意一端开始,检查是否存在具有类-关系-类-关系-类这样性质的子路径与本步骤列举的57条类图抽象规则相匹配,若匹配, 则用抽象规则的结果代替这条子路径;若不匹配,则跳过当前的类结点和关系结点,从下一个类结点开始遍历;直到不存在可以转换的路径,除此之外,骨干类不能被抽象掉;类图抽象规则包括:
其中,“-”表示分隔符,Class表示类,两个类之间为类存在的关系,共4种关系:Generalization为泛化关系;Dependency为依赖关系;Association为关联关系,Aggregation为聚合关系;Left表示后一类位于前一类的左侧;Right表示后一类位于前一类的右侧;表示推出符号,由前描述的关系推出后描述的关系;
D.若出现两个骨干类之间抽象后存在多种关系时,按照泛化关系优先于聚合关系优先于双向关联关系优先于单向关联关系优先于依赖关系的优先级确定保留哪个关系,对抽象后的路径进行合并,得到抽象类图。
实施例2:在实施例1的基础上,实施例1步骤B所述的选定骨干类的方法为:
借助用例模型:在业务领域专家的指导下找到与用例图或者活动图对应的那些框架片断,选为骨干类;
或者基于业务实体的层次分析:从能与业务实体对应起来的实体类开始,按照类间关系自底向上根据构件依赖关系标识层次,将处于较高层次上的那些类选为骨干类;
或者软件设计人员或测试人员根据需要自定义骨干类。

Claims (2)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310451992.5A CN103593222B (zh) 2013-09-29 2013-09-29 一种逆向提取Java软件程序类图的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310451992.5A CN103593222B (zh) 2013-09-29 2013-09-29 一种逆向提取Java软件程序类图的方法

Publications (2)

Publication Number Publication Date
CN103593222A CN103593222A (zh) 2014-02-19
CN103593222B true CN103593222B (zh) 2016-08-10

Family

ID=50083378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310451992.5A Expired - Fee Related CN103593222B (zh) 2013-09-29 2013-09-29 一种逆向提取Java软件程序类图的方法

Country Status (1)

Country Link
CN (1) CN103593222B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199653B (zh) * 2014-08-26 2017-12-15 上海天脉聚源文化传媒有限公司 一种Java集成开发环境的实现方法及装置
CN104391706A (zh) * 2014-12-02 2015-03-04 南京大学 一种基于逆向工程的模型库构造方法
CN111625223B (zh) * 2020-05-26 2023-04-28 中国人民解放军国防科技大学 一种基于静态分析与抽象的软件设计重建方法
CN113312038B (zh) * 2021-06-18 2022-05-31 浪潮云信息技术股份公司 一种生成Java代码类继承结构的实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
CN101477490A (zh) * 2009-01-23 2009-07-08 上海第二工业大学 基于复杂网络面向对象集成测试的方法
CN102385505B (zh) * 2010-08-30 2013-03-20 北京理工大学 针对面向对象程序设计语言源代码的软件可视化方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001001256A1 (en) * 1999-06-30 2001-01-04 Sun Microsystems, Inc. Method and apparatus for static analysis of software code
JP2007179165A (ja) * 2005-12-27 2007-07-12 Internatl Business Mach Corp <Ibm> Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
CN101477490A (zh) * 2009-01-23 2009-07-08 上海第二工业大学 基于复杂网络面向对象集成测试的方法
CN102385505B (zh) * 2010-08-30 2013-03-20 北京理工大学 针对面向对象程序设计语言源代码的软件可视化方法

Also Published As

Publication number Publication date
CN103593222A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
CN107491790B (zh) 一种神经网络训练方法及装置
CN105701008B (zh) 用于测试用例生成的系统和方法
CN110413506A (zh) 测试用例推荐方法、装置、设备及存储介质
CN103593222B (zh) 一种逆向提取Java软件程序类图的方法
US9600403B1 (en) Method and system for creating functional model of test cases
US9921948B2 (en) Software commit risk level
CN107145437B (zh) 一种java注解测试方法及装置
US20140372083A1 (en) Derived restrictions in a combinatorial model
WO2016188149A1 (zh) 一种代码变化量的统计方法及其装置
CN103914379B (zh) 故障自动注入与故障检测的方法及其系统
CN104317909A (zh) 兴趣点数据的校验方法和装置
CN107491394A (zh) 一种基于有向图识别的测试分析方法及装置
CN106529283A (zh) 一种面向软件定义网络的控制器安全性定量分析方法
US10823782B2 (en) Ensuring completeness of interface signal checking in functional verification
CN106021113A (zh) 一种精准测试的实现方法
Suneja et al. Towards reliable ai for source code understanding
US10515169B1 (en) System, method, and computer program product for computing formal coverage data compatible with dynamic verification
CN108734393A (zh) 房源信息的匹配方法、用户设备、存储介质及装置
CN104035872A (zh) 一种集群软件测试的方法及装置
CN103914377B (zh) 接口测试方法及装置
CN109144878A (zh) 基于路径差异的代码测试方法
Laskavaia Codan-C/C++ static analysis framework for CDT
CN103914381A (zh) 生成时序安全属性类缺陷模式相关的函数摘要信息的方法
CN108549608A (zh) 一种app的ui截图测试方法及系统
CN106095661B (zh) 类集成测试中的环路破除方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for 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: 20160810

CF01 Termination of patent right due to non-payment of annual fee