[发明专利]一种基于逆向工程的模型库构造方法在审
申请号: | 201410720708.4 | 申请日: | 2014-12-02 |
公开(公告)号: | CN104391706A | 公开(公告)日: | 2015-03-04 |
发明(设计)人: | 张天;许涵斌;李宣东 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 江苏银创律师事务所 32242 | 代理人: | 孙计良 |
地址: | 210000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 逆向 工程 模型库 构造 方法 | ||
技术领域
本发明涉及计算机编程领域中的逆向工程,模型持久化工程。
背景技术
随着开源浪潮的推进,万维网上涌现出了大量的开源代码网站,如Google Code,Sourceforge,Github等等,在这些网站上我们可以轻易地获得大量的开源源代码。而海量的开源代码同时也带来了代码理解困难,代码查询困难,代码存在异构性等一系列的难题,这些难题直接影响到了我们对开源代码的复用效率。
软件模型是以结构化的视图来展现一个软件系统。对于人的感知来说,图形毫无疑问的比文字便于理解,而且通过模型可以消除底层代码存在的异构性,这样便解决了代码理解的难题。同时由代码产生的模型与源代码之间存在着一一对应的关系,通过理解模型,理解模型中的结构可以同时理解代码中的结构,快速定位到代码中的核心部分,有利于工程人员对代码进行分析和复用。遗憾的是现在万维网上虽然存在着大量的源代码,但是却缺乏一个有效的,可使用的模型库。
逆向工程(又称反向工程),是一种技术过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是,在不能轻易获得必要的生产信息下,直接从成品的分析,推导出产品的设计原理。
逆向工程是一种分析目标系统的过程,其目的是识别出系统的各个组件以及它们之间的关系,并以其它的形式或在较高的抽象层次上,重建系统的表征。软件逆向工程也可被视作“开发周期的逆行”。在此定义下,对一项软件程序进行逆向工程,类似于逆行传统瀑布模型中的开发步骤,即把实现阶段的输出(即软件程序)还原回在设计阶段所做的构思。软件逆向工程仅仅是一种检测或分析的过程,它并不会更改目标系统。
发明内容
本发明所要解决的问题是为互联网上开源代码构建模型,以方便软件工程师分析使用。
为解决上述问题,本发明采用的方案如下:
一种基于逆向工程的模型库构造方法,包括如下步骤:
S1:通过网络爬虫从互联网上抓取开源项目的源代码;
S2:清理抓取的源代码获取有效的源代码文件;
S3:对有效的源代码文件逆向工程分析构建初始的UML类图;
S4:对初始的UML类图进行精化处理得到精简的UML类图;
S5:将精简的UML类图保存至图数据库中;
其中,所述步骤S4包括如下步骤:
S41:对源代码进行静态语义分析构建抽象语法树;
S42:从抽象语法树中找出符合特定规则的结构,并从初始的UML类图中提取符合特定规则的结构所对应的模型元素;
S43:将提取的模型元素组成精简的UML类图。
进一步,所述步骤S3和步骤S4,步骤S4和步骤S5之间采用基于XMI格式的UML模型交换文件作为中间媒体。
进一步,所述图数据库为Neo4j数据库。
进一步,所述步骤S5包括如下步骤:
S51:将精简的UML类图中的类元作为图结构的节点存入图数据库;
S52:将精简的UML类图中的类元之间的关系作为图结构的节点关系存入图数据库。
本发明的技术效果如下:
1、本发明可以将互联网上大量的源代码转换成为UML类图模型,并将这些模型精化后存入到非关系数据库,实现了模型库的构造。
2、通过对逆向工程的进一步精化使得本发明产生的类图模型包含有更多的代码结构信息,较其他方法更精确。
具体实施方式
下面对本发明做进一步详细说明。
本发明的一种基于逆向工程的模型库构造方法主要包括以下五个步骤:
S1:通过网络爬虫从互联网上抓取开源项目的源代码;
S2:清理抓取的源代码获取有效的源代码文件;
S3:对有效的源代码文件逆向工程分析构建初始的UML类图;
S4:对初始的UML类图进行精化处理得到精简的UML类图;
S5:将精简的UML类图保存至图数据库中。
本实施例具体通过编写java代码的程序实现。首先步骤S1中,通过编写网络爬虫程序实现从万维网中抓取开源项目的源代码,主要包括两个步骤:
S11:使用jsoup解析对应开源网站的网页获取项目地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410720708.4/2.html,转载请声明来源钻瓜专利网。