APP下载

基于属性排查的软件运行风险多目标控制仿真

2021-11-17张开利

计算机仿真 2021年9期
关键词:排查粒子矩阵

张开利,李 俊

(1.辽东学院工程技术学院,辽宁 丹东 118003;2.广州大学电子与通信工程学院,广东 广州 510006)

1 引言

目前,软件行业产生了众多以软件项目研发进度延期、投资成本超支及运行质量缺陷为特征的软件危机,其中软件运行缺陷是损失最为惨重的危机之一。为完善软件运行质量,就要对其运行风险采取有效评估,并依照真实的风险情况使用必要的控制措施,最大限度降低风险[1-2]。在软件研发与实践中,由于人力、资金或时间等方面的限制,无法有效识别出全部的风险因素,且软件运行风险会伴随时间的推移产生风险积累与扩散,不同的风险属性之间会互相作用与影响[3]。

针对上述问题,本文将传统软件运行风险控制目标延伸为多个,同时全面总结软件风险之间的属性问题,提出一种基于属性排查的软件运行风险多目标控制方法。规划不同的软件属性项目,使用自乘运算推导出所有属性影响值,并在属性间的影响边中代入影响值,使用可达矩阵理论规范化直接影响矩阵,计算各个软件属性影响的延伸水准,起到软件全局质量评估作用;通过风险相关性,构建软件运行风险多目标控制模型,使用多目标粒子群算法进行模型求解,实现高效精准的软件运行风险控制。

2 基于属性排查的软件质量评估方法

软件运行风险多目标控制之前,首先要全方位分析软件目前的整体状态,判断软件运行是否存在风险行为,提出一种基于属性排查的软件质量评估方法。软件属性排查过程中,将软件可信度当作软件质量的外在表现,将软件运行时产生的因素属性叫作软件可信度属性,将可信度属性记作表1。

表1 可信度属性列表

软件属性排查时,设定两个基础假设,即数量假设与质量假设。数量假设就是在属性影响模型内,若一个节点至其余节点的边越多,表明此节点属性越重要。质量假设表示一个节点对另一个节点的影响数值越高,表明节点的属性越重要[4]。

在上述假设前提下,计算软件属性影响数值,并更新全部属性影响值,直至更新结束。属性影响模型内,若节点B拥有一个面向节点A的边,证明B的属性权重较高,则将B的权重作为一个影响值的总和。

(1)

为排查出软件属性之间的影响水平,在属性之间的影响边内引入影响值lij,即

(2)

将属性影响模型表示为邻接矩阵P,矩阵P描述模型内的属性节点关联[5]。若节点i到节点j有入边,影响水准为lij,影响指数为βij,那么pij=βijlij,反之pij=0。由此将矩阵P定义为

(3)

为详细分析软件属性影响,按照可达矩阵理论,优化直接影响矩阵[6],再利用自乘运算获得综合影响矩阵,即计算出各个软件属性影响的延伸水准的总和T:

T=G1+G2+…+Gn

(4)

得到综合影响值后就能排查出属性在软件内对其余属性的影响程度,然后给影响较多的属性更大的权重值,归一化后即可明确属性权重,评估软件运行的整体质量。线性映射综合影响值,得到最终的属性排查解析式为

(5)

3 基于相关性分析的软件运行风险多目标控制模型

明确软件运行的实时状态后,若软件运行存在较大风险,证明软件质量存在缺陷,需建立一个风险多目标控制模型。设定软件运行风险集合是{Ri|i=1,2,…,n},n为风险数量。RE为风险损失预期值,RIi为风险评估值。假设第i个风险形成的损失为Li,由此得到

REi=RIiLi

(6)

本文构建的多目标控制模型中,关键控制两个目标为最小:风险的损失预期值最小和风险控制成本最小[7]。在式(6)基础上,组建软件运行风险多目标控制优化控制模型

(7)

(8)

其中,xi为风险系数。由于xi的值只能是0或1,因此组建的多目标控制模型为一个0-1规划模型:

(9)

