APP下载

基于WEKA的软件维护性评价模型的实验研究

2012-12-26朱小冬

河北科技大学学报 2012年1期
关键词:源代码决策树度量

刘 丽,朱小冬,叶 飞

(1.军械工程学院装备指挥与管理系,河北石家庄 050051;2.石家庄机械化步兵学院教研部,河北石家庄 050003;3.武汉大学计算机学院,湖北武汉 430072)

基于WEKA的软件维护性评价模型的实验研究

刘 丽1,2,朱小冬1,3,叶 飞1

(1.军械工程学院装备指挥与管理系,河北石家庄 050051;2.石家庄机械化步兵学院教研部,河北石家庄 050003;3.武汉大学计算机学院,湖北武汉 430072)

为了能够对软件维护性进行评价,以类级软件维护性数据集为例进行了软件维护性实验,应用Logiscope对类的维护性做了定性评价;运用Krakatau Professional收集类各个度量的度量值;通过WEKA得到了类级度量关键属性;最后,选取决策树分类方法训练分类模型,并利用训练好的分类模型对测试集进行测试,得到基本满足要求的类级软件维护性评价模型。

软件维护性评价;Logiscope;Krakatau Professional;WEKA;决策树分类器

作为软件产品的重要质量特性,可维护性是软件开发阶段各个时期的关键目标,决定了软件可以被更改以满足用户要求或能检测到缺陷并予以改正的难易程度,其评估目的是确认软件系统的维护性是否达到设计或标准的要求。对软件可维护性进行度量和评价不仅有利于了解软件是否满足规定的可维护性要求,而且有助于及时发现设计缺陷,指导软件可维护性的分析与设计。

软件的最终产品是由源代码编译成的可执行文件,对软件的维护最终要落到对源代码的更改上。因此,对软件实现及实现后的基于源代码的软件维护性评价也是软件维护性评价的一个重要研究内容。通过基于源代码的软件维护性评价可以了解软件整体的维护性水平,并发现维护性薄弱环节,进而有针对性地改进源代码质量和维护性,最终保证软件具有良好的维护性。基于此,笔者试图对软件源代码的维护性进行评价。

笔者以面向对象软件的类维护性评价为对象,对收集的300个类级源代码(C++)进行了维护性评价实验,首先应用Logiscope依据ISO 9126软件质量模型对类的维护性进行了定性评价,对各类的维护性给出一个综合的优、良、可、差的结果。其次由于ISO 9126软件质量模型不易指导软件可维护性分析与设计,因此从规模、耦合度、内聚度、继承、复杂度5方面共选择了21个源代码度量集,运用Krakatau Professional对类的各个度量值进行度量,然后,考虑到度量数据过多,如果度量集都用来构造软件维护性评价模型,会导致构造模型的效率和模型的准确度严重下降,因此,提出了进行关键属性选择。最后,选取决策树分类方法训练分类模型,并利用训练好的分类模型对测试集进行测试,建立了基本满足要求的类级软件维护性评价模型,运用该评价模型可对系统中的各个类进行评价,发现系统维护性的薄弱环节——维护性差的类。

1 软件工具简介

1.1 Logiscope

Logiscope是法国Telelogic公司推出的专用于软件质量保证和软件测试的产品。其主要功能是对软件做质量分析和测试以保证软件的质量,并可做认证、反向工程和维护,特别是针对要求高可靠性和高安全性的软件项目和工程。本文用的是Logiscope的Audit工具,它可以定位错误模块,可评估软件质量及复杂程度,对系统各类的维护性进行定性评价。

1.2 Krakatau Professional

Krakatau Professional是一款软件度量工具,是为源代码质量而设计,是度量软件工具中的专家。该工具可对面向对象软件系统的各种特性进行度量。通过分析软件结构,在方法、类、模块和系统级上对软件维护性度量进行选择,并提供可视化的报告和图形化的输出。

1.3 WEKA

WEKA是基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data mining)软件。本文选用的是WEKA的Explorer数据处理模块,在此模块环境中,WEKA提供了数据的预处理、数据格式的转化(从CSV格式到ARFF格式的转化)、各种数据挖掘算法(包括分类与回归算法、聚类算法、关联规则等),并提供了结果的可视化工具。

2 实验方法与流程

2.1 度量集

