当前位置: 首页 > 专利查询>中山大学专利>正文

一种软件易变性预测模型的构建方法技术

技术编号:14882657 阅读:73 留言:0更新日期:2017-03-24 05:01
本发明专利技术提供一种软件易变性预测模型的构建方法,该方法使用相似度来定义软件易变性,符合软件外部属性,如需求、功能变化时,体现在源代码上的变化,使用了目前所能定义的大部分度量,得到的度量信息更为全面,并对这些原始度量使用特征提取与选择的技术,提高了模型的计算性能,减少了因特征过多造成的信息冗余。即能够使用更多的度量信息,又能够避免过多的特征而影响模型性能。

【技术实现步骤摘要】

本专利技术涉及软件度量领域,更具体地,涉及一种软件易变性预测模型的构建方法
技术介绍
软件易变性:在软件工程中,软件的一些外部质量特性,比如软件缺陷、软件可维护性等,在整个软件的生命周期中是十分重要的特性,有研究表明,一般情况下软件的维护成本占总成本的40-70%。软件易变性,也叫软件构件易变性,是指软件中的部件有较大的概率发生变化。对软件易变性的预测能够帮助我们重点关注软件的可能变化的区域,在很大程度上减少维护成本。面向对象软件度量:度量,指的是将数值或符号赋给实体的属性的过程。进一步地,面向对象软件度量指的是对一个基于面向对象语言开发的软件系统,在面向对象特性上的度量。其中,比较有代表性的面向对象软件度量有C&K度量。Chidamber和Kemerer在1994年发表论文提出了一套面向对象度量,简称C&K度量,其中包括6个方面的度量指标,分别是:类加权方法个数(WMC)、继承树深度(DIT)、直接子类数(NOC)、类耦合程度(CBO)、类响应集合(RFC)、类内聚度缺乏度(LCOM)。除此之外,也有不少研究者在此基础上,提出新的一系列度量指标。目前这些度量指标大致可以划分为四类度量:规模类度量、耦合度度量、内聚度度量、继承类度量。前馈多层感知算法:前馈多层感知器算法,又称前馈神经网络,是一种机器学习分类算法,能够解决线性不可分问题。一个神经网络由一个输入层、一个或多个隐藏层和一个输出层组成,其中各层中的节点是全连接的。训练一个神经网络用于分类,最重要的是确定神经网络的规模,以及使用合适的代价函数,通过训练数据学习神经网络中的各个突触的权重。虽然面向对象软件度量本身是一种描述软件在某个方面上的特征,但是由于目前缺乏对所有度量的认知,直接使用若干种面向对象软件度量作为特征,可能会遗漏软件在某些方面的特性,但是如果把更多的度量加进特征集合内,却会因为某些特征的高度相关,导致信息冗余,反而影响预测模型的性能。
技术实现思路
本专利技术提供一种软件易变性预测模型的构建方法,该方法用于预测软件部件的变化,同时可得到软件系统的维护成本的评估意见。为了达到上述技术效果,本专利技术的技术方案如下:一种软件易变性预测模型的构建方法,包括以下步骤:S1:以面向对象软件系统中的类为研究对象,提取软件源代码的结构信息;S2:通过S1中提取到的源代码结构信息,计算面向对象软件度量,包括规模类度量、耦合度度量、内聚度度量、继承类度量;S3:通过对比在软件演化中不同版本所对应的类的变化情况,通过类相似度来定义并解析出类的易变性信息,该易变性信息包括分类标签;S4:对S2中计算得到的面向对象软件度量,对得到的度量进行分类,分别对各类度量做进一步的特征提取和选择,得到新的特征集合;S5:使用S3中得到的分类标签与S4中得到的特征集合,生成软件易变性预测模型的训练集,使用前馈多层感知器算法训练出预测模型。进一步地,所述的软件源代码的结构信息包括程序的抽象语法树、程序的符号表,以及类间方法属性调用关系。进一步地,通过EclipseJDT得到程序的抽象语法树,通过遍历抽象语法树得到符号表,进而得到相应类的方法属性间的调用关系。进一步地,所述类的相似度是:相对于基线版本,在对比版本的对应的类中的字段、方法,以及继承关系等的相似情况;对于类中的字段,相似度考察的是该字段的类型,变量名是否相同;对于类中的方法,相似度考察的是该方法的方法名、参数类型、返回值类型,以及抛出异常类型是否相同。进一步地,对S2中计算得到的面向对象软件度量进行特征提取和选择,分别分析规模类、内聚度、耦合度、继承类度量与软件易变性的相关性,选择相关度较高的度量组成度量集合,对该度量集合进行主成分分析进行数据降维,去除冗余信息,得到一组新的特征集合,以该组特征集合作为前馈多层感知器算法的输入即前馈神经网络的输入层,使用收集到的训练数据集,选择特定的参数,训练得到软件易变性预测模型。与现有技术相比,本专利技术技术方案的有益效果是:本专利技术方法使用相似度来定义软件易变性,符合软件外部属性,如需求、功能变化时,体现在源代码上的变化,使用了目前所能定义的大部分度量,得到的度量信息更为全面,并对这些原始度量使用特征提取与选择的技术,提高了模型的计算性能,减少了因特征过多造成的信息冗余。即能够使用更多的度量信息,又能够避免过多的特征而影响模型性能。附图说明图1为本专利技术流程图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本专利技术的技术方案做进一步的说明。实施例1本专利技术一种软件易变性预测模型的构建方法,包括以下步骤:(1)提取面向对象软件源代码的结构信息本方法提取软件源代码结构信息,为了支持一系列面向对象软件度量而设计。首先,使用EclipseJDT得到Java程序的抽象语法树;然后通过遍历得到的抽象语法树节点,获得程序中的名字定义和名字引用,进而得到管理程序实体的符号表。进一步地,通过对符号表的访问,可以得到类的方法引用矩阵、方法属性引用矩阵等信息。(2)计算面向对象软件度量通过得到的符号表、方法引用矩阵和方法属性引用矩阵等软件结构信息,可以对目前提出的大部分度量值进行计算,其中大致可以分为以下四类度量:1)规模类度量规模类度量,指的是衡量对面向对象实体的在数量和规模上的大小。通常认为,规模越大,软件出现错误的可能性越大,维护的难度越大。其中比较有代表性的度量有:有效代码行数(ELOC)、类字段数(FLD)、类方法数(MTHD)、局部变量数(LOCV)等。2)耦合度度量耦合度度量用于衡量当前模块与其他模块的联系的紧密程度。通常认为耦合度较低的模块较易理解和维护。其中比较有代表性的度量有:耦合类个数(CBO)、类的响应集合(RFC)、类属性为类类型个数(DAC)、类中方法调用中,非该类实现方法的个数(MPC)等。3)内聚度度量内聚度度量主要关注类的方法之间,方法与属性之间的交互。主要有以下度量:类内聚缺乏度(LCOM)、方法对相似度之和与方法对数的比值(CC)、所有方法信息流之和(ICH)等。4)继承类度量继承类度量主要表示类的深度以及子类父类个数的度量。主要有:继承深度(DIT),也就是类到继承树的根节点的最长路径长度、类的子类个数(NOC)。类的祖先类个数(NOA)等。(3)定义并收集软件易变性历史信息本专利技术使用类的相似度(Similarity)的值定义软件易变性,具体地:其中对于相似度的计算,具体地:其中,NSST为classA在版本间相同超类的个数,NSF为相同字段数,NSM为相同方法数,NA为基线版本的属性个数,当classA在两个版本的类名相同时,Θ为1,否则为0。假设当前软件有n(n>=5)个版本,根据当前软件的具体情况,一般地,随机抽样n/2个版本序号,按升序排列得到{Version_1,Version_2,……,Version_n/2本文档来自技高网
...
一种软件易变性预测模型的构建方法

【技术保护点】
一种软件易变性预测模型的构建方法,其特征在于,包括以下步骤:S1:以面向对象软件系统中的类为研究对象,提取软件源代码的结构信息;S2:通过S1中提取到的源代码结构信息,计算面向对象软件度量,包括规模类度量、耦合度度量、内聚度度量、继承类度量;S3:通过对比在软件演化中不同版本所对应的类的变化情况,通过类相似度来定义并解析出类的易变性信息,该易变性信息包括分类标签;S4:对S2中计算得到的面向对象软件度量,对得到的度量进行分类,分别对各类度量做进一步的特征提取和选择,得到新的特征集合;S5:使用S3中得到的分类标签与S4中得到的特征集合,生成软件易变性预测模型的训练集,使用前馈多层感知器算法训练出预测模型。

【技术特征摘要】
1.一种软件易变性预测模型的构建方法,其特征在于,包括以下步骤:S1:以面向对象软件系统中的类为研究对象,提取软件源代码的结构信息;S2:通过S1中提取到的源代码结构信息,计算面向对象软件度量,包括规模类度量、耦合度度量、内聚度度量、继承类度量;S3:通过对比在软件演化中不同版本所对应的类的变化情况,通过类相似度来定义并解析出类的易变性信息,该易变性信息包括分类标签;S4:对S2中计算得到的面向对象软件度量,对得到的度量进行分类,分别对各类度量做进一步的特征提取和选择,得到新的特征集合;S5:使用S3中得到的分类标签与S4中得到的特征集合,生成软件易变性预测模型的训练集,使用前馈多层感知器算法训练出预测模型。2.根据权利要求1所述的软件易变性预测模型的构建方法,其特征在于,所述的软件源代码的结构信息包括程序的抽象语法树、程序的符号表,以及类间方法属性调用关系。3.根据权利要求2所述的软件易变性预测模型的构建方法,其特征在于,通过Ecl...

【专利技术属性】
技术研发人员:赖蔚周晓聪
申请(专利权)人:中山大学
类型:发明
国别省市:广东;44

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

1