[发明专利]一种基于层次主题模型的程序特征树的生成方法有效
申请号: | 201410156738.7 | 申请日: | 2014-04-18 |
公开(公告)号: | CN103927176B | 公开(公告)日: | 2017-02-22 |
发明(设计)人: | 孙小兵;刘湘月;李斌;朱俊武 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 南京苏科专利代理有限责任公司32102 | 代理人: | 董旭东 |
地址: | 225009 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 层次 主题 模型 程序 特征 生成 方法 | ||
技术领域
本发明涉及一种程序理解方法,特别涉及一种建立程序特征树的方法。
背景技术
软件产品一般在满足用户不断更改的需求中需要不断地升级和维护。为了实现某个维护请求,开发人员首先需要理解整个软件系统,特别是对程序的理解。程序理解是软件维护过程中最频繁的工作。通常情况下,在软件维护过程中程序理解要占到60%以上的时间。随着软件系统的不断发展,整个系统的规模越来越大,复杂度也越来越高。为了辅助这项工作,一些程序理解技术采用聚类方法将系统划分为一些更小、更集中和更易于理解的子系统,或者采用程序依赖图来辅助开发人员理解软件系统的结构。这些方法主要的依据是程序元素之间的静态结构依赖关系。由于程序理解的目标是理解系统的一些功能点和不同的源代码是如何对应那些相关的功能特征的。因此,这些程序理解技术会忽视系统的功能特征。此前几乎没有技术可以快速直观的提供系统的特征或者主题。然而特征或者主题可以有效的帮助开发人员得到一个软件系统总体功能方面的特征信息。此外,在不同的特征层次尤其是从总体到部分会为开发人员建立一个更加易于理解的系统结构。在这个多层特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解。
层次主题模型是指主要建立在隐含狄利克雷分布的主题模型。隐含狄利克雷分布(Latent Dirichlet Allocation简称LDA)是一种分析非结构化文本语料库的概率模型。隐含狄利克雷分布的主题模型可以提取概括整个文档的主题。层次主题模型不仅可以提取整个文档的主题而且可以将所提取出来的主题进行分层。我们利用层次主题模型为经过预处理的软件系统进行建模,为软件系统建立有层次的主题模型,最终生成软件系统的程序特征树,程序特征树以树的形式将系统的特征按层次展示出来,在该树中,父节点是特征的混合,孩子节点都是父节点的子特征,叶子节点则为划分最细的特征,最后,对叶子节点的特征与相应的代码进行匹配识别。软件系统的特征以树的形式展示出来,并且在最细的特征层次的节点识别匹配到相应的类文件,便于开发人员快速、准确、形象地理解软件系统。
发明内容
本发明的目的是提供一种基于层次主题模型的程序特征树的生成方法,使得开发人员可对整个系统有一个更加简单、逐步和快速的理解。
本发明的目的是这样实现的:一种基于层次主题模型的程序特征树的生成方法,其特征在于,步骤如下:
步骤1) 导入需要理解的软件系统的源代码;
步骤2) 提取用户自定义标识符以及注释作为研究对象,并对其进行预处理;
步骤3) 利用层次主题模型为经过预处理的对象进行建模,生成该系统的程序特征树,该程序特征树中的程序特征即为主题模型中提取的主题;
步骤4) 将叶子节点的特征与软件系统内的所有类文件进行匹配;
步骤5) 判断程序特征树是否有利于理解软件系统的大部分代码,是则输出程序特征树。
作为本发明的进一步限定,步骤2)的预处理过程包括以下步骤:
a)删除语义上和编程语言相关的关键字;
b)对一些按照驼峰规则和有下划短线相连的组合词进行分词;
c)去除英语停用词;
d)将词语的不同形式进行归一化。
作为本发明的进一步限定,步骤3)在建模时,先设定层次主题模型的层次L以及给定主题的数目K。
作为本发明的进一步限定,步骤4)的具体方法为,将所有类文件逐一与叶子节点的每个特征进行匹配,若某个类文件包含某个特征,则该类文件被分配到与该特征相关的集合中,并且,该类文件还需与其他特征进行匹配,即一个类文件可具有多个特征,同样一个特征下可具有多个类文件。
作为本发明的进一步限定,步骤5)的具体方法为,当软件系统中匹配成功的类文件数量占总类文件数量百分比大于等于80%时,判定程序特征树有利于理解软件系统的大部分代码,则输出程序特征树,否则回到步骤7)调节层次主题模型的层次和主题数目重新建模,重新将叶子节点的主题与相关类文件进行匹配。
与现有技术相比,本发明的有益效果在于, 本发明从整体到部分对系统特征分层会为开发人员建立一个更加易于理解的系统结构。在这个层次特征结果辅助下,开发人员会对整个系统有一个更加简单、逐步和快速的理解,可用于软件开发维护中。主要有如下一些优点:
(1)本发明提出利用层次LDA主题模型进行软件主题的提取,可以分析软件的功能方面的特征,从而更有助于软件开发人员对程序的直接理解和分析,找到他们感兴趣的功能代码;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410156738.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于WordNet的程序可读性分析方法
- 下一篇:业务处理方法和装置