2 理论研究及工具方法分析
2.1 软件开发项目风险评估理论研究
2.1.1 Boehm 理论
1989 年,Boehm 从事软件开发项目风险管理方面的研究,并提出了软件开发项目的初步风险管理体系。1991 年,该体系就在他着作的《软件风险管理》里面详细进行了描述。
Boehm 把风险管理活动分成风险评估、控制等两个阶段,与传统项目风险管理理论一致。对软件开发项目的风险评估阶段,Boehm 划分为风险识别、分析、排序等 3个子步骤。Boehm 理论的风险管理模型详见图 3-1 所示。
Boehm 理论的风险评估突出重点是在风险识别步骤提出了“十大风险因素清单”(详见表 2-1),这样可以让管理层不需要考虑很多低优先级或影响不大的细节风险,而集中关注高风险、影响面广及严重的关键风险因素。该清单在一些大型软件开发项目中是有一定程度的实用意义,因为清单是深入调查了美国国防系统和大型航空公司等实际的软件开发项目实施情况,以及咨询多名高级项目经理汇总整理出来的。
Boehm 软件开发项目风险管理理论中的风险评估公式为:RE=P(UO)*L(UO)。
其中:L(UO)表示令人不满意的结果(即风险)会产生的破坏程度(即后果);P(UO)表示糟糕的结果(即风险)所发生的概率;RE 则表示风险造成的影响。
该理论在实际应用时,是对正在开展的软件开发项目对照“十大风险因素清单”(表2-1 所示)的每个风险因素进行总结及评估,分别制定对应的工作计划并执行。在实施一段时间后,再总结归纳这十大风险因素的解决结果,根据新的情况重新制定对应的工作计划并执行,依此反复类推。
Boehm 软件开发项目风险管理理论显然是具有一定局限性,因为它的数据主要是依靠一些大型的软件开发项目调查统计而来的,中小型的软件开发项目的风险因数还是有较大的差异。
2.1.2 Charette 理论
1989 年,Robert Charette 就开始研究软件开发项目的风险。Charette 理论的软件开发项目风险管理体系共分为风险管理与风险分析(风险评估)两部分,详见图 2-2 所示。其理论模型的显着特点就是各项活动之间是允许相关交换并有交错重叠的。
Charette 理论把风险评估阶段分为识别、估计与评价等 3 个步骤。风险识别步骤主要是从风险分类结构入手;风险估计步骤则是要辨识出风险发生的概率以及后果;风险评价则是通过计算后将各个风险因数进行排序,运用了风险的定量分析模型及方法,定量分析每个风险因素的可能性及产生的后果,并且还在分析过程中,重点突出利用组合风险来评价,有效规避了风险的投机性。实践中如何获得单一风险估计值方面,Charette 体系还缺乏可行的措施及手段。
2.1.3 SEI 的 CRM 模型
作为全球着名的旨在改善软件工程管理实践的大型组织团体——美国卡内基·梅隆大学软件工程研究所(SEI),一直以来致力于调查及研究有关软件开发项目风险管理,并在 1999 年公布了基于软件开发项目风险管理分类的相关技术手册与报告,形成了基于软件开发生命周期,以持续风险管理 CRM 为核心的 SEI 软件开发项目风险管理框架(见图 2-3)。
而 SEI 的风险评估最杰出的便是以风险调查问卷 TBQ(Taxonomy BasedQuestionnaire)为风险识别技术措施。该风险调查问卷 TBQ 是基于 SEI 的一套风险分类法(Risk Taxonomy)上,该分类法设计了三大类十三小类共计 194 个隐式的、可发现软件开发过程中存在风险以及其它不确定因素的问题(问题分类详见表 2-2),把软件开发项目的相关特征和各个风险项建立一种对应关系,能系统化地找出所有潜在的风险领域。
除此之外,可操作性是 SEI 最明显的特点,它注重软件开发项目中各过程的紧密结合,为达到指导实践步骤简单明了,该体系中的风险评估基本没有复杂的数学运算。但该体系过于注重软件开发项目的过程管理,没有很好地发挥技术、工具与方法的作用。
2.2 风险评估的工具和方法
2.2.1 流程图分析法
以项目阶段与项目流程组成流程图是流程图分析法的主要分析对象。该分析法调查分析流程图上的各个阶段及环节,发现潜在的风险,并把导致风险发生的因素查找并标记出来,进而分析风险对整个项目可能会造成的后果及不利影响。
流程图分析法是一种动态分析方法,并且可以定性分析软件开发项目的风险及成因。针对软件开发项目管理,可以运用流程图分析法,先绘制开发流程,然后明确开发过程中各种活动的关键点,最后结合项目历史资料及关键点的实际变化情况,明确项目的风险。
2.2.2 头脑风暴法
头脑风暴现在是指为了达到激发创新设想或产生新观念的目的,进行一种无限制的自由联想及讨论的过程。1939 年,头脑风暴法最先是由美国人奥斯本开创,随后几十年里,该方法在国外已经得到普遍的应用。而我国接触该方法的时间短,上世纪七十年代末才开始引起我国专家学者们的注意。
头脑风暴法是采用组织有关专家学者召开专题会议,会上主持人先阐述问题,营造融洽轻松的氛围,而且一般不发表意见,让专家们发挥各自创造性思维,去探索未来信息及提出更多的解决方案。
收集意见及对问题进行评价是头脑风暴法的主要内容。具体过程为:
(1)选择人员。主持人以及和题目对应专业领域的专家、风险管理方面的专家等应为参加头脑风暴会议的主要人员。主持人是一个非常重要的角色,需要具备较强的逻辑思维能力、反映灵敏、善于分析总结。
(2)明确并醒目标注中心议题。会议议题必须确保会议参加人员都能正确理解其含义。
(3)轮流发言并记录意见。任何一个议会人员都可以跳过,考虑清楚才发表意见。
主持人应该不加以评论,记录原话的内容。
(4)终止发言。轮流发言的时候,如果每个人都曾跳过发言,则发言终止。
(5)评价意见。议会人员在发言停止后,所有人共同对每一条意见进行评价。会议结束前,由主持人总结若干重要结论。
不发表任何判断性评论是头脑风暴法的一个很重要的原则,该方法所运用的步骤,详见图 2-4 所示:
2.2.3 专家调查法
专家调查法又称为德尔斐(Delphi)法,1964 年由美国兰德公司首度应用在技术预测中。该方法是依靠专家的经验与知识主观判断与分析的一种直观预测方法,尤其适用于项目启动阶段的风险预测,特别适用于以下三种典型情况:
(1)缺乏客观数据:目前数据不能反映真实情况,或获取数据所付出的代价太高,或采集数据时间太长,无法采用定量方法进行分析。
(2)评估新技术:在缺乏数据支持的条件下,针对全新的科学技术问题,唯一的评价根据就剩下专家的主观判断。
(3)主要作用非技术因素:当决策问题的非技术因素重要性超过了技术本身的发展,涉及到公众舆论、政治因素或生态环境等方面,过往的数据就显得不是这么重要,这样就只能依靠专家做出判断。
专家调查法的具体做法为:首先编制需要调查的问题,然后把相关资料及调查表发给各专家,最后通过多次反复来回调查,达到识别项目风险的目的。
专家互相不见面,各自表达自己的看法,是该方法的最大特点。优点在于各位专家都能大胆思考、畅所欲言,随时可以重新做出预判,减少了资历、权威、心理及口才等因素的影响。
编制调查表与选择专家是专家调查法两大关键。编制调查表要以方便专家应答为原则。因为由专家的应答结果可以很大程度上决定了风险预测方案质量的优劣,所以要拣选适合的专家尤其重要。
因为专家对问题不同角度的看法及理解不一样,因此反馈意见也不可能完全相同。
通过实践发现,往往需要通过多轮反复来回调查,各位专家的意见才有可能会达成一致。专家调查法可以预测项目的风险及发生概率、引起因素,评价风险后果程度及制定风险应对措施等。
2.2.4 层次分析法(AHP)
层次分析法(Analytic Hierarchy Process,AHP),是将和决策有关系的元素按一定准则划分为多个层次,然后再进行定性和定量分析的一种层次权重决策分析方法。该方法是萨蒂(Saaty,美国运筹学家、匹茨堡大学教授)在 1977 年,当时是为美国国防部研究电力分配的课题时,首先提出并运用的。
AHP 首先是对复杂的决策问题内在的本质和相互影响因素进行深入研究分析,抓取出关键的少数定量信息,然后通过数据模型计算进行决策。经过科研人员更深入研究应用后,AHP 逐步改善成为多目标、多准则甚至无结构特性的复杂决策问题提供简便可行的决策方法,从而降低决策难度。AHP 尤其适合于对判断结果不容易精确计算的决策难题。
AHP 最突出的优点就是简单实用。该方法不仅适用于主观而且不确定性的问题分析上,还可以用数学逻辑方法来运用经验、洞察力和直觉。同时,AHP 另一个优点就是将问题分层,这样就可以让决策者能够认真地思考和分析指标相互间的相对权重。
所以,AHP 是一种简单实用的分层次多准则决策方法,把一个复杂决策问题分解成一个有层次的结构,让决策者能够直观判断相关指标的关系,运用数学方法处理决策中的定性与定量元素,最后还可以对决策方案的接受度进行排序。
一、层次分析法基本原理
在测度对象具有相对的性质,无法确定统一的标度,直观、量化地测度其重要性的情况下,通过两两比较的方法构造出判断矩阵,采用数学方法计算出判断矩阵的特征值和特征向量,该特征向量即为重要性向量,或者称相对重要性排序权重值向量。
层次分析法就是采用这种方法来进行评价与决策的。
假定对于一个公司的某个活动现在有 n 个方案,这些方案所带来的利润是未知的,要想知道这些方案按利润多少的排序情况,应该怎样获得?
由于每个方案所带来的具体利润是未知的,所以不能简单地根据利润进行排序。
但是,这 n 个方案中的任何两个方案的利润相对多或少如果可以知道或预测,利用层次分析法就可以解决问题了。
具体的做法是,采用两两比较的方法判断每两个方案的相对利润多少的比例。先以第一个方案入手,将它顺次与第二个、第三个、…、第 n 个方案进行两两对比;然后以第二个方案,将它与其他后续的方案进行两两比较;依次类推,直到全部都进行了两两比较为止。这样就得到了一个反映方案两两比较的相对利润的n ?n矩阵,称作比较判断矩阵。假设用 A 表示比较判断矩阵,则有:
从以上分析可以知道,AHP 方法是用两两比较的方法构造出比较判断矩阵,然后采用数学方法计算出该比较判断矩阵的特征值与特征向量,该特征向量就是所要求出的利润相对向量 W。
二、层次分析法基本步骤:
1.建立层次结构模型
将有关的各个要素根据问题本身的特性,把这些要素按一定的属性分到不同的层次上,由上向下区分为若干层次,而在同一层次的每一个要素和上一层的要素是有一定的关联性,同时驾驭下一层的某些要素,上下层的要素相互作用。通常,把第一层作为目标层,一般情况下是 1 个要素,最底层的为指标层或候选方案层,而可以有一个或多个例如准则层或指标层的中间层次。当中间层次的因素过多时(一般不多于 9个),为减少复杂度,应该尽量分解多一层,构建好的层次结构如图 2-5 所示。
2.构造比较判断矩阵
在层次结构模型构建出来后,从第 2 层的对每个要素和同一层中其他相关的要数(即都是从属于上一层同一个要素的)进行比较,并记录下比较结果,从而构造出比较判断矩阵。
而为了将要素之间的两两比较结果数量化,层次分析方法采用 1~9 标度的判断尺度,其定义如表 2-3 所示。
如果比较结果程度和上表定义相反,则用倒数表示,例如要素 i 比要素 j 明显重要,
3.层次单排序在比较
判断矩阵构建出来后,就可以计算比较判断矩阵的特征向量 W 和特征值maxl(可以证明,该特征值是该矩阵的最大特征值)。根据前面说明的原理,比较判断矩阵的特征向量 W 应该就是该层次中各要素的相对重要性向量。也就是,层次单排序要完成的工作就是计算同一层次要素对于共同相关的上一层次某要素的相对重要性权重。
比较判断矩阵的特征值及特征向量的计算方法很多,下面以和积法为例。
设有n ?n比较判断矩阵A{a },(i,j1,2,...,n)ij==,用和积法估算比较判断矩阵 A 的最大特征值及其对应特征向量的步骤如下:
(1)计算比较判断矩阵 A 中每一列要素的列和jS:
4.层次总排序
在计算出每一个层次的所有要素和相关到上一层某个要素的相对重要性排序权值之后,就需要继续计算同一层的所有要素相关到第一层(目标层)的相对重要性排序权值。从而最终求出的是最低层(方案层或指标层)相对于最高层(目标层)的相对重要性排序权值,也意味着最底层的每一个方案获指标对于目标层是最优程度或影响程度。
层次总排序的计算顺序是由上而下进行的,计算过程如下:
假设,在递阶层次结构模型中,约定最高层为 A 层;而第二层为 B 层(对于第二层而言,由于它的上一层次就是最高层,所以其层次单排序权值等于层次总排序权值),B 层中有 m 个要素,记为 B1,B2,..,Bm,B 层中每一个要素关于最高层 A 层的相对重要性排序权值分别为 imb ,b,...,b,...,b12;B 层的下一层为 C 层,设 C 层有 n 个要素,记为 C1,C2,…,Cn,它们关于 B 层中任一要素 Bi 的层次单排序的排序权值分别为inijiic ,c,...,c,...,c12(如要素之间无关,则项权值ikc记为 0)。C 层中各要素对于最高层 A层的层次总排序jnc ,c,...,c,...,c12为:
即 C 层对于总目标 A 的层次总排序权值,是以 C 层的上一层次 B 中每一个要素的总排序权值为权重,对 C 层的层次单排序权值进行加权和计算出来的。
如果 C 层下还有 D 层,D 层有 p 个要素 D1,D2, …,Dp,则由公式(2-10)得,D 层的层次总排序权值(即 D 层对于最高层 A 层的相对重要性排序权值)为:
上式中, ic为上一层次(C 层)的要素 Ci(i=1,2,…,n)的层次总排序权值,ijd为本层次(D 层)要素 Dj(j=1,2,…,p)对于上一层次的要素 Ci 的层次单排序权值。若继续还有下面的层次,同样可以依次递推往下计算,如此最终可以计算得出最低层(方案层或指标层)对于总目标的总排序权值,总排序权值最高的那个方案或指标应该就是最优方案或最为依赖的指标。
5.一致性检验
由于上述构建出来的比较判断矩阵是人为进行要素间的两两比较后记录得到的,评价者给出得比较值都是些估计,很有可能存在判断误差。如果判断误差较大时,构建出来的比较评价矩阵可用性就大打折扣,这种情况下就应对比较判断矩阵进行修正后才能采用。
对比较判断矩阵进行一致性检验,也就是通过计算来确认这些评估值是否存在明显的逻辑错误,而且可以根据计算结果来决定比较判断矩阵是否可以采用。只有通过一致性检验的比较判断矩阵才被认为是有效的,否则就应进行修正。具体步骤如下:
n 为判断矩阵的阶数,当矩阵具有完全一致性时,CI=0。CI 越大,矩阵的一致性越差。
而矩阵的误差是否可以被接受,则是将 CI 与平均随机一致性指标 RI 进行比较,检验矩阵是否具有满意的一致性。对于 1—9 阶判断矩阵,RI 的参考值见表 2-4 所示。
对于 1,2 阶矩阵,RI 是形式上的,不需要计算。当矩阵阶数 n 大于 2 时,矩阵的一致性 CR=CI/RI,当 CR<0.1 时,就认为判断矩阵具有满意的一致性,否则要对矩阵重新调整,直到具有满意的一致性为止。
2.2.5 模糊综合评价法(FCE)。
模糊综合评价法(Fuzzy Comprehensive Evaluation,FCE),用模糊数学对受到多种因素制约的事物或对象做出一个整体评价的方法,根据模糊数学的隶属度理论把定性评价转化为定量评价。模糊集合理论(Fuzzy Sets)的概念于 1965 年由美国自动控制专家查德(L.A. Zadeh)教授提出,用以表达事物的不确定性。
模糊综合评价法(FCE)主要特征是各指标之间相互比较、指标和评价值之间的隶属度。评价指标最优的情况下的评价值为 1,其他指标根据相对情况给出不同的指标值;评价值和各个指标的关系,则根据其特征给出评价值与评价指标值之间的关系(隶属度函数)。具体应用时,要根据评价对象本身特点,选择关键性的评价指比,通过科学的工具或方法构建评价值与评价指标值之间的隶属函数,同时还要合理地确定评价指标的权重。
模糊综合评价法(FCE)的优点在于,用模糊数学将反映定性的指标量化,对某些表面难以量化或答案模糊的问题转化为定量指标,使得决策可以组合丰富的定性和定量方法,非常直观地将判断模糊和不确定的决策问题简单化。在评价指标间的重要性程度有差别的情况下,模糊数学的评价方法很实用,该方法所得结果一般是一个评语集向量,包含了丰富的信息,让决策变得更加主动和有针对性。而在实际应用中,模糊综合评价法可以有一次性综合评价、逐层模糊评价等,一般的流程如图 2-6 所示。
而在本研究的,结合层次分析法改进模糊综合评价法,按以下步骤进行处理:
1.确定评价对象和评价指标体系。
首先,确定具体的评价对象,如项目的风险。设影响评价结果的要素有 m 个,得到要素集 1 2 m= { , ,..., ,..., }
iU u u u u,其中, iu为影响评价结果的第 i 个要素。而 iu又可能由下一层的其他 n 个影响要素组成的要素集,记 1 2{ , ,..., }
i i i imu =u u u,iju为影响 iu的第 j 个影响要素。要素关系层次越深,影响要素越多,评价的结果将会越准确。相对于评价对象,这些要素就是评价指标,而所有要素的汇总以及其层次关系就构成了该评价对象的评价指标体系。
2.建立权重向量针对每一个要素集,根据该要素集中每个要素的重要程度,分别赋予对应的权值。
每一个要素集的要素相应权重假设为{ }
ia, 则要素集 U 的权重集假设为1 2( , ,..., , ..., )i ma =a a a a,其中 ia是要素 iu的权值。同样,下一层次的权重集为1 2( , ,..., )i i i ima =a a a,其中ija是影响 iu的第 j 个要素iju的权值,依此类推。
可以通过专家经验法或者 AHP 层次分析法构建好权重向量。
3.建立评语集及隶属度。
建立对评价结果使用的评语集。设可以有 p 个评语结果,则评语集记为1 2( , , ..., ,..., )k pV =v v v v,其中,( 1 , 2 ,..., )kv k =p为总评语集中第 k 个可能的评语结果。根据评价对象和要素集的特点,构造隶属函数表示某个要素属于评价结果的概率(即隶属度),隶属函数可以通过统计实验、数理推算、专家经验打分等方法来确定。将例如有 5 个评价结果的评语集 V 及所对应的隶属度集 R:
V={V1(不合格), V2(合格), V3(中), V4(良), V5(优)}
R={0.2,0.4,0.6,0.8,1.0}
4.建立模糊评价矩阵对每一个影响要素进行评价。影响要素iju评价集为 V={0,0,..., Vk,...},所对应的隶属度集为 Rij={0,0,..., Rijk,...},( 1 , 2 , ..., ; 1 , 2 ,..., ; 1 , 2 ,..., )ijkR i = m j = n k =p,则单要素评价矩阵为:
1 2( , , ..., , ..., )j pB =b b b b, 其中jb为综合所有要素影响后,对评价对象产生影响的第 j 个评价结果的隶属度。
6. 评价结果的处理将得到的评价指标集,即1 2( , , ..., , ..., )j pB =b b b b,有以下三种方法来处理:
(1)最大隶属法,即选取与最大指标即maxjb,所对应的元素为最终的评价结果,该最大值表示整个评价的最大可能。
(2)加权平均法,可以取jb作为加权数,对各个评价要素进行加权平均计算,用下式来表示评价结果:
/j j jV = ? b v ?b;( j =1 , 2 ,3 ,..., n)(3) 归一化法。如果认为上一步骤得到的评价指标向量作为评价结果仍不够直观的,可以将评价指标进行归一化,计算' 1 2, ( , ,..., )njb bbb b Bb b b= ?=。最后以归一化后的结果 b 作为评价结果。