韩万江姜立新,《软件项目管理案例教程》,机械工业出版社,2005-02【丛书名】国家示范性软件学院系列教材10软件项目风险管埋计划 (2)10.1软件项目风险管理概述 (2)10.1.1风险概念 (2)10.1.2风险类型 (4)10.1.3风险的基本性质 (5)10.1.4风险管理概述 (5)10.1.5风险管理的意义 (5)10.2风险识别 (6)10.2.1概念 (7)10.2.2德尔菲方法 (7)10.2.3头脑风暴法 (7)10.2.4情景分析法 (7)10.2.5风险条目恼查表 (7)10.2.6真他方法 (13)10.2.7风险识别的结果 (13)10.3风险评估 (13)10.3.1概念 (14)10.3.2定性风险评估 (14)10.3.3定量风险评估 (15)10.3.4风险分析结果表 (17)10.4风险规划 (19)10.4.1概忿 (19)10.4.2回避风险 (19)10.4.3转移风险 (19)10.4.4损失控制 (19)10.4.5自留风险 (20)10.4.6风险规划结果 (20)10.5风险控制 (20)10.6风险管埋的建议 (21)10.7案例说明 (21)10.8小结 (22)10.9习题 (22)10软件项目风险管埋计划任何项目都有一定的不确定性,如果没有很好的风险管理,项目就可能遇到麻烦。
所以,在软件项目管理过程中,风险计划也是一个重要的计划,只有进行合理的风险管理,制定及时的风险计划,才能防崽于未然,做到主动控制风险,而不是被动地被风险所控制。
本章我们进人路线图的第9站:风险计划,如图10—1所示。
图10-1路线图第9站:风险计划10.1软件项目风险管理概述在软件项目的开发过程中,必然要使用一些新技术、新产品,同时由于软件系统本身的结枸和技术复杂性的原因,需要投人大量人力、物力和财力,这就造成开发过程中存在某些“未知量”或“不确定因素”,这必然给项目的开发带来一定程度的风险,也可能会使项目计划失败或不能完全达到预期目标。
因此,对项目风险进行科学、准确的判别,为项目决策层和管理人员提供科学的评估方法,是十分必要的。
项目中的风险有很多种,没有风险的项目几乎是不存在的,只是风险的多少、严重程度不同而已。
10.1.1风险概念风险是损失发生的不确定性,是对潜在的、未来可能发生损害的一种度量。
如果风险确实发生了,则它的发生会对项目产生有害的或者负面的影响。
例如,在软件测试期间经常会发现故障,因此一个合理的项目必须做好发现故障时对它们进行修复的计划。
同样,项目开发过程中几乎总悬会出现某些变更申请,因此项目管理必须相应地准备好变更计划,以处理这些事件。
另一方面,风险是一种概率事件——它可能发生也可能不发生。
因此,我们通常会表现出很乐观,不是看不到风险就是希望它们不会发生。
如果风险真出现了,这种态度会使项目陷入困境,这是一个大型项目中很可能发生的事情。
因此,风险管理被认为是管理大型软件项目的最佳实践。
风险管理旨在识别出风险,然后采取措施使它们对项目的影响最小。
风险管理是软件管理中相对较新的领域,它首次出现于贝姆(Bochm)关子风险管理的指商中。
自那以后,软件的风险管理逐渐被人们所认识。
软件风险是指软件开发过程中及软件产品本身可能造成的伤害或损失。
一个项目的损失可能有不同的后果形式,例如软件质量的下降、成本费用的超出、项目进度的推迟等。
风险关注未来的事情,这意味着,风险涉及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择。
风险发生的过程如图10度量2所示,首先有风险因素的存在,风险因素导致风险事件的发生,从而造成损失,而损失又引起了实际与计划之间的差异,从而得到风险的结果。
风险事件是指那些人们不愿意它发生的或者没有规划的事件。
这些风险事件可能导致无法实现项目目标。
风险因素是指能够引起风险事件发生或者增加风险事件发生机会或影响损失严重程度的因素,是造成损失的内在或者处在的原因。
需求的变化,设计镨误、疏漏和理解镨误,狭隘定义或理解镨误,不充分估计,不胜任的拈犬人呙等等、都旱风除冈葚。
图l0弓2风险发生过程一般说,项目风险应具有三要素:首先风险是一个事件,其次风险应具有事件发生的概率,最后风险事件可能造成一定的影响。
如图10ˉ3所示,风险发生的概率越高,造成的影响越大,就越是高风险,否则就是中等风险或者低风险。
风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态。
当没有办法消除风险甚至连试图降低该风险也存在疑问时,这些风险就是真正的风险了。
在我们能够标识出软件项目中的真正风险之前,识别出所有对管理耆和开发者而言均为明显的风险是很重要的。
图10亏3风险图示10.1.2风险类型从范围角度上看,风险主要分为下述三种类型:项目风险、技术风险和商业风险。
1)项目风险项目风险是指潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求方面的问题,例如时词和资源分配的不合理、项目计划质量的不足、项目管理原理使用不良所导致的风险、资金不足、缺乏必要的项目优先级等。
项目的复杂性、规模的不确定性和结构的不确定性也是构成项目风险的因奏。
2)技术风险技术风险是指潜在的设计、实现、接口、检验和维护方面的问题。
规格说明的多义性、技术上的不确定性、技术陈旧也是技术风险因素。
复杂的技术、项目执行过程中使用技术或者行业标准发生变化所导致的风险也是技术风险。
3)商业风险商业风险主要包括:市场风险、策略风险、管理风险和预算风险等。
例如:·如果开发的软件不是市场真正所想要的,就发生了市场风险。
·如果开发的软件不再符合公司的软件产品策略,就发生了策略风险。
·由于重点转移或者人员变动而失去上级管理部门的支持,就发生了管理风险。
·如果没有得到预算或者人员的保证,就发生了预算风险。
从预测角度看,风险可以分为下面三种类型:已知风险、可预测风险、不可预测风险。
1)已知风险已知风险是通过仔细评佑项目计划、开发项目的商业和技术环境以及其他可靠的信息来源之后可以发现的那些风险(如:不现实的交付时间,没有需求或软件范围的文档,恶劣的开发环境)。
2)可预测风险可预测风险是指能够从过去项目的经验中推测出来的风险(如:人员调整,与客户之间无法沟通,由于需要进行维护而使开发人员精力分散等)。
3)不可预测风险不可预测风险是可能、也会真的出现、但很难事先识别出来的风险。
项目管理者只能对已知风险和可预测风险进行规划,不可预测的风险只能靠企业的能力来承担了。
10.1.3风险的基本性质风险具有如下的基本性质:1)客观性风险客观性首先表现在它的存在是不以人的意志为转移的,因为决定风险的各种因素对风险主体是独立存在的,不管风险主体是否意识到风险的存在,在一定的条件下风险就可能变为现实。
其次,风险客观性还表现在风险元时不有,无所不在,它潜在各种活动之中。
2)不确定性风险发生的不确定性表现为风险的程度有多大以及风险何时何地有可能变为现实,这些都是不肯定的。
由于人们对客观世界的认识受到各种条件的限制,不可能准确地预测风险的发生,不确定性要求我们运用各种方法进行测度。
3)不利性风险一旦产生时,就会使风险主体产生挫折、失败甚至损失,对风险主体不利。
因此我们应该在承认风险、认识风险的基础上,做好决策,尽可能避免风险,将风险的不利性降到最低。
4)可变性度量风险的可变性表现在一定条件下可以转化,风险事件可以转化为非风险的事件,非风险的事件可以转化为风险事件。
5)相对性风险的相对性是针对风险的主体而言的,在相同的风险情况下,不同的风险主体对风险的承受能力不同,不同的组织和个人往往对风险有着不同的容忍限度。
例如,一个高利润高收益的公司也许愿意为一个10亿美元的合同花费50万美元制作一份计划书,而亠个收支相抵的公司则不会。
一个组织也许认为15%的误差几率是高风险的,而其他组织却认为这个几率风险很低。
6)风险和利益的对称性风险和利益是同时存在的,风险是利益的代价,利益是风险的报酬。
没有利益只有风险,没人会做;实现利益必须承担一定的风险。
10.1.4风险管理概述风险管理是指在项目进行过程中不断对风险进行识别、评估,制定策略,监控风险的过程。
通过风险识别、风险分析和风险评价去认识项目的风险,并以此为基础合理地使用各种风险应对措施、管理方法、技术和手段对项目的风险进行有效的控制,妥善处理风险事件造成的不利后果,以最小的成本保证项目总体目标的实现。
风险管理是一系列对未来的预测,伴随着一系列的活动和处理过程以便控制风险,减少其对项目的影响。
风险管理是项目管理的一个重要组成部分,贯穿于项目生存期的始终。
1)从项目进度、质量和成本目标看,项目管理与风险管理的目标是一致的。
通过风险管理来降低项目进度、质量、成本方面的风险,实现项目目标。
2)从计划的职能看,项目计划考虑的是未来,而未来存在不确定因蓁,风险管理的职能之一是减少项目整个过程中的不确定性,有利子计划的准确性。
3)从项目实施过程看,不少风险是在项目实施过程中由潜在变成现实的,风险管理就是在风险分析的基础上拟定具体措施来消除、缓和及转移风险,并避兔产生新的风险。
10.1.5风险管理的意义目前,风险管理被认为是软件项目中减少失败的一种重要手段。
当不能很确定地预测将来事情的时候,可以采用结构化风险管理来发现计划中的缺陷,并且采取行动来减少潜在问题发生的可能性和影响。
风险管理意味着危机还没有发生之前就对它进行处理,这就提高了项目成功的机会并减少了不可避免风险所产生的后果。
只有进行很好的风险管理才能有效地控制项目的成本、进度、产品需求,同时可以阻止意外的发生。
这样,项目经理可以将精力更多地放到项目的及时提交上,不用像救火队员一样,处于被动状态。
同时,风险管理可以防止问题的出现,即使出现问题,也可以降低其危害程度。
可以说你不跟踪风险,风险就跟踪你。
正如Tom Gilb所说,“女口果你不主动攻击风险,风险就会主动攻击你”。
风险管理可以分为四个层次:·危机管理:是在风险已经造成麻烦后才着手处理它们。
·风险缓解:事先制定好风险发生后的补救措施,但不制定任何的防范措施。
·着力预防:将风险识别与风险防范作为软件项目的一部分加以规划和执行。
·消灭根源:识别和消灭可能产生风险的根源。
作为一个优秀的风险管理者,应该采取主动的风险管理策略,即着力预防和消灭根源的管理策略,而不应该采取被动的方式,被动风险策略是直到风险变成真正的问题时才会拨出资源来处理它们。
更普遍的是,软件项目组对风险不闻不阆,直到发生了错误才赶紧采取行动,试图迅速地纠正镨误,这种管理模式常常被称为“救火模式”。
当补救的努力失败后,项目就会处在真正的危机之中。