一种基于LDA主题建模的软件可理解性确定方法及系统技术方案

技术编号:30799130 阅读:44 留言:0更新日期:2021-11-16 08:04
本发明专利技术涉及一种基于LDA主题建模的软件可理解性确定方法及系统,所述方法包括:获取待测软件的源代码;对所述源代码进行静态扫描,分析软件中类以及类中的各函数和变量;获取类所包含的函数和变量,并将所述函数和所述变量一一对应;对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋;基于所述映射好的词袋进行主题建模,得到每个类对应的主题词;衡量主题词与类的相似程度;基于所述主题词与类的相似程度确定每个类文件的可理解性;基于所述每个类文件的可理解性确定整个软件的可理解性。本发明专利技术中的上述方法弥补了现有技术的空白。有技术的空白。有技术的空白。

【技术实现步骤摘要】
一种基于LDA主题建模的软件可理解性确定方法及系统


[0001]本专利技术涉及计算机软件处理领域,特别是涉及一种基于LDA主题建模的软件可理解性确定方法及系统。

技术介绍

[0002]计算机软件与硬件相比,软件的一个特点是软件没有硬件或硬件所使用的材料具有的硬性物理规律,然而这也往往带来了一个问题:软件质量标准的统一与评价落实到真实工作中不到位,落实不严格。在国际通用的软件质量评价(如ISO/IEC定义的SQuaRE)的准则中,虽然详细规定了软件质量的具体要求,但是就如Naohiko Tsuda等人所提的那样,这些准则十分笼统且抽象,往往不适合直接真实应用于开发实践中,或者根据其进行设计的要求准则不能准确的反应其思想。
[0003]软件的质量评价往往包括了代码可读性,软件的可维护性,软件的执行效率,软件缺陷存在效率等多个方面的评价指标。而我们单单看软件代码的可读性方面,其主要是代码规范程度和程序员的个人素养体现,经验丰富的软件开发工程师往往遵循业界既定的要求,比如命名规范,注释清晰具体且全面等等。这些无一不是软件质量中的软件可读性的体现,同时清晰易懂的代码函数变量名、详细准确的代码注释,也是软件可维护性的要求之一。并且,类、函数(或者方法)、变量的命名在软件从业者的思想中有如下共识:命名要与实际代表的意义相一致,即见名知意。
[0004]因此,面对此种情形,本方法提出了一种基于LDA主题建模的软件类代码可理解性的评估方法,使用主题建模方法对面向对象的软件类进行建模分析,使用WordNet相似度计算算法来衡量一个类的名称与建模结果的相近程度,以此来衡量一个类代码的可理解性程度。

技术实现思路

[0005]本专利技术的目的是提供一种基于LDA主题建模的软件可理解性确定方法及系统,能够确定软件整体的可理解性。
[0006]为实现上述目的,本专利技术提供了如下方案:
[0007]一种基于LDA主题建模的软件可理解性确定方法,所述方法包括:
[0008]获取待测软件的源代码;
[0009]对所述源代码进行静态扫描,分析软件中类以及类中的各函数和变量;
[0010]获取类所包含的函数和变量,并将所述函数和所述变量一一对应;
[0011]对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋;
[0012]基于所述映射好的词袋进行主题建模,得到每个类对应的主题词;
[0013]衡量主题词与类的相似程度;
[0014]基于所述主题词与类的相似程度确定每个类文件的可理解性;
[0015]基于所述每个类文件的可理解性确定整个软件的可理解性。
[0016]可选的,所述方法在步骤“基于所述映射好的词袋进行主题建模,得到每个类对应的主题词”之后,步骤“衡量主题词与类的相似程度”之前,还包括:
[0017]对主题词进行优化,选取最优主题词。
[0018]可选的,所述衡量主题词与类的相似程度具体包括:
[0019]遍历类名称列表中的单词,记为Class Word;
[0020]遍历主题词列表中的词,记为Topic Word;
[0021]采用Word Net相似度计算方法计算所述Class Word和所述Topic Word的相似度;
[0022]遍历主题词列表中的下一个词,重复前一步骤,直到主题词列表中的词遍历完毕;
[0023]选取与Class Word相似度最高的Topic Word作为最终匹配词;
[0024]遍历类名称列表中的下一个单词,重复上述步骤,直到类名称列表中的所有单词遍历完毕。
[0025]可选的,所述分析软件中类以及类中的各函数和变量具体采用静态代码分析工具分析软件中类以及类中的各函数和变量。
[0026]可选的,对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋具体包括:
[0027]对所述类以及所述类所属的函数和变量进行分词处理;
[0028]对分词处理后的类以及所述类所属的函数和变量进行停用词处理;
[0029]对停用词处理后的类以及所述类所属的函数和变量进行词性还原和词干提取;
[0030]将词性还原和词干提取后的类以及所述类所属的函数和变量,根据类和它的内部元素的从属关系,一一对应地将每个类映射为一个个词袋。
[0031]可选的,对所述类以及所述类所属的函数和变量进行分词处理具体是基于驼峰规则、下划线规则以及贪婪算法进行分词处理。
[0032]可选的,所述对停用词处理后的类以及所述类所属的函数和变量进行词性还原和词干提取具体是采用波特算法进行词性还原和词干提取。
[0033]可选的,基于所述映射好的词袋进行主题建模,得到每个类对应的主题词具体是采用LAD算法进行主题建模。
[0034]可选的,所述基于所述每个类文件的可理解性确定整个软件的可理解性具体包括:
[0035]对每个类文件的可理解性采用K