软件运行风险之间具备一定相关性,在软件运行风险多目标控制优化控制模型中代入一个风险相关性,构建相关性分析下的软件运行风险多目标控制优化控制模型,提升多目标控制的精确性与实用性。

本文所描述的软件运行风险为在某个固定环境下的某个时段中,产生风险的不确定性和风险引发的经济损失。风险的相关性包含概率与损失两个因素,着重考虑损失因素的相关性。描述风险相关性的核心指标就是交互性指数,交互性指数代表两个风险间的表现出的正相关联系,取值范围在[-1,1],正数就是两个风险同时产生的损失总和要高于单独产生的损失总和,0代表两个风险在损失水平上不具备相关性,也就是风险之间互不影响,损失展现出可加性特征;负数代表两个风险之间的负相关,即两个风险同时产生的损失总和低于单独产生的损失值。

若风险i与风险j是拥有相关性的风险,设定Iij是其交互性指数,则Iij=Iji。Lij是两个相关性风险同时产生的相关性损失,则Lij=Lji。

Choquet积分为一种模糊积分[8],能够很好地处理软件属性之间的互相作用问题,利用模糊集的模糊测度把相关数据代入属性控制流程,衡量风险相关性损失水平。按照Choquet积分定理,集成算子和Lij值相等,则

(10)

其中,μi为通过第i个风险构成的模糊集合的测度值。将基于2-可加的模糊测度值描述成

(11)

其中,wi为第i个风险权重,Iij、Iji分别为两个风险的交互性指数。

将风险损失值引入风险多目标控制模型内[9],设定REC是基于风险相关性损失后的损失期望值,则REC的推导公式为

(12)

其中,W表示具备相关性的风险集,i,j∈W为两个风险间的相关性,由于xi、xj的值只能是0或1,只要控制二者中的一个风险,即xi、xj的值有一个等于1的情况下,软件运行风险就不具备相关性。

融合单风险损失预期值REI,获得风险相关性下的风险损失预期值:

RE=REI+REC

(13)

则最终的软件运行风险多目标控制模型表达式为

(14)

4 多目标粒子群算法下风险多目标控制求解

多目标粒子群算法为一种优化方法,将其代入运行风险多目标控制模型中完成模型求解,可帮助软件开发者进一步优化软件运行过程,规避有可能存在的运行风险,保证软件应用稳定性与安全性。

背包问题为优化定理内的一种多目标优化方式[10]。该方法使用一个背包输送不同物品,货物的价值越高,输送成本越低,与此同时,输送货物质量不可高于固定阈值,将以上输送需求描述成

s.t.CX≤Z

(15)

式中,i代表货品类别,M为各类货品包含的货品个数,P为货品价值矩阵,V为体积矩阵,C表示质量矩阵,X代表挑选矩阵,Z是质量约束矩阵。

粒子搜寻面积[11]通过不同的约束条件进行规划,若一共有m只鸟处于D维空间完成搜寻任务,则粒子群算法的运算过程为:

步骤1:初始化。设定Xi={xi1,xi2,…,xiD}是粒子i的初始范围,Vi={vi1,vi2,…,viD}是粒子i的原始速率,数据集Pi={pi1,pi2,…,piD}可以记载粒子i遍历过的方位内目标函数最佳值相对的方位,数据集Pg={pg1,pg2,…,pgD}可记载全部粒子遍历方位内目标函数最佳值相对的方位。

步骤2:迭代。每个粒子的方位与速率更新解析式为

(16)

式中,d∈[1,2,…,D],w代表上个时段的方位与速率对目前粒子的影响,c1、c2为学习因子,r1、r2为扰动系数,利用扰动系数能提升搜寻时每个粒子遍历方位的随机性,防止方法产生局部最优情况。

步骤4:终止迭代。终止迭代包含如下条件:若干次迭代后,方位Pg无更新情况,且在指定次数中,方位Pg相对的目标函数值改变量低于固定临界值。

