基于风险因子对的软件外包风险评估方法

2013-11-30 05:01曹利华陈喜昌刘彦斌卫剑钒
计算机工程与设计 2013年1期
关键词:蒙特卡洛项目风险业务流程

曹利华,陈喜昌,刘彦斌,胡 洁,卫剑钒,马 迪

(1.中国科学院软件研究所,北京100190;2.中国科学院研究生院,北京100190;3.国家开发银行,北京100037)

0 引 言

由于软件外包项目具有很多优势,它越来越受到软件企业的青睐。但发包方和接包方之间存在不可避免的地域、文化、价值观及管理方法等方面的差异,使得软件项目在其外包生命周期过程中存在各种风险。研究表明,大约40%的软件外包开发项目均以失败告终,80%的项目在生命周期的不同阶段会遇到问题[1],导致项目进度延期和成本超支。其中缺乏风险管理是项目进度延期和成本超支的主要原因之一,所以有效地进行风险评估等风险管理活动对项目的成败至关重要。近年来,风险评估技术依据项目所能提供的经验数据的多少及信息详细程度,可分为定性和定量分析两种。然而无论采用哪种方法,在应用软件项目的实际开发中,风险的评估往往因为过多依赖于用户的主观输入,以至于评估有偏差。特别对于软件外包项目,由于缺乏软件外包领域的风险研究,导致软件外包项目的失败比重远远高于普通软件的。本文提出一种基于风险因子对的软件外包风险评估方法解决软件外包风险数据难以获取、不确定性较多的问题。

1 软件外包风险因子对确定

软件外包项目面临着众多的风险,如何从中选取风险因子以及选取哪些风险因子对项目的评估都是至关重要的;在确定了典型外包风险因子后,如何确定哪些因子的共现会给项目带来严重的风险也是一个研究重点。下文将围绕这两个问题展开。

1.1 典型软件外包风险因子识别

由于访谈具有使工作分析人员了解到短期内直接观察法不容易发现的情况,有助于管理者发现问题,本文通过访谈国内几家著名外包企业的专家获得软件外包中典型的风险因子,其中包括业务流程的复杂度高、需求的不确定性高、项目管理能力低、协作效率低、团队稳定性差、项目规模大、人员能力低和系统复杂度高等8方面,表1根据文献调研度量这些风险因子,避免过多的主观输入影响风险评估的准确性。

表1 典型软件外包风险因子度量

每个风险因子均分为5个等级,分别为极高(Very High)、高(High)、中(Nominal)、低(Low)、极 低(Very Low),每个等级对应一个具体的数值,成为风险知识库的一部分(如图1所示)。此外,风险知识库还包括风险因子对关联规则和风险因子度量指标。

1.2 风险因子对确定

在两个风险因子均取极值的情况下,它们共同对项目产生的影响远远大于单个风险因子所产生的影响,称此共现风险因子为 “风险因子对”。例如,当系统复杂度高、人员能力低时形成一个风险因子对,根据风险因子对关联规则[7]将其形式化表示为:

IF((业务流程的复杂度高>Nominal)AND(人员能力<Nominal))

THEN <业务流程的复杂度,人员能力>会产生一个项目风险。

图1 风险知识库

采用风险因子对可避免如下的情况出现:对于风险因子对<业务流程的复杂度高,人员能力低>而言,当业务流程的复杂度高、人员能力高时,业务流程复杂度高带来的风险可通过人员能力高缓解;只有当业务流程复杂度高、人员能力低时,带来的风险很大并且破坏程度很高,原因在于当人员能力低时,可能需要花费大量的时间熟悉高复杂度的业务流程。

基于表1识别的典型软件外包风险因子,通过Delphi法确定风险因子对。Delphi法采用匿名方式调查专家对问卷中问题的看法,在此过程中专家不可以互相讨论,经过多次信息反馈,最后归纳出专家基本一致的意见作为比较准确的预测结果。本文中Delphi专家组由2位领域专家,1位项目经理,3名开发人员组成。经过两轮Delphi法,最终形成表2的风险因子对发生概率调查表,方格中的数字除以6即为风险因子对发生概率。

表2 风险因子对发生概率调查

2 软件外包风险评估

在确定风险因子对后,软件外包项目整体风险通过如下的公式计算

式中:Rfi、Rfj——第i、j个风险因子对应的等级,riskprobij——风险因子对<Rfi,Rfj>发生概率,Project risk——软件外包项目整体风险。在获得项目整体风险后,根据式(2)判断哪对风险因子对对项目整体风险影响最大,其中1≤i≤8,i≤j≤8

风险因子虽然可以量化度量,但是对于一些项目收集不到相关数据,在这种情况下,我们引入蒙特卡洛仿真法评估软件外包项目风险。蒙特卡洛仿真是一种随机仿真方法,常用于风险分析。它依赖于重复随机样本仿真过程并计算结果,常用来处理输入不确定的情形。蒙特卡洛仿真在软件过程仿真、需求分析、风险分析中也很常见。当收集不到风险因子量化度量相关数据时,风险因子等级的选择依赖于主观输入。例如,对于风险因子等级低(Low)与很低(Very Low)之间没有显著的差异,因此不同的人会有不同选择。结果,我们不能给出一个准确的输入。或者,我们可能感觉我们的协作效率更接近于低(Low)而不是很低(Very Low),所以我们选择低(Low)。然而,这样会存在不确定或错误输入的风险。为了解决这个问题,我们用蒙特卡洛仿真评估风险,提高评估结果的准确性。

下面给出基于风险因子对的软件外包风险评估方法的描述,如图2所示。

3 案例研究

采用基于风险因子对的软件外包风险评估方法评估国内一家软件外包企业的6个项目中潜在风险。主要采取以下几个步骤:

