1、2018/12/6,集美大学信息教研室,1,软件工程 Software Engineering 第6章 风险分析和管理,2018/12/6,集美大学信息教研室,2,第6章 风险分析和管理,6.1 被动和主动的风险策略 6.2 软件风险 6.3 风险识别 6.4 风险预测 6.5 风险缓解、监控和管理 6.6 RMMM计划,2018/12/6,集美大学信息教研室,3,风险分析和管理,Robert CharetteCHA89在他的关于风险分析及管理的书中给出了风险概念的定义是: 首先,风险关注未来将要发生的事情。今天和昨天已不再被关心。 未来什么样的风险会导致软件项目彻底失败? 其次,风险涉及改变
2、,如思想、观念、行为、或地点的改变。 客户需求、开发技术、目标环境以及所有其他与项目相关因素的改变 第三,风险涉及选择及选择本身所包含的不确定性。 选择应该采用什么方法及工具?需要多少人员参与?.,2018/12/6,集美大学信息教研室,4,6.1 被动风险策略和主动风险策略,被动风险策略 从不担心发生任何问题,问题发生后再做出反应。 软件项目组对存在的风险不闻不问,直到出了问题才赶紧采取措施,当种种努力失败后,项目处于真正的危机之中。 主动风险策略 项目开始时就预测、标识项目存在的各种风险,评估风险发生的概率和影响的大小並按重要性进行排序; 项目组建立风险管理计划和意外事件处理计划,以便预防
3、风险,及时处理突发事件。,2018/12/6,集美大学信息教研室,5,6.2 软件风险,进行风险分析时,重要的是量化每个风险的不确定程 度和损失程度。 项目风险 项目风险是指预算、进度、人员、资源、利益相关方、需求等方面的潜在问题以及它们对软件项目的影响。 项目风险威胁到项目计划。 技术风险 技术风险是指设计、实现、接口、验证和维护等方面的潜在问题。 技术风险威胁到要开发软件的质量及交付时间。 商业风险 商业风险威胁到要开发软件的生存能力。,2018/12/6,集美大学信息教研室,6,6.2 软件风险,Charette【CHA89】提出的风险分类方式: 已知风险 通过仔细评估项目计划、开发项目
4、的商业及技术环境以及其他可靠的信息来源之后可以发现的那些风险。 可预测风险 能够从过去项目的经验中推断出来的风险。 不可预测风险 可能会真的出现,但很难事先加以识别的风险。,2018/12/6,集美大学信息教研室,7,6.2 软件风险,软件风险和其它风险一样存在不确定性,有些是很难预测的。 对风险的不确定性进行量化,估算某一风险可能带来的损失。 除关注软件项目的一般性风险外,还要关注软件项目的特殊风险,如项目的背景、特殊要求、关键内容、薄弱环节、技术难点、人员状况、工作环境等。,2018/12/6,集美大学信息教研室,8,6.3 风险识别,识别风险是试图系统化地确定对项目计划(估算、进度、资源
5、分配)的威胁。通过识别已知的和可预测的风险,项目管理者已经迈出了第一步在可能时避免这些风险,且当必要时控制这些风险。,2018/12/6,集美大学信息教研室,9,6.3 风险识别,对侍风险不能采取回避态度 项目开始时应对一般风险和产品特定风险进行系统标识,並随着项目的展开不断更新。 一般风险 对每一个软件项目而言都是潜在的威胁。 产品特定风险 只有那些对当前项目特定的技术、人员及环境非常了解的人才能识别出来。 “本产品中有什么特殊的特性可能会威胁到我们的项目计划?”,2018/12/6,集美大学信息教研室,10,6.3 风险识别,识别风险的有效方法建立风险条目检查表为了帮助项目管理人员、项目规
6、划人员,全面了解软件开发过程存在的风险, Boehm 建议设计并使用各类风险检测表,表中条目指明,常見並可预测的风险。有些风险可以预料,有些很难预料。 一般可预测风险产品规模、商业影响、客户、过程、技术、环境、人员及经验等。,2018/12/6,集美大学信息教研室,11,人员配备风险检测表,(1) 开发人员的水平如何。 (2) 开发人员在技术上是否配套。 (3) 开发人员的数量如何。 (4) 开发人员是否能够自始至终地参加软件开发工作。 (5) 开发人员是否能够集中全部精力投入到软件开发工作。 (6) 开发人员对自己的工作是否有正确的期望。 (7) 开发人员是否接受过必要的培训。 (8) 开发
7、人员的流动是否能够保证工作的连续性。上述问题可以选用0,1,2,3,4,5来回答。完全肯定取值为0,反之 为5,中间情况分别取值1,2,3,4值越大表示风险越大。 人员配备风险检测表反映了人的因素给软件项目带来的风险。,6.3 风险识别,2018/12/6,集美大学信息教研室,12,6.3.1 评估整体项目风险,高层的软件管理者和客户管理者已经正式承诺支持该项目了吗? 最终用户对项目和待开发的系统/产品热心支持吗? 软件工程团队及其客户充分理解需求吗? 客户已经完全地参与到需求定义中了吗? 最终用户的期望现实吗? 项目范围稳定吗? 软件工程团队的技能搭配合理吗? 项目需求稳定吗? 项目团队的人
8、员数满足项目需要吗? 所有的客户/用户对项目的重要性和待开发的系统/产品的需求有共识吗?,2018/12/6,集美大学信息教研室,13,6.3.1 评估整体项目风险,如果对上述问题的任何一个回答是否定的,则应务必启动缓解、检测和管理风险的步骤。项目的风险程度与对这些问题否定回答的数量成正比。,2018/12/6,集美大学信息教研室,14,6.3.2 风险因素和驱动因子,美国军方风险因素是以如下的方式定义的: 性能风险产品能够满足需求且符合其使用目的的不确定的程度。 成本风险项目预算能够被维持的不确定的程度。 支持风险软件易于纠错、适应及增强的不确定的程度。 进度风险项目进度能够被维持且产品能按
9、时交付的不确定的程度,2018/12/6,集美大学信息教研室,15,风险因素和驱动因子,2018/12/6,集美大学信息教研室,16,6.4 风险预测,风险预测又称为风险估计,试图从两个方面评估每一个风险: 风险发生的可能性或概率; 风险相关问题产生的后果; 风险预测活动(目的:按照优先级来考虑风险) 建立一个尺度,以反映风险发生的可能性; 描述风险产生的后果; 估计风险对项目及产品的影响; 标明风险预测的整体精确度,以免产生误解。,2018/12/6,集美大学信息教研室,17,6.4.1 建立风险表,风险表给项目管理者提供了一种简单的风险预测技术(风险表应该采用电子表格来实现,这样使得表中的
10、内容易于操纵及排序)。 风险表的样本见P548.,2018/12/6,集美大学信息教研室,18,6.4.1 建立风险表,风险 类别 概率 影响 RMMM 1 2 3 项目开始时应在第一列列出所有风险; 第二列给出风险类别; 第三列给出每种风险发生的概率; 第四列给出各种风险产生影响的评估值; 第五列给出风险缓解、监控和管理计划。,2018/12/6,集美大学信息教研室,19,6.4.1 建立风险表,评估值按风险因素:性能、支持、成本、进度的影响类别求加权平均值 影响类别取值:灾难的1,严重的2,轻微的3,可忽略的4。 对风险表中的风险按照发生概率大小、影响大小,由大至小排序。,2018/12/
11、6,集美大学信息教研室,20,建立风险表,2018/12/6,集美大学信息教研室,21,6.4.1 建立风险表,风险表排序 一旦完成了风险表的前四列内容,就要根据概率及影响来进行排序。高发生概率、高影响的风险放在表的上方,而低概率风险则移到表的下方。这样就完成了第一次风险排序。 项目管理者研究已排序的表,并定义一条中止线。该中止线(表中某一点上的一条水平线)表示:只有那些在线之上的风险才会得到进一步的关注。而在线之下的风险则需要再评估以完成第二次排序。,2018/12/6,集美大学信息教研室,22,6.4.1 建立风险表,2018/12/6,集美大学信息教研室,23,6.4.2 评价风险的影响
12、,风险影响三要素 风险的性质 风险发生时可能产生的问题。 风险的范围 风险引发损失的分布及严重性。 风险的时间 风险发生的时间、持续的时间,应注意这时项目所处的状态。,2.6软件开发过程的管理,2018/12/6,集美大学信息教研室,24,6.4.2 评价风险的影响,确定风险影响的步骤 确定每个风险元素发生的平均概率 按照给出的标准确定每个元素的影响 填写风险表並分析其结果 风险预测和分析技术可以在软件项目进展过程中反复使用,项目组应定期复查风险表,评估每一个风险,以此为基础判断风险发生概率及影响的变化。必要时可潻加新的风险元素,删去不存在影响的元素,並对风险表重新排序。,2.6软件开发过程的
13、管理,2018/12/6,集美大学信息教研室,25,6.4.2 评价风险的影响,风险显露是风险事件的预期值,该值等于风险概率乘以风险事件的成本。 整体的风险显露度RERE=P X CP:风险发生的概率;C:风险发生时带来的项目成本;,2018/12/6,集美大学信息教研室,26,6.4.2 评价风险的影响,风险预期值计算示例1: 例:考虑掷两个骰子,假设摇出7为不期望事件,该事件将使你损失60元。试计算摇出7的风险概率和风险影响,计算风险预期值。 解:风险概率为两个骰子所有的36种组合中的6种,或1/6.风险影响为60元。风险预期值为: 1/6*60=10元,2018/12/6,集美大学信息教
14、研室,27,6.4.2 评价风险的影响,风险预期值计算示例2: 例:考虑一个未发现错误的发生概率为0.5%的项目,该错误将使公司损失100000元,计算风险预期。 解:风险预期为每种概率的风险预期之和。 0.005X100 000+0.995X0=500元,2018/12/6,集美大学信息教研室,28,6.4.2 评价风险的影响,风险预期值计算示例3: 例:考虑一个未复审的错误概率为0.5%的项目,该错误将使公司损失100000元。考虑对该项目使用附加评审方法,可以发现其中50的错误,每个错误平均花费100元,试计算风险预期,该附加评审方法值得采用吗? 解:未复审:0.005*100 000=
15、500附加复审:0.0025X100 0000.9975X100250.2599.75350500 附加评审方法值得采用.,2018/12/6,集美大学信息教研室,29,课外作业,某公司的历史数据表明每KLOC的错误率为0.0036.一种新的评审技术表明每100KLOC价值1000元,并减少错误数50。假设每个错误平均花费公司10000元。当前项目的大小估算为50KLOC。计算每种方法的风险预期(无评审和有评审),新的评审方法值得采用吗? 解:无采用评审技术:0.003650KLOC10 000+0.99640=$1800采用新的评审技术:0.001850KLOC10 000+500=$140
16、0或: 0.001850KLOC10000+0.998250KLOC*10=$1400 新的评审技术值得采用,2018/12/6,集美大学信息教研室,30,6.4.2 评价风险的影响,三元组ri, li, xi是风险管理的基础设高级职员流动给项目带来风险r1,根据历史的经验或直观感觉,高级职员离开课题组的概率 l1 = 70%, 这一风险导致事件 x1 发生项目开发时间延长 15%,成本增加 20%,2018/12/6,集美大学信息教研室,31,6.4.2 评价风险的影响,定义 风险管理三元组 ri, li, xi i =1,2,3其中: ri 表示风险 li 表示风险发生的概率 xi 表示风
17、险产生的影响对大多数软件项目,应该定义性能、成本、支持及进度的风险参考水平值,当某一风险或风险组合值超过水平值时项目被迫停止。,2018/12/6,集美大学信息教研室,32,6.5 风险缓解、监控和管理,风险分析的目的 协助项目组建立处理风险的策略。 有效的风险处理策略 风险避免;风险监控;风险管理及异常事件处理。 风险缓解计划 软件项目组主动避免风险发生的最好策略。如,当人员流动被标识为一个较大的风险时,应建立一种对策降低人员流动。 落实风险缓解计划 项目管理者应该对引发风险的因素和采取措施取得的效果 进行监控; 当风险发生时,采取积极的补救措施。,2018/12/6,集美大学信息教研室,3
18、3,6.5 风险缓解、监控和管理,2018/12/6,集美大学信息教研室,34,项目负责人采取的风险管理措施,(1)项目开始前控制产生风险的原因。项目开工后应设法减轻风险的影响。 (2)了解项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。 (3)在工作方法和技术上采取适当措施,防止因人员流动给工作带来损失。 (4)项目在开发过程中应及时公布并交流项目开发的信息。 (5)建立组织机构,确定文档标准、并及时生成文档。 (6)对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。 (7)为关键技术准备后备人员。,2018/12/6,集美大学信息教研室,35,6.6
19、RMMM计划,风险缓解、监控和管理计划Risk Mitigation,Monitoring,and Management Plan将风险分析工作文挡化,成为项目的一部分。 执行RMMM计划需要成本当软件项目比较大时,可能标出30至40种风险,如果为每种风险定义3至7种风险管理步骤,则风险管理本身就是一个项目。 将Pareto的20-80规则用于软件项目的风险标识,即20%的风险具有0.80的权,而其余的80%风险只有0.20的权。要善于标识属于20%的主要风险,降低RMMM计划的规模和复杂性。,2018/12/6,集美大学信息教研室,36,RMMM计划大纲,计划大纲 1.引言1.1文挡的范围和
20、目的1.2主要风险综述1.3责任1.3.1管理者1.3.2技术人员 2.项目风险表2.1中止线以上的风险描述2.2影响概率及影响因素,3.风险缓解、监控和管理3.1缓解3.1.1一般策略3.1.2缓解风险的特定步骤3.2监控3.2.1被监控的因素3.2.2监控方法3.3管理3.3.1意外事件计划3.3.2特殊考虑 4.RMMM计划时间安排表 5.总结,2018/12/6,集美大学信息教研室,37,RMMM计划的目的,一旦建立了RMMM计划,且项目开始启动,则风险缓解及监控步骤也开始了。正如我们前面讨论过的,风险缓解是一种问题避免活动。风险监控则是一种项目跟踪活动,它有三个主要目的: 评估一个被
21、预测的风险是否真正发生了; 保证为风险而定义的缓解步骤被正确地实施; 收集能够用于未来风险分析的信息。在很多情况下,项目中发生的问题可以追溯到不止一个风险,风险监控的另一个任务就是试图在整个项目中确定“起源”(什么风险引起了什么问题)。,2018/12/6,集美大学信息教研室,38,小结,当对软件项目期望很高时,一般都会进行风险分析。不过,即使他们进行这项工作,大多数软件项目管理者都是非正式地和表面上地完成它。花在标识、分析、和管理风险上的时间可以从多个方面得到回报:更加平稳的项目进展过程;较高的跟踪和控制项目的能力;由于在问题发生之前已经做了周密计划而产生的信心。,2018/12/6,集美大学信息教研室,39,思考题,1.描述“已知风险”和“可预测风险”之间的差别。 2.假设你要乘飞机到西藏旅游,那么这次旅行有什么风险,哪些是一般风险,哪些是特殊风险?,2018/12/6,集美大学信息教研室,40,谢谢,