针对软件运行风险控制多样性需求,代入一个非劣解,创建多目标粒子群算法。在多目标控制可行域内,多目标粒子群在迭代时对收集和记载全部遍历过程中产生的非劣解[12],综合全局最优解就能构成下一轮粒子进化的速率与方向,持续循环上述过程后就能推导出软件运行风险多目标控制模型的帕累托最佳解,如果最佳解内的决策变量是1,证明软件运行风险得到很好的控制,实现期望软件运行风险控制目的。计算过程为

(17)

v(t+1)=ω×v(t)+c1×rand(0,1)×(xbest-x)+

c2×rand(0,1)×(xgbest-x)

(18)

其中,Tmax为最高迭代次数,t为目前迭代次数,ωmax、ωmin分别为ω的最大与最小值,xbest表示粒子本身的最佳值,xgbest为全局最佳粒子值。

处理了最佳解选择问题后,还要注意迭代时产生的迭代规则问题,也就是一次迭代后得到多个非劣解后,要明确唯一的Pi与Pg,确保迭代的持续更新。在Pg的挑选过程中,将拥挤度当作权衡准则获得迭代后的最佳权值,在真实模型求解任务中,把目标空间等量划分成若干小网格,将各小网格迭代后涵盖的粒子个数看作网格中粒子的拥挤度,择取拥挤度最低的粒子作为下一时段的迭代初始点。

5 仿真研究

为表明所提方法在实际应用中的可靠性,使用Matlab仿真平台进行实验,实验环境为Intel Core i5处理器,8G内存,使用Web数据库系统存储软件运行数据。选择某中型软件项目为研究目标,开发商是通过定量管理认证的软件企业。在表1可信度属性列表基础上,细分如下几点软件运行潜在风险,控制成本关键是人力成本,单位是人/日。如表2所示。

表2 软件运行风险属性与控制成本

设置Tmax值为11000,c1与c2值均为0.7,非劣解集合容量为150,原始粒子个数是220,非劣解筛选密度是0.06。本文方法的运算结果是一组软件运行风险多目标控制的帕累托最佳解集,集合内各个解在两个控制目标上均无法同时优于其它解,结果如图1所示,图1中风险暴露值表示风险对软件的破坏程度。

图1 帕累托最佳解软件运行风险多目标控制关系图

从图1可知,风险暴露值和风险控制成本目标呈现出非线性置换关联,在控制成本为0时,表明全部风险均没有得到有效抑制,这时风险总值最高。在风险暴露值是0的情况下,表明软件运行得到很好控制,这时风险成本最高。软件运行风险多目标控制中,一般是通过某些资源完成风险控制,但不能控制全部风险,这就要挑选恰当的风险目标完成运行优化,实现最佳风险多目标控制。图2所示本文方法下的最佳解前沿准确清楚地刻画出不同风险控制成本下的最佳控制策略,让软件研发者快速做出运行风险控制响应,维护软件正常运行。

图2为考虑软件属性与未考虑软件属性二种不同控制策略下的风险控制对比。

图2 考虑属性排查前后的风险多目标控制对比

从图2看出,两种控制策略结果存在很大区别,在同样控制成本下,本文方法风险值要高于没有考虑软件属性排查的风险值,证明本文方法不会局限于软件浅层意义上运行风险,而是发掘出更多不易被发现的缺陷与漏洞,更贴合软件真实运行风险控制现状,对提升软件运行风险管理水准发挥重要作用。

6 结论

针对软件运行过程中存在的风险问题,提出基于属性排查的软件运行风险多目标控制方法。利用属性排查评估软件质量,构建软件运行风险多目标控制模型,引入多目标粒子群算法完成模型求解,更全面地提取出软件不同属性之间的关联,有效提高风险控制精度。

猜你喜欢

排查粒子矩阵
重卡雨刮工作原理及电器故障排查
如何排查并改错
虚拟校园漫游中粒子特效的技术实现
一种用于抗体快速分离的嗜硫纳米粒子的制备及表征
多项式理论在矩阵求逆中的应用
抚松农发行开展贷款风险排查
惯性权重动态调整的混沌粒子群算法
用电安全知多少
问:超对称是什么?
矩阵