《软件项目风险管理研究.docx》由会员分享,可在线阅读,更多相关《软件项目风险管理研究.docx(20页珍藏版)》请在三一办公上搜索。
1、软件项目风险管理研究内容摘要随着软件产业的迅速发展,软件的规模越来越大,复杂性也越来越高,风险变得更加难以控制,最终导致软件项目失败的结果越来越常见。如何对软件项目风险因素进行分析并有效地规避风险,从而致使项目顺利成功是进行软件风险管理的主要课题之一。只有充分地理解和学习软件风险管理的理论知识,同时在实践中不断地积累经验才能有效地进行风险防范和控制,达到减少风险的影响程度和实现利益最大化追求的目的。本文从分析国内外软件风险管理的发展现状入手,详细地按照软件生命周期各阶段将软件项目风险进行分类,并总结对比分析了国外经典软件风险管理模型,同时介绍了软件风险管理全过程,同时基于经典软件风险管理模型,
2、提出了改进的软件风险管理模型和方法,并根据自身经验对如今国内企业提出软件风险管理一些建议和意见。关键词项目管理;软件风险;风险管理 1.研究背景随着经济全球化的不断深入,以信息技术为依托的知识经济初见端倪,各国都在实施信息化带动工业化的发展战略,软件行业成为许多国家的支柱产业,软件业的发展程度从某种意义上体现了该国的综合国力,决定着国家未来的国际竞争地位。软件是一种特殊的逻辑产品,不具备实体的可见性,它是人经过智力劳动而产生出来、具有特殊性质的复杂事物川。一些调查表明,约的软件项目开发超出估计时间,大型项目平均超出交付时间,以上的软件项目开发费用超出预算。软件项目成功的几率要远远低于其它任何工
3、程项目,软件行业面临着所谓的“软件危机”。在软件产品开发过程中存在着众多不确定因素,这些因素使得软件项目比其它工程项目具有更高的风险。从学科发展角度来看,软件工程的形成得益于人们用工程化思想看待软件产品的开发,软件工程的产生又使得软件项目管理学科应运而生。软件项目管理的出现使所谓的“软件危机”得到了一定程度的缓解和控制。项目管理的目标是在有限资源标注条件下,保证项目时间进度、质量、成本达到最优化。软件项目管理的主要目标是确保软件产品能够按预期方案交付,同时还要满足用户需求。软件项目风险管理的目的是要找出导致项目需求不明晰、不能按进度计划及时交付、产品质量存在缺陷、开发费用超支等各种不良后果的风
4、险因素,对风险因素及可能造成的后果和危害进行定性和定量分析,从而为软件项目管理人员等提供有效的风险控制方案和措施,使其对软件项目的损失或影响降到最低程度或使决策者可以接受的程度。因此,软件项目风险管理是软件项目管理的重要部分。软件项目风险管理经过近三十年发展,已从理论、方法乃至实践都取得了一定进展。随着软件工程实践深入和软件企业的不断成熟,软件项目风险管理逐渐成为当前软件工程领域研究的热点问题,受到广泛关注。2国内外研究现状2.1软件项目风险管理理论框架模型研究情况美国学者Barry Boehm在1989年出版的著作软件风险管理奠定了软件项目风险管理的理论基础。在随后的时间里,随着计算机技术和
5、软件工程的的深入发展,软件项目风险管理的发展逐渐趋于体系化。下面简要介绍几种软件项目风险管理的理论框架模型。2.1.1Boehm和Charette的风险管理框架Boehm在其著作软件风险管理中将软件项目风险管理分为风险评估和风险控制两大部分,其中风险评估又分为风险识别、风险分析和风险的优先级排序,风险控制又分为风险管理计划、风险解决和风险监控。Boehm和Charette风险管理框架表如下:在此框架中,风险识别主要指出一个潜在破坏项目成功的风险列表,这个风险列表将作为风险控制的基础。风险分析是指评估每个风险出现的可能性及其影响,判定风险的级别。风险优先排序是指按风险影响大小排出一个风险优先级。
6、风险控制是由风险管理计划、风险化解和风险监控组成。风险管理计划是指制定一个应对每个重要风险的方案,同时应确保每一个单独的风险管理计划之间以及与整体项目计划之间相一致。风险化解是指每个重要风险所对应计划的执行。风险监控是指对解决风险的过程进行监控,风险监控还可以包括识别新的风险并将其反馈到正在进行的风险管理过程中。2.1.2Higuera和Haimes风险管理框架Higuera和Haimes提出的软件项目风险管理框架是美国卡内基梅隆大学软件工程研究所提出的风险管理理论体系的一部分。它将风险管理分为风险识别、分析、计划、追踪、控制五个步骤,风险管理方式是连续循环的,核心是风险交流,要求在软件项目生
7、命周期所有阶段都关注风险管理的各项活动,即所谓持续风险管理框架模型(CRM)。如下图,持续风险管理框架模型。图2 持续风险管理框架模型(Continuous Risk Management Paradigm)在各种软件项目风险管理理论框架研究中,每一理论体系都具有结构完整、内容完善的特点,并附带有与结构和内容相配套的方法和技术,它们借用运筹学、决策理论等思想、方法和工具,秉承了经典风险管理理论体系的优点,同时又体现了软件项目的某些特点。这些研究成果对于奠定整个软件项目风险管理学科的基础起着非常重要的作用。3.软件项目风险管理基本内容3.1软件项目风险管理定义软件项目的风险管理更是软件项目管理中
8、的重要内容。大量的统计表明,实行有效的风险管理是软件项目开发过程中减少损失的一种重要手段。软件项目风险管理出现在上世纪年代末,到现在只有三十多年的历程,在软件项目风险管理领域中,人们多是借鉴于工程项目的管理方法来解决软件项目开发中出现的风险问题,并且对于软件项目的风险管理概念的理解是来自于其他工程项目的风险管理,并在其基础上有所讨论和改进。因此,软件项目风险管理是指项目管理团队通过风险识别、风险量化和风险控制,采用多种管理方法、技术和工具,对软件项目所涉及的各种风险实施有效的控制和管理,采取主动行动,尽量使风险事件的有利后果带来的机会最大,而使风险事件所带来的不利后果威胁降到最低,以最少的成本
9、保证项目安全、可靠的实施,从而实现项目的总目标。3.2软件项目风险的特点软件项目管理的风险来自于软件项目自身的特点:(1)软件产品不可见。开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于把握;(2)软件的生产过程不存在绝对正确的过程形式。不同的软件开发项目应当采用不同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目的开发完成才能明了的。因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整;(3)大型软件项目往往是“一次性”的。以往的经验可以被借鉴的地方不多。回避和控制软件管理风险的惟一办法就是设立监督制度,进行有效的风险监控和管
10、理。3.3软件项目风险的分类 按照风险的内容,可分为五个方面:(1)社会环境风险:国家政策、新技术发展、自然灾害、国际形势等。(2)技术风险:技术的复杂性、兼容性、承受性以及与其他项目的相关性等。(3)费用风险:成本预算准确性、任务要求明确性、进度和技术因素制约、合同类型和报价制约等。(4)进度风险:项目人员经验、进度因素制约、计划合理性和资源充分性等。(5)管理风险:领导素质、组织结构、研发人员的素质、各阶段的协调沟通等。按风险性质分类,可以分为三个方面:(1)己知风险,是通过仔细评估项目计划、开发项目的商业及技术环境、以及其它可靠的信息来源(如不现实的交付时间,没有需求或软件范围的文档、恶
11、劣的开发环境)之后可以发现的那些风险。(2)可预测风险,能够从过去项目的经验中推测出来(如人员调整,与客户之间无法沟通,由于需要进行维护而使开发人员精力分散。)(3)不可预测风险,它们可能、也会真的出现,但很难事先识别出它们来。 一般来讲,软件项目过程是一个不断识别风险、分析风险、计划风险、监控风险和应对风险的过程。一个大型软件的开发大约存在30至40种风险。如果每种风险都需要3至7个风险管理步骤,那么风险管理本身就可以构成软件开发过程的一个子项目。一个好的风险管理过程体现了组织在风险管理上的知识和经验,这种知识和经验通过组织制定的过程规范得以确定,组织在风险管理基础结构上的投入,往往也会获得
12、理想的回报。4软件项目风险应对和监控4.1软件项目风险应对过程定义风险应对就是处置风险的过程。风险无法被完全避免,对于某些风险也无需完全避免。重要的是把风险置于人们的控制之下。风险应对活动主要有两部分内容事前、事中和事后。事前控制主要是降低风险发生的可能性,事后控制则主要是减小风险造成的损失。事中主要是对风险状态的监控,并随着风险状态的改变而做出不同的风险反映。风险应对模型如图:图3 风险应对过程定义(1)过程控制如同控制风险识别过程一样,项目资源、项目需求和风险管理计划同样约束着风险应对过程。(2)过程输入风险行动计划是风险应对过程的输入。它包括风险应对的目标、约束和决策,记录了选择的途径、
13、需要的资源和批准权利。计划提供了高层次的指导并允许达到目标过程中的灵活性。(3)过程输出风险状态、可接受的风险、减少的重复劳动、校正行动和问题防范是风险应对过程的输出。风险状态是对照风险行动计划所取得或缺乏的进展。报告风险状态,即是报告计划的实施结果。可接受的风险意思是指你可接受风险后果,甚至是最糟糕的后果。当你在风险应对方面取得足够进展时,项目状态指标就会得以改进。当状态指标回落到可接受范围内时,将触发解除或延缓风险应活动。重复劳动是第一次做某事时没有做对所付出的代价。通过减少重复劳动,不必再次工作,因为你第一次做对了没有浪费时间。用节省的成本计算减少的重复劳动,需要将劳动成本翻两倍,再加上
14、一般管理费用。校正行动是解决问题所需的活动之一。通过校正行动,可以找到问题的己知解决方案。使用这些过程找出大家普遍能接受的解决方案、然后执行某些活动来解决问题。问题防范发生于避免问题时。避免了问题,便消除了问题将带来的后果,它包括问题发现成本,重复劳动成本和机会成本。我们将问题定义为风险的发生,所以必须同时考虑风险发生的后果。用节省的成本计算问题防范,合计发现和解决问题的成本、重复劳动的成本、机会成本和风险发生的后果。(4)过程机制机制可以是方法、技巧、工具或其他为过程活动提供结构的手段。风险应对技巧、风险应对工具和风险数据库都是风险应对过程的机制。风险应对技巧是对风险应对细节有帮助的方法。风
15、险应对工具利用电脑使风险应对技巧自动化,如做原型和模拟。风险数据库包含负责人的姓名和风险应对活动的结果,它还包含重要结果的完成日期。4.2软件项目风险应对依据软件风险应对的依据,是软件风险分析过程的结果,主要包括以下两个方面:(1)风险管理计划,包括风险应对的目标、约束、决策、资源等。(2)风险登记清单,指风险分析的结果。4.3软件项目风险应对活动根据风险分析的结果和风险管理成本对制定的项目实施计划和方案进行风险评估,选择风险收益比较小的方案,或按风险收益原则对原计划方案进行修改。从而达到对风险的事前控制。风险管理对于复杂的软件项目,还有一个重任务是,协调各管理过程间的关系。运用决策理论选择行
16、动方案,对方案进行评估,使一方面的风险得到控制是否会引起其它风险。对不同方案的风险进行评估,选择风险较小的方案。为风险应对方案做作出成本预算。对风险触发事件做出反应,执行风险行动计划,报告风险行动计划的执行情况,结合风险应对的效果和风险管理成本对风险行动计划进行修正。最后,软件风险应对的输出结果是,更新的风险登记册、更新的项目管理计划、与风险相关的合同协议。软件风险应对的目标是风险得到有效的防范、风险指标回落到可接受范围内、校正风险行动计划,积累风险经验。4.4软件项目风险应对策略和方法 风险应对策略包括主动策略和被动策略,被动策略是指当风险不利结果发生后采取的,而主动策略是以预防为主,如前文
17、所说先识别出主要风险项,再制定出风险管理计划,对风险进行化解和监控。采取主动型风险应对策略主要包括四种方法避免、限制、减轻和监控。(1)避免:通过制定风险管理计划,重新规划项目或者改变项目中的一些设计和计划,使一些风险得到避免。(2)限制:对某些无法避免的风险进行约束和限制,使风险只影响到项目的一小部分,以至于不会影响到项目的总目标。(3)减轻:采取一些积极的措施,使得风险发生的时候不利结果降到最低。(4)监控:建立风险监控机制,密切监控无法避免和控制的风险,防止其发生,当它们发生时立刻制定风险应急计划。4.5软件项目风险监控 在项目生命期实施项目管理计划包含的风险应对措施时,应持续对项目工作
18、进行监督以寻找新风险和变化的风险。风险监测与控制指识别、分析和规划新生风险,追踪己识别风险和“观察清单”中的风险,重新分析现有风险,监测应急计划的触发条件,监测残余风险,审查风险应对策略的实施并评估其效力的过程。风险监测与控制过程所使用的技术包括变差和趋势分析,要求使用项目实施过程中生成的绩效数据。风险监控可能涉及选择替代对策、实施应急或备用计划、采取纠正措施,或修改项目管理计划。图4 风险监控过程定义(1)过程控制如同对风险识别的控制一样项目资源、项目需求和风险管理计划同样约束着风险监控过程。(2)过程输入风险设想、阀值和风险状态使风险跟踪过程的输入背景监视那些将导致不如人意的结果的事件和情
19、况,以确定风险发生的可能性是否在增加阀值定义了风险发生的端倪。预先定义的值作为警告,表示需要发布通知,执行行动计划风险状态在风险数据库中捕捉实施风险行动的结果。(3)过程输出度量、度量规格和触发器是风险跟踪过程的输出。度量确定大小、数量或容量如用代编行数来度量软件的大小。度量规格是复合的度量如软件产量度量规格是每天行编码,它是在计划中非常有用的指南或控制规则。触发器是启动、解除或延缓活动的装置如触发器启动风险行动计划。(4)过程机制机制可以是使过程活动结构化的方法、技巧、工具或其他手段。风险监控技巧、风险监控工具和风险数据库是风险监控过程的机制。风险监控技巧是协助监视不同时间风险状态的度量和度
20、量规格。风险监控工具将使监控过程自动化。风险数据库包括度量、度量规格和触发器。4.6软件项目风险监控活动风险监控活动包括两个方面风险跟踪和风险控制。风险跟踪是负责监视和缓解风险的人获得、编辑和汇报风险状态信息的过程它对有效地实施风险行动计划是十分重要的。风险跟踪的内容包括监控风险状态和采取措施改善风险。在具体的跟踪操作中,风险团队收集有关风险如何变化的信息,用来支持将在下一步控制过程中采取的决策和操作。需要监测的三个主要变化是触发器值风险的条件、结果、概率和影响缓解计划的进展。根据风险跟踪的进展情况,还要编写风险状态报告,其目的是传达风险状态的变化及报告缓解计划的进展,以便对风险进行及时控制,
21、从而降低风险己经造成的损失或者避免可能造成的损失。风险控制是决策者分析跟踪报告中的数据、制定决策并实施决策的过程。风险控制接收风险跟踪活动提供的反馈信息风险状态报告,对比风险管理计划和风险行动计划、风险纠正、风险识别、风险分析和风险计划活动中的偏差。风险控制活动包括分析、决定和执行。风险控制融入项目管理并依赖于项目管理的过程来控制风险。此外,风险控制的各项活动对有效通讯的依赖性非常强,只有保证团队成员之间的通讯及时有效,控制步骤才能有效。5软件项目风险管理方法的改进本文结合风险识别过程依据按照软件生命周期将软件项目划分为具体的三个阶段,即项目的立项阶段、项目的实施阶段和项目的调试阶段,并对各阶
22、段的风险识别工作做出详细描述。项目的三个阶段如图一所示,风险识别伴随着整个过程,当项目完成一个阶段的工作时,顺利进入下一阶段并进行下一阶段的风险识别工作,如果项目在某一阶段遇到问题,则需要再次识别风险,甚至返回到前一阶段或前两个阶段进行风险识别。图5 软件项目三阶段(1)项目立项阶段风险识别首先从产品内容和业主方情况两个方面对项目特征进行分析,不同的项目具有不同的特征,只有充分了解项目特征才能识别出项目的特定风险。产品内容方面需要了解软件产品的需求功能、质量要求和市场价格业主方情况方面需要了解企业特征、企业结构等等。其次,对项目资源进行预算,包括开发人才、组织管理人才、资金、设备等,并将预算和
23、实际情况进行比较,从而发现潜在问题。最后,对项目成本和时间进行估算,将项目成本和时间同软件价格和项目期限进行比较,预估项目的成本和进度风险。项目立项阶段的风险识别实际上就是对项目的初步可行性分析,这一阶段发现的问题解决成本最小,同时可以依据初步可行性分析进行该项目的风险管理总计划,从而指导下一步的工作。(2)项目实施阶段和调试阶段的识别风险识别在整个软件项目过程中伴随项目生命周期持续不断发生。进入软件项目的实施阶段以后,根据风险因子识别法的思想,可以从四个方面,即成本、进度、需求和资源,对项目风险进行识别。应用软件项目的风险主要体现在成本、进度、需求和资源这四个方面,同时这四方面风险的管理涉及
24、到了项目管理的九大知识领域,因此将这四个方面确定为四个风险因素,通过对这四个风险的综合分析和评价,可以反映项目的总体风险水平,从而实现对项目进行整体把握。每个风险因素有多个风险因子,一个风险因子也可以与多个风险因素相联,每个风险因子都能对相对应的风险因素产生影响。风险因子又可以分为两个不同的类型一般性风险因子和项目特定的风险因子。一般性风险因子的定义体现了应用软件项目风险识别中的共性的东西,描述出项目风险的主要方面和重要特征。项目特定风险因子由特殊项目环境决定,只有对当前项目的技术、人员及环境非常了解才能识别出来。6软件项目风险管理改进策略风险管理对于软件企业来说关系到企业的生存发展,应该上升
25、到组织的高度。企业文化是企业的核心,在企业文化的指引下确立适合企业发展的企业战略目标。风险管理应该是领导带头、全员参与、持续改进的,因此,企业可通过如下几个方面来加以改进。(1)建立规范风险管理的企业文化。企业文化是组织成员共有的价值和信念体系,这一体系在很大程度上决定了组织成员的行为方式。企业应当建立起规范风险管理的企业文化,让所有员工认识到风险管理是项目管理不可或缺的有机部分并贯穿于整个项目的始终。(2)建立支持有效风险管理的组织结构。企业高层管理人员的支持与重视是进行有效风险管理的先决条件,企业各级管理人员不仅要有强烈的风险管理意识,而且要积极参与到风险管理中去。建立起以企业高级管理人员
26、负责的风险管理组织架构,制定风险管理过程、确定风险管理工具以及管理监控风险,维护风险管理工具库。(3)建立有效风险管理过程。风险管理过程包括风险识别、风险分析、风险计划、执行计划、跟踪控制、评比更新和培训等几个活动。有效的风险管理过程应是学习型的、持续的和不断进化的。软件企业应建立自己的风险管理数据工具库以作为风险管理过程的基础,并在实施中不断地更新与完善。风险管理过程的学习性主要体现在培训活动上,培训的内容包括风险管理技术以及工具的使用,培训可以取材于风险管理数据工具库,使风险管理过程不断地从历史经验中学习过程的各个活动构成了循环,贯穿于项目始终,以保证风险管理过程的持续性过程中的每个活动在
27、循环中都和数据库进行交互,不断采集并更新数据,在各个活动的循环中不断加以改进。(4)其他。a.授权。企业的管理者要勇于授权、敢于放权。制订各级、各类人员的风险管理责任制,明确任务和职权,各司其职,密切配合,做到权责合一,以形成一个高效、协调、严密的风险管理系统。b.激励。企业的管理者应建立合理的激励机制,根据员工的风险管理责任制对员工进行考评,作为奖罚的依据,调动员工进行风险管理的积极性。7.总结近年来,人们开始重视软件风险的研究,把软件风险纳入软件工程的一个重要研究范畴。研究的目的是就是探索软件风险的概念、特殊性,风险识别、分析、应对的具体方法和策略,以降低或克服软件风险的危害性,从而提高软
28、件的质量。因此,本文从软件风险管理的理论基础出发,系统性地研究并探索软件风险分析及风险管理的方法和手段。(1)描述了国内外软件项目风险管理的研究现状。(2)分析了软件项目风险的特殊性,并对软件项目风险进行分类。(3)论述了软件项目风险管理基本理论,并对经典软件风险管理模型对比分析。(4)论述了软件项目风险的过程和方法。包括识别过程、分析过程、应对和监控过程。(5)总结经验,并提出改进软件风险管理模型和方法,提出具体工作中企业应改进的策略。参考文献1Sherer S A.Software failure risk:measurement and management M.New York:Ple
29、num Press,1992.2张珞玲,李师贤.软件项目风险管理方法比较和研究J.计算机工程,2003(3):91-94.3郭捷.项目风险管理.国防工业出版社.2007.21-50.4韩万江,姜立新编著.软件开发项目管理M.北京:机械工业出版社,2004:45-69.5严武,程振海,李海东.风险统计与决策分析.经济管理出版社,1999:100-120.6沈建明.项目风险管理.机械工业出版社.2003:144-149.7孟祥睿.软件项目风险管理研究J.经济论坛.2005(7):98-99.8于进.软件项目风险管理中风险分析方法的研究J.计算机现代化,2005(8).9张家浩.软件项目管理M.机械工业出版社,2006:112-119.10郭鹏,施品质.项目风险模糊灰色综合评价方法研究J.西安理工大学学报,2005(1).