CN103927176B - 一种基于层次主题模型的程序特征树的生成方法 - Google Patents

一种基于层次主题模型的程序特征树的生成方法 Download PDF

Info

Publication number
CN103927176B
CN103927176B CN201410156738.7A CN201410156738A CN103927176B CN 103927176 B CN103927176 B CN 103927176B CN 201410156738 A CN201410156738 A CN 201410156738A CN 103927176 B CN103927176 B CN 103927176B
Authority
CN
China
Prior art keywords
program
tree
class file
feature
software systems
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.)
Active
Application number
CN201410156738.7A
Other languages
English (en)
Other versions
CN103927176A (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.)
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 CN201410156738.7A priority Critical patent/CN103927176B/zh
Publication of CN103927176A publication Critical patent/CN103927176A/zh
Application granted granted Critical
Publication of CN103927176B publication Critical patent/CN103927176B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了软件工程领域内的一种基于层次主题模型的程序特征树的生成方法,程序特征树以树的形式将系统的特征按层次展示出来,在该树中,父节点是各种特征的混合,孩子节点都是父节点的子特征,叶子节点则为划分最细的特征,我们还将叶子节点的特征与相应的类文件进行匹配识别,该方法可有效地辅助软件维护过程中的程序理解。本发明涉及到的关键操作包括:(1)对整个软件系统进行预处理,提取其中的用户自定义标识符和注释(2)对预处理后的整个软件系统采用层次主题模型,为软件系统构建程序特征树。(3)将叶子节点的特征与相应的代码进行匹配识别。

Description

