CN104572115A - 基于相关主题模型的程序理解和特征定位方法 - Google Patents

基于相关主题模型的程序理解和特征定位方法 Download PDF

Info

Publication number
CN104572115A
CN104572115A CN201510036368.8A CN201510036368A CN104572115A CN 104572115 A CN104572115 A CN 104572115A CN 201510036368 A CN201510036368 A CN 201510036368A CN 104572115 A CN104572115 A CN 104572115A
Authority
CN
China
Prior art keywords
feature
node
class
program
word
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.)
Pending
Application number
CN201510036368.8A
Other languages
English (en)
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.)
Yangzhou University
Original Assignee
Yangzhou University
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 Yangzhou University filed Critical Yangzhou University
Priority to CN201510036368.8A priority Critical patent/CN104572115A/zh
Publication of CN104572115A publication Critical patent/CN104572115A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

一种基于相关主题模型的程序理解和特征定位方法,利用相关主题模型为整个软件系统建立个程序特征网络,有助于软件开发人员对程序的直接理解和分析,找到感兴趣的功能代码;对特征定位中的需求特征进行扩展,增加了定位的结果范围从而使得结果更加全面;对定位的结果进行筛选和排序,为开发人员提供个全面而又精简的特征定位结果;对最后的特征定位结果进行概要化,为开发人员最后选取特征定位的结果作为参考内容,更快的定位到需要的特征相关的代码文件。

Description

基于相关主题模型的程序理解和特征定位方法
技术领域
本发明涉及软件维护领域,尤其是一种基于相关主题模型的程序理解和特征定位方法。
背景技术
软件产品一般在满足用户不断更改的需求中不断的升级和维护。为了实现某个维护请求,开发人员首先需要理解整个软件系统,特别是对程序的理解。程序理解是软件维护过程中最频繁的工作,通常情况下,在软件维护过程中程序理解要占到60%以上的时间。随着软件系统的不断发展,整个系统的规模越来越大,复杂度也越来越高。为了辅助这项工作,一些程序理解技术采用图或者树的结构来辅助开发人员理解软件系统的结构。这些方法主要的依据是程序元素之间的静态结构依赖关系。由于程序理解的目标是理解系统的一些功能点和不同的源代码是如何对应那些相关的功能特征,因此,这些程序理解技术会忽视系统的功能特征。此前几乎没有技术可以快速直观的提供系统的特征和各个文件之间的联系,然而特征及其联系可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息,为软件系统建立一个基于特征的网络结构,可以帮助开发人员更加简单和快速的理解软件系统。
特征定位是软件维护和演化过程中由程序员进行的最重要和最常见的活动之一,任何一个维护活动都需要在首先定位与手头任务有关的代码的情况下完成。特征定位对于软件维护来说至关重要,因为它是在增量变化的背景下被执行的。在软件系统中,一个特征代表一种功能,这种功能是按照开发者和使用者的要求和被接受程度来定义的。软件维护与演化涉及增加新的功能,改进现有的功能和修复漏洞,类似于去除一些不想要的功能。确定一个已知的特殊功能在源代码中的位置叫做特征定位。随着整个软件代码的不断增加与变化,特征定位已成为开发人员所进行的一种最常见的维护活动。而此前的技术大部分只关注如何进行特征定位,很少有为需要特征定位的人员提供一个全面准确而又易于理解的结果。给定一个特征,正确并且全面的定位到相关的代码,并为定位到的代码提供一个简要的说明,更加有益于程序开发人员实现特征定位。
相关主题模型是一个在文档的内容属性和网络结构上的层次概率分布模型。模型第一步将语料库中的所有文档作为一个主题概率混合模型,其次将文档之间的联系建立为一个二元变量。主要用来分析非结构化语料库,相关主题模型为理解和分析语料库文档之间的网络关联建立一个易于理解的模型。利用相关主题模型为经过预处理的软件系统进行建模,为软件系统建立程序特征网络,程序特征网络以网络的形式将系统所有文档即类文件及其之间的联系展示出来,结点为每个类文件的内容特征,边侧表示两个文档之间是否有联系。软件系统的特征以网络的形式展现出来,便于开发人员快速准确形象的理解软件系统。在特征定位时,将特征扩展为特征集作为程序特征网络的一个结点,可以有效的预测其相关联的类文件结点,再对这些结点进行排序并提取摘要给予简单的描述,更加有益于程序开发人员快速方便的实现特征定位。
发明内容
为解决上述技术问题,本发明提供一种基于相关主题模型的程序理解和特征定位方法,包括如下步骤:
(1)导入需要理解的软件系统的源代码,提取每个类文件的用户自定义标识符以及注释作为研究对象,并对其进行预处理;
(2)利用相关主题模型为经过预处理的类进行建模,生成该系统的关于类文件的程序特征网络,输出该程序特征网络供程序理解;
(3)输入特征并将特征扩展为特征集,特征集是特征中动词和名词以及其同义词的集合,将扩展的特征集作为程序特征网络的一个结点对象,利用相关主题模型预测与其有边的结点;
(4)将所预测的结点进行排序,出现特征词语次数多的类文件则排在前面;
(5)为排序后的结点生成内容摘要和排序摘要以供使用者参考;
(6)输出排序后的结点对应的类文件及其摘要。
优选的,预处理过程包括以下步骤:(1)删除语义上和编程语言相关的关键字;(2)对一些按照驼峰规则和有下划短线相连的组合词进行分词;(3)去除英语停用词;(4)将词语的不同形式进行归一化。
优选的,在建模时,程序特征网络中的结点为经过预处理的类文件,程序特征网络中的边的确立可以是是否共有相同的主题或者是否具有调用关系。
优选的,将特征利用WordNet搜索其同义词的方法进行扩展为特征集,特征集是特征中动词和名词以及其同义词的集合,并将该特征集作为结点预测在程序特征网络中相关联的结点,即有边的结点。
优选的,排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点。再按照类中方法名、类名、变量名以及注释出现特征词语次数的顺序将对应的类文件进行排序。
优选的,生成内容摘要和排序摘要的具体方法为,内容摘要为提取结点中的名词和动词,将它们参照特征的形式结合为动名词短语,排序摘要为在排序时类中出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数。
本发明的有益效果为:利用相关主题模型为整个软件系统建立一个程序特征网络,有助于软件开发人员对程序的直接理解和分析,找到感兴趣的功能代码;对特征定位中的需求特征进行扩展,增加了定位的结果范围从而使得结果更加全面;对定位的结果进行筛选和排序,为开发人员提供一个全面而又精简的特征定位结果;对最后的特征定位结果进行概要化,为开发人员最后选取特征定位的结果作为参考内容,更快的定位到需要的特征相关的代码文件。
附图说明
图1是本发明的整体流程图。
图2是本发明的预处理的流程图。
图3是本发明的JHotDraw软件系统的一段源代码。
图4是本发明的生成程序特征网络的流程图。
图5是本发明的类文件生成程序特征网络的流程图。
图6是本发明的特征集结点在程序特征网络中预测结点的示意图。
图7是本发明的相关主题模型示意图。
具体实施方式
为解决上述技术问题,本发明提供一种基于相关主题模型的程序理解和特征定位方法,包括如下步骤:
(1)导入需要理解的软件系统的源代码,如图3所示,为JHotDraw软件系统源代码的一部分。提取用户自定义标识符以及注释作为研究对象,举例如下:
GroupFigureGroupFigurecanConnect Creates a new instance This is a defaultimplementation that chopsthe point at the rectangle returned by getBounds of thefigure Figures which have a nonrectangular shape need to override this methodInvoke chop on each child and return the closest point
对上述内容进行预处理,删除语义上和编程语言相关的关键字,编程语言中有很多的关键字,而它们在我们理解程序的过程中是没有意义的,比如abstract、case、int、return等,将其删除,处理后结果如下:
GroupFigureGroupFigurecanConnect Creates a new instance This is a defaultimplementation that chopsthe point at the rectangle by getBounds of the figureFigures which have a nonrectangular shape need to override this method Invoke chopon each child and the closest point
对一些按照驼峰规则和有下划短线相连的组合词进行分词,“骆驼拼写法”又分为两种:第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”;第一个词的首字母以及后面每个词的首字母都大写,叫做“大骆驼拼写法”,又称“帕斯卡拼写法”,处理后如下所示:
Group Figure Group Figure can Connect Creates a new instance This is a defaultimplementation that chopsthe point at the rectangle by get Bounds of the figureFigures which have a nonrectangular shape need to override this method Invoke chopon each child and the closest point
去除英语停用词,一些停用词包括the、it、on、a、by、to、of等,处理后如下所示:
Group Figure Group Figure Connect Creates new instance defaultimplementation chopspoint rectangle Bounds figure Figures have nonrectangularshape need override method Invoke chop each child closest point
将词语的不同形式进行归一化,就是将看起来不一致的多个词条归纳成一个等价类。比如changing变为change,figures变为figure,选取5个类文件,处理后如下所示:
1、group figure group figure connect creates new instance default implementationchoppoint rectangle bounds figure figure have nonrectangular shape need overridemethod invoke chop each child closest point
2、handle event handle event rectangle invalidated area handle event handlerectangle invalidated area invalidated area handle handle bounds invalidated areadraw view rectangle invalidated area
3、handle listener jhotdraw draw handle listener handle listener event listenerarea draw view repaint area invalidated handle event sent request remove handlehandle request remove handle event request add secondary handles handle requestsecondary handle handle event
4、line decoration decorate point double line poly line figure line decoration linedecoration double precison coordinate line decoration draws decoration directiondraw graphic figure point double radius of the decorator line draw decorate doubledecoration radius figure drawing bounds decorator rectangle double draw boundsfigure point double point double
5、line figure line figure line figure draw shape bound attribute edit collectionhandles link list handles connect composite figure event handle handle mouse clickpoint double draw view
(2)利用相关主题模型为经过预处理的类进行建模,在建模时,确定程序特征网络中的结点为经过预处理的类文件,程序特征网络中的边的确立可以是是否共有相同的主题或者是否具有调用关系。生成该系统的关于类文件的程序特征网络,输出该程序特征网络供程序理解。例如,依据结点是否共有一个主题作为边的存在与否,利用相关主题模型为上述的5个类建模,结果如图5所示。
(3)输入特征并将特征扩展为特征集,将扩展的特征集作为程序特征网络的一个结点对象,利用相关主题模型预测与其有边的结点,比如给定的特征为“handle event”,利用同义词和近义词扩展它的特征集为“handle,manage,deal,care,treat,do by,cover,treat,plow,deal,address,palm,wield,event,case,consequence,effect,outcome,result,issue,upshot”将该集合作为程序特征网络的一个结点预测与其相关的结点,结果如图6所示。
(4)将所预测的结点进行排序,排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点。再按照类中方法名、类名、变量名以及注释出现特征词语次数的顺序将对应的类文件进行排序。例如,步骤(3)中的预测的结点为类2、3、4,类2和类3中都包含handle和event,那么这两个类就排在前面,类4就排在后面。在都出现动词和名词的情况下,类1中的方法名出现了0次,类名出现了1次,变量名出现了0次,注释中出现了0次,类2中方法名出现了0次,类名出现了0次,变量名出现了0次,注释中出现了1次,多以类1排在了类2的前面,排序后结果如表1所示:
表1:排序结果
(5)为排序后的结点生成摘要以供使用者参考,内容摘要为提取结点中的动词和名词,将它们参照特征的形式结合为动名词短语,排序摘要为在排序时出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数。形式为“内容为:***(短语)。特征中***(词语)出现在***类中出现了**次,主要出现在**方法的***(标识符)中”。比如类2的摘要内容为handle event;drawrectangle。特征中handle event出现在handle event类中出现了1次,主要出现在类名中。内容摘要和排序摘要如下表所示:
表2:内容摘要和排序摘要
(6)输出排序后的结点对应的类文件及其摘要,如下表所示:
表3:输出结果
尽管本发明就优选实施方式进行了示意和描述,但本领域的技术人员应当理解,只要不超出本发明的权利要求所限定的范围,可以对本发明进行各种变化和修改。

Claims (6)

1.一种基于相关主题模型的程序理解和特征定位方法,其特征在于,包括如下步骤:
(1)导入需要理解的软件系统的源代码,提取每个类文件的用户自定义标识符以及注释作为研究对象,并对其进行预处理;
(2)利用相关主题模型为经过预处理的类进行建模,生成该系统的关于类文件的程序特征网络,输出该程序特征网络供程序理解;
(3)输入特征并将特征扩展为特征集,特征集是特征中动词和名词以及其同义词的集合,将扩展的特征集作为程序特征网络的一个结点对象,利用相关主题模型预测与其有边的结点;
(4)将所预测的结点进行排序,出现特征词语次数多的类文件则排在前面;
(5)为排序后的结点生成内容摘要和排序摘要以供使用者参考;
(6)输出排序后的结点对应的类文件及其摘要。
2.如权利要求1所述的方法,其特征在于,步骤(1)中的预处理过程包括以下步骤:(1)删除语义上和编程语言相关的关键字;(2)对一些按照驼峰规则和有下划短线相连的组合词进行分词;(3)去除英语停用词;(4)将词语的不同形式进行归一化。
3.如权利要求1所述的方法,其特征在于,在建模时,程序特征网络中的结点为经过预处理的类文件,程序特征网络中的边的确立可以是是否共有相同的主题或者是否具有调用关系。
4.如权利要求1所述的方法,其特征在于,将特征利用WordNet搜索其同义词的方法进行扩展为特征集,特征集是特征中动词和名词以及其同义词的集合,并将该特征集作为结点预测在程序特征网络中相关联的结点,即有边的结点。
5.如权利要求1所述的方法,其特征在于,排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点;再按照类中方法名、类名、变量名以及注释出现特征词语次数的顺序将对应的类文件进行排序。
6.如权利要求1所述的方法,其特征在于,生成内容摘要和排序摘要的具体方法为,内容摘要为提取结点中的名词和动词,将它们参照特征的形式结合为动名词短语,排序摘要为在排序时类中出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数。2 -->
CN201510036368.8A 2015-01-23 2015-01-23 基于相关主题模型的程序理解和特征定位方法 Pending CN104572115A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510036368.8A CN104572115A (zh) 2015-01-23 2015-01-23 基于相关主题模型的程序理解和特征定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510036368.8A CN104572115A (zh) 2015-01-23 2015-01-23 基于相关主题模型的程序理解和特征定位方法

