第七章软件项目风险管理软件项目管理软件项目中的风险不断变换的需求低劣的计划和估算不可信赖的承包人欠缺的管理经验人员问题技术失败政策的变化……本章内容要点风险和风险管理风险识别风险评估风险规划风险监控软件项目风险管理计划(案例)第一节风险和风险管理风险是不确定的事件,一旦发生,将会造成消极影响。风险的三要素:一个未来的事件事件发生的概率事件的影响风险发生的概率越高,造成的影响越大,就越是高风险,否则就是中等风险或低风险。风险分类从风险的范围角度上看,可将软件项目的风险分为三种类型:项目风险:潜在的项目预算、进度、人员、资源、用户和需求等方面的问题。技术风险:实现和交付产品过程中所应用的各种技术所包含的风险。技术的正确性、不确定性、复杂性、技术陈旧等因素都可带来技术风险。商业风险:与市场、企业产品策略等因素有关的风险。从风险可预测的程度来看,可将风险分为以下三种类型:已知风险:通过评估项目计划、项目的商业和技术环境以及其它可靠的信息来源之后可以发现的那些风险。可预测风险:能够从过去的项目经验中推测出的风险。不可预测风险:事先很难识别出来的风险。风险分类风险管理风险管理是指在项目进行过程中不断对风险进行识别、评估和监控的过程,其目的是减小风险对项目的不利影响。风险管理用来处理项目中的各种不确定性。风险管理策略可以分为4个层次:危机管理:风险已经造成麻烦后才着手处理。风险缓解:事先制定好风险发生后的补救措施,但不制定任何防范措施。着力预防:将风险防范作为项目的一部分加以规划和执行。消灭根源:识别和消灭可能产生风险的根源。应采取主动的风险管理策略,即着力预防和消灭根源的管理策略。这一策略在项目计划阶段就启动了:识别出潜在的风险、评估它们出现的概率和潜在的影响、按照重要性进行排序,然后制定一个计划来管理风险。软件项目风险管理包括风险识别、风险评估、风险规划和风险监控四个过程。风险管理本章内容要点风险和风险管理风险识别风险评估风险规划风险监控软件项目风险管理计划(案例)第二节风险识别输入标识风险风险表风险识别方法检查表法德尔菲方法头脑风暴法情景分析法检查表法风险检查表中列出了项目中常见的风险。项目相关人员通过核对风险检查表,判断哪些风险会出现在项目中。可根据项目经验对风险检查表进行修订和补充。该方法可以使管理者集中识别常见类型的风险。有研究表明:IT项目常常存在一些共同的风险。如:人员缺乏、不现实的人员和成本估计、晚期需求变化、外购构件缺陷等。风险检查表中的风险条目通常与以下几个方面相关:项目规模、商业影响、项目范围、客户特性、过程定义、技术要求、开发环境、人员数目及其经验。其中每一项都包含很多风险条目。使用检查表法进行风险识别的优点是快速而简单,可以用来对照项目的实际情况,逐项排查,从而帮助识别风险。但由于每个项目都有其特殊性,检查表法很难做到全面周到。检查表法德尔菲(Delphi)方法德尔菲方法又称专家调查法,本质上是一种匿名反馈的函询法。它起源于20世纪40年代末,最初由美国兰德公司应用于技术预测。把需要做风险识别的软件项目的情况分别匿名征求若干专家的意见,然后把这些意见进行综合、归纳和统计,再反馈给各位专家,再次征求意见。这样反复经过四至五轮,逐步使专家意见趋向一致,作为最后预测和识别风险的依据。头脑风暴法头脑风暴(BrainStorm)法简单来说就是团队的全体成员自由地提出自己的主张和想法,它是解决问题时常用的一种方法。利用头脑风暴法识别项目风险时,要将项目主要参与人员代表召集到一起,然后他们利用自己对项目不同部分的认识,识别项目可能出现的问题。一个有益的做法是询问不同人员所担心的内容。头脑风暴法的优点是可对项目风险进行全面的识别。情景分析法情景分析法是根据项目发展趋势的多样性,通过对系统内外相关问题的系统分析,设计出多种可能的未来前景,然后用类似于撰写电影剧本的手法,对系统发展态势做出自始至终的情景和画面的描述。情景分析法是一种适用于对可变因素较多的项目进行风险预测和识别的技术,它在假定关键影响因素有可能发生的基础上,构造多重情景,提出多种未来的可能结果,以便采取适当措施防患于未然。本章内容要点风险和风险管理风险识别风险评估风险规划风险监控软件项目风险管理计划(案例)第三节风险评估对风险发生概率的估计和评价,项目风险后果严重程度的估计和评价,项目风险影响范围的分析和评价,以及对于项目风险发生时间的估计和评价。风险值(风险的严重程度)R=F(P,I)P是风险发生的概率。I是风险发生后对项目目标的影响。确定风险的优先次序根据风险的严重程度进行排序,确定最需关注的前几个(TOP10)风险。风险评估的方法包括定性风险评估和定量风险评估。定性风险评估定性评估风险的发生概率及后果。风险概率度量:高、中、低极高、高、中、低、极低不可能,不一定,可能和极可能等等风险后果度量高、中、低极高、高、中、低、极低灾难,严重,一般,轻微,可忽略等等定性风险评估风险概率及后果估计矩阵图PRILowMediumHighHighLHHMediumLHHLowLMM定量风险评估量化分析每一个风险的概率及其对项目造成的后果,也分析项目总体风险的程度。分析方法:盈亏平衡分析模拟专家访谈决策树分析量化风险检查表……专家访谈邀请具有类似项目经验或相关领域经验的专家,这些专家运用他们丰富的经验和知识对软件项目的风险进行度量。其结果会相当准确和可靠,甚至有时比通过数学计算和模拟仿真得出的结果还要准确和可靠。如果风险的影响后果大小不易直接估算出来,可以把后果分解为更小的部分,再对其进行评估,然后把各个部分的结果累加,得到总的评估值。例如,如果使用3种新编程工具,可以单独评估每种工具未达到预期效果的损失,然后把损失加到一起,这要比总体评估容易多了。决策树分析决策树是一种形象化的图表分析方法,它把项目所有可供选择的方案、方案之间的关系、方案的后果及发生的概率用树状的图形表示出来,为决策者提供选择最佳方案的依据。决策树中的每一个分支代表一个决策或者一个偶然的事件,从出发点开始不断产生分支以表示所分析问题的各种发展的可能性。每一个分支都采用预期损益值(ExpectedMonetaryValue,EMV)作为其度量指标。决策者可根据各分支的预期损益值中最大者(如求最小,则为最小者)作为选择的依据。预期损益值等于损益值与事件发生的概率的乘积,即:EMV=损益值×发生概率例如:某行动方案成功的概率是50%,收益是10万,则EMV=10*50%=5万。决策树分析决策树分析示例EMV=0失败:P=30%,outcome=-200,000成功:P=70%高性能:P=30%,outcome=550,000EMV=550,000*30%=165000低性能:P=70%,outcome=-100,000EMV=-100,000*70%=-70000EMV=95,000*70%=66500实施后:EMV=6,500不实施EMV=-200,000*30%=-60000决策树分析示例利用决策树风险分析技术来分析如下两种情况,以便决定你会选择哪种方案:(要求画出决策树)方案A:随机投掷硬币两次,如果两次投掷的结果都是硬币正面朝上,你将获得10元;投掷的结果背面每朝上一次你需要付出1.5元。方案B:随机投掷硬币两次,你需要付出2元;如果两次投掷的结果都是硬币正面朝上,你将获得10元。决策树分析示例0.25*10=$2.5元0.5*-1.5=-0.75元0.25*-3=--$0.75元GameA:EMV=10.25*8=2元0.5*-2=-1元0.25*-2=-0.5元GameB:EMV=0.510元-1.5元8元=10-2-2元-2元-3元风险评估结果风险类别概率影响排序用户变更需求产品规模80%51规模估算可能过低产品规模60%52人员流动人员数目及经验60%43最终用户抵制该计划商业影响50%44交付期限被紧缩商业影响50%35技术达不到预期效果技术情况30%27缺少对工具的培训开发环境40%18本章内容要点风险和风险管理风险识别风险评估风险规划风险监控软件项目风险管理计划(案例)第四节风险规划针对风险分析的结果,制定风险应对策略和措施的过程,其目标是应对、减少、以至于消灭风险事件。风险规划的主要策略:回避风险转移风险缓解风险接受风险回避风险回避风险是对可能发生的风险尽可能地规避,采取主动放弃或者拒绝使用导致风险的方案。例如放弃采用新技术。消除了风险的起因,将风险发生概率降为零。具有简单和彻底的优点。回避风险注意事项:对风险要有足够的认识;当其他风险策略不理想的时候,可以考虑;可能产生另外的风险;不是所有的情况都适用,有些风险无法回避,如用户需求变更;转移风险转移风险是为了避免承担风险损失,有意识地将损失或与损失有关的财务后果转嫁出去的方法。例如:采购分包免责合同保险缓解风险在风险发生之前采取一些措施降低风险发生的可能性或减少风险可能造成的损失。例如,为了防止人员流失,提高人员待遇,改善工作环境;为防止程序或数据丢失而进行备份等。接受风险项目团队有意识地选择由自己来承担风险后果。当风险很难避免,或采取其它风险应对方案的成本超过风险发生后所造成的损失时,可采取接受风险的策略。主动接受:在风险识别、分析阶段已对风险有了充分准备,当风险发生时马上执行应急计划。被动接受:风险发生时再去应对。在风险事件造成的损失数额不大,不对软件项目的整体目标造成较大影响时,项目团队将风险的损失当做软件项目的一种成本来对待。风险规划示例人员的频繁流动是一项风险,基于过去的历史和管理经验,人员频繁流动可能性的估计值为70%,会造成开发时间增加15%,总成本增加12%。对于这一风险,项目经理采取了以下风险缓解策略:与现有人员讨论人员流动的原因。项目启动时,做好会出现人员流动的准备,采取一些技术以确保人员的一旦离开后,项目仍然能继续。建立良好的项目组织和通信渠道,以使大家能够了解每个有关的开发活动的信息。指定文档标准并建立相应的机制,以保证文档能够及时建立。对所有工作组织细致的评审,使大多数人能够按计划进度完成自己的工作。风险规划示例风险分析表排序输入风险事件可能性影响风险值采取的措施1系统设计评审没有足够的时间进行产品测试70%50%35%1.采取加班的方法2.修改计划去掉一些任务3.与客户商量延长一些时间2WBS对需求的开发式系统标准没有合适的测试案例20%80%16%找专业的测试公司完成测试工作3需求和计划采用新技术可可能导致进度的延期50%30%15%1.培训开发人员2.找专家作指导3.采取边开发边学习的方法,要求他们必须在规定的时间内掌握技术……本章内容要点风险和风险管理风险识别风险评估风险规划风险监控软件项目风险管理计划(案例)第五节风险监控实施和跟踪风险管理计划确保风险策略正在合理使用监视剩余的风险和识别新的风险收集可用于将来的风险分析信息风险监控方法:建立项目风险监控体系风险审核挣值分析项目风险评价输入:风险计划输出:风险计划更新建立风险监控体系项目风险监控体系的建立,包括制定项目风险的方针、程序、责任制度、报告制度、预警制度、沟通程序等方式,以此来控制项目的风险。项目风险审核项目风险审核是确定项目风险监控活动和有关结果是否符合项目风险计划,以及风险计划是否有效地实施并达到预定目标。有系统地进行项目风险审核是开展项目风险监控的有效手段,也可以作为改进项目风险监控活动的一种有效的机制。Top10风险列表控制是最有效的风险控制工具之一。定期(每周)审核Top10风险列表。Top10风险列表样例挣值分析通过挣值分析可以显示项目在成本和进度上的偏差。如果偏差较大,则需要进一步对项目风险进行识别、分析。风险评价软件项目管理会面临很多已知和未知的问题,尤其是没有管理经验的项目经理更应该及早评价和预防项目风险。风险评价按照阶段不同可以分为:事前评价、事中评价、事后评价、跟踪评价等;按照评价方法不同可以分为定性评价、定量评价和综合评价等。风险管理