一种基于层次主题模型的程序特征树的生成方法
技术领域
本发明涉及一种程序理解方法,特别涉及一种建立程序特征树的方法。
背景技术
软件产品一般在满足用户不断更改的需求中需要不断地升级和维护。为了实现某个维护请求,开发人员首先需要理解整个软件系统,特别是对程序的理解。程序理解是软件维护过程中最频繁的工作。通常情况下,在软件维护过程中程序理解要占到60%以上的时间。随着软件系统的不断发展,整个系统的规模越来越大,复杂度也越来越高。为了辅助这项工作,一些程序理解技术采用聚类方法将系统划分为一些更小、更集中和更易于理解的子系统,或者采用程序依赖图来辅助开发人员理解软件系统的结构。这些方法主要的依据是程序元素之间的静态结构依赖关系。由于程序理解的目标是理解系统的一些功能点和不同的源代码是如何对应那些相关的功能特征的。因此,这些程序理解技术会忽视系统的功能特征。此前几乎没有技术可以快速直观的提供系统的特征或者主题。然而特征或者主题可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息。此外,在不同的特征层次尤其是从总体到部分会为开发人员建立一个更加易于理解的系统结构。在这个多层特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解。
层次主题模型是指主要建立在隐含狄利克雷分布的主题模型。隐含狄利克雷分布(Latent Dirichlet Allocation简称LDA)是一种分析非结构化文本语料库的概率模型。隐含狄利克雷分布的主题模型可以提取概括整个文档的主题。层次主题模型不仅可以提取整个文档的主题而且可以将所提取出来的主题进行分层。我们利用层次主题模型为经过预处理的软件系统进行建模,为软件系统建立有层次的主题模型,最终生成软件系统的程序特征树,程序特征树以树的形式将系统的特征按层次展示出来,在该树中,父节点是特征的混合,孩子节点都是父节点的子特征,叶子节点则为划分最细的特征,最后,对叶子节点的特征与相应的代码进行匹配识别。软件系统的特征以树的形式展示出来,并且在最细的特征层次的节点识别匹配到相应的类文件,便于开发人员快速、准确、形象地理解软件系统。
发明内容
本发明的目的是提供一种基于层次主题模型的程序特征树的生成方法,使得开发人员可对整个系统有一个更加简单、逐步和快速的理解。
本发明的目的是这样实现的:一种基于层次主题模型的程序特征树的生成方法,其特征在于,步骤如下:
步骤1) 导入需要理解的软件系统的源代码;
步骤2) 提取用户自定义标识符以及注释作为研究对象,并对其进行预处理;
步骤3) 利用层次主题模型为经过预处理的对象进行建模,生成该系统的程序特征树,该程序特征树中的程序特征即为主题模型中提取的主题;
步骤4) 将叶子节点的特征与软件系统内的所有类文件进行匹配;
步骤5) 判断程序特征树是否有利于理解软件系统的大部分代码,是则输出程序特征树。
作为本发明的进一步限定,步骤2)的预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字;
b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;
c)去除英语停用词;
d)将词语的不同形式进行归一化。
作为本发明的进一步限定,步骤3)在建模时,先设定层次主题模型的层次L以及给定主题的数目K。
作为本发明的进一步限定,步骤4)的具体方法为,将所有类文件逐一与叶子节点的每个特征进行匹配,若某个类文件包含某个特征,则该类文件被分配到与该特征相关的集合中,并且,该类文件还需与其他特征进行匹配,即一个类文件可具有多个特征,同样一个特征下可具有多个类文件。
作为本发明的进一步限定,步骤5)的具体方法为,当软件系统中匹配成功的类文件数量占总类文件数量百分比大于等于80%时,判定程序特征树有利于理解软件系统的大部分代码,则输出程序特征树,否则回到步骤7)调节层次主题模型的层次和主题数目重新建模,重新将叶子节点的主题与相关类文件进行匹配。
与现有技术相比,本发明的有益效果在于, 本发明从整体到部分对系统特征分层会为开发人员建立一个更加易于理解的系统结构。在这个层次特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解,可用于软件开发维护中。主要有如下一些优点:
(1)本发明提出利用层次LDA主题模型进行软件主题的提取,可以分析软件的功能方面的特征,从而更有助于软件开发人员对程序的直接理解和分析,找到他们感兴趣的功能代码;
(2)该发明对软件的各个特征层次进行理解,而不限于某一单一特征进行软件理解,它给出一种逐步求精的从整体到部分软件理解过程,更符合开发人员的实际软件理解过程;
(3)该发明所提出的各个特征层次的软件理解都是基于层次主题模型,目前,层次主题模型已有很多现成的工具可用。因此,该方法实施比较容易。
(4)之前程序理解方法主要的依据是程序元素之间的静态结构依赖关系。这些程序理解技术会忽视系统的功能特征而且过程复杂。特征或者主题可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息。此外,在不同的特征层次尤其是从总体到部分会为开发人员建立一个更加易于理解的系统结构。在多层特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解。
附图说明
图1是生成程序特征树的流程图。
图2是预处理的流程图。
图3是为JHotDraw软件系统的一段源代码。
图4是本发明程序特征树示意图。
具体实施方式
下面结合具体实施例对本发明做进一步说明。
如图1-2所示,一种基于层次主题模型的程序特征树的生成方法,包括如下步骤:
步骤1) 导入需要理解的软件系统的源代码,此处例举出JHotDraw软件系统源代码的一部分进行说明,源代码如图3所示。
步骤2) 提取用户自定义标识符以及注释作为研究对象,并对其进行预处理;研究对象如下表1所示。
表1。
GroupFigure GroupFigure canConnect Creates a new instance This is a defaultimplementation that chops the point at the rectangle returned by getBoundsof the figure Figures which have a nonrectangular shape need to override this method Invoke chop on each child and return the closest point
预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字,编程语言中有很多的关键字,而它们在我们理解程序的过程中是没有意义的,比如abstract、case、int、return等,将其删除,处理后如表2所示。
表2。
GroupFigure GroupFigure canConnect Creates a new instance This is a defaultimplementation that chops the point at the rectangle by getBounds of the figure Figures which have a nonrectangular shape need to override this method Invoke chop on each child and the closest point
b) 对一些按照驼峰规则和有下划短线相连的组合词进行分词,“骆驼拼写法”又分为两种:第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”(lowerCamelCase);第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”(UpperCamelCase),又称“帕斯卡拼写法”(PascalCase),处理后如表3所示。
表3。
Group Figure Group Figure can Connect Creates a new instance This is a default implementation that chops the point at the rectangle by get Bounds ofthe figure Figures which have a nonrectangular shape need to override thismethod Invoke chop on each child and the closest point
c) 去除英语停用词,一些停用词包括 the、it、on、a、by、to、of 等,处理后如表4所示。
表4。
Group Figure Group Figure Connect Creates new instance default implementation chops point rectangle Bounds figure Figures have nonrectangular shape need override method Invoke chop each child closest point
d) 将词语的不同形式进行归一化,就是将看起来不一致的多个词条归纳成一个等价类;比如changing变为change, figures转换为figure,处理后如表5所示。
表5。
group figure group figure connect creates new instance default implementation chop point rectangle bound figure figure have nonrectangular shape need override method invoke chop each child closest point
步骤3)另选取4段源代码,通过预处理过程后得到的数据如表6所示。
表6。
handle event handle event rectangle invalidated area handle event handle rectangle invalidated area invalidated area handle handle bound invalidated area draw view rectangle invalidated area
handle listener jhotdraw draw handle listener handle listener event listenerarea draw view repaint area invalidated handle event sent request remove handle handle request remove handle event point request add secondary handles handle request secondary handle handle event
line decoration decorate point double line poly line figure line decorationline decoration double precison coordinate line decoration draw decoration direction draw graphic figure event point double radius of the decorator linedraw decorate double decoration radius figure draw bound decorator rectangledouble draw bound figure point double point double
line figure line figure line figure draw shape bound attribute edit collection handle link list handle connect composite figure event handle handle mouse click point double draw view
步骤4) 利用层次主题模型为经过预处理的五个对象进行建模,给定层次模型的层次数目3,主题数目4,生成该系统的程序特征树,在经过前面的预处理之后的软件系统已经可以作为运用信息检索技术的对象,对所有经过处理的类文件运用层次主题模型建模。
步骤4) 将所有类文件逐一与叶子节点的每个特征进行匹配,若某个类文件包含某个特征,则该类文件被分配到与该特征相关的集合中,并且,该类文件还需与其他特征进行匹配,即一个类文件可具有多个特征,同样一个特征下可具有多个类文件。
步骤5) 判断程序特征树是否利于理解软件系统的大部分代码,当软件系统中匹配成功的类文件数量占总类文件数量百分比大于等于80%时,判定程序特征树有利于理解软件系统的大部分代码,则输出程序特征树,否则回到步骤7)调节层次主题模型的层次和主题数目重新建模,重新将叶子节点的主题与相关类文件进行匹配;上例中5个类文件全部分配到与主题当对应的类文件的集合中,比例为100%,该树则是最终生成的程序特征树,如图4所示。如果与主题匹配的类文件数目小于4,类文件匹配到相关的主题中的比例未达到80%,则回到步骤3)。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。

