项目风险管理技术——VERT 方法综述
摘要:VERT 方法最初的运用对象大多数属于国防系统研制的计划管
理和风险决策分析。近年来,高技术研制项目已广泛渗入民用产品和
一般工业企业, VERT 方法的应用已扩展到各行各业,IT 行业也不
例外,显示出 VERT 的广阔应用前景。我们旨在将 VERT 方法引入
软件领域,为项目管理人员进行项目风险分析提供一种行之有效的方
法。
关键词:风险评审技术 项目管理 风险管理
1 引言
风险评审技术(Venture Evaluation Review Technique,简称 VERT)
是一种以管理系统为对象,以随机网络仿真为手段的风险定量分析技
术。在软件项目研制过程中,管理部门经常要在外部环境不确定和信
息不完备的条件下,对一些可能的方案做出决策,于是决策往往带有
一定的风险性,这种风险决策通常涉及到三个方面,即时间(或进
度)、费用(投资和运行成本)和性能(技术参数或投资效益),这
不仅包含着因不确定性和信息不足所造成的决策偏差,而且也包含着
决策的错误。
VERT 正是适应某些高度不确定性和风险性的决策问题而开发的
一种网络仿真系统。在 80 年代初期,VERT 首先在美国大型系统研
制计划和评估中得到应用。VERT 在本质上仍属于随机网络仿真技术,
按照工程项目和研制项目的实施过程,建立对应的随机网络模型。根
据每项活动或任务的性质,在网络节点上设置多种输入和输出逻辑功
能,使网络模型能够充分反映实际过程的逻辑关系和随机约束。同时,
VERT 还在每项活动上提供多种赋值功能,建模人员可对每项活动赋
给时间周期、费用和性能指标,并且能够同时对这三项指标进行仿真
运行。因此,VERT 仿真可以给出在不同性能指标下,相应时间周期
和费用的概率分布、项目在技术上获得成功或失败的概率等等。这种
将时间、费用、性能(简称 T、C、P)联系起来进行综合性仿真,为
多目标决策提供了强有力的工具。
VERT 技术是在 PERT、GERT 和 Q-GERT 的基础上发展起来的。
在 70 年代初期,美国人在 GERT 网络技术的基础上发展了网络数学
分析器 MATHNET(Mathematical Network Analyzer),它可以把离散
事件活动、活动时间和费用综合起来构成一个概率特征进行计算和分
析。随后又开发了网络统计分析器 STATNET(Statistical Network
Analyzer)和网络求解分析器(Solving Network Analyzer)等网络技
术。与此同时还对 MATHNET 进行了修改,重新命名为风险数据系
统和费用分析法 RISCA(Risk Information System Cost Analysis),同
时也开发了全面风险评估和费用估算网络 TRACENET(Total Risk
Accessing Cost Analysis),从而进入了风险评估邻域。然而这些系统
尚不能评定与性能有关的风险度,特别是研究和开发中技术性能指标
能否达到规定的风险度。到 72 年,由 Gerald 等研究开发
VERT 技术,才使风险度估计成为可能。此后,经过改进和扩充,形
成现在的 VERT,为实际应用打下了基础。
2 建模要素和逻辑功能
建模要素
VERT 网络的建模要素是活动(弧)和节点,其仿真过程可以想象
成一定的时间流、费用流和性能流通过各项活动,并受到节点逻辑的
控制流向相应的活动中。每次仿真运行,就相当于这些流从源节点出
发,经过相应的节点和活动,执行相应的事件,最后到达网络的终节
点。由于网络中可以选用具有各种逻辑功能不同的节点,可能导致三
种流只经过网络中的部分节点和弧,并到达某个终止节点。因此,必
须对网络作多次重复的仿真运行,才能使整个网络中所包含的各个节
点和活动都有机会得到实现,得出相应的概率分布,而每次仿真运行
不过是对网络实现的一次抽样。
VERT 网络中活动和节点都有时间、费用和性能三种参数。每个活
动上既可赋给弧本身所具有的三种参数,该项活动本身所需要的时间
周期、消耗的费用及经过本活动所产生的性能参数。同时,每项活动
上还具有累积的三种参数。根据活动在网络中的位置,从源节点开始,
时间流、费用流和性能流经过一定的路径,到达该活动时,所有途经
活动上三项参数的累计总和。例如,在网络中某项活动完成时,在该
活动上可以得到从软件项目开始到此活动完成时刻的周期、累计费用
和到此时已达到的性能值。
由于 VERT 网络中包含概率型和条件型两种逻辑功能,因此在仿真
运行时有些活动能成功地实现(以概率为 1 得到实现),而有些活动
则不能成功地实现,这表示前一段过程的失败。例如进行某项设计工
作,如果经过设计、试制、试验等各个阶段,其结果不能达到设计性
能要求,这时,在完成试验活动以后,时间和费用的累计值却被置零,
表示该项设计试制工作的失败。
弧(活动)的类别
按照活动在 VERT 网络中所取的作用,可大致分为四类。
(1)普通弧(活动)
这类弧是 VERT 网络中的直接组成部分,普通弧上都带有时间、费
用和性能的参数值。它们的参数值一般是以概率分布的形式表示。
(2)自由弧(活动)
自由活动不在 VERT 网络中直接表示出来,但是网络中的其它活动
可以引用它们的参数,自由弧上所赋的时间、费用和性能值可以通过
一定的数学关系式进行调用。
(3)传送弧(活动)
传送活动是 VERT 网络的组成部分,它仅作为各种参数通道,对于
某些节点之间的关系具有时间上的和先后次序的约束。传送弧上不赋
时间、费用和性能参数值,或可理解为三项参数值均等于零,因而被
传送的参数流不发生增值。
(4)排放弧(活动)
对于某些被取消的节点,如果已有活动引入该节点,则在 VERT 网
络中可能出现流量的堵塞现象。在这种情况下,可在该节点的输出端
设置一个排放活动,使流量通过这个活动传出系统。
在仿真运行中,各类活动都可以处于不同的状态。当该活动能成功
地实现时,则参数流通过本活动输出至下一节点,这种状态称为成功
完成状态。如果某项活动处于非成功完成状态,则该活动的时间和费
用值仍通过本弧输出至下一节点,但没有性能值输出。如果某项活动
处于被取消状态,则活动不能被执行,因而也没有参数流通过,不消
耗任何时间和费用,更不会产生任何性能。
节点的类别
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 代表成功地加工三条输
出弧这一要求是必需的,此时为阻止排放弧的激发,应至少存在三条
输入弧成功地得到加工。当加工过程按照“期望”条件进行时,仅在一
条成功得到加工的输入弧也没有的情形下,排放弧才被激发。在“期
望”条件的情形,依赖于成功得到加工的输入弧的数目,最终被加工
的输出弧可能是所要求的全体、其中一部分或是其中一个。对于以下
情形,排放弧可以取消:所有输入弧的成功完成概率都等于 ,并
按“期望”条件进行加工或按“必需”条件加工但只要求加工一条输出弧。
在输出弧的数目超过要求加工的输出弧数目的情形下,如下比较和优
先逻辑将用于选择最佳的输出弧集合。
1)比较逻辑(COMPARE)
当仿真运行到此比较逻辑节点时,系统对该节点各个输入弧的时间、
费用和性能进行加权综合运算,根据计算的结果选出规定数量的输入
弧,然后将流量从这些输入弧转移到对应的输出弧中去。这个逻辑根
据输入时间、费用和性能参数选择最佳输出弧集合。使用正的权
(~)时,最佳输出集合按照加权组合参数值。使用负的权
(~)时,则效果相反。在同一应用中,不能同时使用正权和负权。
当时间是唯一的决策依据时,节点时间值取为最佳输入弧集合中花费
时间最多那条弧的累计时间值。节点费用值取为所有被加工的输入弧
的累计时间之和,而节点性能值取为所有被成功地加工的输入弧的累
计效益的平均值。
2)优先逻辑(PREFERED)
用户可在优先逻辑节点上对各输入弧规定不同的优先等级,并在仿
真运行到本节点时自动选出指定数量的优先级较高的输入弧,然后将
参数流由这些输入弧转移到对应的输出弧去。这个逻辑赋予第一偶对
输入和输出弧相对于第二偶对输入和输出弧的优先地位,以及第二偶
对相对于第三偶对的优先地位,等等。所以,此逻辑选择最佳输出弧
的原则是“优先”。对于优先逻辑节点,在“期望”加工条件下,能够阻
止“1 号”输出弧被激发的唯一因素,是它所对应的是输入弧没有成功
完成。这个逻辑节点上 C 值、P 值的计算办法同比较逻辑节点一样。
节点上时间值取作输入弧集合中消耗时间最多那条弧的累计时间值。
以上两种单个逻辑节点,都可以通过两种方式来选择输入活动的数
量。一种是“要求”方式,如果由于某些输入活动被取消等原因而导致
选不出足够数量所要求的输入活动,则所有输出活动均被取消。另一
种是“希望”方式,在选不出足够数量的输入活动时,允许将已成功完
成的入选输入活动上的参数流转送到对应的输出活动中去。对于以上
两种节点,输出弧的累计 C 参数值和累计的 P 参数值,分别等于本
弧自身 C 参数值+关联输入弧的累计 C 参数值和本弧自身的 P 参数
值+关联输入弧的累计 P 参数值。在按“必需”条件加工的情形下,被
加工输出弧的累计 T 参数值,取为节点的时间和本弧自身 T 参数值
之和。对于按“期望”条件加工的情形,输出弧的累计 T 参数值,取为
相应的输入弧的累计时间值和本弧自身 T 参数值之和。注意,上述 T
参数值计算规则有如下例外情形:
在使用 COMPARE 逻辑时,利用 C 参数值、P 参数值的权;
在使用 PREFERRED 逻辑时,想在处置完初始侯选对象后,进一
步按优先表加工输入弧。
对于上述情况,某些输出弧的激发需要等待输入弧的加工。排放弧
的累计 T 参数值和累计的 C 参数值,分别等于输入端点 T 值+本弧自
身的 T 参数值和输入端点 C+值本弧自身 C 参数值。排放弧的累计 P
参数值则等于本弧自身 P 参数值。
3)排队逻辑(QUEUE)
本节点提供一个队列条件,各输入活动传来的参数流,按先进先出
的排队规则在队列中等待服务。本节点可安排规定数量并行服务台进
行服务,并将参数流按排队顺序传送到对应的输出活动中去。
如同比较逻辑和优先逻辑节点一样,这个逻辑节点有 N 条输入弧
和与之配对的 N 条输出弧,还有一条无配偶的输出弧,即排放弧,
此弧仅当所被激发的输入弧都失败时始被启动。排队逻辑的主要作用,
是通过排队的方法,将网流从输入弧传送给它的配偶输出弧。当网流
从激发输入弧到达节点时,它们按照到达的先后次序排队,等待“侍
者”的加工,“侍者”的数目在网络图中以跟在节点名称后面的数码表
示(例如 QUEUE2)。本逻辑假定输出弧携带有“侍者”给予的在加工
配偶输入弧时所消耗的时间、所花费的代价和得到的效益。一给定输
出弧的累计 T 参数值取作以下数值之和:配偶输入弧的累计时间;网
流排队等待时间;侍者加工此网流所花费的时间。
输出弧的累计 C 参数值和累计的 P 参数值,可按同一方法计算,
但排队等待不增加费用和效益。这种节点上的 T 值,取为所有输出弧
的累计费用之和,除以激发输出弧的数目,因而是平均效益值。因为
排放弧仅在失败情形下使用,所以,其上生成的自身的 T,C,P 参
数值与加工内部网流的侍者是无关的(已知,对于其它输出弧,这的
确是有关的)。也许,此弧应当视为一个节点,通过它将进入一个新
的网络。下述计算排放弧上累计 T,C,P 参数值的公式反映了这一
看法。
累计 T 值=所有激发输入弧的最大时间值+本弧上生成的自身的 T
参数值,
累计 C 值=所有激发输入弧的累计 C 值之和+本弧上生成的自身
的 C 参数值,
累计 P 值=本弧上生成的自身的 P 参数值
比较逻辑、优先逻辑和排队逻辑的输入活动和输出活动之间都有一
一对应的关系。
4)选序逻辑
选序逻辑节点预先对该节点的输出活动按照其时间、费用、性能参
数作加权综合计算,据此将输入活动按高低等级排列。然后,将各输
入活动上的参数流送到对应等级的输出活动中去。
和前面三种组合逻辑节点一样,有 N 条输入弧和 N 条输出弧一一
对应。另外还有一条排放弧,此备用输出弧仅当所有输入弧都失败时
才被启动。这个逻辑的作用,是通过由 T,C,P 的权所确定的分类,
将网流从输入弧传送到输出弧。如果 T 的权为 而 C,P 的权为
,此时从输入弧首先到达节点的网流,将从“1 号”输出弧输出,第
二到达的网流从“2 号”输出弧输出,等等。当 C 的权 而 T,P 的
权为 时,那样从最小的 C 值输入弧传来的网流将从“1 号”输出弧
输出,等等。在 P 的权等于 而 T,C 的权为 的情形下,从具
有最大 P 只的输入弧传来的网流从“1 号”输出弧输出,…。当在节点
上指定的是一组混合的 T,C,P 权值(例如,T 的权=,C 的权
= 和 P 的权=)时,从具有最大加权组合参数值的输入弧传至节
点的网流,将从“1 号”输出弧输出,有次大加权组合参数值输入弧送
来的网流从“2 号”输出弧输出,等等。当指定负权时,作用恰恰相反。
在同一应用中,不能同时使用正权和负权。
3 网络模型
模型概念
VERT 网络模型是通过带有时间、费用和性能等变量值的弧和节点,
按照它们的相互关系连接起来的网状图,是一种随机网络,因此它属
于数学模型。
一个数学模型是一个真实系统的抽象,一般说来,它可能而且应该
比现实本身更简单,更清晰,更概括。然而,数学模型并不是真实系
统。它与真实系统的关系如图 1 所示。
好的数学模型必须能够反映出真实系统中所要研究方面的主要性
质和特征。这取决于简化或抽象的合理性和科学性,取决于真实系统
所能提供的各种信息的准确性和充分性。当然,也取决于进行这种简
化和抽象的人素质和经验。因此,一般说来,数学模型的建立不可避
免地要包括检验与修正模型的过程。
对真实决策系统,构造符合实际的随机网络模型,是应用随机网络
评审方法进行风险决策分析的关键步骤。其中最重要的一环是绘制网
络图,即构造网络模型。
构造网络模型的方法,它依赖于所决策问题(系统)的性质、大小
及复杂程度,也随着不同决策者的习惯、经验和素质而不同。VERT
建模方法与 PERT 方法类似。
构造网络模型的过程大体可分为以下几个步骤。第一步,确定决策
的环境。这一步就是在调查研究的基础上,确定被分析系统的问题、
决策目标、变量和约束条件以及可接受的风险水平。第二步,按工作
进程与风险分析需要画出流程图。在调查研究的基础上,画出整个系
统各个设计阶段的流程和各个设计阶段子流程。第三步,绘制 VERT
网络图。在第二步流程图的基础上,应用 VERT 的弧和节点功能,把
流程图改造成 VERT 随机网络图。第四步,确定弧和节点的数据。确
定弧上的时间、费用及性能参数和节点上参数及逻辑等,并在仿真运
行中加以检验和修正,不断去伪存真,构造出反映真实系统的随机网
络模型。
数学描述
VERT 随机网络模型是一个图论模型,称为图 G,记节点集合为
N,弧集合为 A,则有: G={N,A};这里 N={N1,N2,N3………
Nn},Ni 表示第 i 个节点,n 为节点总数;A={Aij|i,j=1,2,3……n,i< P>
VERT 网络中有两种流。一种流是自身携带的网流;一种是网络流
到此处的累计网流。对于弧,一种是由自身的时间(Tij)、费用(Cij)
和性能(Pij)组成的网流;另一种则是由弧的累计时间( )、累计费
用( )和累计性能( )组成的网流。对于节点,由于它本身不
消耗时间、费用和性能,所以它没有自身网流,只有累计时间(NTi)、
费用(NCi)和性能(NPi)组成的网流。弧和节点的累计网流都是网络模
型的未知量,是模拟过程中要确定的模型基本解。有了它,就可对节
点和弧的机动时间、关键线路等进行分析。
网流形成原则要受节点、弧的状态和逻辑限制。弧有成功、不成功
和取消三种状态,节点也有成功、不成功和取消三种状态。节点逻辑
比较复杂,它与弧的状态密切相关,不同逻辑差别较大。例如,对 AND
逻辑,先根据输入弧的状态确定节点的状态,然后确定成功节点的时
间、费用和性能值,用数学表达式表示如下:
其中 OPT 表示对有相同开始节点和结束节点的弧求最优。
对于弧累计时间、费用和性能值,需根据弧的状态,用它的开始节
点的时间、费用和性能的累计值加上弧自身的时间、费用和性能。
4.小结
综上所述,我们对 VERT 的发展历程、建模要素、逻辑功能以及网
络模型进行了较为详细地探讨,这些都是 VERT 方法引入软件领域的
基础理论。当然,由于 VERT 方法本身是一种定量分析技术,具有很
强的理论性,仅仅通过本文是很难将其完全掌握的,作者只希望能起
到抛砖引玉的作用。