老哥学习网 - www.lg9.cn 2024年04月30日 05:10 星期二
当前位置 首页 >情感故事 >

【基于缺陷分层与PSO算法的软件缺陷预测模型】 kmp算法next计算方法

发布时间:2019-01-17 19:43:29 浏览数:

  摘 要:根据软件开发分层的思想,提出了基于软件缺陷分层的测试构架。在缺陷分层的测试架构下可以知道测试类之间的的关系和属性,容易发现关联缺陷。本文是在软件缺陷分层测试架构下结合粒子群优化(PSO)算法建立软件缺陷预测模型,并通过模拟实验验证预测模型的性能。结果显示该模型能有效提高预测缺陷效率和缺陷发生位置。
  关键词:软件测试;缺陷预测;粒子群优化;缺陷分层;
  中图分类号:TP311 文献标识码:a DoI: 10.3969/j.issn.1003-6970.2012.02.017
  Software Defect Prediction Model Based on Defect Layered and Particle Swarm Optimization Hao Shijin , CUI Donghua(Taiyuan University of Technology, Taiyuan 030024, China)
  【Abstract】 according to the software development of hierarchical thinking,this paper puts forward testing framework based on defect
  tiered.In this case,we can know relationship between classes,easy to find related defects. This paper establishes a software defect prediction model combines oftware defects of stratification testing framework and particle swarm optimization ( PSO ) algorithm, through simulation and experimental verification of the performance of prediction models. The result shows that the model can effectively improve the defect prediction efficiency and defect position.
  【Key words】Software defect; Software testing; particle swarm optimization;
   0 引 言
  随着近年来对软件质量要求的提高,软件缺陷预测也被重视。软件缺陷预测可以帮助软件开发评估软件质量,从而可以控制和去除缺陷,降低开发成本,所以开发和研究有效的软件缺陷预测模型是有必要的。
  软件缺陷预测技术包括静态缺陷预测和动态缺陷预测。预测方法有逻辑回归法(LR)、人工神经网络(ANN)、多元线性回归(MLR)、LDA判别法、支持向量机(SVM)等[1]。
  但以往的任何缺陷预测模型是建立在软件整体缺陷数据进行统计分析并建模的,本论文是在软件缺陷分层的基础上结合粒子群优化算法建立软件缺陷预测。
  研究表明,好的软件缺陷预测是可以有效的提高软件的质量和可靠性,所以研究软件软件缺陷预测是很有现实意思的[2]。
   1 相关工作
   1.1 软件缺陷预测
  软件缺陷预测是在1992年由Briand首次提出[3],意思是通过对软件和软件产生的特性进行统计分析,发现缺陷发生的概率和其内在规律,通过建立软件缺陷预测模型来可以减少软件开发和维护成本,减低缺陷率,也可以评估软件的质量。
   1.2 软件缺陷预测
  根据软件开发分层的思想,提出了基于软件缺陷分层的测试构架。根据分层可分为需求层缺陷、软件设计层缺陷、软件编码层缺陷和系统实现层缺陷,根据缺陷分层可以设计相应的测试分析方法,如软件编码层选择开发语言,现在好多学者在研究对某一开发语言引起的缺陷,并对引起缺陷进行分析,并基于这种缺陷模式进行软件测试[4]。
  软件需求层缺陷中有不可修改性、不可实现性、前后不一致、不完整、理解二义性等,如图一。软件设计层缺陷包括可靠性设计缺陷、失效路径缺陷、依赖关系错误缺陷、架构质量属性设计缺陷、资源储量设计缺陷等。软件编码层缺陷包括代码性能缺陷、接口代码缺陷、返回值错误、边界溢出缺陷、死循环、死锁缺陷等。系统实现层包括功能交互缺陷、兼容性缺陷、性能缺陷、资源竞争缺陷等。
   1.3 基于软件缺陷分层和PSO算法的软件缺陷预测
   1.3.1 粒子群(PSO)算法
  粒子群优化算法早期是为了模拟鸟群的行为而设计的,即Boid模型。模型是:每一只鸟当为一个个体,用直角坐标系上的一点表示,随机地给他们初速度和初位置,模型中每运行一步就按照“最近邻速度匹配”,如此迭代下去,很快就得到所有点速度一样。由于与现实不符合,在每一步还有添加随机量, 这样更真实。
  设搜索空间为D维,总粒子数为n。第i个粒子位置表示为向量Xi=( xi1, xi2,…, xiD);第i个粒子 “飞行”历史中的过去最优位置(即该位置对应解最优)为Pi=(pi1,pi2,…,piD),其中第g个粒子的过去最优位置Pg为所有Pi(i=1, …,n)中的最优;第i个粒子的位置变化率(速度)为向量Vi=(vi1, vi2,…, viD)。每个粒子的位置按如下公式进行变化(“飞行”):
  Xi=(xi1,xi2,…,xin) pi=(pi1,pi2,…pin) pg=(pg1,pg2,…pgn)
  Vid(t+1)=w*vid(t)+c1*rand()*[pid(t)-xid(t)]+ c2*rand()*[pgd(t)-xgd(t)] (1)
  Xid(t+1)=xid(t)+vid(t+1) 1≤i≤n 1≤d≤D (2)
  其中,C1,C2为正常数,称为加速因子;rand( )为[0,1]之间的随机数;w称惯性因子,w较大适于对解空间进行大范围探查(exploration),w较小适于进行小范围开挖(exploitation)。第d(1≤d≤D)维的位置变化范围为[-XMAXd , XMAXd],速度变化范围为[-VMAXd , VMAXd],迭代中若位置和速度超过边界范围则取边界值。
  1.3.2 软件缺陷预测模型结构
  以往对软件缺陷分析预测仅仅是在整体所以软件缺陷中利用各种算法,本文是在缺陷分层测试架构的基础上与PSO算法相结合的软件缺陷预测模型[5]。
  软件缺陷预测模型结构如图2,是结合软件缺陷分层再根据文献5中的方法进行建立缺陷预测模型。好处就是不仅能预测的缺陷,还能预测哪里发生的缺陷。
  1.3.3 基于PSO算法描述
  本文是使用的是在粒子群优化算法基础上改进算法PSONB,意思是将属性离散化,利用粒子群算法和贝叶斯分类法相结合寻找最优分割点。本文以贝叶斯分类错误率为适应值函数。
  第一步,初始化种群,设粒子群维数为X,最大迭代为M,学习因子为2,属性分类等级为3,那么我们选择两个分割点即可。
  第二步,根据种群中每个粒子位置,利用贝叶斯算法计算机出分类错误率,并返回显示粒子群个体的最优点、全局最优点。
  第三步,按照步骤1.计算每一个粒子的位置和速度。
  第四步,x=x+1。
  第五步,判断x 2 基于缺陷分层与PSO算法的软件缺陷预测模型实验
   2.1 实验数据
  实验数据是某软件开发公司一个数据包,该数据包共有13个数据集,其中一个数据集中编码层如图,可使用贝叶斯分类法。贝叶斯分类是利用概率统计进行分类的。
   2.2 模拟实验分析
  本文共有10000个样本,本文从中选择2000作为训练样本,再剩下的随机选择了1000个作为测试样本。设M=50, X=7,实验结果如表1。
  
  图3 编码各个层次的关系
  Fig.3 the coding layer each module relationgship
  表1 编码层数据离散化结果
  Tab.1 The coding layer data discretization results
  
   3 结 论
  基于软件缺陷分层的软件预测模型可以很好的指导软件测试,提高软件缺陷预测精度,但是现在是刚刚提出理论阶段,实际上无形的加大基础工作量,下一步将研究这方面。
  参考文献
  [1] 涂亚明,毛军鹏,于静,尹磊.系统测试阶段的软件缺陷预测模型.第六届中国测试学术会议论文集.合肥.2010.164-167
  [2] M Cusumano,A MacCormack,C Kemerer,W Crandall.Software development worldwide[A].IEEE Computer Society[C].2004. 28-34.
  [3] 董恩梅.改进PSO与模糊积分软件缺陷预测方法研究[D].武汉:华中师范大学,2011.
  [4] 曾福萍,勒惠亮,陆民燕 软件缺陷模式的研究[J].计算机科学,2011,38(2):127-130
  [5] 葛贺贺,金聪,叶俊民.基于PSO和朴素贝叶斯的软件缺陷预测模型[J].计算机工程,2011,37(12)36-37.

推荐访问:缺陷 分层 算法 模型

相关文章:

Top