Claims (1)

1.一种基于层次主题模型的程序特征树的生成方法,其特征在于,步骤如下:
步骤1) 导入需要理解的软件系统的源代码;
步骤2) 提取用户自定义标识符以及注释作为研究对象,并对其进行预处理,预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字;
b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;
c)去除英语停用词;
d)将词语的不同形式进行归一化;
步骤3) 利用层次主题模型为经过预处理的对象进行建模,生成该系统的程序特征树,该程序特征树中的程序特征即为主题模型中提取的主题,在建模时,先设定层次主题模型的层次L以及给定主题的数目K;
步骤4) 将叶子节点的特征与软件系统内的所有类文件进行匹配,具体方法为:将所有类文件逐一与叶子节点的每个特征进行匹配,若某个类文件包含某个特征,则该类文件被分配到与该特征相关的集合中,并且,该类文件还需与其他特征进行匹配,即一个类文件可具有多个特征,同样一个特征下可具有多个类文件;
步骤5) 判断程序特征树是否有利于理解软件系统的大部分代码,是则输出程序特征树,具体方法为:当软件系统中匹配成功的类文件数量占总类文件数量百分比大于等于80%时,判定程序特征树有利于理解软件系统的大部分代码,则输出程序特征树,否则回到步骤3)调节层次主题模型的层次和主题数目重新建模,重新将叶子节点的主题与相关类文件进行匹配,可用于软件开发维护中。
CN201410156738.7A 2014-04-18 2014-04-18 一种基于层次主题模型的程序特征树的生成方法 Active CN103927176B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410156738.7A CN103927176B (zh) 2014-04-18 2014-04-18 一种基于层次主题模型的程序特征树的生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410156738.7A CN103927176B (zh) 2014-04-18 2014-04-18 一种基于层次主题模型的程序特征树的生成方法

