8.2案例二:蒙特卡罗分析
阅读以下关于信息系统项目管理过程中风险管理和蒙特卡罗分析方面问题的叙述,回答问题1至问题3。
8.2.1案例场景
某公司实施CRM工程,实施过程中进行风险量化,其中的进度仿真采用蒙特卡罗分析,如图8-2所示。
需求调研阶段,发现功能需求15个,非功能需求12个;需求复审阶段,有10个用户参与复审,所有复审者都有相同解释的需求数目是24个。
项目开发过程中,应用功能点法则,分解出的系统功能点有346开发过程中发现23个错误,提交后又发现3个错误。
测试过程中,采用植入故障法估算程序中原有故障总数,人为植入的故障数是10个,经过一段时间的测试后发现的播种故障数是4个,在测试中又发现原有的故障数是2个。
产品发布时,发布模块总数是46个,和以前相比,变动6个模块,新添加7个模块,删除6个模块。
【问题1】(8分)
解释案例中分析图的含义,简述进度仿真中,为什么不用传统的数学分析技术(不超过250字)。
【问题2】(8分)
请用500字之内阐述项目质量管理中蒙特卡罗模拟方法的一般步骤。
【问题3】(9分)
根据案例中的数据,分别计算整体缺陷清除率、需求解释一致性、程序中原有的故障数和软件成熟度。
8.2.2案例分析
【问题1】
本题考查考生在进度仿真中对蒙特卡罗仿真结果进行分析的能力。要想回答好该题,考生需要了解蒙特卡罗曲线的实际意义。
风险量化的目的是形成有关需要追逐的机遇和需要注意的威胁的清单,建立有关项目团队有意识地接受或忽略的那些风险源和风险事件,以及谁决定这么做的文档。进行风险量化的常用方法包括:期望的货币价值、统计综合、风险仿真、决策树等。其中风险仿真除了量化风险以外,还可以制定项目进度计划。
风险仿真使用系统的表示法或模型来分析系统的行为或性能。项目最常用的仿真形式,是使用项目网络作为项目模型的进度仿真。大多数进度仿真是基于某种形式的蒙特卡罗(Monte Carlo)分析,该方法是一种模拟方法,通过多次“执行”目标项目,从而给出计算结果的统计分布,可以用来量化风险、计算在不同活动假设下的多个项目的持续时间。根据蒙特卡罗分析所得的结果,可以评估在不利条件下进度计划的可行性;以及为了应付和减缓意外风险情况带来的影响,要准备的应急/应对计划;此外,该模拟结果还可以评估这些应急/应对计划的可行性。
该曲线利用蒙特卡罗分析描述项目的进度仿真,该S形曲线显示了针对特
定日期,项目的累积概率。曲线的开始点表示项目开始的前100天为准备期,项目开始200天可以完成项目的50%,项目开始320天可以基本完成。该S曲线向左移动表示项目完成日期提前,但这样有更高的风险;向右移动表示项目完成日期拖延,这样风险会降低。
任何大型或复杂的项目都应该进行进度仿真,传统的数学分析技术,如关键路径法(CPM)和项目评审技术(PERT)一等,都以最小值为基准,并且不计算路径的交汇,这样会低估项目的工期。
【问题2】
本题考查考生在进度仿真中运用蒙特卡罗模拟方法进行分析的能力。要想回答好该题,考生需要熟悉蒙特卡罗模拟方法的原理和使用步骤。
蒙特卡罗模拟是一种随机模拟方法。蒙特卡罗方法得名于欧洲著名赌城,摩纳哥的蒙特卡罗。大概是因为赌博游戏与概率的内在联系,第二次世界大战时美国曼哈顿计划中把这种方法称为蒙特卡罗方法。在这之前,蒙特卡罗方法就已经存在。1777年,法国Buffon提出用投针实验的方法求圆周率Π。这被认为是蒙特卡罗方法的起源。近年来,随着计算机运算速度的提高,蒙特卡罗模拟得到了广泛的运用。
蒙特卡罗模拟的基本思想是人为地造出一种概率模型,使它的某些参数恰好重合于所需计算的量。又可以通过实验,用统计方法求出这些参数的估值,把这些估值作为要求的量的近似值。
在项目管理中,常常用到的随机变量是与成本和进度有关的变量如价格、用时等。由于实际工作中可以获得的数据量有限,它们往往是以离散型变量的形式出现的。例如,对于某种成本只知道最低价格、最高价格和最可能价格;对于某项活动的用时往往只知道最少用时、最多用时和最可能用时三个数据。经验告诉我们,项目管理中的这些变量服从某些概率模型。现代统计数学则提供了把这些离散型的随机分布转换为预期的连续型分布的可能。可以利用计算机针对某种概率模型轻易进行数以千计、甚至数以万计的模拟随机抽样。项目管理中蒙特卡罗模拟方法的一般步骤是:
(1)对每一项活动,输入最小、最大和最可能估计数据,并为其选择一种合适的先验分布模型。
(2)计算机根据上述输入,利用给定的某种规则,快速实施充分大量的随机抽样。
(3)对随机抽样的数据进行必要的数学计算,求出结果。
(4)对求出的结果进行统计学处理,求出最小值、最大值以及数学期望值和单位标准偏差。
(5)根据求出的统计学处理数据,让计算机自动生成概率分布曲线和累积概率曲线(通常是基于正态分布的概率累积S曲线)。
(6)依据累积概率曲线进行项目风险分析。
【问题3】
本题考查考生在软件开发中定量分析软件质量的能力。要想回答好该题,考生需要熟悉软件开发常用定量分析指标和计算方法。
软件的整体缺陷清除率指的是软件产品开发过程中发现的缺陷数占软件产品所有缺陷数的比率。设Dl为在开发过程(提交之前)中发现的所有缺陷数,D2为提交后发现的缺陷数,那么整体缺陷清除率就等于Dl/(Dl+D2)。一般而言,CMM等级越高,整体缺陷清除率也相应比较高。例如,美国的平均整体缺陷清除率目前只达到大约85%。而像AT&T, IBM,摩托罗拉和惠普这样一些大公司的顶级项目,通过实施CMM,其缺陷清除率可以超过99%。
对本题而言,D1=23,D2=3,则整体缺陷清除率为23/(23+3)=0.885=88.5%。
软件的需求解释一致性指的是所有复审者都有相同解释的需求数目和软件中所有需求数目(功能需求和非功能需求之和)的比率。设Nui为所有复审者都有相同解释的需求数目,Nf为功能需求的数目,Nnf为非功能需求数目,那么需求解释一致性就等于Nui/ (Nf+Nnf)。一般而言,如果软件需求的模糊性越低,那么需求解释一致性越接近1。
对本题而言,Nui=24,Nf=15,Nnf= 12则整体需求解释一致性为24/(15+12)=0.889= 88.9%。
捕获一再捕获抽样法利用测试前在程序中植入的故障数目来估算程序中原有的故障总数,该方法理论基础是统计分析中的等概率事件原理,应用该方法的前提是要求对播种故障和原有故障同等对待。设Ns是在测试前人为地向程序中植入的故障数(称播种故障),ns是经过一段时间测试后发现的播种故障的数目,no是在测试中又发现的程序原有故障数,则程序中原有故障总数No的估算值为:No=(Ns/ns)no。
对本题而言,Ns =10,ns = 4,no = 5则程序中原有的故障数No=(10/4)2 = 5
8.2.3参考答案
【问题1】(8分)
该曲线利用蒙特卡罗分析描述项目的进度仿真,该S形曲线显示了针对特定日期,项目的累积概率。曲线的开始点表示项目开始的前100天为准备期,项目开始200天可以完成项目的50%,项目开始320天可以基本完成。该S曲线向左移动表示项目完成日期提前,但这样有更高的风险;向右移动表示项目完成日期拖延,这样风险会降低。
任何大型或复杂的项目都应该进行进度仿真,传统的数学分析技术,如关键路径法(CPM)和项目评审技术(PERT)等,都以最小值为基准,并且不计算路径的交汇,这样会低估项目的工期。
【问题2】(8分)
蒙特卡罗模拟是一种有效的随即模拟统计实验方法,其基本思想是人为地造出一种概率模型,使它的某些参数恰好就是所需计算的量。又可以通过实验,用统计方法求出这些参数的估值,把这些估值作为要求的量的近似值。
项目管理中,经常用到的随机变量大多是与成本和进度有关的变量,由于数据量有限,它们往往以离散性形式出现。有经验可知,这些变量服从某些概率模型,利用蒙特卡罗方法结合这些概率模型就可以把那些离散分布转换为连续分布。其一般步骤如下:
(1)对每一项活动,输入最小、最大和最可能估计数据,并为其选择一种合适的先验分布模型。
(2)计算机根据上述输入,利用给定的某种规则,快速实施充分大量的随机抽样。
(3)对随机抽样的数据进行必要的数学计算,求出结果。
(4)对求出的结果进行统计学处理,求出最小值、最大值以及数学期望值和单位标准偏差。-
(5)根据求出的统计学处理数据,让计算机自动生成概率分布曲线和累积概率曲线(通常是基于正态分布的概率累积S曲线)。
(6)依据累积概率曲线进行项目风险分析。
【问题3】(9分)
整体缺陷清除率:23÷(23+3)=23÷26=0.885=88:5%;
需求解释一致性:.24÷(15+12)=24÷27=0.889=88.9%;
程序中原有的故障数:(10÷4) × 2=5;
软件成熟度:[46-(6+7+6)]÷46=27÷46=0.587=58.7%。