本发明专利技术公开了软件工程领域内的一种基于层次主题模型的程序特征树的生成方法,程序特征树以树的形式将系统的特征按层次展示出来,在该树中,父节点是各种特征的混合,孩子节点都是父节点的子特征,叶子节点则为划分最细的特征,我们还将叶子节点的特征与相应的类文件进行匹配识别,该方法可有效地辅助软件维护过程中的程序理解。本发明专利技术涉及到的关键操作包括:(1)对整个软件系统进行预处理,提取其中的用户自定义标识符和注释(2)对预处理后的整个软件系统采用层次主题模型,为软件系统构建程序特征树。(3)将叶子节点的特征与相应的代码进行匹配识别。
【技术实现步骤摘要】
一种基于层次主题模型的程序特征树的生成方法
本专利技术涉及一种程序理解方法,特别涉及一种建立程序特征树的方法。
技术介绍
软件产品一般在满足用户不断更改的需求中需要不断地升级和维护。为了实现某个维护请求,开发人员首先需要理解整个软件系统,特别是对程序的理解。程序理解是软件维护过程中最频繁的工作。通常情况下,在软件维护过程中程序理解要占到60%以上的时间。随着软件系统的不断发展,整个系统的规模越来越大,复杂度也越来越高。为了辅助这项工作,一些程序理解技术采用聚类方法将系统划分为一些更小、更集中和更易于理解的子系统,或者采用程序依赖图来辅助开发人员理解软件系统的结构。这些方法主要的依据是程序元素之间的静态结构依赖关系。由于程序理解的目标是理解系统的一些功能点和不同的源代码是如何对应那些相关的功能特征的。因此,这些程序理解技术会忽视系统的功能特征。此前几乎没有技术可以快速直观的提供系统的特征或者主题。然而特征或者主题可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息。此外,在不同的特征层次尤其是从总体到部分会为开发人员建立一个更加易于理解的系统结构。在这个多层特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解。层次主题模型是指主要建立在隐含狄利克雷分布的主题模型。隐含狄利克雷分布(LatentDirichletAllocation简称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。GroupFigureGroupFigurecanConnectCreatesanewinstanceThisisadefaultimplementationthatchopsthepointattherectanglereturnedbygetBoundsofthefigureFigureswhichhaveanonrectangularshapeneedtooverridethismethodInvokechoponeachchildandreturntheclosestpoint预处理过程包括以下步骤:a)删除语义上和编程语言相关的关键字,编程语言中有很多的关键字,而它们在我们理解程序的过程中是没有意义的,比如abstract、case、int、return等,将其删除,处理后如表2所示。表2。GroupFigureGroupFigurecanConnectCreatesanewinstanceThisisadefaultimplementationthatchopsthepointattherectanglebygetBoundsofthefigureFigureswhichhaveanonrectangularshapeneedtooverridethismethodInvokechoponeachchildandtheclosestpointb)对一些按照驼峰规则和有下划短线相连的组合词进行分词,“骆驼拼写法”又分为两种:第一个词的首字母小写,后面每个词的首字母大本文档来自技高网...
【技术保护点】
一种基于层次主题模型的程序特征树的生成方法,其特征在于,步骤如下:步骤1) 导入需要理解的软件系统的源代码;步骤2) 提取用户自定义标识符以及注释作为研究对象,并对其进行预处理;步骤3) 利用层次主题模型为经过预处理的对象进行建模,生成该系统的程序特征树,该程序特征树中的程序特征即为主题模型中提取的主题;步骤4) 将叶子节点的特征与软件系统内的所有类文件进行匹配;步骤5) 判断程序特征树是否有利于理解软件系统的大部分代码,是则输出程序特征树。
【技术特征摘要】
1.一种基于层次主题模型的程序特征树的生成方法,其特征在于,步骤如下:步骤1)导入需要理解的软件系统的源代码;步骤2)提取用户自定义标识符以及注释作为研究对象,并对其进行预处理,预处理过程包括以下步骤:a)删除语义上和编程语言相关的关键字;b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;c)去除英语停用词;d)将词语的不同形式进行归一化;步骤3)利用层次主题模型为经过预处理的对象进行建模,生成该系统的程序特征树,该程序特征树中的程序特征即为主题模型中提取的主题,在建模时,先设定层次主题模型的层次L以及给定主题的数目K;步骤4)将叶子节点的特征与软件系统内的所有类文...
【专利技术属性】
技术研发人员:孙小兵,刘湘月,李斌,朱俊武,
申请(专利权)人:扬州大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。