CN104572111B - 一种基于相关主题模型的程序理解和特征定位方法 - Google Patents
一种基于相关主题模型的程序理解和特征定位方法 Download PDFInfo
- Publication number
- CN104572111B CN104572111B CN201510027127.7A CN201510027127A CN104572111B CN 104572111 B CN104572111 B CN 104572111B CN 201510027127 A CN201510027127 A CN 201510027127A CN 104572111 B CN104572111 B CN 104572111B
- Authority
- CN
- China
- Prior art keywords
- node
- feature
- program
- class
- sequence
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000000284 extract Substances 0.000 claims abstract description 5
- 230000008676 import Effects 0.000 claims abstract description 4
- 230000008569 process Effects 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 238000011160 research Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000012423 maintenance Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 241000282836 Camelus dromedarius Species 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000004240 Triticum spelta Nutrition 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000010429 evolutionary process Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了软件开发领域内的一种基于相关主题模型的程序理解和特征定位方法,包括以下步骤:1)导入需要理解的软件系统的源代码,提取类文件,并对其进行预处理;2)利用相关主题模型为经过预处理的类文件进行建模,生成程序特征网络;3)输入特征并将特征扩展为特征集,利用相关主题模型预测上述程序特征网络中与该特征集有边的结点;4)将所预测的结点进行排序;5)为排序后的结点生成内容摘要和排序摘要以供使用者参考;6)输出排序后的结点对应的类文件及其摘要,利用本方法可使得开发人员可对整个系统有一个更加简单和快速的理解以及在定位软件特征时候为开发人员更加精准的结果,本发明可用于软件开发维护中。
Description
技术领域
本发明涉及一种软件开发维护方法,特别涉及一种程序理解及特征定位方法。
背景技术
软件产品一般在满足用户不断更改的需求中需要不断地升级和维护。为了实现某个维护请求,开发人员首先需要理解整个软件系统,特别是对程序的理解。程序理解是软件维护过程中最频繁的工作。通常情况下,在软件维护过程中程序理解要占到60%以上的时间。随着软件系统的不断发展,整个系统的规模越来越大,复杂度也越来越高。为了辅助这项工作,一些程序理解技术采用图或者树的结构来辅助开发人员理解软件系统的结构。这些方法主要的依据是程序元素之间的静态结构依赖关系。由于程序理解的目标是理解系统的一些功能点和不同的源代码是如何对应那些相关的功能特征的。因此,这些程序理解技术会忽视系统的功能特征。此前几乎没有技术可以快速直观的提供系统的特征和各个文件之间的联系的。然而特征及其联系可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息。为软件系统建立一个基于特征的网络结构可以帮助开发人员更加简单和快速的理解软件系统。
特征定位是软件维护和演化过程中由程序员进行的最重要和最常见的活动之一。任何一个维护活动都需要在首先定位与手头任务有关的代码的情况下完成。特征定位对于软件维护来说至关重要,因为它是在增量变化的背景下被执行的。在软件系统中,一个特征代表一种功能,这种功能是按照开发者和使用者的要求和被接受程度来定义的。软件维护与演化涉及增加新的功能,改进现有的功能,和修复漏洞,类似于去除一些不想要的功能。确定一个已知的特殊功能在源代码中的位置叫做特征定位。随着整个软件代码的不断增加与变化,特征定位已成为开发人员所进行的一种最常见的维护活动。而此前的技术大部分只关注如何进行特征定位,很少有为需要特征定位的人员提供一个全面准确而又易于理解的结果。给定一个特征,正确并且全面的的定位到相关的代码,并为定位到的代码提供一个简要的说明,更加有益于程序开发人员实现特征定位。
相关主题模型是一个在文档的内容属性和网络结构上的层次概率分布模型。模型第一步将语料库中的所有文档作为主题一个概率混合模型,其次将文档之间的联系建立为一个二元变量。主要用来分析非结构化语料库,相关主题模型为理解和分析语料库文档之间的网络关联建立一个易于理解的模型。我们利用相关主题模型为经过预处理的软件系统进行建模,为软件系统建立的程序特征网络,程序特征网络以网络的形式将系统所有文档即类文件及其之间的联系展示出来,结点为每个类文件的内容特征,边则表示两个文档之间是否有联系。软件系统的特征以网络的形式展示出来,便于开发人员理解快速准确形象的理解软件系统。在特征定位时,将特征扩展为特征集作为程序特征网络的一个结点,可以有效的预测其相关联的类文件结点,再对这些节点进行排序并提取摘要给予简单的描述,更加有益于程序开发人员快速方便的实现特征定位。
发明内容
本发明的目的是提供一种基于相关主题模型的程序理解和特征定位方法,使得开发人员可对整个系统有一个更加简单和快速的理解以及在定位软件特征时候为开发人员更加精准的结果。
本发明的目的是这样实现的:一种基于相关主题模型的程序理解和特征定位方法,包括以下步骤:
步骤1)导入需要理解的软件系统的源代码,提取每个类文件的用户自定义标识符以及注释作为研究对象,并对其进行预处理;
步骤2)利用相关主题模型为经过预处理的类文件进行建模,生成具有多个结点的关于类文件的程序特征网络,结点之间建立边的关系,输出该程序特征网络供程序理解;
步骤3)输入特征并将特征扩展为特征集,将扩展的特征集作为上述程序特征网络中的一个新结点,利用相关主题模型预测上述程序特征网络中与该新结点有边的结点;
步骤4)将所预测的结点进行排序,出现特征词语次数多的类文件则排在前面;
步骤5)为排序后的结点生成内容摘要和排序摘要以供使用者参考;
步骤6)输出排序后的结点对应的类文件及其摘要。
与现有技术相比,本发明的有益效果在于,使用本发明为软件系统的类文件建立一个程序特征网络,利用程序特征网络预测特征的相关类文件并提供摘要,为开发人员理解软件系统以及准确定位特征提供了方便;主要有如下一些优点:
1)本发明提出利用相关主题模型为整个软件系统建立一个程序特征网络,从理解代码的角度讲,有助于软件开发人员对程序的直接理解和分析,找到他们感兴趣的功能代码;
2)该发明对特征定位中的需求特征进行扩展,增加了定位的结果范围从而使得结果更加全面;
3)该发明对定位的结果进行一个筛选和排序,在结果全面的基础之上做到了精益求精,为开发人员提供一个全面而又精简的特征定位结果;
4)本发明利用对最后的特征定位结果进行概要化,为开发人员最后选取特征定位的结果作为参考内容,更快地定位到需要的特征相关的代码文件;本发明可用于软件开发维护中。
为了使得程序的理解更加准确,步骤1)的预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字;
b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;
c)去除英语停用词;
d)将词语的不同形式进行归一化;
作为本发明的进一步限定,步骤2)在建模时,程序特征网络中的结点为经过预处理的类文件,通过确定结点之间是否共有相同的主题或者是否具有调用关系来确定结点之间边的关系。通过该方法确定结点与结点之间的关系,提高了程序理解的准确性。
为了使得程序的理解更加快捷和准确,步骤3)的具体方法为,将特征利用WordNet搜索其同义词的方法进行扩展,成为特征集,特征集是特征中动词和名词以及其同义词的集合,并将该特征集作为结点预测在程序特征网络中相关联的结点,即将其与程序特征网络中的结点建立边的关系。
为了使得开发人员对程序的理解更加方便,步骤4)的排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点。再按照类中方法名、类名以及变量名出现特征词语次数的顺序将对应的类文件进行排序。使得开发人员更加直观的了解程序中的具体相关特征,更加便于对软件进行开发和维护。
为了使得开发人员对程序的理解更加方便,步骤5)的生成内容摘要和排序摘要的具体方法为,内容摘要为提取结点中的动词和名词,将他们参照特征的形式结合为动名词短语,排序摘要为在排序时类中出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数。
附图说明
图1是本发明的流程图。
图2是本发明中预处理的流程图。
图3是本发明中建立生成程序特征网络流程图。
图4是JHotDraw软件系统的一段源代码。
图5是利用本发明处理图4源代码后生成的程序特征网示意图。
图6是利用本发明预测结点示意图。
图7是本发明中相关主题模型示意图。
具体实施方式
下面结合具体实施例对本发明做进一步说明。
一种基于层次主题模型的程序特征树的生成方法,包括如下步骤:
步骤1) 导入需要理解的软件系统的源代码,此处例举出JHotDraw软件系统源代码的一部分进行说明,源代码如图3所示。
步骤2) 提取用户自定义标识符以及注释作为研究对象,如下表所示;
。
步骤3) 删除语义上和编程语言相关的关键字,编程语言中有很多的关键字,而它们在我们理解程序的过程中是没有意义的,比如abstract、case、int、return等,将其删除,处理后如下表所示;
。
步骤4) 对一些按照驼峰规则和有下划短线相连的组合词进行分词,“骆驼拼写法”又分为两种:第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”(lowerCamelCase);第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”(UpperCamelCase),又称“帕斯卡拼写法”(PascalCase),处理后如下表所示;
。
步骤5) 去除英语停用词,一些停用词包括the、it、on、a、by、to、of 等,处理后如下表所示;
。
步骤6) 将词语的不同形式进行归一化,就是将看起来不一致的多个词条归纳成一个等价类。比如changing变为change, figures转换为figure,选取5个类文件(类1、类2、类3、类4、类5)处理后如下表所示;
。
步骤7) 利用图7所示的相关主题模型为经过预处理的类进行建模,在建模时,确定程序特征网中的结点为经过预处理的类文件,程序特征网中的边的确立可以是是否共有相同的主题或者是否具有调用关系。生成该系统的关于类文件的程序特征网络,输出该程序特征网络供程序理解,例如,依据节点是否共有一个主题作为边的存在与否,利用相关主题模型为上述的类1、2、3、4、5建模,结果如图5所示。
步骤8) 输入特征并将特征扩展为特征集,将扩展的特征集作为程序特征网络的一个结点对象,利用相关主题模型预测与其有边的结点,比如给定的特征为“handleevent”,利用同义词和近义词扩展它的特征集为“handle ,manage, deal, care, treat,do by,cover, treat, plow, deal, address,palm,wield,event,case,consequence,effect, outcome, result, issue, upshot”将该集合作为程序特征网络的一个结点预测其相关的结点,结果如图6所示。
步骤9)将所预测的结点进行排序,排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点。再按照类中方法名、类名、变量名以及注释出现特征词语次数的顺序将对应的类文件进行排序。例如,步骤8中预测的结点为类2、3、4,类 2和类3 中都包含handle 和event,那么这两个类就排在前面,类4就排在后面,在都出现动词和名词的条件下,类1中的方法名出现了0次,类名出现了1次,变量名出现了0次,注释中出现了0次;类2中方法名出现了0次,类名出现了0次,变量名出现了0次,注释中出现了1次,所以类1排在了类2的前面,排序后结果如下表所示;
。
步骤10)为排序后的结点生成摘要以供使用者参考,内容摘要为提取结点中的动词和名词,将他们参照特征的形式结合为动名词短语,排序摘要为在排序时类中出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数。形式为“内容为:***(短语)。特征中***(词语)出现在***类中出现了**次,主要出现在**方法的***(标识符)中”。比如类2的摘要为,内容为handle event;draw rectangle。特征中handle event出现在handle event类中出现了1次,主要出现在类名中,结果如下表所示;
。
步骤11)输出排序后的结点对应的类文件及其摘要,如下表所示;
。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。
Claims (1)
1.一种基于相关主题模型的程序理解和特征定位方法,其特征在于,包括以下步骤:
步骤1)导入需要理解的软件系统的源代码,提取每个类文件的用户自定义标识符以及注释作为研究对象,并对其进行预处理,步骤1)的预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字;
b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;
c)去除英语停用词;
d)将词语的不同形式进行归一化;
步骤2)利用相关主题模型为经过预处理的类文件进行建模,生成具有多个结点的关于类文件的程序特征网络,结点之间建立边的关系,输出该程序特征网络供程序理解,在建模时,程序特征网络中的结点为经过预处理的类文件,通过确定结点之间是否共有相同的主题或者是否具有调用关系来确定结点之间边的关系;
步骤3)输入特征并将特征扩展为特征集,将扩展的特征集作为上述程序特征网络中的一个新结点,利用相关主题模型预测上述程序特征网络中与该新结点有边的结点,具体方法为,将特征利用WordNet搜索其同义词的方法进行扩展,成为特征集,特征集是特征中动词和名词以及其同义词的集合,并将该特征集作为结点预测在程序特征网络中相关联的结点,即将其与程序特征网络中的结点建立边的关系;
步骤4)将所预测的结点进行排序,出现特征词语次数多的类文件则排在前面,排序具体方法为出现既包含特征中动词又包含名词的结点放在前面,之后放包含名词的结点,然后放只包含动词的结点,最后放两者都不包含的结点,再按照类中方法名、类名以及变量名出现特征词语次数的顺序将对应的类文件进行排序;
步骤5)为排序后的结点生成内容摘要和排序摘要以供使用者参考,生成内容摘要和排序摘要的具体方法为,内容摘要为提取结点中的动词和名词,将他们参照特征的形式结合为动名词短语,排序摘要为在排序时类中出现特征词语的方法名、类名、变量名以及注释及其出现特征词语的次数;
步骤6)输出排序后的结点对应的类文件及其摘要。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510027127.7A CN104572111B (zh) | 2015-01-20 | 2015-01-20 | 一种基于相关主题模型的程序理解和特征定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510027127.7A CN104572111B (zh) | 2015-01-20 | 2015-01-20 | 一种基于相关主题模型的程序理解和特征定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572111A CN104572111A (zh) | 2015-04-29 |
CN104572111B true CN104572111B (zh) | 2017-12-01 |
Family
ID=53088277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510027127.7A Expired - Fee Related CN104572111B (zh) | 2015-01-20 | 2015-01-20 | 一种基于相关主题模型的程序理解和特征定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572111B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572115A (zh) * | 2015-01-23 | 2015-04-29 | 扬州大学 | 基于相关主题模型的程序理解和特征定位方法 |
CN112988137B (zh) * | 2021-03-19 | 2024-05-17 | 武汉虹信技术服务有限责任公司 | 一种类文件导入代码管理系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729197A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda模型的多粒度层次软件聚类方法 |
CN103729473A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda主题模型的相关软件历史数据提取方法 |
CN103927176A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于层次主题模型的程序特征树的生成方法 |
CN103927177A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 基于LDA模型和PageRank算法建立特征接口有向图的方法 |
CN103927179A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于WordNet的程序可读性分析方法 |
CN104090775A (zh) * | 2014-07-24 | 2014-10-08 | 扬州大学 | 一种基于动态主题模型的软件演化建模方法 |
-
2015
- 2015-01-20 CN CN201510027127.7A patent/CN104572111B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729197A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda模型的多粒度层次软件聚类方法 |
CN103729473A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda主题模型的相关软件历史数据提取方法 |
CN103927176A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于层次主题模型的程序特征树的生成方法 |
CN103927177A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 基于LDA模型和PageRank算法建立特征接口有向图的方法 |
CN103927179A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于WordNet的程序可读性分析方法 |
CN104090775A (zh) * | 2014-07-24 | 2014-10-08 | 扬州大学 | 一种基于动态主题模型的软件演化建模方法 |
Non-Patent Citations (4)
Title |
---|
Empirical Studies on the NLP Techniques for Source Code;Xiaobing Sun etc.;《Proceeding EAST 2014 Procesding of the 2014 and International Workshop on Evidential Assessment of software Technologies 》;20140531;第32-39页 * |
PFN: A Novel Program Feature Network for Program Comprehension;Xiangyue Li etc.;《2014 IEEE/ACIS 13th International conference on computer and information science(ICIS)》;20140929;第349-354页 * |
Relational Topic Models for Document Networks;J.Chang etc.;《Proceedings of the 12th International Conference》;20090131;第5卷;第81-88页 * |
基于LDA主题模型的短文本分类方法;张志飞等;《计算机应用》;20130630;第33卷(第6期);第1687-1590页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104572111A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10497366B2 (en) | Hybrid learning system for natural language understanding | |
US10248718B2 (en) | Generating a domain ontology using word embeddings | |
US11929066B2 (en) | Intent-based conversational knowledge graph for spoken language understanding system | |
US11520992B2 (en) | Hybrid learning system for natural language understanding | |
US10706030B2 (en) | Utilizing artificial intelligence to integrate data from multiple diverse sources into a data structure | |
Gao et al. | Text classification research based on improved Word2vec and CNN | |
US10678820B2 (en) | System and method for computerized semantic indexing and searching | |
Du et al. | An approach for selecting seed URLs of focused crawler based on user-interest ontology | |
US20220245353A1 (en) | System and method for entity labeling in a natural language understanding (nlu) framework | |
Xue et al. | Modeling reformulation using query distributions | |
CN104166550A (zh) | 一种面向软件维护的修改请求重新定制的方法 | |
CN103927176B (zh) | 一种基于层次主题模型的程序特征树的生成方法 | |
CN108170661B (zh) | 一种规则文本的管理方法及系统 | |
Fatima et al. | New graph-based text summarization method | |
CN104572111B (zh) | 一种基于相关主题模型的程序理解和特征定位方法 | |
Kulcu et al. | A scalable approach for sentiment analysis of Turkish tweets and linking tweets to news | |
Revanth et al. | Nl2sql: Natural language to sql query translator | |
Zhang et al. | Chinese relation classification using long short term memory networks | |
US20220229990A1 (en) | System and method for lookup source segmentation scoring in a natural language understanding (nlu) framework | |
US20220229998A1 (en) | Lookup source framework for a natural language understanding (nlu) framework | |
US20220229987A1 (en) | System and method for repository-aware natural language understanding (nlu) using a lookup source framework | |
US20220229986A1 (en) | System and method for compiling and using taxonomy lookup sources in a natural language understanding (nlu) framework | |
Kent et al. | Web based cross language semantic plagiarism detection | |
Mahajani et al. | Ranking-based sentence retrieval for text summarization | |
Xie et al. | Personalized query recommendation using semantic factor model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230118 Address after: 225000 Building 2, No. 209, Kaifa West Road, Hanjiang District, Yangzhou City, Jiangsu Province Patentee after: Yangzhou Hongxi Electric Co.,Ltd. Address before: No.88, South University Road, Yangzhou Development Zone, Jiangsu Province 225009 Patentee before: YANGZHOU University |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171201 |
|
CF01 | Termination of patent right due to non-payment of annual fee |