步骤1 根据风险知识库(如图1所示)中的风险因子量化度量指标收集项目中风险相关数据(见表3)。

图2 软件风险评估流程

表3 风险因子等级

步骤2 根据风险知识库中(如图1所示)的风险因子对关联规则确定风险因子对。例如对于Project2,存在<系统复杂度高,项目规模大>、<系统复杂度高,需求的不确定性高>、<项目规模大,需求的不确定性高>等风险因子对。由于风险因子较少,在一些项目中不存在风险因子对,这时计算出的项目风险值为0。但这并不意味着项目中不存在风险,在这种情况下,计算过程中考虑所有风险因子等级。

步骤3 评估项目风险。首先根据式(1)和风险因子对发生概率(见表2)计算这6个项目的风险,并进行标准化处理,使得项目的风险值介于0到100。

然后,根据报告风险判断该软件外包风险评估方法的准确性,如图3所示。x轴为项目中记录的风险,y轴为使用该方法计算得到的风险值,图3中的趋势线显示使用我们的软件外包风险评估方法计算的风险与报告风险之间的相关性很强。这表明采用我们的评估方法可有效地评估这6个软件外包项目的风险。

图3 项目风险评估结果

步骤4 根据式(2)判断对项目整体风险影响最大的软件外包风险因子对(如图4所示)。x轴为对各个项目风险产生最大影响的风险因子对,y轴为该风险因子对在项目整体风险中所占的比重。对于Project2,风险因子对<需求的不确定性高,项目规模大>带来的风险约占项目整体风险的10.89%,若在项目早期有效控制该风险因子对带来的风险,项目整体风险将大幅降低。

由于收集的6个项目数据都较为明确,所以本文的案例研究没有涉及到蒙特卡洛仿真法评估项目风险。在数据较为充足的情况下,还需加强对蒙特卡洛仿真法评估风险的案例研究。

图4 对项目整体风险影响最大的软件外包风险因子对

4 结束语

软件外包项目具有很多优势,但不可避免地伴随着许多风险。有效的风险评估可以避免项目开发范围、时间、成本、质量达不到要求,出现被不可实现的长期外包合同套牢的后果以及无法取得预期的外包收益。针对软件外包风险数据难以获取、不确定性较多的特点,本文提出基于风险因子对的软件外包风险评估方法。首先通过专家访谈确定影响外包软件的8个典型风险因子,采用文献调研的法对风险因子量化度量,依据两轮Delphi法确定风险因子对,然后应用公式法进行基于风险因子对的风险评估,并以蒙特卡罗仿真法作为其互补的风险评估方法,最后通过案例研究加以说明。研究发现,采用基于风险因子对的软件外包风险评估方法可以有效评估软件外包项目中的风险,同时该方法简单、实用,具有一定的工程应用价值。

然而,本文仅提出软件外包风险评估方法,并未对如何有效转移风险、控制风险等做深入的研究,对此将来有待进一步研究。

[1]Lascano N,Maniasi S,Colla P.A structured framework for managing offshore outsourcing risks on software support projects[C]//Saint Petersburg,Russia:Software Engineering Approaches for Offshore and Outsourced Development,2010:87-95.

[2]Waterworth B.Technical report——estimating from use cases[R].IBM,2006.

[3]Sakthivel S.Managing risk in offshore systems development[J].Communications of the ACM,2007,50(4):69-75.

[4]Bush A A,Tiwana A,Tsuji H.An empirical investigation of the drivers of software outsourcing decisions in Japanese organizations[J].Information and Software Technology,2008,50(6):499-510.

[5]Sheng Z.Preliminary analysis for risk finding in offshore software outsourcing from vendor’s viewpoint[C]//Zurich,Switzerland:Software Engineering Approaches for Offshore and Outsourced Development,2009:134-148.

[6]Taylor H.Critical risks in outsourced IT projects:The intractable and the unforeseen[J].Communications of the ACM,2006,49(11):74-79.

[7]Betz S,ki J M.Amplification of the COCOMO II regarding offshore software projects[C]//Munich,Germany:Workshop on Offshoring of Software Development-Methods and Tools for Risk Management at the Second International Conference on Global Software Engineering,2007.

[8]Aundhe MD,Mathew S K.Risks in offshore IT outsourcing:A service provider perspective[J].European Management Journal,2009,27(6):418-428.

[9]Iacovou C L,Nakatsu R.A risk profile of offshore-outsourced development projects[J].Communications of the ACM,2008,51(6):89-94.

[10]Nakatsu R T,Iacovou C L.A comparative study of important risk factors involved in offshore and domestic outsourcing of software development projects:A two-panel Delphi study[J].Information & Management,2009,46(1):57-68.

[11]Dhar S,Balakrishnan B.Risks,benefits,and challenges in global IT outsourcing[J].Journal of Global Information Management,2006,14(3):59-89.

[12]Yang Y,Boehm B,Wu D.COCOTS risk analyzer[C]//Florida,USA:Commercial-off-the-Shelf-Based Software Systems,2006.

猜你喜欢
蒙特卡洛项目风险业务流程
航天企业基于信息化的业务流程体系构建方法研究
基于ISM模型的EPC项目风险网络分析
征服蒙特卡洛赛道
基于蒙特卡洛法的车用蓄电池20h率实际容量测量不确定度评定
互联网+背景下物流公司的业务流程再造
基于概率分布的PPP项目风险承担支出测算
建设项目全过程造价管理咨询服务的业务流程分析
基于财务业务流程再造的ERP信息系统构建探析
蒙特卡洛模拟法计算电动汽车充电负荷
联锁项目风险应对措施制定与实施