论文部分内容阅读
代码复用是一种重要的软件复用方式。复用者需要理解软件代码实现的功能。近些年,如何辅助复用者理解代码功能成为了软件复用的研究热点之一。基于主题建模技术的程序理解方法逐渐受到研究人员的重视。与传统分析方法相比,该方法具有抽象层次高、面向语义等特点,更贴近于复用者理解代码功能的方式。其中,潜在狄利克雷分配(Latent Dirichlet Allocation,简称LDA)技术是目前一种较为流行的主题建模技术。 为了辅助复用者理解代码功能,本文提出了一种基于代码静态分析和LDA技术的代码功能挖掘(Code Function Mining,简称CFM)方法。CFM方法是一套以代码为研究对象的挖掘、筛选、组织和描述主题(Topic)的方法,该方法能够生成带描述的功能型Topic的层次结构。功能型Topic的描述能够帮助复用者理解代码功能,其层次结构能够让复用者从不同抽象层次理解代码功能。目前,基于主题建模技术的程序理解方法一般欠缺对挖掘出的Topic的语义分析,CFM方法可作为对这类方法的补充。 CFM方法包括四个部分: 1)挖掘Topic:首先进行代码预处理,对代码采取选词、切词、过滤、词根化等操作,生成一个单词集;然后,利用经典LDA算法从单词集中挖掘Topic。 2)筛选Topic:利用代码静态分析技术分析Topic关联的代码之间关系的紧密程度,区分功能型Topic和其它类型的Topic。 3)组织Topic:依据Topic的代码关联概率分布,分析不同抽象层次的Topic之间的相似度,使低抽象层次Topic作为与它相似度最高的高抽象层次Topic的子Topic,从而形成功能型Topic的层次结构。 4)描述Topic:本文提出了一种功能型Topic的描述模型:一个功能型Topic的描述由文字性描述、核心类或接口、方法示例三部分组成。CFM方法自动地从代码中提取信息描述Topic。 以CFM方法为基础,本文设计并实现了一个CFM工具。CFM工具能够分析用户提交的代码,通过Web页面向用户展示带描述的功能型Topic的层次结构。最后,本文对CFM方法中的几个关键算法进行实验分析,验证了CFM方法的有效性。