评估软件可维护性,指标的合理选取至关重要。本文结合ISO 9126的软件维护性定义,对软件可维护性进行分类(如图1所示)。从规模、耦合度、内聚度、继承、复杂度5方面共选择了21个源代码度量集[1-4](如表1所示)。

2.2 软件维护性评价实验流程

本文对软件进行维护性评价,遵循图2所示的流程图。

图1 软件可维护性分类图Fig.1 Classification of software maintainability

2.2.1 数据预处理

数据预处理包括数据准备以及关键属性选择。

1)数据准备

要构建维护性评价模型,需要获得2组数据,一组是关于软件本身设计特性的数据,它评价模型中的自变量,另一组数据是软件维护性数据,它是模型中的变量。本文是通过表2所描述的维护性实验来获取软件维护性数据集的。

图2 软件可维护性评价流程图Fig.2 Flow of software maintainability evaluation model

表1 类级面向对象软件系统源代码度量集Tab.1 Class level OO software source code metrics set

表2 面向对象软件维护性实验描述Tab.2 Maintainability experiment(OO source code)

通过上述实验,其部分输出结果见表3。

表3 部分结果Tab.3 A part of the output

2)关键属性选择

选择关键属性来建造软件维护性评价模型是本文建模中的一个重要问题,由于维数灾难,所列的度量集不可能都被用来进行软件维护性评价模型的训练。如果度量集都用来构造软件维护性评价模型,会导致构造模型的效率和模型的准确度严重下降。在收集的类的软件维护性度量之中,有太多的度量需要学习方案进行处理,其中部分属性是无关或者重复的。因此,需要对属性进行选择,选择出关键属性,消除高度相关的其他属性运用于学习中。

本文选用WEKA中的CfsSubsetEval评估器和多种搜索算法,属性选择的模式采用将数据全集作为训练和测试集,classperformence属性作为分类属性,对类的度量数据集进行处理。CfsSubset Eval评估器可逐一评估每个属性的预测能力和它们之间的重复程度,进而选择那些与类有高度关联但相互之间关联程度却较低的属性。根据数据特点及搜索算法与属性子集评估器的匹配原则,选取了WEKA工具中集成的属性空间搜索方法中的5种搜索算法进行了实验。它们分别是:Best First算法、Greedy Stepwise算法、ExhaustiveSearch算法、GeneticSearch算法和RandomSearch算法。由于篇幅有限,仅给出采用Best First算法对属性子集进行搜索的结果显示,如图3所示。

综合以上5种算法搜索属性子集的结果,可知第2,3,4,14,16,19(对应的是 OSavg,CSAO,CSO,NOOC,PPPC,SLOC)项属性是关键属性,其在软件维护体系中,占更重要的作用。

2.2.2 软件维护性评价模型建立与检验

图3 Best First算法属性选择结果Fig.3 Outcome of attribute choice base on Best First

本文采用C4.5决策树算法[5-8]来构建软件维护性评价模型。C4.5算法是目前应用最为广泛的机器学习算法。该算法可以描述成从一个假设空间中搜索一个拟合训练样例的假设。被算法搜索的假设空间就是可能的决策树的集合。该算法以一种从简单到复杂的爬山算法遍历这个假设空间,从空的树开始,然后逐步考虑更加复杂的假设,目的是搜索到一个正确分类训练数据的决策树。它通过2个步骤来构造决策树:决策树的生成阶段和剪枝阶段。

1)决策树生成阶段

决策树生成阶段,即建立一个模型。建立过程可简述如下:从根节点开始在每个节点上按照给定标准选择测试属性,然后按照相应属性的所有可能取值向下建立分枝、划分训练样本,直到一个节点上的所有样本都被划分到同一个类,或者某一节点中的样本数量低于给定值为止。此阶段需要有一个训练集作为输入,因此,将前270个实例作为一个训练集来训练分类器。首先将训练数据集载入WEKA下的Explorer模块,去掉classname一列属性,然后选用J48算法(它是C4.5决策树分类算法在WEKA中的实现),模型测试模式选择10折交叉验证(将初始数据集划分为10个互不相交的折,每个折的大小大致相等,训练和测试进行10次迭代),分类属性为classperformence,如图4所示。点击“Start”开始训练模型,最后得到模型并保存模型,其图形化形式如图5所示。该图是对软件维护性进行分类,其中每个内部节点(矩形框)代表对某个属性的一次检测,一条边代表测试的结果,每个叶子节点(椭圆框)代表一个类。最上面的节点是根节点。

