摘 要:风险因子的识别与分析是软件项目风险管理中的关键任务。在实际管理中,风险因子的发生概率具有模糊性,因此通常应用具有偏序关系的等级来划分,由此本文基于具有优势关系的粗糙集理论对软件项目风险管理进行定量分析:利用优势关系和上下近似集合等概念,提出了软件风险管理决策系统,在此基础上,给出了项目的风险决策协调系数、风险因子对于决策的影响系数等定义与计算方法。此项工作能识别风险管理中的薄弱环节,合理分配资源,优化管理过程,并为风险决策的规则提取奠定了基础。
关键词:软件风险;风险因子;粗糙集;优势关系;过程改进
Brooks曾指出复杂性、一致性、可变性及不可见性是软件开发的四大难题[12],另有调查表明[24],软件不能在计划时间和预算内高质量交付使用的比例非常高,由此可见风险是软件开发中客观存在的现象,风险管理研究也成为软件项目管理以及过程管理的主要组成部分,吸引了很多学者关注。
自从20世纪80年代末以来,软件项目风险在理论、方法、实践方面都取得了很大的进展。从综述文献看,目前风险管理的研究多注重过程、方法、实施框架等内容,同时表明引入量化的分析技术与方法是风险管理的难点,但也是一种趋势,因此,国内外学者从未停止过与之相关的研究与实践。从早期的概率统计,过渡到决策树、Petri网、贝叶斯网络,以及簇方法、神经网络等各种数据分析技术已经得以应用,并且突破了单一的风险项分析,开始关注风险项之间的关系。例如吴登生[5]等人考虑风险相关性,采用多目标粒子群算法对风险控制多目标优化模型进行求解,寻找科学的风险控制策略;杨莉[6]等人根据风险数据的特点,结合风险管理者的偏好,采用区间数模型给出迭代算法,选出最优风险应对组合。笔者在文献[7]中首次应用经典的粗糙集理论构造了软件项目风险分析系统,主要应用等价类和不可分辨关系分析了软件风险因子之间的关系,为风险决策提供了策略,但是未考慮风险因子发生等级取值具有偏序关系,另外分析系统中决策属性描述得比较模糊,缺少了决策属性与风险属性的关系分析,在此基础上,本文根据软件项目风险管理中数据特点,引入了具有优势关系的粗糙集模型,进一步探究风险因子、决策属性、软件项目之间的联系,并通过实例说明。
1 软件风险管理
软件风险管理旨在制定一系列可行的原则和实践,规范化地控制影响项目成功的风险,目的是识别、分析和消除风险因素,以免它们威胁软件的成功运作[3]。从早期的Boehm和Charette的风险管理框架、Higuera和Haimes的持续风险管理框架模型、Hall的六学科模型,到基于CMM/CMMI的软件项目风险管理等各种框架模型,以及风险清单法、基于分类的问卷调查表法等各种风险识别方法的研究中不难看出,风险因子的识别、排序、分析、控制是软件项目风险管理的核心工作。
以Boehm为首的诸多学者通过研究与调查已经列举了上百条风险清单[3,8,9],这些成果为软件组织对照检查形成自身的风险列表提供了便利条件,同时,组织需要根据实际的文化与管理模式对风险清单进行裁剪和评估。目前以及将来很长时间,软件开发都将采用迭代式的开发模式[2],这意味着组织面临多项目多风险项的多重管理情形。在此种境况下,风险因子的排序,重要风险因子集合的识别,执行的管理策略是否匹配,如何对优先项目进行资源分配等,都是风险管理决策中要考虑的问题。
2 基于优势粗糙集的软件项目风险管理
2.1 优势关系粗糙集的基本概念
粗糙集理论是波兰科学家Pawlak提出的一种用来处理不精确知识的数学分析工具,被应用到人工智能、数据挖掘和模式识别等诸多领域,不少学者也将其理论进行了扩展,GRECO等人提出了优势关系粗糙集[10],利用优势关系替代经典粗糙集的等价关系表达属性值之间的序关系,这特性表明用它来分析软件项目风险管理中的数据是合适的,此处先介绍几个定义。
定义1 决策信息表S=(U,A,V,f),其中U为论域,A=C∪D为属性集合,其中C为条件属性,D为决策属性,V为属性值域,f为信息函数,即f:U×A→V。
定义2 令为论域U上的弱偏序关系。设x,y∈U,PC,对a∈P,均有f(y,a)f(x,a),则认为y关于P优势于x,表明在属性P上y至少和x一样好,表示为yDpx。
定义3 设x,y∈U,对象x的P优势集定义为D+P(x)={y|yDPx};劣势集定义为D-P(x)={y|xDPy}。
定义4 决策属性D将论域分为n个类C={Ct|t∈{1,2,…,n}},其中Cn>Cn-1>…C1,t类的上联合定义为Ct=∪stCs,下联合定义为CtCs。
定义5 假定PC,P-(Ct)和P-(Ct)分别为Ct的上、下近似:
2.2 软件风险因子分析模型
结合优势关系粗糙集理论中优势关系、上下联合等定义,在文献[17]基础上,给出以下定义。
定义6 RS=<U,A,V,F>是软件项目风险决策信息系统,其中U={x1,x2...xn}是一组软件项目;A=R∪D,R∩D=,R={r1,r2...rn}是一组风险因子,D={d1,d2...dn}是决策属性,di∈{1,2,3},di是软件项目xi采用的风险管理决策等级,V是R的值域,f:U×R→V是信息函数。特别地,V=(uij),1
n,uij表示在項目xi中风险因子rj发生的可能性,uij∈{1,2,3},参看表1和表2。
根据定义2中的优势关系,若xi,xj为两个软件项目,rk为某个风险因子,若有f(xi,rk)f(xj,rk),则认为xi关于rk优于xj,说明在风险因子rk上,项目xi和项目xj至少管控的一样好,即uikujk,风险因子rk在项目xj比xi更可能发生,或者等可能发生,表示为xiDrkxj。
2.2.1 优先处理项目集合的确定
根据定义4,决策属性D将论域划分为3个类,U|D={C1,C2,C3},不难看出,C1是风险管理策略中需要立即处理的项目集合,C2是需要关注预防的项目集合,C3是只需要一般记录的项目集合,表明目前的风险管理状态良好,优于C1和C2中包含的项目。显而易见,管理资源应该优先分配给C1中的项目,在实际管理中,对于C2中的项目在资源供给不同时合理给出优先考虑的集合是软件风险管理中面临的重要决策。根据定义5中近似集合的定义,在资源有限时,优先处理的项目集合可用A1表示,在资源较为充裕时,优先处理的集合可用A2表示,它们的定义如下:A1=C1∪P-(C2)显然,A1A2。
2.2.2 项目风险决策的协调性分析
定义6包含了风险管理中的所有数据,其中V是风险因子发生概率级别,D风险管理决策等级,定义中取值都为1,2或3。D的取值应该是根据V来确定的,在实际管理中因为R中包含的是一组风险因子,需要综合考虑V的取值,由此引入下列协调性的概念。
定义7设RS=<U,A,V,F>是软件项目风险决策信息系统,若存在xi∈U,使得Uij=di都成立j=1,2,3…m,则说明项目xi给出的风险决策等级是完全协调的。
例如,某个项目的所有风险因子发生的概率等级都为1,即很可能发生,那么它对应的风险管理策略的等级自然也应该为1,即立即处理,决策结果与风险状态是完全协调的。在实际管理中,完全协调几乎是不存在的,因此下面引入协调系数的概念。
定义8设RS=<U,A,V,F>是软件项目风险决策信息系统,xi∈U,kxi定义为项目xi的风险决策协调系数,i=1,2,…n,计算公式如下:
kxi=1,uij=di(j=1,2,…m)时,1-∑mj=1|uij-di|m×max{|uij-di|},其他。
1,kxi值为1时,项目xi的风险决策是完全协调的。对于协调系数较小的项目需要探究其原因:一是相应风险策略等级是否合适,二是风险因子的重要性是否相同,即不同的风险因子即使是在发生概率等级相同,他们对风险策略的影响程度也是不同的,这些对于寻找管理的薄弱环节,优化过程管理提供了很好的切入点。
2.2.3 风险因子的影响性分析
从风险管理决策信息系统的横向入手,在上一节中分析了每个软件开发项目最终的风险管理决策是否与风险状态相协调,从纵向角度,综合某个风险因子发生的概率等级与管理策略等级之间的关系,可以对风险因子进行影响性分析。
定义9设RS=<U,A,V,F>是软件项目风险决策信息系统,若存在rj∈R,使得Uij=di都成立i=1,2,3…n,则说明风险因子rj对风险决策的影响是完全的。
风险管理决策属于多准则决策问题,不可能所有的风险因子对决策的影响都是完全的,下面引入影响系数的定义。
定义10设RS=<U,A,V,F>是软件项目风险决策信息系统,rj∈R,krj定义为风险因子rj的影响系数,j=1,2,…m,计算公式如下:
krj=1,uij=di(i=1,2,…n)时,
1-∑ni=1|uij-di|n×max{|uij-di|},其他。
易知,0
1,特别krj=1时,风险因子rj对风险管理策略是完全影响的。风险因子的影响系数越接近1,在做管理策略时就越应该被优先考虑。
3 实例分析
本节采取文献[7]中的数据,表3中列举了风险因子,因本文给出了风险管理策略的等级,为了与风险因子的发生概率保持一致,表4中的实例数据表与文献[17]中的数据表现形式不同。
通过数据集,根据定义3,得到下面优势类:
D+P(x1)={x1}
D+P(x2)={x1,x2}
D+P(x3)={x1,x2,x3,x4,x5,x6}
D+P(x4)={x1,x4}
D+P(x5)=D+P(x6)={x5,x6}
根据决策属性,可以得到包含3个类的划分U/D={C1,C2,C3},其中C1={x3,x4},C2={x5,x6},C3={x1,x2}。
根据定义4,得到每个类的上联合:C1={x1,x2,x3,x4,x5,x6},C2={x3,x4,x5,x6},C3={x1,x2},根据定义5,可以得到决策类的上下近似集P-(C1)=P-(C1)=U,P-(C2)={x5,x6},P-(C2)=U,P-(C3)=P-(C3)={x1,x2}。
根据3.2.1中的描述,A1={x3,x4,x5,x6},A2=U,得到资源有限时优先考虑的项目集合。
根据定义8,得到每个项目的风险决策协调系数为:kx1=0.875,kx2=0.75,kx3=0.75,kx4=0.375,kx5=0.5,kx6=0.5。从计算结果分析,项目x1的协调系数最大,说明其风险决策被质疑的可能越小,风险状态是比较清晰的;对于协调系数较小的项目,需要关注各个风险因子发生概率的等级变化,及时对策略等级进行调整。
根据定义10,得到各个风险因子的影响系数为:kr1=0.75,kr2=0.5,kr3=0.75,kr4=0.5。
从结果看,客户需求多变性和系统需求不清晰两个风险因子对管理决策的影响更大些,此举能为风险因子的重要性进行排序,另外影响系数的变化也为风险因子之间的关系研究提供了一种途径。
结语
本文基于优势关系的粗糙集理论,利用优势关系、上下联合及上下近似集合的概念,主要研究了风险管理中如何更合理的确定优先处理的软件项目集合,给出了项目的风险策略的协调系数、风险因子的影响系数的定义和计算方法。一方面可以审视目前的风险管理策略是否适宜,确定优先项目及核心因子进行重点监控;另一方面,为寻找过程管理的薄弱点提供依据,达到过程改进的目的。但是还存在许多有待解决的问题:如粗糙集中的核与风险因子影响系数之间的关系,基于优势关系的协调粗糙集在风险管理中的应用等。另外,本文实例中数据较少,当组织的数据较多时,如何利用协调系数、影响系数从决策样例中提取决策规则,都是下一步可以研究的方向。
参考文献:
[1]BROOKS FP.No silver buttle[J].IEEE computer,1987,20(4):1019.
[2]荣国平,张贺,邵栋,等.软件过程与管理方法综述[J].软件学报,2019,30(1):6279.
[3]BOEHM BW.Software risk management: principles and practices[J].IEEE Software,1991,8(1):3241.
[4]The Standish Group.CHAOS Summary 2009[EB/OL].http://www.standishgroup.com/newsroom/chaos_2009.php,2009.
[5]吴登生,李建平,孙晓蕾,宋浩.考虑风险相关性的软件风险多目标优化控制研究[J].系统工程理论与实践,2015,35(3):578586.
[6]杨莉,李南.软件项目风险应对措施优选的区间模型及其算法[J].控制与决策,2011,26(4):530534.
[7]丁剑洁,郝克刚,侯红,郭小群.基于粗糙集的软件项目风险管理研究[J].计算机科学,2010,37(4):117119.
[8]Barki H,River d S,Talbot J.Toward an assessment of software development risk[J].J of Management Information Systems,1993,10(2): 203225.
[9]CAPERS J.Assessment and control o f software risks[M].Englewood Cliffs: Yourdon Press,1994.
[10]GRECO S,MATARAZZO B,SLOWINSKI R.Rough approximation by dominance relations[J].International Journal of Intelligent Systems,2002,17(2): 153171.
基金项目:陕西省教育厅科研计划项目(17JK0184);陕西省重点研发计划项目(2021NY211)
作者简介:丁剑洁(1979— ),女,博士,副教授,研究方向:數据分析、软件过程改进。