软件项目管理中风险管理论文Word格式.docx
《软件项目管理中风险管理论文Word格式.docx》由会员分享,可在线阅读,更多相关《软件项目管理中风险管理论文Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
软件开发项目的成功与否会直接影响到公司的生存。
这对软件开发企业来讲应该是更大的难题。
一方面是业务需求更加复杂。
人们对软件质量和用途的期望大幅度提高,对业务系统的要求也越来越挑剔。
另一方面是开发成本不断缩减。
在此形势下,风险管理与控制已成为软件开发项目成败的关键。
软件开发项目由于其具有连续性、复杂性、少参照性,无标准规范等特点,其风险程度较高。
目前国内的大多数软件开发企业还缺乏对软件开发项目的风险认识,缺少进行系统、有效的度量和评价的手段。
据有调查数据显示,有
15—35%的软件项目中途被取消,剩下的项目不是超期就是超出预算或是无法达到预期目标。
另外,软件项目因风险控制和管理原因失败的约占90%,可见,软件风险控制与管理在目前的软件开发项目中的重要性。
二、风险管理的内容
风险管理
风险分析
风险应对
风险识别
行动计划
风险预防
风险控制
风险评估
风险监视
项目风险管理是指对项目风险从认识到分析直至采取应对措施等的一系列过程,包括风险识别、风险量化、风险对策和风险控制等,如下图所示,从而将积极因素所产生的影响最大化并使消极因素产生的影响最小化,或者说达到消除风险、回避风险和缓解风险的目的。
对项目进行风险管理,就可以最大限度的减少风险的发生。
项目风险管理的基本内容
(1)风险识别:
风险识别要确定影响本项目的风险来源、风险产生的条件,并描述其风险特征。
风险识别不是一次就可以完成的事,应该在项目的整个生命周期内持续进行。
识别风险的方法常用的有现场观察法、座谈法、流程图法、财务报表法、相关部门配合法和环境分析法等。
(2)风险评估:
风险评估时对风险影响力进行衡量的活动,即衡量风险发生的概率和风险发生后对项目目标的影响程度,从而为后面制定风险对策提供依据。
对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:
概率分布、外推法、多目标分析法等。
(3)风险计划:
风险计划是根据风险评估的结果,为降低项目的负面效应而制定方法、措施和技术手段的过程。
风险计划将指导项目如何做好风险管理,包括风险处理的优先级、如何避免风险、如何消除风险等。
(4)风险应对:
风险应对就是风险计划的实施,以设法避免、消除和降低风险,包括风险预防,风险发生的监视和控制。
在整个项目管理过程中,首先要预防风险的发生,在风险发生之前就将它消灭在萌芽状态之中。
其次,一旦风险发生,就要设法最大限度地缓解风险,降低风险所带来的后果。
一般而言,风险应对有三种方法,①风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。
②风险自留,当风险量不大时可以余留风险。
③风险转移。
三、风险管理的模型
1、Boehm模型
Boehm认为,软件风险管理是将影响项目成功的风险形式化为一组易用的原则和实践的结合,在风险成为软件项目返工的主要因素并由此威胁到项目的成功运作前,识别、描述并消除这些风险项。
信息需求
1.制度技术与管理流
管理决策
5.风险处理
措施请求
4.风险分
2.计划和
3.管理项
反馈
风险特征
6.风险控
改进措施
7.评估
Boehm的风险管理模型
Boehm的风险管理模型,从制定技术与管理流程开始,然后完成风险计划、管理项目风险特征库、风险分析,风险处理和风险控制,最后评估风险管理流程,以不断完善风险管理流程。
2、CMU/SEI模型
确定风险来
定义风险
制定并维护
识别风
项目计划
风险库
评估、分类
实施缓
建立风险缓
CMU/SEI模型要求在项目生命周期的所有阶段都关注风险识别和管理,将风险管理划分为5个部分——风险识别、分析、计划、跟踪和控制,并强调风险管理的各个组成部分的沟通,将沟通视为风险管理的核心,不断地评估可能造成恶劣后果的因素,决定最迫切需要处理的风险,实现控制风险的策略,评测并确保风险策略实施的有效性。
CMMI风险管理模型
3、MSF风险管理模型
MSF强调风险管理必须是主动的、规范的,是不可缺少的管理过程,应持续评估、监控和管理风险,直到风险被处理或消除。
MSF风险管理模型,强调风险知识库、掌握风险列表和学习。
如下图所示:
2.风险陈述
3.分析
1.识别
6.控制
掌控风
4.计划
风险知识库
7.学习
5.跟踪报告
MSF风险管理模型
四、风险的分类及各类风险产生的影响
1、产品规模风险
项目的风险是与产品的规模成正比的。
与软件规模相关的常见风险因素有:
(1)估算产品规模的方法(包括:
代码行,文件数,功能点等),
(2)产品规模
估算的信任度,(3)产品规模与以前产品规模平均值的偏差,(4)产品的用户数,(5)复用的软件有多少,(6)产品的需求变更多少等。
一般规律,产品规模越大,以上的问题就越突出,尤其是估算产品规模的方法,复用软件的多少,需求变化。
2、需求风险
很多项目在确定需求时都面临着一些不确定性。
当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。
如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。
每一种情况对产品来讲都可能致命的。
与客户相关的风险因素有:
(1)对产品缺少清晰的认识,
(2)对产品需求缺少认同,(3)在做需求中客户参与不够,(4)没有优先需求,(5)由于不确定的需要导致新的市场,(6)不断变化需求,(7)缺少有效的需求变化管理过程,(8)对需求的变化缺少相关分析等。
3、相关性风险
许多风险都是因为项目的外部环境或因素的相关性产生的。
经常我们在控制外部的相关性上做的不够,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。
与外部环境相关的因素有:
(1)客户供应条目或信息,
(2)交互成员或交互团体依赖性,(3)内部或外部转包商的关系,(4)经验丰富人员的可得性,(5)项目的复用性。
4、技术风险
软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。
在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:
培训、聘请顾问以及为项目团队招聘合适的人才等。
主要有下面这些风险因素:
(1)缺乏培训,
(2)对方法、工具和技术理解的不够,(3)应用领域的经验不足,(4)新的技术和开发方法应用等。
5、管理风险
尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。
在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足——自己检查自己的错误,这是最难的。
然而,像这些问题可能会使项目的成功变得更加困难。
如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。
当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:
(1)计划和任务定义不够充分,
(2)实际项目状态,(3)项目所有者和决策者分不清,(4)不切实际的承诺,(5)员工之间的沟通等。
6、安全风险
软件产品本身是属于创造性的产品,产品本身的核心技术保密非常重要。
但一直以来,我们在软件这方面的安全意识比较淡薄,对软件产品的开发主要注重技术本身,而忽略了专利的保护。
软件行业的技术人员流动是很普遍的现象,随着技术人员的流失、变更,很能会导致产品和新技术的泄密,致使我们的软件产品被它公司窃取,导致项目失败。
而且在软件方面关于知识产权的认定目前还没有明确的一个行业规范,这也是我们软件项目潜在的风险。
五、项目风险的分析的方法
风险分析是在风险识别的基础上对项目管理过程中可能出现的任何事件所带来的后果的分析,以确定该事件发生的概率以及与可能影响项目的潜在的相关后果。
风险分析的出发点是揭示所观察到的风险的原因、影响和程度并提出和考察备选方案。
要描述并量化一个特定风险及其程度,通常要做某些建模工作。
帮助风险分析的建模手段很多,典型的建模方法有:
(1)进度网络模型:
风险评价审查技术(VERT)或计划评价审查技术
(PERT),包括独立的活动网络,用于分析对项目管理过程中某个事件的影响;
(2)寿命周期费用(LCC)模型;
(3)快速反应速率/定量费用影响模型。
前两个模型用于考查进度风险和项目费用风险。
当在制订项目开发计划、确定项目过程优先级和维护软件等方面有多种选择供考虑时,可以使用。
快速反应模型在项目资金受到挑战时使用,经常发生在预算周期期间。
这些挑战大多数发生在项目就要开始之前,因而可能严重影响整个项目的执行。
快速反应模型也可用于考查可能存在的费用影响,以确定该项目规划的各种备选方案所需的预算分配。
此外,风险分析还有四个目的:
(1)对项目诸风险进行比较和评价,确定它们的先后顺序;
(2)从整体出发弄清各风险事件之间确切的因果关系,以便制定出系统的风险管理计划;
(3)考虑各种不同风险之间相互转化的条件,研究如何才能化威胁为机会,同时也要注意机会在什么条件下会转化为威胁;
(4)进一步量化已识别风险的发生概率和后果,减少风险发生概率和后果估计中的不确定性。
风险分析的结果是一张“预测清单”。
它应该能够给出项目管理过程中某一危险发生的概率以及其后果的性质和概率,一般关于概率有客观概率和主观概率之分,客观概率的计算方法有两种:
一种是根据大量试验用统计方法进行计
算;
另一种根据概率的古典定义,将事件集分解成基本事件,用分析的方法进行计算。
但在实际工作中我们经常不可能获得足够多的信息,因为通常我们所遇到的风险事件都不可能作大量试验,又因事件是未来发生的,所以不能作出准确的分析,也就很难计算出客观概率,这时只能由决策者或专家对事件出现的可能性作出估计,这就是主观概率。
主观概率就是用较少的信息量作出估计的一种方法,也就是根据事件是否发生的个人观点用一个0到1之间的数值来描述此事件发生的可能性。
换句话说,就是利用专家的长期经验对事件所作出的直觉判断,直觉判断出偏差的可能性是很大的,近些年来科学家们正在从各个方面探讨减少这些偏差的程序和方法,如前面的德尔菲法实质上就是利用大量的直觉判断来解决个别人直觉判断容易出现的偏差问题,专家系统及人工智能系统等则是利用计算机辅助决策以提高直觉判断的效率和准确性,实现向客观实际的逼近。
科学实验事实证明,大多数人的估计都不可能超出他们所经历的和认识到的,这是由于经验的有限性及认识过程的局限性所导致的。
如何才能保证主观概率作到尽可能的准确,是今后长时间内仍然需要研究的问题。
风险分析中所使用的主要方法有:
概率分布、概率树及外推方法,PERT、GERT,而蒙特卡洛方法是随着计算机的普及日益得到广泛使用的重要方法,使用于问题比较复杂,要求精度较高的场合,特别是对少数几个可行方案实行精选比较时更为重要。
掌握上面这些方法,对于提高项目管理人员驾驭风险的能力具有很大作用。
六、风险分析和控制
1、风险分析
软件开发项目风险是指在软件生命周期中所遇到的所有的预算、进度和控制等各方面的问题,以及由这些问题而产生的对软件项目的影响。
软件项目风险经常会涉及许多方面,如:
缺乏用户的参与,缺少高级管理层的支持,含糊的要求,没有计划和管理等,总体概括下来应该由五大方面。
以上所说的各类风险都是项目成败的巨大隐患,它们对软件开发项目的成败有多大影响,我们可以利用风险分析工具,对以上各类风险进行分析,并加以控制和管理,将风险将到最低。
常用方法有风险条目检查表,它是利用一组提问来帮助项目风险管理者了解在项目和技术方面有哪些风险。
在风险条目检查表中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的、已知的和可预测的风险,如产品规模风险、依赖性风险、需求风险、管理风险及技术风险等。
风险条目检查表可以不同的方式组织,通过假设分析、成本效益分析、风险剖面分析、判定树等,给出这些提问确定的回
答,就可以帮助项目管理人员估算风险的影响。
另外,我们可以依据风险条目检查表,制作风险控制概图(见图1),让项目管理和实施人员能很直观的看到在项目开发个阶段的风险存在状况和各风险的大小,并采取相应措施。
从风险发生的概率来看,需求风险和管理风险对项目成败影响最大,当一个软件项目开发团队接手项目后,都是按照习惯性的方式来开发软件。
需求风险意识比较淡薄,软件需求分析阶段的完成的不够细致,忽略和很多软件开发必要的内容。
在整个软件开发过程中需求分析阶段的风险控制尤为重要,如果控制不好,对软件开发项目影响巨大,甚至是失败。
管理风险实际上是项目开发管理层,对项目开发的风险的意识反映。
国内的软件企业大多规模较小,企业年轻,开发经验不足,软件工程师较年轻,缺少开大型软件项目的经验,在管理方面缺少经验,特别是风险管理,更是缺乏。
2、风险识别
风险识别是指确定哪些可能导致费用超支、进度推迟或性能降低的潜在问题,并定性分析其后果。
在这一步须作的工作是分析系统的技术薄弱环节及不确定性较大之处,得出系统的风险源,并将这些风险源组合成一格式文件供以后的分析参考。
它属于定性分析的范围。
风险评估是指对潜在问题可能导致的风险及其后果实行量化,并确定其严重程度。
这其中可能牵涉到多种模型的综合应用,最后得到系统风险的综合印象。
而风险管理则是指在风险识别及风险分析的基础上采取各种措施来减小风险及对风险实施监控。
这也可以说是风险分析的最终目的。
3、风险控制
风险控制是指利用某些技术,如原型化、软件自动化、软件心理学、可靠性工程学以及某些项目管理方法等设法避开或转移风险。
我们前面对项目风险所
做的一切研究,目的就在于实现良好的风险控制。
在结合实际项目管理经验的基础上,我们建议使用以下风险控制步骤:
(1)与现在在职的项目成员协商,确定人员流动的原因(如,工作条件差,收入低,市场竞争等);
(2)在项目开始前,把缓解这些原因(避开风险)的工作列入已拟定的控制计划中;
(3)当项目启动时,做好人员流动会出现的准备,采取一些办法以确保人员一旦离开时项目仍能继续(削弱风险);
(4)建立项目组,以使所有项目成员能及时了解有关项目活动的信息;
(5)制定文档标准,并建立一种机制以保证文档能及时产生;
(6)对所有工作组织细致的评审,以使更多的人能够按计划进度完成自己的工作;
(7)对每一个关键性的技术人员,要培养后备人员;
(8)在项目里程碑处进行事件跟踪和主要风险因素跟踪,以进行风险的再评估;
(9)在项目开发过程中保持对风险因素相关信息的收集工作。
当然,这些步骤会给项目管理带来额外的花费并占用许多有效的项目计划工作量,但实践经验证明,所有这些付出都是值得的。
七、总结
风险管理过程包括培训,风险识别、风险分析、风险计划、执行计划、跟踪计划等活动,有效的风险管理过程应是学习型的、持续的和不断改进的。
软件企业应建立自己的风险管理数据库作为风险管理的基础,并在实施中不断地更新和完善。
根据企业和项目的实际情况,进行科学的项目风险和控制,对项目的成功研发有着举足轻重的意义。
在项目开发的过程中,进行必要的项目风险分析,制定符合项目特点的风险评估和监督机制,特别是要定期对项目的风险状况进行评估和监管,发现意外风险或者是风险超出预期的一定要重点关照。
发现问题要立即上报,尽快解决。
并建立风险监管日志,实行“岗位负责制”,将软件开发项目的风险降到最低。
参考文献
[1]李丽.工程项目全面风险管理的理论与方法研究[J].北京工业大学硕士学位论文
[2]朱少民韩莹 软件项目管理 人民邮电出版社
[3]卢有杰.项目风险管理[M].北京:
清华大学出版社
[4]方德英.IT项目风险管理理论体系构建[J].合肥工业大学学报(自然科学版)
[5]赵冬梅.软件项目的模糊风险评估及风险控制[J].河北省科学院学报,