宫 磊, 任向红, 寇 玺, 洪宪文
(火箭军工程大学, 陕西 西安 710025)
软件风险评估是软件开发生命周期中最敏感、最关键的活动[1]。为有效地控制软件项目开发过程的风险,识别、评价和有效管理潜在的风险源具有重要意义。依靠专家经验和知识的专家判断法是开展软件项目风险评估的主要方式,为避免个人主观因素导致评估结果出现偏差,基于不同模型的群决策风险评估信息融合是当前众多学者关注和研究的方向[2-7]。然而,采用以上方法时对专家意见无法实现多维度的风险值描述,专家在量化表达个人风险评估意见时,经常在数个风险值间犹豫不决,极大地降低了风险评估结果的可信性。D-S证据理论作为一种不确定性的推理方法,在决策[8-9]、风险分析[10]、信息融合[11-12]、不确定性测量[13]等领域得到广泛应用,已成为一种基本的、重要的融合算法。因此,本文提出一种基于证据理论的软件项目风险评估方法。
定义1:某待解决问题的所有可能答案的集合用Θ表示且规定Θ中元素两两互斥,当只能取Θ中某个元素作为需要的结果时,称Θ为识别框架,可表示如下:
Θ={θ1,θ2,…,θj,…,θN}
(1)
其中:θj称为识别框架Θ的一个事件或元素;N是元素个数;j=1,2,…,N。
由识别框架Θ的所有子集组成的集合称为Θ的幂集,记为2Θ,可表示如下:
2Θ={∅,{θ1},{θ2},{θ3},…,{θN},{θ1∪θ2},…,Θ}
(2)
定义2:设基本信任分配函数m是一个从集合2Θ到[0,1]的映射,A表示识别框架Θ的任一子集,记作A⊆Θ,且满足
(3)
定义3:设Ai⊆Θ,Bj⊆Θ,在识别框架Θ下的两个证据E1和E2相应的BPA为m1和m2,则融合规则为
(4)
(5)
其中,K称为冲突系数,反映了各个证据之间的冲突程度。
由m给定的信任函数称为m1和m2的直和,记为m1⊕m2,当K=0时,表示证据完全一致,当K<1不成立时,则表示m1和m2的直和不存在。
对于多个BPA,如果m1和m2可以融合,则m1⊕m2也是一个BPA,如果该函数与m3也可以融合,那么m1⊕m2⊕m3也是一个BPA。依次类推,如果都满足融合条件,可将它们融合一个BPA,记为m1⊕m2⊕…⊕mn。
为了解决证据合成方法不能使用或得出明显不合理的结果的问题,王肖霞等[14]提出了证据间相似系数、支持度和可信度的证据预处理方法。证据间的距离越小,则相似性越大,冲突越小,证据间的距离越大,则相似性越小,冲突越大。在本文提出的风险评估方法中,相似系数用来处理证据间的冲突问题,获得专家评估值的权重,并以此辅助决策者精准复盘评估过程。具体过程如下。
第一步:计算相似系数及相似矩阵。
定义:假定识别框架Θ的两个证据E1和E2相应的基本概率分配函数为m1和m2,证据数为n,则证据E1和E2间的相似系数表示为如下:
(6)
相似系数d12用来表示证据间的相似程度,d12∈[0,1],d12值越大,则相似性越好。相似系数可表示为矩阵的形式:
(7)
第二步:计算证据的支持度和可信度。
矩阵各行的和为各证据对Ei的支持度:
(8)
Sup(Ei)表示证据Ei被其他证据支持的程度,Sup(Ei)∈[1,n]。如果Sup(Ei)的数值越大,代表证据与其他证据越相似,证据间相互支持程度越高,如果Sup(Ei)的数值越接近于1,代表证据与其他证据越不一致,证据间相互支持程度越低,当Sup(Ei)=1时,表示Ei与其他所有证据完全冲突。
将证据支持度归一化得到证据可信度,即证据Ei的可信度,也是证据的权重,表示为
(9)
第三步:根据证据权重修改证据,得出:
(10)
第四步:根据合成规则合成加权平均的证据,有n组证据时,将加权平均的证据合成n-1次。
风险识别是风险管理的重要环节,软件项目风险受时间、成本、质量、组织、技术等因素影响,只有合理识别风险,才能为组织风险评估提供基础。随着技术的发展和项目管理方法的改进,人们提出了许多识别风险的方法,如德尔菲法、专家判断法、图解法、头脑风暴法等。本文对已有文献中讨论的软件项目风险类型进行了总结,详见表1。
风险因素会因环境变化而变化,不同软件项目涉及的风险也不同。结合表1中的风险类型,以及专家经验对实际项目情况进行分析,风险决策者结合项目实际情况、用户要求、软件开发生命周期特点等因素,决定针对项目中的三类风险进行评估,分别为进度风险(T)、成本风险(M)和过程管理风险(V),风险评估清单详见表2。值得注意的是,表2中一些风险并非独立的,例如预算设置不合理(M1)可能导致设计不可实现(V2)。风险因素越多,越难以量化和判断风险因素之间的关系。所以,本文提出的方法中,专家做出的判断被认为是已经考虑了风险因素之间的相互关系。
BOEHM[20]最早将风险管理引入软件项目,提出了风险管理包括风险发生概率和严重性两个重要指标,这两个指标在工程领域得到了广泛的应用,风险矩阵法作为一种便捷、高效的风险评估工具,可用于对风险发生概率和严重性进行综合评估[21-23]。风险的定义如下:
风险=风险发生概率(P)×严重性(S)
风险矩阵是一种常用的风险管理工具,根据项目特点可将其设置为不同的风险发生概率和严重性等级,一般可设置风险发生概率等级={极低,较低,中等,较高,极高}。风险严重性等级={极轻微,轻微,中等,严重,灾难性},风险等级={Ⅰ,Ⅱ,Ⅲ,Ⅳ}。其中:风险等级集合中的Ⅰ表示“可接受”,Ⅱ表示“视情,可接受”,Ⅲ表示“视情,不接受”,Ⅳ表示“不可接受”,具体的风险矩阵及其等级如图1所示。
图1 风险矩阵及其等级Fig.1 Risk matrix and rating
第一步:设置证据支持度阈值。少数服从多数的思想在信息融合、决策等领域近年得到广泛应用,然而对于少数专家意见的重要性也不能忽视[24-25]。设置证据支持度阈值的目的是为决策者复盘评估值的合理性提供依据,当决策者进一步确定评估结果时,可依据专家意见支持度的高或低进行可信性判断。综上所述,根据证据支持度定义,提出支持度低的评估数值阈值设置条件为
(11)
当Sup(Ei)小于阈值时,则认为Ei不被其他专家支持,Sup(Ei)大于或等于阈值时,则认为Ei被多数专家支持。
第二步:每位专家对风险逐一做出发生概率和严重性判断。
第三步:将评估结果转化为BPA。
第四步:根据公式(7)、公式(8)、公式(9)计算证据相似系数、支持度和可信度。
第五步:根据公式(10)计算调整后的BPA。
(12)
(13)
第六步:基于证据理论合成规则融合调整后的BPA,如果有n个专家,则进行n-1次融合,融合公式如下所示。
(14)
(15)
第七步:根据融合结果,梳理风险发生概率值、严重性值和风险等级。
第八步:根据具体项目要求设置风险权重。风险发生概率等级权重:极低为1,较低为2,中等为3,较高为4,极高为5;设风险严重性等级权重:极轻微为1,轻微为2,中等为3,严重为4,灾难性为5(表3)。根据风险矩阵中各风险等级权重,计算风险优先级:
表3 风险权重
Risk=Wight(R)×mPR(A)×mSR(B)
(16)
第九步:梳理评估数值相互支持度,使决策者可根据具体情况复盘评估过程,决定相信评估结果或重新组织风险评估。基于证据理论的软件项目风险评估方法流程图如图2所示。
图2 基于证据理论的软件项目风险评估方法流程图Fig.2 Flow chart of software project risk assessment based on evidence theory
本案例是基于证据理论软件项目风险评估方法的应用,组织三位专家对某项目进行评估风险。
第一步:根据公式(11)得出支持度低的评估值条件是Sup(Ri)<2。
第二步:三位专家分别对项目发生风险的概率和后果的严重性进行评估,专家评估意见表见表4,例如风险T1的发生概率等级为1的数值是60%,表示证据E1有60%的把握认为风险T1的发生概率为极低。风险M1的严重性等级为4的数值是70%,表示证据E3有70%的把握认为风险M1造成后果的严重性为严重。
表4 专家评估意见表
第三步:将专家评估结果转化为BPA,以风险V2为例进行说明。
风险发生概率的BPA如下:
mPV2,1∶mPV2,1(1)=0.6,mPV2,1(2)=0.4
mPV2,2∶mPV2,2(2)=0.5,mPV2,2(3)=0.2,mPV2,2(θ)=0.3
mPV2,3∶mPV2,3(1)=0.7,mPV2,3(2)=0.2,mPV2,3(θ)=0.1
风险后果严重性的BPA如下:
mSV2,1∶mSV2,1(4)=0.1,mSV2,1(5)=0.9
mSV2,2∶mSV2,2(4)=0.2,mSV2,2(5)=0.8
mSV2,3∶mSV2,3(4)=0.2,mSV2,3(5)=0.8
第四步:根据公式(8)计算各专家关于风险V2发生概率意见的证据支持度:
SupPV2(E1)=2.467,SupPV2(E2)=1.770,SupPV2(E3)=2.208
同理,计算各专家关于风险V2后果严重性意见的证据支持度得:
SupSV2(E1)=2.982,SupSV2(E2)=2.991,SupSV2(E3)=2.991
计算各专家关于风险V2发生概率意见的证据可信度得:
CrdPV2(E2)≈0.275,CrdPV2(E3)≈0.343
计算各专家关于风险V2后果严重性意见的证据可信度得:
CrdSV2(E1)≈0.333,CrdSV2(E2)≈0.334,CrdSV2(E3)≈0.334
第五步:根据公式(12)计算调整后风险发生概率的BPA得:
=0.383×0.6+0.343×0.7≈0.470
=0.383×0.4+0.275×0.5+0.343×0.2≈0.359
=0.275×0.2=0.055
根据公式(13)计算调整后风险严重性的BPA得:
第六步:计算证据理论融合规则调整后的BPA,因为有三位专家,所以进行两次融合。根据公式(14)计算风险发生概率的融合结果:
mPV2(1)=mCPV2(1)⊕mCPV2(1)⊕mCPV2(1)≈0.643
mPV2(2)=mCPV2(2)⊕mCPV2(2)⊕mCPV2(2)≈0.341
mPV2(3)=mCPV2(3)⊕mCPV2(3)⊕mCPV2(3)≈0.011
根据公式(15)计算风险严重性的融合结果:
mSV2(4)=mCSV2(4)⊕mCSV2(4)⊕mCSV2(4)≈0.008mSV2(5)=mCSV2(5)⊕mCSV2(5)⊕mCSV2(5)≈0.992
基于证据理论的风险融合结果见表5。
表5 风险融合结果
第七步:根据风险矩阵,统计风险发生概率等级、严重性等级和风险等级(表6)。
表6 风险等级及风险值
第八步:根据公式(16)计算最终风险值,即表6中每种风险等级的最大值作为该等级的最终风险值,风险优先级排序表见表7。
表7 风险优先级排序表
第九步:梳理专家评估数值相互支持度,结果见表8。
表8 专家评估数值相互支持度
(1)确定风险优先级。风险决策者可根据风险等级高低设置对应于各风险等级的应对策略。对于每个风险等级,可以根据风险排序,确定风险关注度顺序,以风险等级Ⅳ级为例进行说明,Ⅳ级应重点关注四个风险,即M2>V3>M1>V2,其中M2>V3解释为成本超出预算(M2)较系统测试过程遇到突发情况(V3)具有更高的风险。
(2)确定多等级风险关注度。风险可能存在不同的风险等级,风险决策者可以根据项目具体情况、风险的性质、不同的软件开发生命周期、风险偏好等其他因素,选择关注的风险等级是高或是低。例如:预算设置不合理风险(M1)包含三个风险等级,分别是Ⅳ级、Ⅲ级和Ⅱ级,如果项目风险决策者掌握了专家没有掌握的信息,确定资金按时到位的可能性较大,则风险决策者可以据此倾向于关注M1较低的风险等级(Ⅱ级),依据Ⅱ级风险应对策略制订应对措施。
(3)复盘专家评估过程。从表8中的数据可以看出,三位专家对估计不准确、策划时遗漏了部分重要任务风险(T1)发生概率的评估数值间支持度值均为1.000,解释为三位专家的意见互相矛盾;三位专家对T1风险后果严重性的评估数值间支持度值高于阈值,分别为2.387、2.755和2.478,说明评估值相互支持度较高,专家意见较为一致。三位专家对预算设置不合理风险(M1)后果严重性的评估数值间支持度值分别为2.000、1.000和2.000,表明另外两位专家不支持证据E2的评估意见,证据E1和证据E3意见较为一致。风险决策者可结合项目特点、风险偏好、项目不同生命周期等情况,决定相信模型结果或重新评估风险。如果需重新评估,应补增专家,重复本文提出的风险评估方法流程。
与现有文献应用的模糊理论[4]、熵权法[26]、TODIM方法[27-28]相比,本文提出的基于证据理论的软件项目风险评估方法具有以下优势。
唐爱国等[4]提出的基于模糊理论的软件项目风险评估模型中,权重是组织风险评估前主观设定的。本文提出的风险评估方法权重是通过衡量证据间的相似性确定的,仅与专家评估值有关,专家评估值的权重大小随专家对不同风险评估值支持度不同而变化。
王蔚[26]基于熵权TOPSIS方法进行软件项目风险评估,该模型不能解决评估数值冲突的问题。然而,证据间相似系数是一种基于证据间距离表示证据间相似程度从而能够有效解决证据冲突问题的方法。
TODIM方法是一种交互式多准则决策方法,使用TODIM方法需要多次对比修改判断矩阵。本文提出的方法仅依据专家评估值,建立表示评估值相互支持度的矩阵即可,不需进一步调整判断矩阵。
专家意见的不确定性是影响风险评估可信性的重要因素。基于相似系数在优化证据理论合成方法方面的优势,以及其体现数据一致性的本质特征,提出了一种新的软件项目风险评估方法,不仅综合了多数专家的评估结果,而且为防止遗漏少数专家的有效信息提供了数据支撑,为综合判断风险提供了多角度的决策信息。