Publications (2)

Publication Number Publication Date
CN103927176A CN103927176A (zh) 2014-07-16
CN103927176B true CN103927176B (zh) 2017-02-22

Family

ID=51145408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410156738.7A Active CN103927176B (zh) 2014-04-18 2014-04-18 一种基于层次主题模型的程序特征树的生成方法

Country Status (1)

Country Link
CN (1) CN103927176B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104166550A (zh) * 2014-08-13 2014-11-26 扬州大学 一种面向软件维护的修改请求重新定制的方法
CN104572111B (zh) * 2015-01-20 2017-12-01 扬州大学 一种基于相关主题模型的程序理解和特征定位方法
CN107038380B (zh) * 2017-04-14 2019-07-05 华中科技大学 一种基于程序特征树的漏洞检测方法及系统
US20210103608A1 (en) * 2019-10-08 2021-04-08 International Business Machines Corporation Rare topic detection using hierarchical clustering
CN113641588B (zh) * 2021-08-31 2024-05-24 北京航空航天大学 一种基于lda主题建模的软件可理解性确定方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722501A (zh) * 2011-03-31 2012-10-10 北京百度网讯科技有限公司 搜索引擎及其实现方法
CN103226580A (zh) * 2013-04-02 2013-07-31 西安交通大学 一种面向交互文本的话题识别方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722501A (zh) * 2011-03-31 2012-10-10 北京百度网讯科技有限公司 搜索引擎及其实现方法
CN103226580A (zh) * 2013-04-02 2013-07-31 西安交通大学 一种面向交互文本的话题识别方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"一种基于GCC抽象语法树的程序特征提取方法";张良德;《电子技术与软件工程》;20131015(第20期);全文 *
"基于 GCC 抽象语法树文本的C源程序语义分析方法研究";封战胜;《中国优秀硕士学位论文全文数据库》;20111215(第S2期);参见图4-1,第4.1节 *
"基于hLDA层次主题模型的多文档摘要技术研究";刘红艳;《中国优秀硕士学位论文全文数据库》;20120815;摘要 *
"基于语法特征树的代码知识点自动识别";孙辞海等;《微计算机信息》;20101130;第16卷(第11-3期);全文 *

Also Published As

Publication number Publication date
CN103927176A (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
US10248718B2 (en) Generating a domain ontology using word embeddings
CN104933027B (zh) 一种利用依存分析的开放式中文实体关系抽取方法
CN101630314B (zh) 一种基于领域知识的语义查询扩展方法
CN101593200B (zh) 基于关键词频度分析的中文网页分类方法
CN106095762A (zh) 一种基于本体模型库的新闻推荐方法及装置
CN103927176B (zh) 一种基于层次主题模型的程序特征树的生成方法
CN102955848B (zh) 一种基于语义的三维模型检索系统和方法
CN102902700A (zh) 基于在线增量演化主题模型的软件自动分类方法
EP3203383A1 (en) Text generation system
CN102043851A (zh) 一种基于频繁项集的多文档自动摘要方法
CN101710343A (zh) 一种基于文本挖掘的本体自动构建系统及方法
US20120259621A1 (en) Translating Texts Between Languages
CN108665141B (zh) 一种从突发事件预案中自动抽取应急响应流程模型的方法
CN112035506A (zh) 一种语义识别方法及其设备
CN101308512B (zh) 一种基于网页的互译翻译对抽取方法及装置
CN105320650A (zh) 一种机器翻译方法及其系统
CN115687563A (zh) 一种可解释的智能判决方法、装置、电子设备及存储介质
CN104166550A (zh) 一种面向软件维护的修改请求重新定制的方法
CN110020436A (zh) 一种本体和句法依存结合的微博情感分析法
CN106599063A (zh) 基于主题情感语义提取的细粒度观点挖掘方法
CN103020311A (zh) 一种用户检索词的处理方法及系统
Zhou et al. A hybrid technique for English-Chinese cross language information retrieval
WANG et al. Automatic extraction and structuration of soil–environment relationship information from soil survey reports
Nirenburg et al. Machine translation
Zong et al. Research on alignment in the construction of parallel corpus

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant