风险评审技术 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
VERT 网络中有两种流。一种流是自身携带的网流;一种是网络流到此处的累计网流。对于弧,
一种是由自身的时间(Tij)、费用(Cij)和性能(Pij)组成的网流;另一种则是由弧的累计时间()、
累计费用()和累计性能()组成的网流。对于节点,由于它本身不消耗时间、费用和性能,
所以它没有自身网流,只有累计时间(NTi)、费用(NCi)和性能(NPi)组成的网流。弧和节点的累
计网流都是网络模型的未知量,是模拟过程中要确定的模型基本解。有了它,就可对节点和弧
的机动时间、关键线路等进行分析。
网流形成原则要受节点、弧的状态和逻辑限制。弧有成功、不成功和取消三种状态,节点也有
成功、不成功和取消三种状态。节点逻辑比较复杂,它与弧的状态密切相关,不同逻辑差别较
大。例如,对 AND 逻辑,先根据输入弧的状态确定节点的状态,然后确定成功节点的时间、费
用和性能值,用数学表达式表示如下:
其中 OPT 表示对有相同开始节点和结束节点的弧求最优。
对于弧累计时间、费用和性能值,需根据弧的状态,用它的开始节点的时间、费用和性能的累
计值加上弧自身的时间、费用和性能。
4.小结
综上所述,我们对 VERT 的发展历程、建模要素、逻辑功能以及网络模型进行了较为详细地探
讨,这些都是 VERT 方法引入软件领域的基础理论。当然,由于 VERT 方法本身是一种定量分
析技术,具有很强的理论性,仅仅通过本文是很难将其完全掌握的,作者只希望能起到抛砖引
玉的作用。