硕士学位论文--基于风险因子分析的软件项目管理模型内容摘要:

避、风险降低等),包括单个风险项计划之间的协调和与总体项目计划之间的协调。 风险解决,就是采用某种措施,使风险项得到消除或者由此得到了解决(比如通过降低要求来规避风险)。 风险监控,跟踪项目风险的状态,并在适当的时候采取纠正措施。 SEI1的风险管理框架 SEI 的 Higuera 与 Haimes 提出的持续风险管理框架( CRM)包括风险识别,风险分析、风 险计划、风险跟踪、风险控制和风险沟通。 其中风险识别、分析、计划、跟踪、控制等活动以环型的方式组织,表明其持续的特征。 另外, SEI 将风险沟通置于模型的中心位置。 这 1 SEI: Software Engineering Institute,美国 Carnegie Mellon 大学的软件工程研究所,发布过系列能力成熟度模型 SWCMM,SECMM, PCMM, CMMI 等。 南京大学硕士论文 7 是因为,如何没有有效的风险沟通,任何一种风险管理方法都是不可行的。 除了该模型中标识出的几大风险活动之间需要互相沟通,还有其他层次的风险沟通需要考虑,如项目与组织之间,开发人员与客户或最终用户之间。 正是由于风险沟通的普遍性, SEI 将风险沟通置于模型的中心位置,而不是之外,或仅仅是其他风险活动的一种补充。 图 11 SEI 的持续风险管理模型图示 常用 的风险识别和风险评估方法 风险识别方法 头脑风暴法 头脑风暴法是团队通过本能地、不加判断地汇集一些想法,产生新的主意,从而找出解决某一特定问题的方案。 建立一份综合风险清单的时候可能用到这一方法。 Delphi 方法 Delphi 方法是从一组专家中得到一致的意见,来预测未来的发展。 它是一种以互相独立的输入为基础,对未来事件进行预测的系统化、交互式程序。 Delphi 方法重复使用几个回合的提问,包括来自前几轮的反馈,从而发挥团组输入的优点,同时又可以避免面对面商议中可能出现的偏见效应。 如果达不成一致的意见,组织者需 要确定是否过程有问题。 访谈 访谈是通过面对面或电话讨论的方式,收集信息、寻求事实的一种技术,访谈也可以通过电子邮件和即时信息进行。 与那些具有类似项目经历的人们进行面谈,是识别可能风险的重要工具。 例如,如果一个新项目用到一种特殊类型的硬件和软件,那么近来使用过这种硬件或软件经验的人,可能会描述出他们在先前项目中所遇到的问题。 检查表 南京大学硕士论文 8 当检查表用来进行风险识别时,将项目可能发生的许多潜在风险列于一个表上,供识别人员进行检查核对,用来判别某项目是否存在表中所列或类似的风险。 检查表中所列的内容都是历史上类似项目曾 发生过的风险,是项目风险管理的结晶,对软件项目有开阔思路、启发联想、抛砖引玉的作用。 此外,也可以通过使用 Standish Group, SEI 或其他组织开发的检查表,来帮助识别项目的风险。 流程图 流程图是一种风险识别的常用工具。 借助于流程图可以帮助项目风险识别人员去分析和了解项目风险所处的具体项目环节、项目各个环节之间存在的风险以及项目风险的起因和影响。 风险评估方法 概率 /影响图 概率 /影响图是风险定性分析的方法。 概率表示风险发生的可能性大小,而结果表示风险发生后所带来影响的程度。 使用风险暴露值 =发生概率 *结果影响来评价风险。 图 12 风险概率 /影响示意图 专家判断法 专家判断法是依赖专家们的直觉和以往的经验来代替或补充数学分析技术,专家可以使用或不使用较为复杂的技术,例如,无须计算风险暴露值,直接把风险定为高、中和低三种。 决策树 决策树是一种图形化的风险量化分析方法,可以帮助在未来结果不确定的情况下,选择最好的行动路径。 模拟 高风险中风险低风险1 1风险概率影响严重程度0南京大学硕士论文 9 模拟是指用系统的模型或表示法来分析系统的预期行为或绩效,也是一种量化分析方法。 大多数模拟都以某种形式的蒙特卡罗( Monte Carlo)分析为基础。 蒙特卡罗分析通过多次模拟 一个模型的结果,从而提供计算结果的统计分布。 图 13 决策树风险分析方法示意图 蒙特卡罗法的基本原理 假定函数 Y=f( X1, X2, … , Xn) ,其中变量 X1, X2, … , Xn 概率分布为已知。 但在实际问题中, f( X1, X2, … , Xn)往往是未知的,或者是一个非常复杂的函数方程式,一般难以用解析法求解有关 Y 的概率分布及其数字特征。 蒙特卡罗法利用一个随机数发生器,通过直接或间接的方式抽样取出每一组随机变量( X1, X2, … , Xn)的值( X1t, X2t, … , Xnt),然后按 Y 对于( X1, X2, … , Xn)的关系式确定函数 Y 的值 Yt, Yt,=f( X1t, X2t, … , Xnt ) 反复独立抽样(模拟)多次,便可以得到函数 Y 的一批抽样数据 Y1, Y2, … , Yn,当模拟次数足够多时,便可以给出与实际情况相近的函数 Y 的概率分布及其数字特征。 本文的工作 本文通过对文献著作的研究和某通讯公司软件项目的实际分析,标识出影响软件项目正常运作的 20 个风险因子,并根据其出现的比例,选择 6 个风险因子进行进一步的量化分析,分析风险因子对项目进度的影响程度,并使用 MonteCarlo 方法,建立项目进度计划模型。 该模型的主要功能有: 帮助软件项目标识项目风险 制定风险管理计划 制定项目进度计划 P =0. 3 L= 0P =0. 1P =0. 6发现 CE未发现 CE没有 CEL= 20 00 万L= 0P =0. 36 L= 50 万P =0. 04P =0. 6发现 CE未发现 CE没有 CEL= 20 50 万L= 50 万按I Vamp。 V方案不按I Vamp。 V方案风险暴露18 万82 万30 万0200 万0总暴露130 万200 万南京大学硕士论文 10 本文关注于软件企业软件开发项目的风险管理和项目进度计划制定,对于个人软件开发、维护项目等不涉及,软件项目风险对产品质量的影响也不涉及。 南京大学硕士论文 11 第二章 软件项目的风险因子 虽然对于软件风险的严格定义还存在很多争议,但在风险包含了如下两个特性这一点上已经达成共识: 不确定性 —— 风险可能发生,也可能不发生;也就是说,没有 100%发生的风险。 损失 —— 如果风险变成了事实,就会产生恶性后果或损失。 Webster 字典( 1981)将“风险”定义为“可能的损失、损伤、缺点、破坏”。 SEI 接受了这个说法,并将风险定义为“可能的损失”。 为了使风险的描述能够被理解, SEI 规定风险的描述必须包括两个部分: 1)可能导致损失的当前状况描述; 2)损失的描述。 一个符合要求的风险例子是:项目组成员缺乏面向对象技术的经验和培训,可能导致无法在规定的时间范围内推出满足客户性能需求或功能需求的产品。 Charette( 1989)在他的《软件风险分析与管理》 [22]一书中将隶属于某一活动、事件或事物的风险进一步定义为如下三个部分: 1) 活动、事件或事物附带的损失。 2)损失在现有条件下发生的不确定性。 3)将影响到产出(如损失程度等)的一些行为选择。 Charette 风险定义与其他定义的不同点主要在于第 3)部分。 行为选择给后续的风险管理活动提供了依据。 项目组在风险被标识后,将根据这些选择做进一步的分析和决策,选择合理的措施,使得风险带来的损失最小,而该活动、事件或事物本身的效益则最大化。 对一个软件项目实际状态的测量主要包括四个纬度:功能、质量、进度和成本,这与软件项目的目标是一致的,即在规定的时间和成本范围内,提 供高质量的符合客户需要的产品。 功能( F)可以使用一组产品特性( pf)及其重要程度( fw)来定义,如下: F≡ {( pfi, fwi) | i=1, n} 质量的一种简单化表示是由软件项目所包含的缺陷来定义的。 因此,质量( Q)可以使用一组缺陷( pd)及其严重程度( dw)来定义,如下: Q≡ {( pdi, dwi) | i=1, n} 对于进度,一般使用期望完成的日期来表示,如“ 20200630”;对于成本,通常使用人力成本或开发工时来表示。 如“¥ 50000”、“ 3000 人时”。 南京大学硕士论文 12 根据风险的定义,风险是指“可能的损失”, 因此,风险对软件项目的影响也主要体现在这四个纬度上,这四个纬度上的任何偏差或不确定性都是软件项目组要关心和控制的。 特别地,进度纬度上的偏差和不确定性是所有四个纬度中最需要重点关注的。 通常“风险”被量化地定义为发生潜在损失的可能性与潜在损失两者的乘积。 Boehm将之称为“风险暴露”( Risk Exposure)。 风险暴露可以通过下面的关系式表现出来: RE=P( UO) *L( UO) 其中 RE 是风险暴露, P( UO)代表结果不令人满意的概率, L( UO)表示由于结果不令人满意而给被影响者造成 的损失。 基于以上的基本定义,一种常见的风险量化定义为: Risk≡ {( Pi, Li) | i=1, n} 式中, Pi 表示某种损失出现的可能性, Li 表示损失的大小 Charette( 1989) [22]认为对于每一个潜在的损失,必须相应地定义一个场景,该场景描述了风险的原因或者触发因素。 他给风险定义了一个三元组:在什么场景下将会出现损失( Si),出现这种损失的可能性( Li),这种损失的大小( Xi),具体表示如下: Risk≡ {( Si, Li, Xi) | i=1…n } Charette 的定义还存在一个问题,即“低可能性, 高损失”的风险与“高可能性,低损失”的风险在数值上的表现是一样的。 很明显,对于能带来 10 万元收益而潜在损失为 200元的风险与能带来 1000 元收益而潜在损失为 200 元的风险是不一样的。 为了克服以上不足,Henley 和 Kumamoto( 1996)加入了效益或产出( Oi)指标。 这种风险定义的具体表示如下: Risk≡ {( Si, Oi, Li, Xi) | i=1…n } 上述几种风险的量化定义方式均是“以数字的形式考虑风险”。 Demarco 与 Lister( 2020)在他们的《与熊共舞:软件项目风险管理》 [3]一书中提出了“ 用图形的方式考虑风险” —— 风险图的概念。 设想你是一个软件项目经理,你的项目计划在 10 月 30 日之前完工。 你清楚地感觉到不可能在 10 月 30 日之前完成任务;但除此以外,你一无所知。 你对项目的进度毫无把握,手下的员工也一样。 于是,仲夏时节,离最后期限还剩 4 个月的时候,你找来了一名顾问 ——圈子里最好的顾问,就算他睡着了也能判断出项目的处境。 经过几天的工作 —— 阅读规格书、检查阶段性成果、会见团队成员和客户代表。 之后,他告诉了你真相: “听着,这个项目根本没有可能在明年 1 月之前完成。 最有可能交付一个象样产品的时间是明年 4 月初,而且这个日期也不能打包票。 你最好不要承诺在 5 月 1 日前的任何时间交付,至少应该承诺在 5 月以后,这样你成功的机会大概有一半。 如果你想一个几乎不可能失败的日期,那大概会是明年的 12 月。 ” 南京大学硕士论文 13 之所以找来一名顾问,正是因为你不敢肯定项目什么时候能完成。 但看起来这位顾问先生自己也多少有些不确定。 你的不确定(完全盲目)与他的不确定之间的区别在于:他给不确定性画定了明确的界限。 可以用一幅图来表示这位顾问的估计。 既然他谈到的都是可能性的问题,这幅图也就借助“某一日期交付的概率”来展现不确定性。 用纵轴表示可能性,横轴表 示时间,如图 21所示: 图 21 项目交付日期不确定性图 这幅描述不确定性的图形,就叫不确定性图。 当不确定的东西与项目的成败休戚相关时,描述它的不确定性图就被称为风险图。 风险图最重要的特征有: 曲线下方的区域表示“在某一特定日期之前完工的”总的可能性。 也就是说,如果有1/3 的区域位于 4 月 1 日的左侧,就表示在 4 月 1 日当天或之前完成项目的可能性为 33%。 整条曲线下方区域的面积为 ,这就是顾问对项目的整体评估:项目一定会在明年 1月 1 日至 12 月 31 日之间的某个时间完成。 上述风险图还可以等价地表示为 另一种形式 —— 累积风险图,如图 22 所示。 累积风险图表示了在某一日期或之前完成项目的累积可能性,相应地,表示某一日期完成相对可能性的风险图则称为增量风险图。 基于风险图的观点, Demarco 与 Lister 将风险量化地定义为: 风险是描绘所有可能结果及由其引发的相关后果的加权图。 可能性1 月 1 日4 月 1 日5 月 1 日 12 月 31 日时间南京大学硕士论文 14 图 22 累积风险图示意图 Demarco 与 Lister 给出了风险图和风险的定义,也指出了风险图必须基于历史项目数据得到。 但对于如何有效得。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。