图4 模型训练算法选择及参数设置Fig.4 Arithmetic of choice and setup of parameters

决策树符合IF-THEN规则,如下所示。

2)剪枝阶段

利用训练好的分类模型预测软件维护性,来检验预测的准确度。此阶段需用非训练集的实例检验,因此,将后30个实例用来测试预测结果的准确度。通过选择图4中的“Supplied test set”找到测试集的路径,将包含30个实例的测试集载入到模型中。得到预测输出与测试数据集中的分类的不同,对比可得其预测的准确率为80%,基本达到了对软件维护性评价的目的。运用该评价模型可对系统中的各个类进行评价,发现系统维护性的薄弱环节——维护性差的类。

图5 决策树分类模型的图形化表示Fig.5 Graphic show of decision tree classifier model

3 结 语

通过维护性实验获取了实现阶段源代码度量的数据以及可维护性的关键属性,利用这些数据构建了基于类级源代码度量的软件可维护性评价模型,模型经过检验表明,达到了对软件维护性评价的目的。运用该评价模型可对系统中的各个类进行评价。

在下一步的研究中,将尝试对系统级和模块级的维护性进行评价;并运用多种方法对数据集进行分析和建模,以建立最优的软件维护性评价模型。

[1]THWIN M M T,QUAH T S.Application of neural networks for software quality prediction using object-oriented metrics[J].Journal of Systems and Software,2005,76(2):147-156.

[2]LI W,HENRY S.Object-oriented metrics that predict maintainability[J].Journal of Systems and Software,1993,23(2):111-122.

[3]BANDI R K,VAISHNAVI V K,TURK D E.Predicting maintenance performance using object-oriented design complexity metrics[J].IEEE Transactions on Software Engineering,2003,29(1):77-87.

[4]FENTON N E,NEIL M.Software measurement:Uncertainty and causal modeling[J].IEEE Software,2002,19(4):116-122.

[5]张云涛,龚 玲.数据挖掘原理与技术[M].北京:电子工业出版社,2004.

[6]TODOROVSKI L,DZEROSKI S.Combining multiple models with meta decision trees[J].Principles of Data Mining and Knowledge Discovery,2000,19(10):69-84.

[7]YAO Y,FU Z L,ZHAO X H,et al.Combining classifier based on decision tree[A].Information Engineering,2009[C].Taiyuan:ICIE′09 WASE International Conference,2009.37-40.

[8]李 萍,李法朝.基于决策树的知识表示模型及其应用[J].河北科技大学学报(Journal of Hebei University of Science and Technology),2009,30(2):87-91.

Experimental research in evaluation model of software maintainability based on WEKA

LIU Li1,2,ZHU Xiao-dong1,3,YE Fei1
(1.Department of Equipment Command and Management,Ordnance Engineering College,Shijiazhuang Hebei 050051,China;2.Department of Teaching and Research,Shijiazhuang Mechanized Infantry Academy,Shijiazhuang Hebei 050003,China;3.School of Computer,Wuhan University,Wuhan Hubei 430072,China)

In order to evaluate software maintainability,an experiment was made about class dates of software maintainability.Class maintainability was qualitatively evaluated by applying Losiscope.Some class metrics were collected by using Krakatau Professional,metric attributes were analysed through WEKA and the key attributes were obtained.At last,professional class model was trained through decision tree classifier,and the model was tested.

evaluation of software maintainability;Logiscope;Krakatau Professional;WEKA;decision tree classfier

TP301

A

1008-1542(2012)01-0069-05

2011-10-13;

2011-11-11;责任编辑:王海云

装备预先研究项目

刘 丽(1980-),女,河北鹿泉人,讲师,博士研究生,主要从事装备软件保障与应用方面的研究。

猜你喜欢

源代码决策树度量
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
基于TXL的源代码插桩技术研究
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
一种针对不均衡数据集的SVM决策树算法
决策树和随机森林方法在管理决策中的应用
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
基于决策树的出租车乘客出行目的识别
揭秘龙湖产品“源代码”