制导软件精简模型项目进度风险MCS模拟
2022-03-08杨家棚肖卫
杨家棚 肖卫
(湖南云箭集团有限公司,湖南 长沙 410100)
0 引言
航空弹药对于夺取制空权和战争主动权具有极其重要的作用。20世纪90年代以来,以信息技术为基础和先导的高技术使航空弹药技术发生了质的变化,智能化精确制导弹药已现端倪。在航空弹药趋向小型化、精确化和智能化发展的过程中,制导软件的地位不断提升。在总装备部和航定办发布的多项加强军用软件工程化管理的规定中,要求军用软件承研单位必须通过《军用软件研制能力成熟度模型》(GJB 5000A)的体系评价。对于军贸科研和基金类软件研制项目,虽然采用了经过本地化改进的精简开发生命周期模型(以下简称“精简模型”)进行项目管理,但仍经常发生进度延期的问题,对项目进度风险的量化分析不足。
进度目标作为软件项目管理的重要目标之一,关系着整个软件项目开发的成败。进度风险是整个软件项目中的主要冲突[1],要确保软件项目成功,就必须从实质上解决软件项目进度管理中存在的问题。目前,国内外学者主要通过计划评审技术(Project Evaluation and Review Technique,PERT)、关键路径法(Critical Path Method,CPM)和蒙特卡罗模拟法(Monte Carlo Simulation,MCS)等对项目进度风险管理进行研究[1]。其中,PERT在项目管理中应用广泛[2],虽然考虑了活动用时的不确定性[3-4],但采用的是三点估计法估计活动用时,再利用加权平均计算活动用时期望,与实际情况有较大的误差;应用CPM时,需先假设各活动的用时是确定的且具活动间有固定的逻辑关系。
为克服PERT和CPM应用的不足,许多学者对其进行了改进研究。张俊光[5]通过对IT项目和各阶段工作量分布特性的研究,提出通过工作量的分解得到项目进度。杨莉等[6]使用模糊理论并引入缓冲区设置、优化关键路径法,从而对项目进度进行有效管控。张云宁等[7]从克服三点估计法的不足入手,对PERT进行了改进,并着重分析了项目进度风险。这些研究有助于项目管理水平的提高,但在进行项目策划时未能给进度风险的定量分析提供有效的解决方案。
利用MCS可以将项目进度的不确定性风险转化到阶段工作量的确定性统计分布特征上,进行项目进度的风险量化分析[8]。因此,本文应用MCS对采用精简模型的软件研制项目进度风险进行量化分析,以提升军贸科研和基金类软件研制项目的风险管理和分析能力。
1 精简模型及MCS简介
1.1 精简模型简介
精简模型包括系统分析与需求开发、软件设计与实现、软件测试、软件验收与交付4个阶段,设置1个里程碑——软件配置项测试报告完成评审。相对于瀑布模型,精简模型对配置管理活动、项目管理过程与质量保证过程进行了适应性精简,项目管理过程仅对阶段工作量进行估计。
1.2 MCS基本原理
MCS又称为随机抽样模拟法,不同于确定性的数值计算方法,它是一种多元素统计分析方法。MCS通过试验的方式得出事件发生的概率,并用作问题的解。MCS的主要应用步骤如下[9]:
(1)对实际问题进行参数化分析,确定随机变量,描述概率统计过程,构造数学模型。
(2)据模型特点确定随机变量统计抽样的概率分布特征。
(3)建立估计量,产生服从确定概率分布的随机数,进行随机模拟试验,并对模拟结果进行统计处理分析。
2 精简模型项目进度风险MCS建模
2.1 阶段进度估算
采用传统的CPM计算软件项目进度,是将关键路径上的活动持续时间相加得到完成软件项目所需的总时间。使用CPM估算进度时,需要保证每个活动的实际持续时间严格按计划进行,否则很难保证进度估算的准确性。软件开发项目在管理过程中存在许多不确定性因素,如开发人员能力不足、组间协调沟通欠缺、应用新技术等,会对项目进度产生一定程度的影响。因此,活动的持续时间是动态变化的,在精简模型中阶段的持续时间即随机变量。
PERT是利用网络分析制订项目计划且对计划进行评价的技术。PERT网络用箭线图表示,其基本特征有:
(1)用带有方向的箭头表示活动。
(2)描绘了各活动间的逻辑关系,并标示了每项活动的工作量。
(3)禁止出现闭合回路(从某一节点出发最后又回到开始节点)的情况。
将精简模型的阶段视为活动,在PERT网络中有4个活动,分别为:A系统分析与需求开发,B软件设计与实现,C软件测试,D软件验收与交付。
精简模型的PERT网络图如图1所示。其中,圆圈表示项目节点,1是项目开始节点,5是项目结束节点;箭线表示阶段,其上方的字母表示阶段名称;圆括号中的数字表示由PERT估算得到的阶段工作量的期望值。
采用PERT方法计算精简模型每个阶段进度的工作量Sk,公式如下
式中,ak为第k个阶段的最乐观时间;ck为第k个阶段的最可能时间;bk为第k个阶段的最悲观时间。
使用PERT法估计阶段工作量时,不是简单地以取平均值的形式求三个估计量的均值,而是采取加权平均的形式计算最乐观时间、最可能时间和最悲观时间的加权平均值。
2.2 精简模型阶段进度风险的定量分析
在对精简模型阶段工作量进行统计抽样时,其中一个非常重要的步骤是产生随机数,确保抽样得到的阶段工作量的独立性。
理论上,只要有连续分布的随机数,就可以由抽样的方法得到任意分布的随机数。[0,1]分布是最基础的连续分布函数之一。利用MCS法对实际问题进行模拟时,首先需要解决的是大量均匀分布随机数的产生,再选择合适的抽样方法将产生的随机数转换为具有一定统计分布特征的随机数。随机数产生流程如图2所示。
利用确定性算法算得的[0,1]均匀分布随机数序列并非真正意义上的随机数,但具有均匀性、独立性等随机数的统计特征。在实际问题MCS模拟中,一般使用伪随机数代替真正的随机数。因此,采用MCS对精简模型软件开发项目阶段工作进行随机抽样时,各阶段工作量抽样值服从[0,1]分布特征。通过尽可能多次的随机抽样模拟每个阶段工作量的风险的随机特性。随机抽样模拟是通过对项目阶段工作量进行建模,利用统计概率分布描述阶段的进度风险。阶段工作量常见的分布类型有贝塔分布、正态分布和三角分布等。通过对阶段工作量抽样数据的统计,分析项目进度安排是否存在进度延期风险,加强组织和软件项目负责人对软件项目进度管理上的把控。
2.3 精简模型阶段进度风险MCS仿真
精简模型阶段进度风险模块主要包括阶段工作量估计数据获取模块、随机抽样模块和数据统计模块。精简模型阶段进度风险模块组成示意图如图3所示。
阶段工作量估计数据获取模块的主要功能是获取估计的阶段工作量、设定的阶段工作量,统计分布类型和模拟次数数据。随机抽样模块的主要功能是判定设定阶段工作量统计分布类型,产生阶段工作量随机抽样数据。数据统计模块的主要功能是对产生的阶段工作量数据进行分布特性统计、计算阶段工作量进度风险累积概率,并绘制阶段进度分布图与风险曲线图。
根据PERT/CPM对阶段工作量进行估计,获得每个阶段的三个估计值,通过加权平均计算阶段工作量期望值及标准差。阶段工作量估计见表1,其中A为系统分析与需求开发,B为软件设计与实现,C为软件测试,D为软件验收与交付。
表1 阶段工作量估计
由表1可知,项目总工作量的三个估计值分别为:最乐观120天、最可能139天、最悲观175天,总工作量的期望为143天。
设定4组模拟次数,分别为N等于100、1000、10 000、100 000进行项目进度风险模拟。每次模拟后,分别对阶段工作量估计期望的概率和累计概率P1达到100%的第一完成点天数、项目总工作量期望的概率和累计概率达到100%的第一完成点天数进行统计分析。N次模拟的阶段进度风险数据统计见表2。
表2 N次模拟的阶段进度风险数据统计
由表2可知,各阶段在以估计期望值为节点的完成概率约为50%,说明若由PERT技术估计的期望值作为阶段进度节点,阶段任务有约50%的概率是无法完成的,存在进度延期风险;各阶段第一完成点天数在最悲观估计值附近,所以在软件项目策划时,各阶段的工作量定在最悲观时间可以进一步降低进度风险。
由表2还可观察到,模拟次数为100时,数据波动大,所以进行软件项目进度MCS模拟时,模拟次数宜选择1000~100 000。选择模拟次数N=100 000,对MCS模拟得到的项目总工作量进行统计分析。模拟100 000次项目进度风险S曲线如图4所示。
由图4可知,项目在期望值143天完成的概率为37.99%,低于各阶段在期望值完成的概率平均值50.04%。这说明项目总工期进度风险存在叠加效应,在进行项目策划时不能只考虑各阶段的进度风险,还要从整个项目过程进行风险平衡。项目总工期第一完成点为164天,高于估计的期望值143天,低于最悲观175天,说明对整个项目而言,在软件项目策划时以最悲观工作量作为进度节点可以留有6.71%的缓冲区。
因此,在进行软件项目策划时,可以根据项目的紧急程度将项目进度安排在第一完成点和最悲观估计值之间,以保证项目进度留有一定程度的缓冲区,降低项目延期风险。
3 结语
采用本地化的精简模型对军贸科研和基金类软件项目进行项目管理,虽然有一定成效,但进度延误风险仍存在诸多不可控因素,且在项目策划时仅对阶段采用三点估计法得到的项目完成时间过于乐观。为了加强对这两类软件研制的项目管理,本研究利用MCS把军贸科研和基金类制导软件研制项目中的不确定性分布转化为阶段工作量的确定性分布,对项目进度风险进行定量分析,辅助软件项目负责人合理地安排进度。