您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 软件工程项目风险管理课件
第二十一讲风险管理项目风险什么会出问题?出某个问题的概率如何?会带来多大损害?我们可以做什么?风险的概念RobertCharette在他的关于风险分析和管理的书中给出了风险的概念定义如下:首先,风险关注未来将要发生的事情。今天和昨天已不再被关心,因为我们已经在收获由我们过去的行为所播下的种子。疑问是:我们是否能够通过改变我们今天的行为,而为一个不同的、充满希望的、更美好的明天创造机会。其次,风险涉及改变,如思想、观念、行为、或地点的改变......第三,风险涉及选择,及选择本身所包含的不确定性。因此,就象死亡和税收一样,风险是生活中最不确定的元素之一。风险管理“当没有办法消除风险,甚至连试图降低该风险也存在疑问时,这些风险就是真正的风险了”。在我们能够标识出软件项目中的“真正风险”之前,识别出所有对管理者及开发者而言均为明显的风险是很重要的。风险策略•被动风险策略•对风险不闻不问,直至出现问题。这时,项目团队赶紧采取行动,试图迅速解决问题•缓解措施:为预期的救火行为安排额外资源•纠正措施:运用资源去解决问题•危机管理:在危险发生在控制之外时(很可能),项目将处于危机状态风险策略QUOTE:如果你不主动的进攻风险,风险将会主动地进攻你。TomGilb对于风险管理的一个更聪明的策略是主动式的。主动策略早在技术工作开始之前就已经启动了。标识出潜在的风险,评估它们出现的概率及产生的影响,且按重要性加以排序。然后,软件项目组建立一个计划以管理风险。主要的目标是预防风险,但因为不是所有的风险都能够预防,所以,项目组必须建立一个应急计划,使其在必要时能够以可控的及有效的方式作出反应。我们将讨论风险管理的主动策略。风险策略(II)•主动风险策略•在技术工作开始之前,就开始识别出潜在的风险,评估它们发生的概率及影响,并按重要性排序。然后,制定一个计划来管理风险•有正式的风险分析•风险影响一般可控风险•具有负面后果、人们不希望发生的事件。•不确定性:可能发生,也可能不发生•事件发生的概率称为风险概率,当概率为1时,风险变成了必然发生的问题,不再称为风险。•损失:具有负面后果,是不希望发生的事•与风险有关的损失称为风险影响•能够改变结果的程度•常要考虑风险控制:降低或消除风险所采取的行动软件风险进行风险分析时,重要的是量化不确定性的程度及与每个风险相关的损失的程度。为了实现这点,必须考虑不同类型的风险。?:在建造软件时,我们可能遇到什么类型的风险。软件风险项目风险威胁到项目计划。如果项目风险变成现实,有可能会拖延项目的进度,且增加项目的成本。项目风险是指潜在的预算、进度、人力(工作人员及组织)、资源、客户、及需求等方面的问题以及它们对软件项目的影响。项目复杂度、规模、及结构不确定性也被定义为项目(和估算)风险因素。软件风险技术风险威胁到要开发软件的质量及交付时间。如果技术风险变成现实,则开发工作可能变得很困难或根本不可能。技术风险是指潜在的设计、实现、接口、验证、和维护等方面的问题。此外,规约的二义性、技术的不确定性、陈旧的技术、及“领先的”技术也是风险因素。技术风险的发生是因为问题比我们所设想的更加难以解决。软件风险商业风险威胁到要开发软件的生存能力。商业风险常常会危害项目或产品。五个主要的商业风险是:(1)开发了一个没有人真正需要的优秀产品或系统(市场风险);(2)开发的产品不再符合公司的整体商业策略(策略风险);(3)建造了一个销售部门不知道如何去卖的产品;(4)由于重点的转移或人员的变动而失去了高级管理层的支持(管理风险);以及(5)没有得到预算或人力上的保证(预算风险)。绝对重要的一点是应该注意到:简单的分类并不总是行得通。某些风险根本无法事先预测。风险类型(I)•项目风险:威胁到项目计划(拖延项目进度和增加成本)•预算、进度、人员、资源、利益相关方、需求•技术风险:威胁到软件的质量及交付时间•设计、实现、接口、验证和维护•商业风险:威胁到软件的生存能力•市场、策略、销售、管理、预算风险类型(II)•已知风险:通过仔细评估项目计划、开发项目的商业及技术环境、以及其他可靠的信息来源之后可以发现的风险•可预测风险:能够从过去项目的经验中推断出来•不可预测风险:可能会出现,但很难事先识别出它们来风险管理•了解和控制项目中的风险•七项原则:•全面观点:在整个系统和商业环境下考虑软件风险•长远观点:考虑将来可能发生的风险•广泛交流:如果有人提出一个潜在的风险,要重视它•结合:考虑风险时必须与软件过程相结合•强调持续的过程:持续的风险管理•开发共享的产品:•协同工作:汇聚所有利益相关者的智慧、技能和知识风险管理的作用•提高项目的成功率•保证风险发生时的及时反应•增加团队的健壮性•帮助项目经理抓住工作重点风险风险管理过程控制识别分析计划追踪风险识别风险标识是试图系统化地确定对项目计划(估算、进度、资源分配)的威胁。通过标识已知的和可预测的风险,项目管理者已经迈出了第一步――在可能时避免这些风险,且当必要时控制这些风险。风险识别标识风险的一个方法是建立风险条目检查表。该检查表可以用于风险标识,并集中于下列一般性子类型中的已知的及可预测的风险:*产品规模――与要建造或要修改的软件的总体规模相关的风险。*商业影响――与管理或市场所加诸的约束相关的风险。*客户特征――与客户的素质以及开发者和客户定期沟通的能力相关的风险。风险识别*过程定义――与软件过程被定义的程度以及它们被开发组织所遵守的程度相关的风险。*开发环境――与用以建造产品的工具的可用性及质量相关的风险。*开发技术――与待开发软件的复杂性及系统所包含技术的“新奇性”相关的风险。*人员才干及经验――与参与工作的软件工程师的总体技术水平及项目经验相关的风险。风险识别(II)•规模影响风险:•对于估算出的产品规模的信任程度如何;•是否以程序、文件或事务处理的数目来估算产品规模;•产品规模与以前产品的规模的平均值的偏差百分比是多少;•产品创建或使用的数据库大小如何;•产品的需求改变多少?交付之前有多少?交付之后有多少?•复用的软件有多少?风险识别(III)•客户相关风险:•以前是否曾与这个客户合作过;•客户是否清楚需要什么;他能否花时间把需求写出来;•客户是否同意召开正式的需求收集会议,以确定项目范围;•客户是否愿意建立与开发者之间的快速通信渠道;•客户是否愿意参加复审工作•客户是否具有该产品领域的技术素养•客户是否了解软件过程;风险识别(IV)•过程风险:•是否已经拟定了成文的、用于本项目开发的软件过程说明;•开发人员是否同意按照文档所写的软件过程进行开发•是否定期对需求规约、设计和编码进行正式技术复审•是否使用方便易用的规格说明技术来辅助客户与开发者间的通信•是否90%以上的代码都是使用高级语言编写的;•是否定义及使用特定的规则进行代码编写;•是否收集所有软件项目的质量度量值;风险识别(V)•技术风险:•该技术对于你的公司而言是新的吗;•待开发软件是否需要使用新的或未经证实的硬件接口;•待开发软件是否需要与开发商提供的未经证实的软件产品接口•需求是否要求开发某些程序构件,这些构件与你的公司以前开发的构件完全不同•需求中是否要求使用非传统的软件开发方法•需求中是否有过分的对产品性能的约束风险识别(VI)•开发环境风险:•是否有可用的软件项目管理工具;•是否有可用的分析及设计工具;•是否有可用的编译器或代码生成器•是否有可用的软件配置管理工具•项目组的成员是否接受过每个所使用工具的培训•工具的联机帮助及文档是否适当风险识别(VII)•与人员数目及经验相关的风险:•是否有足够的人员可用;•人员在技术上是否配套;•开发人员是否能够自始至终地参加整个项目的工作•开发人员对自己的工作是否有正确的期望•开发人员是否接受过必要的培训•开发人员的流动是否仍能保证工作的连续性评估整体项目风险下面的提问是基于对世界各地的有经验的软件项目管理人员的调查而得到的风险数据导出的,这些提问按它们对项目成功的相对重要性排序。1.顶层的软件和客户管理者已经正式承诺支持该项目吗?2.终端用户对项目和待建造的系统/产品热烈支持吗?3.需求已经被软件工程队伍和他们的客户完全理解了吗?4.客户已经完全地参与到需求的定义了吗?评估整体项目风险5.终端用户的期望现实吗?6.项目范围稳定吗?7.软件工程队伍拥有合适的技能吗?8.项目需求稳定吗?9.项目小组对将实现的技术有经验吗?10.项目小组的人员数目适合于完成该工作吗?评估整体项目风险11.所有的客户/用户对项目的重要性和待建造的系统/产品的需求有共识吗?如果这些提问的任意一个的回答是否定的,则应该确定无疑地启动缓解、监控和管理步骤。项目处于风险的程度直接正比于这些提问的否定回答的数量。风险因素和驱动因子•识别影响风险因素的风险驱动因子•风险因素•软件项目的不确定性•性能风险:产品能够满足需求且符合其使用目的不确定程度•成本风险:能够维持项目预算的不确定程度•支持风险:开发出的软件易于纠错、修改及升级的不确定程度•进度风险:能够维持项目进度且按时交付产品的不确定程度风险因素和驱动因子•风险驱动因子•可导致软件项目的不确定性程度改变的事物,如未识别出的软件失误,开发成员变动等。•风险驱动因子对于风险因素的影响可分成四类:可忽略的、轻微的、严重的或灾难的。图19-1影响评估[BOE89]注:(1)未测试出的软件错误或缺陷所产生的潜在影响。(2)如果没有达到预期的结果所产生的潜在影响。风险预测风险预测,又称风险估算,试图从两个方面评估每一个风险――风险发生的可能性或概率,以及如果风险发生了,所产生的后果。项目计划者,以及其它管理人员和技术人员,一起执行四个风险预测活动:(1)建立一个尺度,以反映风险发生的可能性;(2)描述风险的后果;(3)估算风险对项目及产品的影响;(4)标注风险预测的整体精确度,以免产生误解。建立风险表•风险表给项目管理者提供了一种简单的风险预测技术。•项目组一开始要在表中的第一列列出所有风险(不管多么细微)。•每一个风险在第二列上加以分类(如,PS指产品规模风险,BU指商业风险)。•每个风险发生的概率则输入到第三列中。每个风险发生的概率值可以由项目组成员个别估算,个体成员通过循环的方式投票,直至他们的风险概率评估开始会聚。建立风险表•下一步是评估每个风险所产生的影响。使用特性评估每个风险元素,并确定其影响的类别。•四个风险元素――性能、支持、成本、及进度――的影响类别被求平均以得到一个整体的影响值。•一旦完成了风险表的前四列内容,就要根据概率及影响来进行排序。高发生概率、高影响的风险放在表的上方,而低概率风险则移到表的下方。这样就完成了一阶风险优先序。建立风险表•项目管理者研究已排序的表,并定义一条中截线。该中截线(表中某一点上的一条水平线)表示:只有那些在线之上的风险才会得到进一步的关注。•而在线之下的风险则需要再评估以完成二阶风险优先序。风险影响及概率从管理的角度来考虑,是起着不同的作用。建立风险表•所有在中截线之上的风险都必须进行管理。标有RMMM的列中包含了一个指示器,指向为所有中止线之上的风险所建立的风险缓解、监控、及管理计划(RiskMitigation,MonitoringandManagementPlan),或者,一组风险信息表单。评估风险影响•有三个因素可能会影响如果风险真的发生了所产生的后果:风险的性质、范围、及时间。•风险的性质是指当风险发生时可能产生的问题。•风险的范围结合了严重性(即风险有多严重?)及其整体分布情况(项目中有多少部分受到影响或有多少用户受到损害?)。评估风险影响•1.确定每个风险元素发生的平均概率。•2.基于其中列出的标准来确定每个元素的影响。•3.按照前面几节给出的方法完成风险表,并分析其结果。•整体的风险曝光度(riskexposure),RE,用下面关系确定:RE=P×C•这里P是风险发生的概率,C是风险发生时带来的项目成本。评估风
本文标题:软件工程项目风险管理课件
链接地址:https://www.777doc.com/doc-1657102 .html