项目风险管理技术——VERT方法综述摘要:VERT方法最初的运用对象大多数属于国防系统研制的计划管理和风险决策分析。近年来,高技术研制项目已广泛渗入民用产品和一般工业企业,VERT方法的应用已扩展到各行各业,IT行业也不例外,显示出VERT的广阔应用前景。我们旨在将VERT方法引入软件领域,为项目管理人员进行项目风险分析提供一种行之有效的方法。关键词:风险评审技术项目管理风险管理1引言风险评审技术(VentureEvaluationReviewTechnique,简称VERT)是一种以管理系统为对象,以随机网络仿真为手段的风险定量分析技术。在软件项目研制过程中,管理部门经常要在外部环境不确定和信息不完备的条件下,对一些可能的方案做出决策,于是决策往往带有一定的风险性,这种风险决策通常涉及到三个方面,即时间(或进度)、费用(投资和运行成本)和性能(技术参数或投资效益),这不仅包含着因不确定性和信息不足所造成的决策偏差,而且也包含着决策的错误。VERT正是适应某些高度不确定性和风险性的决策问题而开发的一种网络仿真系统。在80年代初期,VERT首先在美国大型系统研制计划和评估中得到应用。VERT在本质上仍属于随机网络仿真技术,按照工程项目和研制项目的实施过程,建立对应的随机网络模型。根据每项活动或任务的性质,在网络节点上设置多种输入和输出逻辑功能,使网络模型能够充分反映实际过程的逻辑关系和随机约束。同时,VERT还在每项活动上提供多种赋值功能,建模人员可对每项活动赋给时间周期、费用和性能指标,并且能够同时对这三项指标进行仿真运行。因此,VERT仿真可以给出在不同性能指标下,相应时间周期和费用的概率分布、项目在技术上获得成功或失败的概率等等。这种将时间、费用、性能(简称T、C、P)联系起来进行综合性仿真,为多目标决策提供了强有力的工具。VERT技术是在PERT、GERT和Q-GERT的基础上发展起来的。在70年代初期,美国人在GERT网络技术的基础上发展了网络数学分析器MATHNET(MathematicalNetworkAnalyzer),它可以把离散事件活动、活动时间和费用综合起来构成一个概率特征进行计算和分析。随后又开发了网络统计分析器STATNET(StatisticalNetworkAnalyzer)和网络求解分析器(SolvingNetworkAnalyzer)等网络技术。与此同时还对MATHNET进行了修改,重新命名为风险数据系统和费用分析法RISCA(RiskInformationSystemCostAnalysis),同时也开发了全面风险评估和费用估算网络TRACENET(TotalRiskAccessingCostAnalysis),从而进入了风险评估邻域。然而这些系统尚不能评定与性能有关的风险度,特别是研究和开发中技术性能指标能否达到规定的风险度。到72年,由GeraldL.Moeller等研究开发VERT技术,才使风险度估计成为可能。此后,经过改进和扩充,形成现在的VERT,为实际应用打下了基础。2建模要素和逻辑功能2.1建模要素VERT网络的建模要素是活动(弧)和节点,其仿真过程可以想象成一定的时间流、费用流和性能流通过各项活动,并受到节点逻辑的控制流向相应的活动中。每次仿真运行,就相当于这些流从源节点出发,经过相应的节点和活动,执行相应的事件,最后到达网络的终节点。由于网络中可以选用具有各种逻辑功能不同的节点,可能导致三种流只经过网络中的部分节点和弧,并到达某个终止节点。因此,必须对网络作多次重复的仿真运行,才能使整个网络中所包含的各个节点和活动都有机会得到实现,得出相应的概率分布,而每次仿真运行不过是对网络实现的一次抽样。VERT网络中活动和节点都有时间、费用和性能三种参数。每个活动上既可赋给弧本身所具有的三种参数,该项活动本身所需要的时间周期、消耗的费用及经过本活动所产生的性能参数。同时,每项活动上还具有累积的三种参数。根据活动在网络中的位置,从源节点开始,时间流、费用流和性能流经过一定的路径,到达该活动时,所有途经活动上三项参数的累计总和。例如,在网络中某项活动完成时,在该活动上可以得到从软件项目开始到此活动完成时刻的周期、累计费用和到此时已达到的性能值。由于VERT网络中包含概率型和条件型两种逻辑功能,因此在仿真运行时有些活动能成功地实现(以概率为1得到实现),而有些活动则不能成功地实现,这表示前一段过程的失败。例如进行某项设计工作,如果经过设计、试制、试验等各个阶段,其结果不能达到设计性能要求,这时,在完成试验活动以后,时间和费用的累计值却被置零,表示该项设计试制工作的失败。2.2弧(活动)的类别按照活动在VERT网络中所取的作用,可大致分为四类。(1)普通弧(活动)这类弧是VERT网络中的直接组成部分,普通弧上都带有时间、费用和性能的参数值。它们的参数值一般是以概率分布的形式表示。(2)自由弧(活动)自由活动不在VERT网络中直接表示出来,但是网络中的其它活动可以引用它们的参数,自由弧上所赋的时间、费用和性能值可以通过一定的数学关系式进行调用。(3)传送弧(活动)传送活动是VERT网络的组成部分,它仅作为各种参数通道,对于某些节点之间的关系具有时间上的和先后次序的约束。传送弧上不赋时间、费用和性能参数值,或可理解为三项参数值均等于零,因而被传送的参数流不发生增值。(4)排放弧(活动)对于某些被取消的节点,如果已有活动引入该节点,则在VERT网络中可能出现流量的堵塞现象。在这种情况下,可在该节点的输出端设置一个排放活动,使流量通过这个活动传出系统。在仿真运行中,各类活动都可以处于不同的状态。当该活动能成功地实现时,则参数流通过本活动输出至下一节点,这种状态称为成功完成状态。如果某项活动处于非成功完成状态,则该活动的时间和费用值仍通过本弧输出至下一节点,但没有性能值输出。如果某项活动处于被取消状态,则活动不能被执行,因而也没有参数流通过,不消耗任何时间和费用,更不会产生任何性能。2.3节点的类别VERT网络中的节点表示前接活动的结束和后接活动的开始,节点被称为总过程中的一个里程碑。VERT节点具有丰富的逻辑功能,从而可以在仿真运行中决定要启动哪些输出弧或是否要启动本节点等。根据节点的逻辑功能,VERT节点可分为两大类,即组合节点和单个节点。组合节点由输入逻辑和输出逻辑组成,而单个节点只包含一种单个逻辑。下面分别对上述二种节点进行说明。组合节点(1)输入逻辑1)初始逻辑(INIT)。用作网络流的始点,具有初始逻辑的组合节点称为初始节点,它只设输出活动弧,而没有输入弧。在同一个网络中可以设置多个初始节点,但各个初始节点上由使用者赋予的T、C、P值必须一致,一般都赋为零。2)“与”逻辑(AND)这种输入逻辑规定只当该节点的所有输入弧都成功完成之后,汇合的输入网流才能通过节点,并按输出逻辑确定的方式传送到输出弧,则此节点处于成功完成状态。当有一个或一个以上的输入弧处于不成功完成状态或被取消状态,则此节点也处于被取消状态,流入节点的网流从“排放弧”流出,该节点的输出弧均处于被取消状态。当节点处于成功完成状态,节点上的时间按所有引入弧上的最大时间确定,费用值是该节点所有前导弧上的费用累计值,性能也分别是所有前导弧上的综合性能的总和。当节点处于被取消状态,节点的时间和费用值按成功节点所述办法确定,节点的性能值约定取成零。3)“部分与”逻辑(PAND)根据节点输入弧的状态,“部分与”逻辑可对此节点进行以下处理。如果至少有一个输入弧处于成功完成状态,此节点即处于成功完成状态。如果所有输入活动处于被取消状态,则此节点也处于被取消状态,且其输出活动也全部被取消。如果输入活动中虽然没有成功完成状态的弧,但却存在非成功完成状态的弧,或非成功完成和被取消状态的活动并存,则应启动排放活动,流量通过该活动输出。这时,节点处于成功完成状态。节点上的时间、费用和性能值的计算方法和带AND输入逻辑的节点完全一致。4)“或”逻辑(OR)“或”逻辑要求有一个且仅有一个输入弧成功完成时,就将输入流转移到输出弧上去,并按输出逻辑输出,节点处于成功完成状态。然而这个逻辑不需要等待,即不需等待所有输入弧到来或被取消,只要有一条输入弧成功完成,网流便立即通过节点,被送至输出弧以便继续加工。当该节点所有输入弧没有成功完成时,网流将从排放弧流出,节点处于被取消状态。带有OR逻辑节点的时间和性能值,取作首先成功完成的输入弧的累计时间值和累计性能值,而费用值取该节点所有前导弧的费用累计值。当节点处于被取消状态,节点的时间和费用按前面办法计算,其性能取为零。(2)输出逻辑1)全部逻辑(ALL)如果节点已被启动,参数流就可以通过,并且ALL逻辑无条件地将此节点的所有输出弧启动。2)蒙特卡洛逻辑(MC)此输出逻辑要求对各输出弧的启动赋以一定的概率值,在一次仿真运行中只有一个输出活动按所赋概率值被随机启动,而其余输出活动均被取消。此节点各输出活动的启动概率之和应等于1。当作多次仿真运行时,各输出活动与被启动的次数与所赋启动概率值相对应。3)滤波1逻辑(FILTER1)这种输出逻辑按使用者在输出弧上的时间、费用或性能作为约束条件,能够激发一条或者一组输出弧的加工,这些约束条件是由本节点上的时间、费用、性能的上、下界构成的。如果节点的参数落在某输出弧上设定的参数界限内,此弧将被激发或加工,否则,此弧在剩下的迭代阶段中将被取消。节点的输出弧,除一条必须无约束的排放弧外,其余的都应该有约束条件,仅当所有的约束弧都不被加工时,这条排放弧才被启动。FILTER1附设有“扣除”功能,就是在检查输出弧的约束条件之前,临时修改节点的时间、费用和性能值。修改的方法是从节点的时间、费用和性能值扣除前面某个已加工节点的相应参数值,在约束检查完后再将节点的时间、费用和性能值还原。4)滤波2逻辑(FILTER2)本节点输出活动所提出的约束条件是已成功完成的输入弧的数量,在仿真运行中,到达本节点的成功完成输入弧的数量若符合上述约束条件规定的上下限,此输出弧即被启动,否则输出弧不被启动。各个输出弧上可以规定不同的约束条件。但是,FILTER2只能和PAND输入逻辑联合在一起使用,不能和别的输入逻辑一起组合使用。5)滤波3逻辑(FILTER3)本节点输出弧上的约束条件可以规定为本弧的所有前导弧中必须成功地完成的弧的数量,或非成功完成的弧的数量,或被取消弧的数量。这些弧并不一定是本节点的输入弧。这些弧的数量可以根据建模需要由仿真建模人员规定。本节点的各个输出弧可以规定不同的约束条件。6)终止逻辑(TERM)终止逻辑只能同AND输入逻辑或PAND输入逻辑组成终止节点,它是整个网络的终点,没有输出弧。它对输入弧的要求是所有的输入弧必须都成功完成,而不应出现非成功完成状态的输入弧。在组合节点的一条输出弧被激发、加工之后,此弧的累计时间、费用和性能参数值等于其输入端点的时间、费用和性能值与本弧自身的时间、费用和性能值之和。单个节点单个节点是为特定用途而设立的网络逻辑。这种节点的输入和输出逻辑是组合联成一体的,每个节点设有N条输出弧,其中每条都有一条输入弧与之对应(配对),使得网流能够从给定的输入弧直接转入一条指定的输出弧。此外,单个逻辑节点还需要设立一条无匹配的输出弧,此弧仅当节点逻辑阻止了所有输出弧的激发时才被启用,是作为备用的“排放弧”。在比较和优先逻辑中,设有弧加工条件,即“要求加工的输出弧的数目”,此条件在网络中以置于节点名称后面并冠有“+”或“-”号的数码表示,例如COMPARE+3或COMPARE-3。符号“+”代表“必需”条件,而符号“-”则代表“期望”条件。“必需”条件意味着所设条件必须完全符合,否则将启动“排放弧”。如COMPARE+3代表成功地加工三条输出弧这一要求是必需的,此时为阻止排放弧的激发,应至少存在三条输入弧成功地得到加工。当加工过程按照“期望”条件进行时,仅在一条成功得到加工的输入弧也没有的情形下,排放弧才被激发。在“期望”条件的情形,依赖于成功得到加工的输入