means算法进行聚类划分,得到整个软件的可理解性。
[0036]本专利技术另外提供一种基于LDA主题建模的软件可理解性确定系统,所述系统包括:
[0037]源代码获取模块,用于获取待测软件的源代码;
[0038]静态扫描模块,用于对所述源代码进行静态扫描,分析软件中类以及类中的各函数和变量;
[0039]函数及变量对应模块,用于获取类所包含的函数和变量,并将所述函数和所述变量一一对应;
[0040]数据清洗模块,用于对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋;
[0041]主题建模模块,用于基于所述映射好的词袋进行主题建模,得到每个类对应的主
题词;
[0042]相似程度计算模块,用于衡量主题词与类的相似程度;
[0043]类文件的可理解性确定模块,用于基于所述主题词与类的相似程度确定每个类文件的可理解性;
[0044]软件的可理解性确定模块,用于基于所述每个类文件的可理解性确定整个软件的可理解性。
[0045]根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:
[0046]本专利技术中的方法首先通过获取类的函数(方法)、变量等能反应类所具有功能或者含义的代码片段等数据,确保取到了最能反应软件类功能含义的代码段,并在此阶段根据编程语言的特性和实验总结,自建了停用词列表,对数据进行了去除停用词等清洗处理,并将数据中的词映射为词袋,在此基础上,保证了主题建模结果的准确性,本专利技术完成了对代码的数据处理词干还原,词袋映射,主题建模,再到评估软件类的可理解性程度都是全自动完成,填补了没有方法具体地量化衡量一个软件类的可理解性程度这一空白。
附图说明
[0047]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于LDA主题建模的软件可理解性确定方法,其特征在于,所述方法包括:获取待测软件的源代码;对所述源代码进行静态扫描,分析软件中类以及类中的各函数和变量;获取类所包含的函数和变量,并将所述函数和所述变量一一对应;对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋;基于所述映射好的词袋进行主题建模,得到每个类对应的主题词;衡量主题词与类的相似程度;基于所述主题词与类的相似程度确定每个类文件的可理解性;基于所述每个类文件的可理解性确定整个软件的可理解性。2.根据权利要求1所述的基于LDA主题建模的软件可理解性确定方法,其特征在于,所述方法在步骤“基于所述映射好的词袋进行主题建模,得到每个类对应的主题词”之后,步骤“衡量主题词与类的相似程度”之前,还包括:对主题词进行优化,选取最优主题词。3.根据权利要求1所述的基于LDA主题建模的软件可理解性确定方法,其特征在于,所述衡量主题词与类的相似程度具体包括:遍历类名称列表中的单词,记为ClassWord;遍历主题词列表中的词,记为TopicWord;采用WordNet相似度计算方法计算所述ClassWord和所述TopicWord的相似度;遍历主题词列表中的下一个词,重复前一步骤,直到主题词列表中的词遍历完毕;选取与ClassWord相似度最高的TopicWord作为最终匹配词;遍历类名称列表中的下一个单词,重复上述步骤,直到类名称列表中的所有单词遍历完毕。4.根据权利要求1所述的基于LDA主题建模的软件可理解性确定方法,其特征在于,所述分析软件中类以及类中的各函数和变量具体采用静态代码分析工具分析软件中类以及类中的各函数和变量。5.根据权利要求1所述的基于LDA主题建模的软件可理解性确定方法,其特征在于,对所述类以及所述类所属的函数和变量进行数据清洗,得到映射好的词袋具体包括:对所述类以及所述类所属的函数和变量进行分词处理;对分词处理后的类以及所述类所属的函数和变量进行停用词处...

【专利技术属性】
技术研发人员:艾骏邵义康施韬时浩翔张丛然
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1