Publications (1)

Publication Number Publication Date
CN104572115A true CN104572115A (zh) 2015-04-29

Family

ID=53088281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510036368.8A Pending CN104572115A (zh) 2015-01-23 2015-01-23 基于相关主题模型的程序理解和特征定位方法

Country Status (1)

Country Link
CN (1) CN104572115A (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572111A (zh) * 2015-01-20 2015-04-29 扬州大学 一种基于相关主题模型的程序理解和特征定位方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572111A (zh) * 2015-01-20 2015-04-29 扬州大学 一种基于相关主题模型的程序理解和特征定位方法

Similar Documents

Publication Publication Date Title
US10248718B2 (en) Generating a domain ontology using word embeddings
US20180341871A1 (en) Utilizing deep learning with an information retrieval mechanism to provide question answering in restricted domains
Ben Abdessalem Karaa et al. Automatic builder of class diagram (ABCD): an application of UML generation from functional requirements
US10095689B2 (en) Automated ontology building
CN102902700B (zh) 基于在线增量演化主题模型的软件自动分类方法
US20140156282A1 (en) Method and system for controlling target applications based upon a natural language command string
Martínez-Rojas et al. Management of construction Safety and Health Plans based on automated content analysis
JP4525936B2 (ja) テキストマイニング装置、その方法及びプログラム
CN105528418B (zh) 一种设计文档生成方法及装置
CN107346325A (zh) 信息查询方法及装置
KR20210092698A (ko) Spo의 추출 방법, 장치, 전자기기 및 저장 매체
CN102053958A (zh) 上下文准确匹配
CN103279458A (zh) 一种领域本体的构建及实例化方法
CN101308512B (zh) 一种基于网页的互译翻译对抽取方法及装置
CN106547765B (zh) 基于sql的数据库管理方法及装置
CN104133815A (zh) 输入和搜索的方法及系统
CN103927176B (zh) 一种基于层次主题模型的程序特征树的生成方法
CN108170661B (zh) 一种规则文本的管理方法及系统
CN104166550A (zh) 一种面向软件维护的修改请求重新定制的方法
CN115203357A (zh) 一种信息检索及信息索引更新方法、装置、设备及介质
CN104572111B (zh) 一种基于相关主题模型的程序理解和特征定位方法
CN109828775B (zh) 一种多语言翻译文本内容的web管理系统及方法
Razorenov et al. The design of a natural language interface for file system operations on the basis of a structured meanings model
Revanth et al. Nl2sql: Natural language to sql query translator
CN104572115A (zh) 基于相关主题模型的程序理解和特征定位方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150429

RJ01 Rejection of invention patent application after publication