您好,欢迎访问三七文档
SoftwareProjectManagement第6讲风险管理主讲:张纲强风险策略主要内容软件风险风险识别风险预测风险求精风险缓解、监测和管理RMMM计划基本概念•很多问题都会困扰软件项目,风险分析和风险管理就辅助软件团队理解和管理不确定事物的活动。•风险是潜在的-它可能发生也可能不发生。但是不管发生还是不发生,都应该去识别它,评估它发生的概率,估算它的影响,并制定它实际发生时的应急计划。•风险管理的步骤:(1)风险识别,即辨识出什么情况下可能会出问题。(2)分析每个风险,确定其可能发生的概率以及发生时将带来的危害。了解这些信息之后,就可以按照可能发生的概率和危害程序对风险进行排序。(3)制定一个计划来管理那些发生概率高和危害程度大的风险。•工作产品:风险缓解、监测和管理(riskmitigation,monitoringandmanagement,RMMM)计划或一组风险信息表单4基本概念•RobertCharette[CHA89]在他的关于风险分析及管理的书中给出了风险概念的定义是:首先,风险涉及的是未来将要发生的事情。今天和昨天已不再被关心,如同我们已经在收获由我们过去的行为所播下的种子。问题是:我们是否能够通过改变我们今天的行为,而为一个不同的、充满希望的、更美好的明天创造机会。其次,风险涉及改变,如思想、观念、行为、或地点的改变……第三,风险涉及选择,而选择本身就具有不确定性。因此,就象死亡和税收一样,风险是生活中最不确定的元素之一。5基本概念对于软件工程领域中的,Charette的三个概念定义是显而易见的。•未来是我们所关心的——什么样的风险会导致软件项目彻底失败呢?•改变也是我们所关心的——用户需求、开发技术、目标计算机、以及所有其他与项目相关的因素的改变将会对按时交付和总体成功产生什么影响呢?•最后,我们必须抓住选择机会——我们应该采用什么方法及工具?需要多少人员参与工作?对质量的要求要达到什么程度才是“足够的”?按照以往项目的历史数据进行详细的估算。确定项目的估算工作量和工期。6基本概念•PeterDrucker[DRU75]曾经说过:“当没有办法消除风险,甚至连试图降低该风险也存在疑问时,这些风险就是真正的风险了”。•在我们能够标识出软件项目中的“真正风险”之前,识别出所有对管理者及开发者而言均为明显的风险是很重要的。7风险策略•被动风险策略(reactiveriskstrategies)被戏称为“印地安那·琼斯学派的风险管理”[Tho92]。印地安那·琼斯在以其名字为影片名的电影中,每当面临无法克服的困难时,总是一成不变地说:“不要担心,我会想出办法来的!”。印地安那·琼斯从不担心任何问题,直到风险发生,再做出英雄式的反应。•大多数软件项目团队还是仅仅依赖于被动的风险策略。被动策略最多不过是针对可能发生的风险来监测项目,直到风险发生时,才会拨出资源来处理它们。•大多数情况下,软件项目团队对于风险不闻不问,直到出现了问题。这时,项目团队才赶紧采取行动,试图迅速地纠正错误。这常常被称为“救火模式”(fire-fightingmode)。当这样的努力失败后,“危机管理”[Cha92]接管一切,这时项目已经处于真正的危机中了。9风险策略•对于风险管理,更好的是主动风险策略。•主动(proactive)风险策略早在技术工作开始之前就已经启动了。标识出潜在的风险,评估它们出现的概率及产生的影响,并按其重要性进行排序。•然后,软件项目团队就可以制定一个计划来管理风险。计划的主要目标是回避风险,但因为不是所有的风险都能够回避,所以,项目团队必须制定一个应急计划,使其在必要时能够以可控和有效的方式作出反应。•在本讲的其余部分,将讨论风险管理的主动策略。10软件风险虽然对于软件风险的严格定义还存在很多争议,但一般认为软件风险包含两个特性[Hig95]:不确定性(uncertainty)。风险可能发生也可能不发生;即,没有100%会发生的风险(100%发生的风险是加在项目上的约束)。损失(loss)。如果风险发生,就会产生恶性后果或损失。进行风险分析时,重要的是量化每个风险的不确定性程度和损失程度。为了实现这点,必须考虑不同类型的风险。12软件风险13•不同类型的风险项目风险(projectrisk)威胁到项目计划。也就是说,如果项目风险发生,就有可能会拖延项目的进度和增加项目的成本。项目风险是指预算、进度、人员(聘用职员及组织)、资源、利益相关者、需求等方面的潜在问题以及它们对软件项目的影响。在第4讲估算中,项目复杂度、规模、及结构不确定性也属于项目(和估算)风险因素。技术风险(technicalrisk)威胁到要开发软件的质量及交付时间。如果技术风险发生,开发工作可能变得很困难或根本不可能。技术风险指设计、实现、接口、验证和维护等方面的问题。此外,规格说明的歧义性、技术的不确定性、陈旧的技术以及“前沿”技术也是技术风险因素。技术风险的发生是因为问题比我们所设想的更加难以解决。•不同类型的风险商业风险(businessrisk)威胁到要开发软件的生存能力,且常常会危害到项目或产品。五个主要的商业风险是:(1)开发了一个没有人真正需要的优秀产品或系统(市场风险);(2)开发的产品不再符合公司的整体商业策略(策略风险);(3)开发了一个销售部门不知道如何去销售的产品(销售风险);(4)由于重点的转移或人员的变动而失去了高级管理层的支持(管理风险);(5)没有得到预算或人员的保证(预算风险)。应该注意到的很重要的一点是:简单的分类并不总是行得通。某些风险根本无法事先预测。软件风险风险识别•风险识别试图系统化地指出对项目计划(估算、进度、资源分配等)的威胁。识别出已知的和可预测的风险后,项目管理者首先要做的是:在可能时避免这些风险,在必要时控制这些风险。•上一小节提出的每一类风险又可以分为两个不同的类型:一般性风险和产品特定的风险。一般性风险(genericrisk)对每一个软件项目而言都是一个潜在的威胁。产品特定的风险(product-specificrisk)只有那些对当前项目特定的技术、人员及环境非常了解的人才能识别出来。为了识别产品特定的风险,必须检查项目计划及软件范围说明,然后回答这个问题:“本产品中有什么特殊的特性可能会威胁到我们的项目计划?”16风险识别识别风险的一种方法是建立风险条目检查表。该检查表可以用于识别风险,并且主要用来识别下列几种类型中的一些已知的及可预测的风险:•产品规模——与要开发或要修改的软件的总体规模相关的风险。•商业影响——与管理者或市场所施加的约束相关的风险。•客户特性——与客户的素质以及开发者和客户定期沟通的能力相关的风险。•过程定义——与软件过程定义的程度以及该过程被开发组织遵守的程度相关的风险•开发环境——与用来开发产品的工具的可用性及质量相关的风险。•开发技术——与待开发软件的复杂性及系统所包含技术的“新奇性”相关的风险。•人员数目及经验——与软件工程师的总体技术水平及项目经验相关的风险。17风险识别风险条目检查表可以采用不同的方式来组织。与上述每个主题相关的问题针对每一个软件项目来回答。有了这些问题的答案,项目管理者就可以估计风险产生的影响。也可以采用另一个不同的风险条目检查表,即仅仅列出与每一个常见子类型有关的特性。最终,给出一组“风险因素和驱动因子”[AFC88]以及它们发生的概率。18风险识别下面的提问来源于对世界各地有经验的软件项目管理人员的调查而得到的风险资料,根据各个问题对项目成功的相对重要性将问题进行了排序:1.高层的软件管理者和客户管理者已经正式承诺支持该项目了吗?2.最终用户对项目和待开发的系统或产品热心支持吗?3.软件工程团队及其客户充分理解需求了吗?4.客户已经完全地参与到需求定义中了吗?5.最终用户的期望现实吗?6.项目范围稳定吗?7.软件工程团队的技能搭配合理吗?8.项目需求稳定吗9.项目团队对将实现的技术有经验吗?10.项目团队的人员数量满足项目需要吗?11.所有的客户或用户对项目的重要性和待开发的系统或产品的需求有共识吗?如果对这些问题的任何一个回答是否定的,则应务必启动缓解、监测和管理风险的步骤。项目的风险程度与对这些问题否定回答的数量成正比。19风险识别20风险因素包括:性能、成本、支持和进度。在这里,风险因素是以如下的方式定义的:•性能风险——产品能够满足需求且符合其使用目的不确定程度。•成本风险——能够维持项目预算的不确定程度。•支持风险——开发出软件易于纠错、修改及升级的不确定程度。•进度风险——与能够维持项目进度且按时交付产品的不确定程度。每一个风险驱动因子对风险因素的影响均可分为四个影响类别:可忽略的、轻微的、严重的或灾难的。图6-1指出了由于未识别出的软件失误而产生的潜在影响(标号为1的行),或没有达到预期的结果所产生的潜在影响(标号为2的行)。影响类别的选择是以最符合表中描述的特征为基础的。图6-1影响评估风险预测•风险预测(riskprojection),又称风险估计(riskestimation),试图从两个方面评估每一个风险:(1)风险发生的可能性或概率,(2)如果风险发生,风险相关问题产生的后果。23风险预测•项目计划人员,其他管理人员和技术人员都要进行以下4步风险预测活动:(1)建立一个尺度,以反映风险发生的可能性;(2)描述风险产生的后果;(3)估算风险对项目及产品的影响;(4)标明风险预测的整体精确度,以免产生误解。•按此步骤进行风险预测,目的是使我们可以按照优先级来考虑风险。任何软件团队都不可能以两样的严格程序来为每个可能的风险分配资源,通过将风险按优先级排序,软件团队可以把资源分配给那些具有最大影响的风险。24风险预测•风险表给项目管理者提供了一种简单的风险预测方法(风险表可以采用电子表格模式来实现,使表中的条目易于操作和排序)。25图6-2排序前的风险表样本风险预测•项目管理者首先要在表中的第一列列出所有风险(不管多么细微)。这可以利用风险条目检查表来完成。•在第二列中给出每一个风险的类型(如,PS指产品规模风险,BU指商业风险)。•在第三列中填入各个风险发生的概率。每个风险的概率值可以由团队成员各自估算,然后按循环投票的方式进行,直到大家对风险概率的评估值趋于接近为止。•下一步是评估每个风险所产生的影响。使用图6-1所示的特性评估每个风险因素,并确定其影响的类别。将4个风险因素——性能、支持、成本、及进度——的影响类别求平均可得到一个整体的影响值(如果某个风险因素对项目来说比较重要,可以使用加权平均法)。26风险预测•完成了风险表的前4列内容之后,就可以按照概率及影响值来进行排序。高概率、高影响的风险放在表的上方,而低概率风险则移到表的下方。这样就完成了第一次风险排序。•项目管理者研究排序后的表,并定义一条中截线。该中截线(表中某处之上的一条水平线)表示:只有那些在中截线之上的风险才会得到进一步的关注,而在线之下的风险则需要重新评估以进行第二次排序。27图6-3风险与管理风险预测•参照图6-3,从管理关注的角度来看,风险的影响和发生的概率是截然不同的。一个具有高影响但发生概率很低的风险因素不应该耗费太多的管理时间。而高影响且发生概率为中到高的风险、以及低影响且高概率的风险,应该首先列入随后的风险分析步骤中。•所有在中截线之上的风险都必须进行管理。标有RMMM的列中包含了一个指示器,指向为所有中截线之上的风险所建立的风险缓解、监测及管理计划(RiskMitigation,MonitoringandManagementPlan,RMMM计划)或一组风险信息表单。28风险预测•风险概率可以通过先做个别估计而后求出一个有代表性的值来确定。•虽然该方法是可行的,不过还有很多其他更复杂的确定风险概率的技术[AFC88]•风险驱动因子的评估是基于定性的概率等级,可表示为:不可能、不一定、可能和极可能,•然后再将每一个定性值概率等与数学上的概率值相关联(如,概率为0.7到0.99表示极可能发生的风险
本文标题:第6讲风险管理
链接地址:https://www.777doc.com/doc-523342 .html