翟兰杰 刘子豪 程艳红 李恩昊
(中国电子科技集团公司第十五研究所,北京100083)
风险管理是否可以完成改善软件项目成果的任务?软件项目是高风险活动,会产生可变的绩效结果。行业调查表明,只有大约四分之一的软件项目能够完全成功(即按计划、预算和规定完成),并且由于项目失败或无法带来承诺收益的项目,每年损失数十亿美元。有证据表明,这是一个全球性问题,对私营和公共部门组织均造成影响。与软件项目有关的风险管理引起了研究人员基于实践的方法和标准的持续关注。行业调查数据表明,尽管项目成功率有所提高,但软件项目在某些关键绩效标准上的失败比完全成功的可能性更大。此外,实例研究发现,风险管理实践通常不同于文献中提出的解决方案。
本文的结构如下:在下一节中,将对相关文献进行审查和重新评估。在此之后,先描述实例研究并介绍主要发现,再对实践与研究文献中的方法进行比较得出结论。最后,对研究的局限性进行讨论,以及对研究和实践的意义进行阐述。
在本节中,首先,简要介绍风险和风险管理的重要性。其次,分析在项目管理中的风险概念,并与实践需求相比较总结出了四个局限性。最后,审查风险管理和相关的实践规定,得出文献中的结论。
从概念上讲,从组织的角度来看,当组织面对不确定性而受到能力和成本的约束时,这种不确定性从项目分析方面就是一种风险。面临的挑战是要在所有不确定性的方面中找到一个可以修复与处理风险的位置,这些位置相结合来代表适合于该计划并为内部和外部利益相关者所接受的风险状况。因此,风险和风险管理通常涉及妥协的战略和治理问题。然而,风险规避策略会增加项目损失,因此在追求理想的项目目标时,对于风险分析的考虑常常被低估或忽视。
在项目层面,软件项目早已被认为是容易失败的、具有高风险的项目。软件项目风险分为两类:所有项目共有的通用风险和特定于项目的风险。其中一些风险很容易识别和管理,其他方面则不太明显,或者更难预测其可能性和影响。项目规模、结构、复杂性、组成、背景、新颖性、长期的计划和执行范围以及变化多端的项目规模使这些问题变得复杂。因此,软件项目中的风险管理对以下方面很重要:帮助避免灾难;避免返工;集中精力并保持平衡;避免刺激双赢局面。尽管并非所有风险都来自软件实践,但它们都有可能通过交付项目的机制来影响软件过程的结果。
风险和风险管理也很重要,因为IT项目(包括软件项目)的交付可能涉及多方合作者的交付,因此,实现业务目标可能在很大程度上取决于是否可以满足各方的需求,是否实现共赢。那么,如何构想风险以及文献中规定了哪些管理措施来改善项目成果呢?
软件项目中最常见的风险定义是暴露于对实现项目预期成果构成威胁的特定因素。在此基础上,软件项目中的风险通常被定义为事件对项目的概率加权影响。简而言之,R=P*I,其中R是可归因于特定风险因素的风险敞口,P是不希望的事件将被实现的概率,I是事件发生时损失的影响或程度。在商业项目中,风险敞口通常以成本或时间来衡量。
这种风险观点是根据1980年代的管理理论改编的。在经典决策理论中,风险被视为在开发过程中可能产生的结果是有变化的,不是恒定不变的,因此,不同结果的(负向或正向)概率分布的变化。但是,研究发现80%的管理者仅将负面结果视为“风险”。他们发现,风险管理可能需要不同的流程来进行威胁或协议管理,从而意识到项目中风险管理的重要性。因此,尽管一些研究人员仍将风险定义为既包含威胁又包含机会,但风险被认为是危险的或不良结果的威胁。
从理论上讲,传统的风险管理与其他重要的控制流程(例如,问题和危机管理)密切相关,它们具有共同的影响结构。但是,这种相互关系通常在风险相关的研究或基于实践的方法论中并未得到认可或明确说明。总之,基于对风险的简要回顾,可以得出结论,研究文献中“风险”的概念化可能比实际问题的性质更容易理解。
如上所述,软件项目风险管理通常被定义为一组旨在识别、分析和处理风险因素以提高获得成功项目成果和/或避免项目失败的机会的原则和实践。最常见的是,在文献和实践中发现了四种相互关联的风险管理方法,下面进行详细分析方法中涉及的四部分关键因素。
3.1 风险因素清单
根据研究结果,软件项目风险因素清单不太可能普遍适用,在实践中使用发布清单作为风险管理工具时应格外小心。风险/成功因素检查表的最佳用途是作为初学者清单,逐步从组织中随时间的变化上进行考虑,在项目进行过程中的不同时间段制定出风险因素,整个过程中的风险因素构成内部风险因素集。通用列表中与组织的项目不相关的因素可以用被识别为风险的因素来代替。但是,至关重要的是在风险识别和审查过程中,不仅要考虑项目计划期间的风险,还要考虑所有主要利益相关者群体的风险。
3.2 风险分析框架
给定适当的框架,此方法的主要局限性与其主要收益密切相关。框架本身无法改善风险管理,与任何工具一样,其价值(或其他价值)完全取决于其使用的程度。例如,风险识别和分析的质量取决于风险头脑风暴研讨会中利益相关者的态度,他们通过分析工具提供的各种指针进行思考。如果分析是粗略的或肤浅的,则风险管理的收益可能很低。
3.3 风险流程模型
风险流程模型的主要贡献在于它们指导了风险管理行动,而不仅仅是分析性思维。但是,过程模型没有为软件项目风险管理提供“千篇一律”的解决方案。他们需要技能、判断力和毅力,才能在实践中有效地应用它们及其关联的工具和技术。例如,在“识别”并“分析”了风险之后,有必要确定可以对这些风险采取哪些措施,以及应该采取哪些措施。这需要指定合理的、与上下文应用相关的操作。在过程模型的风险响应和风险控制步骤中,文献为通过制定几种通用响应策略(此处考虑的最终风险管理方法)制定行动方案提供了一些支持。
3.4 风险应对策略
风险应对策略可有效地提供一般选项以考虑对预期的项目威胁制定应对措施。随着风险的性质不断发展或发生显著变化,每个项目都需要在整个项目中制定、执行和重新评估特定的响应。但是与狭义的风险定义一致,它们没有针对不可预见的威胁提供通用的响应选项。
因此,基于这次对相关文献的研究,作者得出以下结论:第一,风险的含义与软件项目相关,并且风险管理有必要和潜力来促进项目成果;第二,在研究和实践文献中,风险和风险管理的发展落后于实践中需要应用的需求;第三,在实践中采用风险和风险管理的概念和方法落后于文献中的理解和规定。总之,在研究和实践中需要更好的风险管理。
这些发现没有暗示因果关系。就是说,没有人说风险管理的实践水平低,因为风险管理没有完全满足实践的需要。相反,结论强调需要进行研究以扩展风险概念和风险管理的相关性,以改善软件项目的成果。以下实例研究支持,加强和扩展了这些结论。
该研究调查了政府机构中的软件项目和风险管理实践。该研究的主要目的不是私营部门与公共部门之间的比较,而是要调查一个公共部门的做法,该公共部门近年来在软件项目中经历了显著的成功和失败。与信息提供者进行了结构化的访谈,并根据线人对项目的看法编写了案例研究。访谈包含150个问题,涉及9个主题领域:信息提供者、组织、项目、治理、风险和风险管理、开发、实施、第三方等。这些问题是通过对项目管理和风险管理研究文献中的风险和成功因素进行回顾而得出的,对问题的回答反映了线人对项目的看法。在大多数情况下,要求参与者通过选择1到10之间的一个值来回答,其中1是回答该问题表示“否”或最低值,而10表示“是”或最高值。然后,他们有机会解释他们的答案。例如,“项目是否在预算范围内完成?”有人可能用8回答了该问题,并给出了费用略有超支的解释,但超出了该机构认为可以接受的范围。访谈持续一到两个小时,并被记录下来。研究人员随后使用访谈记录来生成描述性统计数据,并准备对项目描述进行描述性的案例研究。案例研究说明已由相应的信息提供者确认。
对每个案例研究进行了定性分析,以确定出在促进或抑制项目的绩效和/或成果方面,哪些工件的影响是最重要的。两名研究人员从个案研究中独立鉴定出300多件文物,作为证据数据。关注的重点是与所研究项目及其背景直接相关的新颖特征和事件(即针对特定项目而不是一般因素)。然后,研究人员按主题对工件进行排序,得出10类会影响相关软件的风险因素。对类别的进一步分析为文献提供了支持,并在所研究的案例中产生了对软件项目风险和风险管理实践的新颖见解。
本节总结了这项研究的三个主要发现。首先,概述了关键实践领域的发现;其次,描述了在研究中发现的主要危险因素;最后,描述和讨论了多个项目类型的意外发现,每个项目类型对风险和项目管理都有不同的含义。
本文研究了相关文献中的风险和风险管理以及对政府机构中软件项目的研究,得出三个总体结论:首先,风险管理能力可以在管理软件项目中发挥重要作用;其次,文献中的风险和风险管理理论的概念化和发展落后于处理与软件项目所面临的各种不确定性相关的威胁的实践要求;最后,风险管理的实践落后于研究文献中对风险和风险管理的理解和规定。
该研究仅关注软件类项目,其他种类的项目(硬件类或集成类)在政府机构或事业单位中也很常见,需要根据实际项目提出相对应的项目风险和风险管理见解。
本文中的分析提供了与该领域未来研究相关的见解,在项目控制中找到合适的严格度或过程量是一个管理问题。意外和无法预见的威胁在项目管理中无法预料,需要对风险管理进行分析,提出遇到风险的解决办法,快速对风险进行响应和解决。这些管理能力是通过长期从内部学习并通过将累积的项目和风险管理能力制度化为组织的结构,贯穿在整个项目生命周期中。从业者将从进一步的研究中受益,这些研究的重点是风险管理的执行端以及前端风险评估和监视过程。
代理机构研究以文献中的风险管理研究现状作为当前基准,发现组织在实践中充分利用这些知识往往会滞后。例如,在最初的风险识别之后,风险管理往往被委派给项目经理,而项目经理通常所做的只是在每次指导委员会会议之前非正式地更新风险登记册。此外,检查表往往被天真地使用,并且风险管理实践常常在整个项目中都没有得到维持或在项目结束时进行评估。如果这一发现可以推广到其他组织,则对项目经理和利益相关者会产生一些实践意义。
本文回顾并重新评估了公共部门机构样本中的风险管理研究在文献和实践中的地位。在任何情况下,软件项目都是复杂的多维性工作,无论是在私有环境还是公共环境中,都特别容易导致失败。通过调查也发现,将风险视为负面影响的威胁与软件项目有关,而且文献中风险和风险管理的发展落后于实践中的现象需求,而实践中采用风险概念和风险管理方法则落后于文献中的理解和规定。
鉴于失败的软件项目可能带来的成本和损失,研究人员和从业人员必须继续相互学习,以减少项目失败,在有限的时间控制下开发出可以按时交付满足项目需求的产品。作为项目和组织能力者,更好的风险管理对于实现这些目标至关重要。