11.1风险与风险管理11.2软件项目风险识别11.3软件项目风险评估11.4软件项目风险控制11.5风险管理策略11.6风险驾驭和监控2020/3/11辽宁工程技术大学软件学院1本章要点:风险的定义、性质、分类风险的识别和分析风险的应对策略风险规划风险控制——规避、转移Page211.1.1风险的基本概念11.1.2风险分类11.1.3风险成本11.1.4风险管理的基本概念2020/3/11辽宁工程技术大学软件学院3思考:一次重要的汽车旅行,其中按时到达是重要的(可能是一次重要的工作访谈)。试考虑旅行中可能遇到的问题。可能的问题可能的结果实施的行动计划Page4异常严重的交通堵塞车胎没气汽车故障或事故可能错过访谈的开始时间可能错过访谈或迟到可能错过访谈收听交通广播计划另一条线路准备可用备用车胎无项目:构建全球人力资源综合管理系统条件:系统由两个软件开发商共同开发,最后集成。开发过程由客户提供专门供项目使用的工具,但不久以后该工具就发行了新版本。其中一个开发团队是一个良好的团队,项目经理对软件开发做了合理的估算,团队共有35人,在规定时间内交付了自己开发的部分软件。另一个开发团队未能按时完成开发,并且提供的接口不断改变。结果:该系统晚了6个月才正式投入使用,开发公司支付了项目50%工作量的蔓延。Page5Page6风险工程风险分析风险管理风险标识风险估计风险评价风险策划风险控制风险监督风险指导风险人员配置1.风险和软件风险的定义风险的定义——狭义和广义狭义的风险是指“可能失去的东西或者可能受到的伤害”,即在从事任何活动时可能面临的损失。广义的风险是指一种不确定性,即风险带来的不都是损失,也可能存在机会。Page7软件风险的定义软件风险是指软件开发过程中及软件产品本身可能造成的伤害或损失。一个软件项目的损失可能的后果形式?软件质量的下降成本费用的超出项目进度的推迟等风险的本质——不确定性和损失。Page8风险因素是指能够引起风险事件发生或者增加风险事件发生机会或影响损失严重程度的因素,是造成损失的内在或者外在的原因。例如:需求的变化、设计错误、疏漏和理解错误、狭隘定义或理解错误、不充分估计、不胜任的技术人员等等,都是风险因素。Page9(1)客观性首先,风险的存在是不以人的意志为转移的;其次,风险无时不有,无所不在,它潜在各种活动之中。因为决定风险的各种因素对风险主体是独立存在的,不管风险主体是否意识到风险的存在,在一定的条件下风险就可能变为现实。Page10(2)不确定性风险是损失的不确定性,其不确定性包括:发生与否不确定;发生的时间不确定;发生的状况不确定;发生的结果不确定。风险是一种概率事件,它可能发生也可能不发生Page11(3)不利性风险一旦产生时,就会使风险主体产生挫折、失败甚至损失,对风险主体不利。对于风险的不利性,我们该怎么办?首先,承认风险、识别风险,对风险做出客观准确的分析其次,做好风险的应对措施,尽可能避免风险,将风险的不利性降到最低。Page12(4)可变性风险的可变性表现为——风险在一定条件下可以相互转化Page13风险事件非风险事件转化条件(5)相对性风险的相对性是针对风险的主体而言的,在相同的风险情况下,不同的风险主体对风险的承受能力不同,不同的组织和个人往往对风险有着不同的容忍限度。例如,一个高利润高收益的公司也许愿意为一个10亿美元的合同花费50万美元制作一份计划书,而一个收支相抵的公司通常不会。一个公司也许认为15%的误差几率是高风险的,而其他公司却认为这个几率风险很低。Page14(6)风险和利益的对称性风险和利益是同时存在的,风险是利益的代价,利益是风险的报酬。没有利益只有风险,没人会做;实现利益必须承担一定的风险。Page15Page16(1)根据风险范围不同,可将风险分为三类:项目风险、技术风险和商业风险①项目风险项目风险是指由于潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求等方面的问题而导致的风险。例如:资金不足、时间和资源分配的不合理、项目计划质量的不足、项目管理不当、缺乏必要的项目优先级等均可导致项目风险的发生。Page17②技术风险技术风险是指由于潜在的设计、实现、接口、检验和维护等方面的问题而导致的风险。例如规格说明的二义性、技术上的不确定性、技术陈旧等可能导致技术风险的发生。复杂的开发技术、行业标准发生变化等也可能导致技术风险的发生。Page18③商业风险主要有市场风险、策略风险、管理风险和预算风险等。例如市场风险:开发的软件不是市场真正所想要的。策略风险:开发的软件不再符合公司的软件产品策略。管理风险:由于对项目管理不当等问题而导致的风险,例如:进度计划制定和资源配置不合理、计划草率且质量控制差等。预算风险:没有得到预算或者人员的保证。Page19(2)根据风险内容不同,可将风险分为四类:技术风险、管理风险、组织风险和外部风险①组织风险组织风险是指开发管理组织对项目认识的不确定性问题而导致的风险。例如组织内部对目标未达成一致;高层对项目不重视,资金不足;项目组织的人员结构不合理或者与其他项目有资源冲突等,都是潜在的组织风险。Page20②外部风险外部风险是指外部事件和外部环境等不可控制因素的变化问题而导致的风险。例如法律法规的变化与项目相关各方的情况发生变化等。Page21(3)根据风险可预知程度不同,可将风险分为三类:已知风险、可预测风险和不可预测风险①已知风险已知风险是指通过仔细评估项目计划、开发项目的商业和技术环境以及其他可靠的信息来源之后可以发现的风险。例如:不现实的交付时间、没有需求或软件范围的文档、恶劣的开发环境等。Page22②可预测风险可预测风险是指能够从过去项目的经验中推测出的风险。例如:人员调整与客户之间无法沟通或沟通不畅由于需要进行维护而使开发人员精力分散等等。Page23③不可预测风险不可预测风险是可能、也会真的出现、但事先很难识别出来的风险。例如:突发性的灾难事件,不可抗力事件等通常将不可控制的“不可抗力事件”不作为风险对待,这些事件往往作为灾难防御。Page24Page25风险成本:指为防止风险的发生或者减少风险发生时造成的损失,而必须采取一些预防措施和应对策略时所产生的费用。风险成本包括有形成本、无形成本以及为预防和控制风险所发生的费用。风险管理是要付出代价的,一般只有当风险的不利后果(损失)超过风险管理而付出的代价时,才进行风险管理。Page26(1)有形成本风险的有形成本是指风险发生时所付出的有形的可以用货币直接来衡量的代价。风险的有形成本包括风险发生时造成的直接损失和间接损失。①直接损失:指风险发生时,人员、经费、设备等的直接流失;②间接损失:指风险发生时,直接损失以外的人、财、物、知识等的损失。Page27(2)无形成本风险的无形成本是指由于风险所具有的不确定性而使项目在风险发生时所付出的无形代价。主要表现在以下几个方面:①风险的发生减少了项目成功的机会;②风险阻碍了生产率的提高和新技术的应用;③风险会造成资源分配的不当,使人们将更多的资源投入到风险较小的行业或者项目中。Page28(3)为预防和控制风险所发生的费用指为了预防和控制风险的发生与损失,必须在项目的各个阶段采取必要的预防措施而产生的费用。例如在项目的前期阶段增加人力资源和经费的投入向保险公司投保向有关部门或者专家咨询合理分配资源配备合适和必要的人员购置用于预防和控制风险的设备加强人员培训等,这些活动都需要经费的支持。Page29Page30(1)风险管理风险管理是指在项目进行过程中不断对风险进行识别、评估,制定策略,监控风险的过程。通过风险识别、风险分析和风险评价去认识项目的风险,并以此为基础合理地使用各种风险应对措施、管理方法、技术和手段对项目的风险进行有效的控制,妥善处理风险事件造成的不利后果,以最小的成本保证项目总体目标的实现。Page31风险管理是软件项目中减少失败的一种重要手段。当不能很确定地预测未来事情时,可以采用结构化风险管理来发现计划中的缺陷,并且采取行动来减少潜在问题发生的可能性和影响。风险管理意味着危机还没有发生之前就对它进行处理,提高了项目成功的机会,减少了不可避免风险所产生的后果。Page32风险管理可以防止问题的出现,即使出现问题,也可以降低其危害程度。只有进行良好的风险管理才能有效地控制项目的成本、进度、产品需求,同时可阻止意外发生。Page33风险管理是主动管理风险。主动管理策略是在技术工作开始之前就已经启动了风险管理,标识出潜在的风险,评估它们出现的概率及产生的影响,对风险按重要性进行排序,然后建立一个风险管理计划。主动风险管理策略的目标是预防风险。但是,因为不是所有的风险都能够预防,所以必须建立一个应付意外事件的计划,使其在必要时能够以可控的及有效的方式做出反应。Page34Page35风险识别是试图系统化地确定对项目计划(估算、进度、资源分配)的威胁,识别已知和可预测的风险。风险识别是风险管理的基础和起点,也是风险管理者首要的或许是最困难的一项的工作。Page36风险识别的任务:查明项目的不确定因素,确认项目所面临的风险及其来源,确定各种风险的性质,分析可能发生的损失及可能带来的机会等。风险识别的意义:如果不能准确地辩明所面临的各种风险,就会失去切实地处理这些风险的机会,从而使得风险管理的职能得不到正常的发挥,自然也就不能有效地对风险进行控制和处理。Page37风险识别不是一次性行为,而应有规律地贯穿在整个项目开发过程中。每一类风险可以分为两种不同的情况——一般性风险和特定性风险。一般性风险对每一个软件项目而言都是一个潜在的威胁。特定性风险是对当前项目的技术、人员及环境而言的威胁。Page38风险识别是识别内在风险和外在风险。内在风险是指项目工作组能够加以控制和影响的风险,如人事任免和成本估计等。外在风险是指超出项目工作组控制能力和影响力之外的风险,如市场转向或政府行为等。项目风险识别的实现:通过对“因”和“果”(将会发生什么和导致什么等)的认定来实现。通过对“果”和“因”(什么样的结果需要予以避免或促使其发生以及怎样发生等)的认定来实现。Page39风险识别的输入:项目的工作分解结构、项目相关信息、项目计划的假设、历史项目数据,其他项目经验文件、评审报告、公司目标等;标识风险:利用风险识别方法来标识风险;风险分类排序:按一定标准(如重要程度)对风险进行分类和排序;风险识别的输出:风险列表。Page40输入:WBS及相关信息输出:风险列表标识风险评审风险风险分类排序Page41风险识别的常用方法主要有:风险条目检查表法德尔菲方法头脑风暴法情景分析法面谈法等。Page42风险条目检查表法是利用一组提问来帮助管理者了解项目在各个方面有哪些风险。在“风险条目检查表”中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的、已知的和可预测的风险(如产品规模风险、依赖性风险、需求风险、管理风险及技术风险等)。Page431)产品规模风险检查表项目风险是直接与产品规模成正比的。①估算产品规模的方法:LOC代码行、FP功能点、程序或文件的数目②估算产品规模的信任度③估算产品规模与以前产品的规模的平均值的偏差百分比④估算产品创建或使用的数据库大小⑤估算产品的用户数⑥估算产品的需求改变数⑦估算产品复用的软件数Page442)商业影响风险检查表①估算产品对公司收入的影响②估算产品得到公司高级管理层重视的程度③估算产品交付期限的合理性④估算产品的最终用户的水平⑤估算产品必须能与之互操作的其他产品/系统的数目⑥估算政府对本产品开发的约束⑦估算产品延迟交付所造成的成本变化⑧估算产品缺陷所造成的成本变化Page453)需求相关风险检查表①对产品缺少清晰的认识。②对产品需求缺少认同