还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
软件项目风险管理风险管理概述软件风险是指软件开辟过程中及软件产品本身可能造成的伤害或者损失风险关注未来的事情,这意味着,风险涉及选择及选择本身包含的不确定性,在软件开辟过程及软件产品都要面临各种决策的选择风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态另一方面,风险将涉及思想、观念、行为、地点等因素的改变当在软件工程领域考虑风险时,我们要关注以下的问题什么样的风险会导致软件项目的彻底失败?用户需求、开辟技术、目标计算机、以及所有其它与项目有关的因素的改变将会对按时交付和总体成功产生什么影响?对于采用什么方法和工具,需要多少人员参预工作的问题,我们如何选择和决策?对软件质量要达到什么程度才是“足够的”?当没有办法消除风险,甚至连试图降低该风险也存在疑问时,这些风险就是真正的风险了在我们能够标识出软件项目中的真正风险之前,识别出所有对管理者和开辟者而言均为明显得风险是很重要的
二、被动和主动的风险策略被动风险策略是针对可能发生的风险来监督项目,直到它们变成真正的问题时,才会拨出资源来处理它们,更普遍的是,软件项目组对风险不闻不问,直到发生了错误才赶紧采取行动,试图迅速地纠正错误这种管理模式往往被称为“救火模式”当补救的努力失败后,项目就处在真正的危机之中了对于风险管理的一个更聪明的策略是主动式的主动策略早在技术工作开始之前就已经启动了一一标识出潜在地风险,评估它们浮现的概率及产生的影响,对风险按重要性进行排序,然后,软件项目组建立一个计划来管理风险主动策略风险管理的主要目标是预防风险但是,因为不是所有的风险都能够预防,所以,项目组必须建立一个对付意外事件的计划,使其在必要时能够以可控的及有效的方式作出反应
三、软件风险、软件风险包含两个特征1不确定性——刻划风险的事件可能发生也可能不发生,没有发生的风险100%损失——如果风险变成为了现实,就会产生恶性后果或者损失、进行风险分析时,重要的是量化不确定的程度和与每一个风险相关的损失的程度2为了实现这点,必须考虑以下几种不同类型的风险二---------------------------------------------------------精品文档下图以图形方式表示了这种情况如果风险的组合产生问题导致成本超支及进度延迟,则会有一个水平值,即图中的曲线,当超过它时会引起项目终止唯算点(成本、时间)终止项目实际上,参考水平很少能表示成光滑曲线在大多数情况下,它是一个区域,其中存在不少不确定性因此,在风险评估中,我们执行以下步骤•定义项目的风险参考水平值;成本超支•建立每一组[]与每一个参考水平值之间的关系;r,l,x•预测一组临界点以定义项目终止区域,该区域由一条曲线或者不确定区域界定•预测什么样的风险组合会影响参考水平值
六、风险缓解、监控和管理进一步的所有风险分析活动都惟独一个目的一辅助项目组建立处理风险的策略一个有效的策略必须考虑三个问题•风险避免•风险监控•风险管理及意外事件计划如果软件项目组对于风险采取主动的方法,则避免永远是最好的策略这可以通过建立一个风险缓解计划来达到例如,频繁的人员流动被标注为一个项目风险,基于以往的历史和管理经验,人员流动的概率为70%,而影响被预测卫对于项目成本及进度有严重的影响为了缓解这个风险,项目管理者必须建立一个策略来降低人员流动可能采取的策略如下•与现有人员一起探讨一下人员流动的原因(如恶劣的工作条件,低报酬,竞争激烈)•在项目开始之前,采取行动以缓解那些在管理控制之下的原因£----------------------------------------------------------精品文档•一旦项目启动,假设会发生人员流动并采取一些技术措施以保证当人员离开时的工作连续性•对项目进行良好组织,使得每一个开辟活动的信息能被广泛传播和交流•定义文档的标准,并建立相应的机制,以确保文档能被及时建立•对所有工作进行详细复审,使得不止一个人熟悉该项工作•对于每一个关键的技术人员都指定一个后备人员随着项目的发展,风险监控活动开始进行项目管理者监控某些因素,这些因素可以提供风险是否正在变高或者变低的指示在上例中,应该监控下列因素•项目组成员对项目压力的普通态度•项目组的凝结力•项目组成员彼此之间的关系•与报酬和利益相关的潜在问题•在公司内及公司外工作的可能性除了监控上述因素之外,项目管理者还应该监控风险缓解步骤的效力例如上例中,风险缓解步骤要求定义“文档的标准,并建立相应的机制,以确保文档能被及时建立,如果有关键的人物离开了项目组,这是保证工作连续性的机制项目管理者应该子细地监控这些文档,以保证文档内容正确,当新员工加入该项目时,能为他们提供必要的信息风险管理及意外事件计划假设缓解工作已经失败,风险变成为了现实继续前面的例子,假定项目正在进行中,有一些人宣布将要离开如果按照缓解策略行事,则有后备人员可用,因为信息已经文档化,有关知识已经在项目组中广泛进行了交流止匕外,项目管理者还可以暂时重新将资源调整到那些需要人的地方去,并调整项目进度,从而使新加入的成员能够“赶上进度:同时,要求那些要离开的人员住手工作,进入“知识交接模式”步骤将导致额外的项目开消因此,风险管理的部份任务是评估何时由步骤所产生的效益RMMM RMMM低于实现它们所花费的成本本质上是讲,项目计划者执行一个典型的成本一效益分析来估算项目开销变化情况对于一个大型项目,可能会标识出种风险如果为每种风险定义三至七个风险管理步骤,则风险30—40管理本身就可能变成一个“项目”经验表明整个软件风险的(即可能导致项目失败的潜在的因素)80%80%能够由仅仅的已知风险来说明早期风险分析步骤中所实现的工作能够匡助计划者确定哪些风险在所说的20%中20%、安全性风险和危()险1wei风险不仅限于软件项目本身在软件已经能够交付客户之后,仍有可能发生风险这些风险普通与领域中的软件失败相关虽然一个良好的系统发生错误的概率很小,但是基于计算机的控制及监督系统中未被发现的错误可能会导致巨大的经济损失,或者更加严重当软件被用作控制系统的一部份时,复杂性会以数量级增加由于人的错误所引起的弱小的设计缺陷,在使用软件时会变得难以发现软件安全和危()险分析是属于软件质量保证活动,它主要是用来标识和评估可能对软件产生负面影wei响并使整个系统失败的潜在危()险如果能够在软件工程的早期阶段标出危()险,则可以指定软件设wei wei计特征来消除或者控制潜在地危()险wei、计划2RMMM风险管理策略可以包含在软件项目计划中,或者风险管理步骤也可以组织成一个独立的风险缓解、监控和管理计划(计划)计划将所有风险分析文档化,并由项目管理者作为整个项目计划中的一部份RMMM RMMM来使用计划的大纲如下RMMMI.引言文档的范围和目的主要风险综述责任管理者a.技术人员b..项目风险表II终止线之上所有风险的描述影响概率及影响的因素.风险缓解、监控和管理III缓解普通策略缓解风险的特定步骤监控被监控的因素监控办法管理意外事件计划特殊的考虑计划的迭代时间安排表W.RMMM总结V
七、软件风险的总结当对软件项目期望值很高时,普通都会进行风险分析无非,即使进行这项工作,大多数软件管理者都是非正式地和表面地完成它化在标识、分析、管理风险上的时间可以从多个方面得到回报更加平稳的项目发展过程;较高的跟踪和控制项目的能力;因为精密计划而产生的信心项目风险项目风险是指潜在的预算、进度、人力工作人员和组织、资源、客户、需求等方面的问题以及它们对软件项目的影响项目风险威胁项目计划,如果风险变成现实,有可能会迟延项目的进度,增加项目的成本项目风险的因素还包括项目的复杂性、规模、结构的不确定性技术风险是指潜在地设计、实现、接口、验证和维护等方面的问题此外规约的二义性、技术的不确定性、陈旧的技术、以及“过于先进”的技术也是风险因素技术风险威胁要开辟的软件的质量及交付时间如果技术风险变成现实,则开辟工作可能变得很艰难或者不可能商业风险商业风险威胁到要开辟软件的生存能力商业风险往往会危害项目或者产品五个主要的商业风险是开辟一个没有人真正需要的优秀产品或者系统市场风险;1开辟的产品再也不符合公司的整体商业策略策略风险;2建造了一个销售部门不知道如何去卖的产品;3由于重点的转移或者人员的变动而失去了高级管理层的支持管理风险;4没有得到预算或者人力上的保证预算风险5o、风险分为以下方式3已知风险,是通过子细评估项目计划、开辟项目的商业及技术环境、以及其它可靠的信息来源如不现实的1交付时间,没有需求或者软件范围的文档、恶劣的开辟环境之后可以发现的那些风险可预测风险,能够从过去项目的经验中猜测出来如人员调整,与客户之间无法沟通,由于需要进行维护而2使开辟人员精力分散o不可预测风险,它们可能、也会真的浮现,但很难事先识别出它们来3◊
四、识别风险识别风险是试图系统化地确定对项目计划估算、进度、资源分配的威胁通过识别已知和可预测的风险,项目管理者就有可能避免这些风险,且当必要时控制这些风险每一类风险可以分为两种不同的类型普通性风险和特定产品的风险普通性风险对每一个软件项目而言都是一个潜在地威胁特定产品的风险惟独那些对当前项目的技术、人员、及环境非常了解的人材干识别出来为了识别特定产品的风险,必须检查项目计划及软件范围说明,从而了解本项目中有什么特殊的特性可能会威胁到项目计划普通性风险和特定产品的风险都应该被系统化地标识出来识别风险的一个方法是建立风险条目检查表该检查表可以用来识别风险,并可以集中来识别下列常见子类型中已知的及可预测的风险•产品规模——与要建造或者要修改的软件的总体规模相关的风险•商业影响——与管理或者市场所加诸的约束相关的风险•客户特性——与客户的素质以及开辟者和客户定期通信的能力相关的风险•过程定义——与软件过程被定义的程度以及它们被开辟组织所遵守的程度相关的风险•开辟环境——与用以建造产品的工具的可用性及质量相关的风险•建造的技术——与待开辟软件的复杂性以及系统所包含技术的“新鲜性”相关的风险•人员数目及经验——与参预工作的软件工程师的总体技术水平及项目经验相关的风险风险条目检查表能够以不同的方式来组织与上述话题相关的问题可以由每一个软件项目来回答这些问题的答案使得计划者能够估算风险产生的影响、产品规模风险1项目风险是直接与产品规模成正比的下面的风险检查表中的条目标识了产品(软件)规模相关的常见风险•是否以或者估算产品的规模;LOC FP•对于估算出的产品规模的信任程度如何;•是否以程序、文件或者事务处理的数目来估算产品规模;•产品规模与以前产品的规模的平均值的偏差百分比是多少;•产品创建或者使用的数据库大小如何;•产品的用户数有多少;•产品的需求改变多少?交付之前有多少?交付之后有多少?•复用的软件有多少?、商业影响风险2销售部门是受商业驱动的,而商业考虑有时会直接与技术实现发生冲突下面的风险检查表中的条目标识了与商业影响相关的常见风险•本产品对公司的收入有何影响;•本公司是否得到公司高级管理层的重视;•交付期限的合理性如何;•将会使用本产品的用户数及本产品是否与用户的需要相符合;•本产品必须能与之互操作的其它产品/系统的数目;•最终用户的水平如何;•政府对本产品开辟的约束;•延迟交付所造成的成本消耗是多少;•产品缺陷所造成的成本消耗是多少;对于待开辟产品的每一个回答都必须与过去的经验加以比较如果浮现了较大的百分比偏差或者如果数字接近过去很不令人满意的结果,则风险较高、客户相关风险3客户有不同的需要一些人只知道他们需要什么;而另一些人知道他们不需要什么一些客户希翼进行详细的讨论,而另客户则满足于含糊的承诺客户有不同的个性一些人喜欢享受客户的身份,而另一些人则根本不喜欢做为客户一些人会高兴地接受几乎任何交付的产品,并能充分利用一个不好的产品;而另一些人则会对质量差的产品猛烈抨击一些人会对质量好的产品表示欣赏;而另一些人则不管怎样都抱怨不休客户和供应商之间也有各种不同的通信方式一些人非常熟悉产品及生产厂商;而另一些人则可能素未谋面,仅仅通过信件往来和电话与生产厂商沟通一个‘不好的”客户可能会对一个软件项目组能否在预算内完成项目产生很大的影响对于项目管理者而言,不好的客户是对项目计划的巨大威胁和实际的风险下面的风险检查表中的条目标识了与客户特征相关的常见风险•你以前是否曾经与这个客户合作过;•该客户是否很清晰需要什么;他能否化时间把需求写出来;•该客户是否允许花时间召开正式的需求采集会议,以确定项目范围;•该客户是否愿意建立与开辟者之间的快速通信渠道;•该客户是否愿意参加复审工作;•该客户是否具有改产品领域的技术素质;•该客户是否愿意你的人来做他们的工作;•该客户是否了解软件过程;如果对于这些问题中的任何一个答案是否定的,则需要进一步的调研,以评估潜在地风险、过程风险4如果软件过程定义得不清晰;如果分析、设计、测试以无序的方式进行;如果质量是每一个人都认为很重要的概念,但没有人切实采取行动来保证它,那末这个项目就处在风险之中过程问题•高级管理层是否有一份已经写好的政策陈述,该陈述中强调了软件开辟标准过程的重要性;•开辟组织是否已经拟定了一份已经成文的、用于本项目开辟的软件过程的说明;•开辟人员是否允许按照文档所写的软件过程进行开辟工作,并自愿使用它;•该软件过程是否可以用于其它项目;•管理者和开辟人员是否接受过一系列的软件工程培训;•是否为每一个软件开辟者和管理者提供了印好的软件工程标准;•是否为作为软件过程一部份而定义的所有交付物建立了文档概要及示例;•是否定期对需求规约、设计和编码进行正式的技术复审;•是否定期对测试过程和测试情况进行复审;•是否对每一次正式技术复审的结果建立了文档,其中包括发现的错误及使用的资源;•有什么机制来保证按照软件工程标准来指导工作;=----------------------------------------------------------精品文档•是否使用配置管理来维护系统/软件需求、设计、编码、测试用例之间的一致性;•是否使用一个机制来控制用户需求的变化及其对软件的影响;•对于每一个承包出去的子合同,是否有一份文档化的工作说明、一份软件需求规约和一份软件开发计划;•是否有一个可遵循的规程,来跟踪及复审子合同承包商的工作;技术问题•是否使用方便易用的规格说明技术来辅助客户与开辟者之间的通信;•是否使用特定的方法进行软件分析;•是否使用特定的方法进行数据和体系结构的设计;•是否以上的代码都是使用高级语言编写的;90%•是否定义及使用特定的规则进行代码编写;•是否使用特定的方法进行测试用例的设计;•是否使用配置管理软件工具控制和跟踪软件过程中的变化活动;•是否使用工具来创造软件原型;•是否使用软件工具来支持测试过程;•是否使用软件工具来支持文档的生成和管理;•是否采集所有软件项的质量度量值;R•是否采集所有软件项目的生产率度量值;如果对于上述问题的答案多数是否定的,则软件过程是薄弱的,且风险很高、技术风险5突破技术的极限极具挑战性和令人兴奋,但这也是有风险的下面的风险检查表中的条目标识了与建造的技术相关的常见风险•该技术对于你的公司而言是新的吗;•客户的需求是否需要创建新的算法或者输入、输出技术;•待开辟的软件是否需要使用新的或者未经证实的硬件接口;•待开辟的软件是否需要与开辟商提供的未经证实的软件产品接口;•待开辟的软件是否需要与功能和性能均未在本领域得到证实的数据库系统接口;•产品的需求是否要求采用特定的用户界面;•产品的需求中是否要求开辟某些程序构件,这些构件与你的公司以前开辟的构件彻底不同;•需求中是否要求采用新的分析、设计、测试方法;•需求中是否要求使用非传统的软件开辟方法;•需求中是否有过分的对产品的性能约束;•客户能确定所要求的功能是可行的吗?如果对于这些问题中的任何一个答案是肯定的,则需要进一步的调研,以评估潜在地风险二---------------------------------------------------------精品文档、开辟环境风险6软件工程环境支持项目组、过程及产品,但是,如果环境有缺陷,它就有可能成为重要的风险源下面的风险检查表中的条码标识了与开辟环境相关的风险•是否有可用的软件项目管理工具;•是否有可用的软件过程管理工具;•是否有可用的分析及设计工具;•分析和设计工具是否合用于待建造产品;•是否有可用的编译器或者代码生成器;•是否有可用的测试工具;•是否有可用的软件配置管理工具;•环境是否利用了数据库或者数据仓库;•项目组的成员是否接受过每一个所使用工具的培训;•是否有专家能够回答有关工具的问题;•工具的联机匡助及文档是否适当;如果对于上述问题的答案多数是否定的,则软件开辟环境是薄弱的,且风险很高、与人员数目及经验相关的风险7•是否有最优秀的人员可用;•人员在技术上是否配套;•是否有足够的人员可用;•开辟人员是否能够自始至终地参加整个项目的工作;•项目中是否有一些人员只能部份时间工作;•开辟人员对自己的工作是否有正确的期望;•开辟人员是否接受过必要的培训;•开辟人员的流动是否仍能保证工作的连续性;如果对于这些问题中的任何一个答案是否定的,则需要进一步的调研,以评估潜在地风险、风险因素和驱动因子8为了很好地识别和消除软件风险,项目管理者需要标识影响软件风险因素的风险驱动因子,这些因素包括性能、成本、支持和进度风险因素是以如下的方式定义的•性能风险——产品能够满足需求且符合于其使用目的的不确定的程度•成本风险——项目预算能够被维持的不确定的程度•支持风险——软件易于纠错、适应及增强的不确定的程度•进度风险——项目进度能够被维持且产品能按时交付的不确定的程度精品文档Z7-----------------------------------------------------------------------------------------------------每一个风险驱动因子对风险因素的影响均可分为四个影响类别——可忽略的、轻微的、严重的、灾难性的下表指出了由于错误而产生的潜在影响或者没有达到预期的结果所产生的潜在影响影响类别的选择是以最符合表中描述的特性为基础的影响评估|进度类别因素性能支持成本无法满足需求而导致生约收错误将导致进度延迟和成本增加1严重退化使得根本灾难的严重的资金短缺,很可能无法在交付日期内无法作出响应或者无法支2持无法达到要求的技超出预算完成的软件术性能无法满足需求而导致系统性能下降,使得任务能错误将导致操作的延迟,并使成本增加1否成功受到置疑严重的在软件修改中有少量的延技术性能有所下降资金不足,可能会超支交付日期可能延迟2迟无法满足要求而导致次要任务的退化成本、影响和即可恢复的进度上的小问题1轻微的技术性能有较小的实际的、可完成的较好的软件支持有充足的资金来源2降低进度计划无法满足要求而导致使用不方便或者不易操作错误对进度及成本的影响很小1可忽略的|可能低于预算|交付日期将会提前技术性能不会降低易于进行软件支持2注、1未测试出的软件错误或者缺陷所产生的潜在影响如果没有达到预期的结果所产生的潜在影响、2
五、风险预测风险预测,又称风险估算,试图从两个方面评估每一个风险——风险发生的可能性或者概率,以及风险发生了,所产生的后果项目计划者、其它管理人员和技术人员一起执行四个风险预测活动建立一个尺度,以反映风险发生的可能性;1描述风险的后果;2估算风险对项目及产品的影响;3标注风险预测的整体精确度,以免产生误解
4、建立风险表1风险表给项目管理者提供了一种简单的风险预测技术样本如下表项目组一开始要在表中的第一列列出所有风险可能,这些可以利用前面所述的风险检查条目来完成在第二列队风险进行分类,风险发生概率放在第三列每一个风险的概率值可以由项目组成员个别估算,然后将这些值平均,得到一个有代表性的概率值分类前的风险表样本风险类别概率影响RMMM规模估算可能非常低PS60%2用户数量大大超出计划PS30%3复用程度低于计划PS70%2最终用户抵制该计划BU40%3交付期限将被紧缩BU50%2资金将回流失CU40%1用户将改变需求PS80%2技术达不到预期的效果TE30%1缺少对工具的培训DE80%3人员缺乏经验ST30%2人员流动频繁ST60%2・注影响类别取值-灾难的一严重的一轻微的—可忽略的1234一旦完成风险表的前四列内容,就要根据概率及影响来进行排序高概率、高影响的风险放在表的上方这就完成为了第一次风险排序项目管理者研究已经排序的表,并定义一条终止线该终止线(表中某一点上的一条水平线)表示惟独在那些线上的风险才会得到进一步的关注,线之下的风险则需要再评估以完成第二次排序风险影响及概率从管理的角度来考虑,是起着不同作用的(见下图)一个具有高影响但发生概率很低的风险因素不应该花费太多的管理时间而高影响且发生概率为中到高的风险以及低影响但高概率的风■险,应该首先考虑偎高、评估风险影响2如果风险真的发生了,所产生的后果有三个因素可能会受影响风险的性质、范围、时间风险的性质是指当风险发生时可能产生的问题例如,一个定义得很差的与客户硬件的接口(技术风险)会妨碍早期的设计和测试,也有可能导致项目后期阶段的系统集成问题风险的范围结合了严重性及其整体分布情况风险的时间主要考虑何时能够感到风险,风险会持续多长期在大多数情况下,项目管理者希翼“坏消息越早浮现越好以下的步骤用来确定风险的整体影响•确定每一个风险元素发生的平均概率•使用前面的表格,基于其中列出的标准来确定每一个因素的影响•完成风险表,分析其结果•风险预测和分析技术可以在软件项目发展过程中跌代使用项目组定期复查风险表,再评估每一个风险,以确定新的情况是否引起其概率及影响的改变、风险评估3我们建立如下形式的一系列三元组[r,l,x]其中表示风险,表示风险发生的概率,表示风险产生的影响在风险评估过程中,我们进一步审查在r Ix风险预测阶段所做的估算的精确度,试图为所发现的风险排出优先次序,并开始考虑如何控制或者避免可能发生的风险要使评估发生作用,必须定义一个风险参考水平值对于大多数软件项目而言,前面讨论的风险因素——性能、成本、支持、进度,也代表了风险参考水平值即,对于性能下降、成本超支、支持艰难、或者进度延迟,都有一个水平值的要求,超过它就会导致项目被迫住手如果风险的组合所产生的问题引起一个或者多个参考水平值被超过,则工作将会住手在软件风险分析中,风险参考水平值存在一个点,称为参考点或者临界点,在这个点上,决定继续进行该项目或者终止它(问题太多)都是可以接受的。