软件项目风险管理研究
软件开发项目的风险分析与控制

软件开发项目的风险分析与控制一、引言在软件开发项目中,风险管理和控制是确保项目成功实施的关键因素。
本文将详细分析软件开发项目中常见的风险,包括项目需求变更、技术实现难度、人力资源不足、时间进度延误、预算超支风险、数据安全和隐私、法律和政策风险、以及质量控制问题,并提出相应的控制策略。
二、项目需求变更风险描述:在项目执行过程中,客户需求可能发生变化,这可能导致项目范围扩大、工作量增加,甚至可能导致项目失败。
风险控制:1.建立有效的需求管理流程,确保所有变更都经过正式审查和批准。
2.在合同中明确需求变更的处理方式和费用调整机制。
3.定期进行项目评审,及时识别和评估需求变更对项目的影响。
三、技术实现难度风险描述:由于技术实现难度高,可能导致项目延期、成本增加或质量不达标。
风险控制:1.在项目开始前进行充分的技术评估,确保技术可行性。
2.制定详细的技术实现方案,并进行充分的技术培训和准备。
3.建立技术攻关小组,对遇到的技术难题进行集中解决。
四、人力资源不足风险描述:项目团队人员数量或技能不足,可能导致项目执行困难。
风险控制:1.在项目开始前制定详细的人力资源计划,确保人员数量和技能满足项目需求。
2.建立有效的团队协作和沟通机制,提高团队工作效率。
3.根据项目进度及时调整人力资源分配,确保关键任务得到有效执行。
五、时间进度延误风险描述:由于各种原因导致项目时间进度延误,可能影响项目的整体进度和质量。
风险控制:1.制定详细的项目进度计划,并监控项目执行情况。
2.对可能导致延误的因素进行预测和评估,提前制定应对措施。
3.建立有效的进度控制机制,对延误的任务及时进行调整和优化。
六、预算超支风险风险描述:由于项目成本超出预算,可能导致项目无法按时完成或质量下降。
风险控制:1.制定详细的项目预算计划,并进行严格的成本控制。
2.对可能导致成本超支的因素进行预测和评估,提前制定应对措施。
3.建立有效的预算监控机制,对超出预算的费用及时进行调整和优化。
软件项目管理中的风险管理与控制

软件项目管理中的风险管理与控制在现代软件开发中,软件项目管理是其中的一个重要部分。
通过软件项目管理,我们可以更好地控制与管理软件开发过程中的资源、进度、质量等方面,从而确保软件开发工作的顺利进行。
然而,在软件项目的开发过程中,风险管理与控制也是一个不可忽视的方面,因为软件开发过程中可能存在各种各样的风险,如进度延误、质量问题、人员变动等。
本文将探讨软件项目管理中的风险管理与控制。
一、风险管理在软件项目管理中,风险管理是一个非常重要的环节。
它可以帮助我们更好地发现并处理软件开发过程中的各种风险,从而最大限度地减少风险给软件项目带来的影响。
风险管理通常包括以下几个步骤:1. 风险识别首先,我们需要识别出软件项目中可能存在的风险,例如技术难点、人员变动、进度延误等。
这一步骤通常需要与软件开发团队、客户以及其他相关人员进行讨论,以便识别出潜在的风险。
2. 风险评估一旦识别出了潜在的风险,我们就需要对这些风险进行评估,以确定它们的概率和影响力。
通过这一步骤,我们可以确定哪些风险是最值得关注的,从而采取相应的措施来防范和应对这些风险。
3. 风险规避接下来,我们需要采取一些措施来规避那些最值得关注的风险。
例如,如果我们认为软件开发进度可能会延误,我们可以采取一些措施来加快开发进度,例如增加人员配备、调整开发计划等。
4. 风险转移如果我们发现某些风险无法通过规避来减轻,那么我们可以考虑将这些风险转移给其他方。
例如,我们可以将一些可能导致质量问题的任务外包给专业厂商,以确保软件开发过程中的质量问题得到处理。
5. 风险承担最后,如果我们无法通过上述措施来减轻风险的影响,我们只能承担这些风险的影响。
在这种情况下,我们需要遵守相应的流程和规定,尽量降低风险代价。
二、风险控制风险控制是软件项目管理中另一个很重要的环节。
它可以帮助我们在软件开发过程中及时发现可能存在的风险,并采取相应的措施来控制风险的发展。
通常,风险控制包括以下几个方面:1. 重点关注风险在软件开发过程中,我们需要重点关注那些可能对软件开发过程造成重大影响的风险。
软件项目风险分析

软件项目风险分析:识别、评估、控制与管理软件项目风险分析1.引言软件项目因其独特性和复杂性,面临着多种可能的风险。
有效的风险分析和管理是软件项目成功的关键因素之一。
本篇文章将详细介绍软件项目风险分析的各个阶段,包括风险识别、评估、量化、控制、监控和报告,以及风险管理策略。
2.风险识别风险识别是软件项目风险分析的第一步,它的主要目标是找出可能对项目造成不利影响的所有因素。
这些因素可能包括技术挑战、人力资源问题、项目延期、成本超支、市场变化等。
在风险识别阶段,我们需要广泛的沟通和深入的讨论,以了解所有可能的问题。
3.风险评估风险评估是对识别出的风险进行量化和定性分析的过程。
它包括对每个风险的发生概率、影响程度以及与项目的相关性进行评估。
这个阶段的结果通常是一个风险评估矩阵,将风险按照其发生的可能性和影响程度进行分类。
4.风险量化风险量化是在风险评估的基础上,对每个风险的发生概率和影响程度进行具体的数值计算。
这可以帮助我们更好地理解每个风险的特性,并找出那些对项目有重大影响的风险。
5.风险控制风险控制是制定和实施一系列策略来降低或消除风险的过程。
这些策略可能包括预防措施(降低风险发生的可能性)、减轻措施(降低风险发生后的影响程度)、转移措施(将风险转移到其他部分或个体)和储备措施(建立储备以应对风险发生后的影响)。
6.风险监控风险监控是在项目实施过程中持续关注和检查风险的过程。
它包括定期进行风险评估,更新风险状态,以及根据需要对风险管理策略进行调整。
通过持续的风险监控,我们可以确保项目的顺利进行,并在必要时采取相应的风险控制措施。
7.风险报告风险报告是在项目周期的各个阶段,将风险管理活动和结果传达给相关利益相关者的过程。
这可以帮助利益相关者更好地理解项目的风险情况,并为他们的决策提供依据。
风险报告可能包括风险管理策略、当前的风险状况、已实施的控制措施及其效果等内容。
8.风险管理策略在软件项目中,风险管理策略可能会因项目需求、项目环境、项目资源等多种因素而变化。
软件开发项目中的进度风险分析与控制

软件开发项目中的进度风险分析与控制在软件开发项目中,进度风险分析与控制是非常重要的一环。
没有合理的进度规划和风险控制,项目很容易延期或出现其他问题。
因此,本文将就软件开发项目中的进度风险进行深入分析,并提供相应的控制方法。
一、进度风险的定义进度风险指的是软件开发项目在预定时间内无法按照计划完成的潜在风险。
这些风险可能来自于各种因素,如需求变更、技术难题、人力不足等等。
只有充分了解和掌握这些风险,才能够更好地进行控制和应对。
二、进度风险分析1. 需求变更风险需求的变更是软件开发项目中常见的风险之一。
项目开始后,客户或者利益相关者可能会提出新的需求或者修改已有的需求。
如果这些变更没有得到合理的控制和管理,就会导致项目进度的延误。
因此,项目团队需要及时评估需求变更对进度的影响,并与客户进行充分沟通和协商。
2. 技术难题风险在软件开发过程中,技术难题是无法避免的。
可能会遇到一些复杂的技术问题,导致开发进度受阻。
为了降低这种风险,项目团队需要提前进行技术调研和风险评估,并制定相应的解决方案。
同时,团队成员之间需要良好的沟通和协作,及时解决技术问题,保证项目的正常进行。
3. 人力资源风险软件开发项目需要一支高效、专业的团队来推动项目的进展。
然而,人力资源风险可能会影响项目的进度。
例如,项目成员可能会因为健康问题、离职等原因离开团队,导致项目进度的延误。
为了降低这种风险,项目管理者需要做好人力资源的规划和管理,保持团队的稳定性。
三、进度风险控制1. 风险预测与评估项目团队需要对可能的进度风险进行预测和评估,找出潜在的风险点。
可以利用历史数据、专家意见等方法来进行风险分析,制定相应的应对策略。
这样可以在项目开始之前就做好准备,降低风险对进度的影响。
2. 制定详细的进度计划进度计划是项目成功的关键之一。
项目团队需要合理地制定详细的进度计划,并在实施过程中进行监控和调整。
这样可以及时发现偏差,采取相应的措施来保证项目的按时完成。
【项目管理知识】软件项目风险管理方法比较和研究

软件项目风险管理方法比较和研究近几年来软件开发技术、工具都有了很大的进步,但是软件项目开发超时、超支、甚至不能满足用户需求而根本没有得到实际使用的情况仍然比比皆是。
软件项目开发和管理中一直存在着种种不确定性,严重影响着项目的顺利完成和提交。
但这些软件风险并未得到充分的重视和系统的研究。
直到20世纪80年代,Boehm比较详细地对软件开发中的风险进行了论述,并提出软件风险管理的方法。
Boehm认为,软件风险管理指的是“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险”,其目的是“辨识、描述和消除风险因素,以免它们威胁软件的成功运作”。
在此基础上,业界对软件风险管理的研究开始慢慢丰富起来,理论上对风险进行了一些分类,提出了风险管理的思路;实践上也出现了一些定量管理风险的方法和风险管理的软件工具。
虽然业界对风险管理表现了极大的兴趣,作出了不少努力,但似乎很少开发项目的组织真正积极地在软件开发过程中使用风险管理的方法。
____年(IWSEDInte-rnationalWorkshoponSoftwareEngineeringData)会议作出的调查显示:风险管理技术没有得到广泛应用的原因并不是大家不相信这种技术的实效性,而是对风险管理的技术和实践缺乏了解。
因此,我们认为很有必要对风险管理进行研究,并将其应用于现在广泛使用但失败率较高的MIS系统开发中。
1经典风险管理理论(1)BarryBoehm的模型Boehm用公式RE=P(UO)*L(UO)对风险进行定义,其中RE表示风险或者风险所造成的影响,P(UO)表示令人不满意的结果所发生的概率,L(UO)表示糟糕的结果会产生的破坏性的程度。
在风险管理步骤上,Boehm基本沿袭了传统的项目风险管理理论,指出风险管理由风险评估和风险控制两大部分组成,风险评估又可分为识别、分析、设置优先级个子步骤,风险控制则包括制定管理计划、解决和监督风险3步。
Boehm思想的核心是10大风险因素列表,其中包括人员短缺、不合理的进度安排和预算、不断的需求变动等。
软件项目风险管理理论与方法研究综述_潘春光

第22卷第5期Vol.22No.5控 制 与 决 策Cont rolandDecision2007年5月 May 2007收稿日期:2006201207;修回日期:2006204209.基金项目:国家自然科学基金项目(70272002).作者简介:潘春光(1974—),男,济南人,讲师,博士生,从事软件项目风险管理、决策分析技术的研究;陈英武(1963—),男,湖南益阳人,教授,博士生导师,从事公共管理、项目管理等研究. 文章编号:100120920(2007)0520481206软件项目风险管理理论与方法研究综述潘春光,陈英武,汪 浩(国防科学技术大学信息系统与管理学院,长沙410073)摘 要:软件项目风险管理是软件工程的重要分支,也是项目管理和决策研究中的热点问题.为此,简要介绍了软件项目风险管理的相关基本概念,阐述了软件项目风险管理的框架体系和研究方法,并讨论了其各自的优缺点.据此对该学科的研究发展趋势作了展望.关键词:软件项目;风险管理;风险分析;风险控制中图分类号:O157.5 文献标识码:AOvervie w of the study on theories and methods of soft w are projectrisk m anagementPA N Chun 2g uan g ,C H EN Yi ng 2w u ,W A N G H ao(College of Information System and Management ,National University of Defense Technology ,Changsha 410073,China.Correspondent :PAN Chun 2guang ,E 2mail :chunguangpan @ )Abstract :As an important branch of software engineering ,software project risk management (SPRM )is a hotspot in project management and decision 2making.The conceptions of SPRM are introduced generally.An overview of the study on theories and methods in this field is made and the merits and defects are also discussed.The prospect of this subject is presented.K ey w ords :Software project ;Risk management ;Risk analysis ;Risk control1 引 言 软件项目风险管理作为一门学科,出现于上世纪80年代末.经过近30年的发展,已从理论、方法乃至实践上都取得了一定的进展.目前,随着软件工程技术的进步和软件企业的不断成熟,其研究已成为软件工程和项目管理中的热点问题之一.本文对近年来软件项目风险管理理论与方法的研究进展情况进行综述,分析了各种理论体系和方法的特点和不足,并对该学科的发展趋势作了展望.2 软件项目风险管理的有关概念 风险的概念最早出现于19世纪末的西方经济领域,目前已广泛应用于社会学、经济学、工程学、环境学等领域.风险一词在不同领域有不同的界定,目前尚无统一的定义[1].但一般认为风险概念应包含以下几方面内涵[1,2]:1)风险是指事物发生发展过程中某种客观存在的不确定性;2)这种不确定性对主体的决策和价值目标构成了潜在威胁或可能造成损失;3)不同主体对同样风险的承受能力与收益大小、投入多少、项目活动的主体地位和拥有的资源有关.在软件工程领域,人们一直试图将软件开发活动工程化,并通过借鉴工程项目的管理办法来解决软件项目中出现的风险问题.对软件项目风险概念的理解源于其他工程项目风险管理,并经过一定的讨论和改进.如最早研究软件项目风险管理的美国国防部,把风险定义为[3]:在预定成本、工期和技术约束下,可能无法达到全面计划目标的度量指标,它包含两部分:1)无法达到具体结果的概率(或可能性);2)达不到那些结果的后果(或影响).Boehm 等将这两部分归结为“风险暴露”[3,4],用公式表示为R E =P (U O )*L (U O ).(1)其中:R E 指风险或风险造成的影响,P (U O )表示令人不满意结果发生的概率,L (U O )表示不利结果可能产生的破坏程度.上述概念未指明其主体,即是什 控 制 与 决 策第22卷么造成的不利影响,所以有些文献又将风险主体表示为“场景”.如Charette将风险定义为一个三元组[5]Risk={(s i,l i,v i)—i=1,2,…,n},(2)分别表示风险所处的环境描述、可能概率和风险发生时的后果.然而该定义仍存在缺陷,它将低概率高损失的情形与高概率低损失的情形等同起来.为此,Kumamoto等又作了扩展,将风险定义为一个四元组[6]Risk={(s i,o i,l i,v i)—i=1,2,…,n},(3)其中o i表示对第i个场景造成后果严重性的度量.经过一系列补充,人们对软件风险的概念逐渐加深,为理论研究奠定了基础.风险管理是指辨识、分析和控制风险的活动,这组活动不是孤立的,而是一组系统化、持续化的过程[7].软件项目风险管理是指贯穿于软件项目生命周期,保证项目按计划进行的策略、方法、技术和工具的集合,它含有风险辨识、评估、排序、计划、监督和控制活动,并成为软件项目管理的主要部分[8].3 软件项目风险管理的框架体系 从软件项目风险管理的发展历史看,Boehm于1989年出版的专著《软件风险管理》[3],奠定了该领域的理论基础.在随后近30年中,又陆续出现了几种框架体系.现总结和比较如下.3.1 Boehm和Charette的风险管理框架Boehm在《软件风险管理》中,将软件项目风险管理分为风险评估和风险控制两大部分,其中风险评估又分为风险识别、风险分析和风险的优先级排序,风险控制又分为风险管理计划、风险解决和风险监控.软件项目风险管理的另一位创始人Charette构建的风险管理框架[5],则直接将其分为风险分析和风险管理两部分,其中风险分析包括识别、估算和评价,风险管理包括计划、控制和监控.二者的理论框架如表1所示.表1 Boehm和Charette的风险管理框架Boehm的风险管理框架Charette的风险管理框架风险评估风险识别风险分析风险优先级排序风险分析风险识别风险估算风险评价风险控制风险管理计划风险解决风险监控风险管理风险计划风险控制风险监控 从本质上讲,二者风险管理框架基本相同.从内容上看,与其他工程项目风险管理也没有实质性差别.3.2 Higuera和H aimes的持续风险管理框架模型Higuera和Haimes提出的软件项目风险管理框架,是美国卡内基・梅隆大学软件工程研究所(SEI)风险管理体系中的一部分.该体系将风险管理划分为风险识别、分析、计划、跟踪、控制5个步骤,风险管理的方式是连续循环的,其核心是风险沟通.它要求在项目生命期的所有阶段都关注风险管理,即所谓持续风险管理(CRM)框架模型[9,10](见图1).图1 SEI的持续风险管理框架模型SEI的模型在Boehm和Charette的模型基础上有所改进,注重了软件项目的过程特点.但这一模型只是在理论上对风险管理的过程有了初步认识,而如何把风险管理演绎成一个动态、持续的风险管理过程,未作详细阐述.3.3 H all的六学科模型Hall的六学科风险管理模型[11](见图2),将风险管理分解为6个学科.其中:E代表预想,是把思想转化为目标的学科,用于研究软件产品的远期规划;P代表计划,是为软件目标分配资源的学科;W 代表工作,是指产品计划的执行;M代表度量,是比较期望值和实际值的学科,两个值的差异用于调整项目计划;I代表改进,是从过去经验中学习的学科,它通过分析基准和项目度量结果,找出改进的方向;D代表发现,是预知未来的学科,它通过对不确定性的评价和对困惑的思考,考虑机会和风险的均衡,预先指导计划和规划的改变.图2 H all的六学科风险管理模型Hall的六学科模型考虑了风险管理与项目管理的结合,注重风险的度量和控制,是理论与实践相结合的有益尝试.不足之处是对如何取得预想方案中风险和机会的均衡重视不够.其基本思路是改进284第5期潘春光等:软件项目风险管理理论与方法研究综述 项目管理,带动风险管理,管理范围仍以核心风险管理为主.3.4 基于CMM/CMMI的软件项目风险管理框架文献[12,13]提出了基于CMM I的软件项目风险管理框架,对软件项目风险管理理论作了进一步研究和扩展.能力成熟度模型(CMM)是SEI主持研发的一套评估软件能力和成熟度的标准.该标准基于众多专家的经验,侧重于开发过程的管理,是目前国际上流行的软件生产过程标准和软件企业成熟度等级认证标准.CMM主要用5个不断进化的层次来表达,即初始级、可重复级、已定义级、已管理级和优化级,项目风险管理被集成在第3级水平.SEI将CMM扩展为能力成熟度模型集成(CMM I),从内容和特征上对CMM进行完善.在CMM I中,风险管理作为第3级中的一个独立的关键过程域,是软件工程管理的一个重要方面,体现了风险管理的过程特点,从而使在过程中进行风险管理的原则得以真正体现[14].基于CMM/ CMM I的软件项目风险管理的研究,推动了风险管理理论与以软件过程改进为主导的软件工程实践的融合,使软件项目风险管理朝着可预测、有规律、可量化的管理方向发展.4 软件项目风险管理的研究方法、技术和工具 软件项目风险管理发展近30年中,出现了不少方法、技术和工具.这些成果大多以系统整体的形式出现,并贯穿于风险识别、评估、分析和控制的全过程,各方法和技术之间也有交叉,并因阐述的角度不同而有所侧重.下面就其主要研究成果进行简要评述.4.1 软件项目风险识别方法风险识别是任何风险管理活动的起点.从已有成果看,软件项目风险识别的研究方法大致有以下几种:1)风险清单法.Boehm给出了top10风险序列[3],并提出了顶级十大风险源清单[6].随后,他指出在软件项目开发生命期的每个重要阶段,都可进行top10风险清单的调查和修改,并将风险管理加入软件项目开发生命期模型.Boehm还提出了软件项目开发期的螺旋式模型,使项目管理人员可对软件项目进行动态风险追踪.Barki等通过总结列出了35项风险变量[15];Jones描述了60项最常见的风险因素[16].这些成果对于开展风险识别、提供风险源素材具有很大的帮助.2)风险识别法(TB I).Marvin等提出的基于分类的风险识别法[17],主要是从项目分类学的角度考虑风险,对项目的风险项进行分类,从单纯的清单列表走向由分类树与问卷识别过程的统一,从而使软件项目风险项具有结构性的特点.另外,它也秉承了动态管理的特点,使风险识别及后续处理有计划、分步骤、周期性地在项目生命期内进行.3)基于分类的问卷调查表法(TBQ)[17].该方法是由专家根据项目特点设计风险管理问卷调查表,对企业有关人员进行问卷调查,并根据调查结果对数据进行统计分析.文献[18]在问卷调查的基础上提出一种簇分析方法,对507个软件项目管理人员进行问卷调查.文献[19]在此基础上进一步扩展,提出一种软件风险和性能的层次模型,并对调查结果作了统计分析.4.2 网络分析模型网络分析技术在项目风险管理中经常使用,软件项目风险管理中很多方法和工具都借鉴了传统的网络技术.其研究方法主要有以下几种:1)PER T/CPM,GER T和V ER T.PER T(计划评审技术)主要是针对项目进度风险进行评估,通常要求各随机事件都服从三点分布.在实践中,这一假定往往无法满足,这时一般可与蒙特卡洛仿真联合使用.GER T(图形评审技术)可处理活动间的前后逻辑关系受活动结果支配的情况,其活动及活动的先后次序均为随机变量.它既能评估进度风险,又能评估成本和质量等风险.V ER T(风险评审技术)是以管理系统为对象、以随机网络仿真为手段的定量风险分析技术.它可根据每项活动的性质,在网络节点上设置多种输入和输出逻辑功能,使网络模型能充分反映实际过程的逻辑关系和随机约束.这类技术最为常用,在软件项目风险管理中多有引入,如文献[20222]等.2)关键链技术.G oldratt将其提出的制约理论引入项目管理,提出了以关键链取代关键路径的思想.他出版了企业管理专著《关键链》[23],提出了关键链项目管理(CCPM).文献[24]论述了CCPM在软件工程中应用的可行性,文献[25]将关键链技术与系统动力学模型相结合,对多个软件项目进行仿真,并给出了仿真结果.3)贝叶斯置信网络(BBN)模型.BBN是人工智能领域的一种概率推理方法,可描述不确定因素之间的表示和推理.文献[26]应用BBN对软件项目进行风险识别、预测和动态监控,并对项目资源进行动态调整,给出了仿真实例和结果,具有一定的参考价值.4)Pet ri网技术.Pet ri网是研究离散事件动态384 控 制 与 决 策第22卷系统的理论工具之一,它具有并行、并发、同步等特性,适合于描述软件开发过程,在软件工程领域中应用较广[27].5)其他网络模型.这类模型一般是研究人员自行设计的特殊网络模型,如文献[28]提出的设计网模型,文献[29231]提出的软件项目管理网络模型等,对软件项目的并发和迭代现象进行建模和仿真研究.需要说明的是,网络分析模型往往与系统仿真技术结合在一起使用.仿真技术能使网络模型中的不确定性得以量化,是风险管理中的基本技术之一.4.3 系统动力学仿真技术以上总结的各种网络分析模型,大都是从微观的角度考虑软件项目中存在的风险问题,它们在进行风险管理时往往表现出静态和局部的特点,而忽略了项目各部分之间的相互作用对项目整体的影响.软件开发项目是一个动态的复杂系统[32],传统的项目管理方法不能有效地应对软件项目的动态复杂性,也不能从整体上把握软件项目风险管理.一些学者注意到这些方法的缺陷,将系统动力学引入软件项目管理.系统动力学是以反馈控制理论为基础、以计算机仿真为手段的定量分析技术.它通常以分析系统各部分之间的因果关系来建立非线性定量模型,并通过仿真的方法来考察系统的整体结构.Abdel和Madnick[33]对软件开发过程进行系统动力学的建模和仿真,在此基础上开展项目管理.一些学者[34236]先后对这一问题作了深入详细的探讨.以上学者的研究主要是对软件过程进行建模. Houston[37,38]专门为风险管理建立了软件项目系统动力学模型.他基于先前的系统动力学模型,提出一种所谓的基本模型,并对基本模型仿真得到一个基线值.在基本模型的基础上,给出了最为常见的6个软件项目的主要风险项,建立了一个扩展的系统动力学模型,并通过仿真得出各风险因素对系统的影响结果.Houston的模型是专为评估、缓和、调节风险管理活动而设计的,它通过调整输入参数,对成本、进度和产品质量进行风险分析和决策.4.4 基于成本估算模型的风险评估方法成本估算模型主要有SPL M模型和结构化成本模型(COCOMO),其中以COCOMO较为流行.下面简要介绍基于COCOMO的软件项目风险评估[4].Behem在其专著《软件工程经济学》[39]中发表了COCOMO模型(COCOMO81),它包括基本COCOMO,中级COCOMO和详细COCOMO3个层次.随后,为支持Ada项目评估,又开发了Ada COCOMO,对成本驱动因子作了适当调整.1990年后,出现了快速应用开发模型、软件重利用、再工程、CASE、面向对象方法、软件过程成熟度模型等一系列软件工程方法和技术,而早期的COCOMO不能适应新的需要.为此,Boehm重新调整了原有模型,根据未来软件市场的发展趋势,发表了COCOMO Ⅱ模型.COCOMOⅡ的基本构成为5个规模度量因子和17个成本驱动因子,利用它们来调整成本模型计算公式,将Delp hi专家法与Bayes统计分析法相结合,通过不同的成本因子来计算工作量并进行风险评估.4.5 其他方法体系结合软件工程实践,还有一些有特点的软件项目风险管理方法.主要有:1)J yrki[40]提出的Riskit方法.该方法构造了风险因素、风险事件、风险反应和效用损失的影响图,透彻地说明了风险的起因、发展和最后结果.2)Yacoub等[41]提出的客观评估方法.认为评估应基于产品的属性,而不只是专家的经验,所以必须尽可能地采用项目度量体系得到量化数据,并掌握好风险评估的时机.3)Greer等提出的SERUM法[42].它将以往的软件项目风险管理过程或模式称为“明确的方法”,主要选择一些风险管理策略来处理比较重要的风险,并通过风险减少技术达到对风险的控制. SERUM提出了“含蓄风险管理”,该方法从一开始就从商业角度考虑风险,并一直贯串于软件项目的整个过程.4)层次全息模型(H HM).H HM是研究风险管理的一种方法体系,并已成功地引入大型数据库开发系统.它强调将复杂系统以互补、协作的方式分解为部件、子系统等层次,每个层次都是完整系统的某一特定视角结构.文献[43246]采用层次全息模型对软件项目风险管理进行研究,给出了风险管理的一套方法和模型.文献[47]对项目风险管理中各个阶段使用的工具进行评述,并通过问卷调查和分析,给出了风险管理各个阶段可使用工具的排序,为管理人员的决策提供了可靠的依据.5 我国软件项目风险管理的研究现状 从我国软件项目风险管理研究现状看,由于国内软件行业发展较晚,软件企业不很成熟,很多公司主要以中小企业为主,很难谈得上系统、科学的软件项目风险管理.随着信息化浪潮的到来,我国软件业已在近几年取得了飞速发展,构建规范化、组织化的软件企业已成为业界人士的普遍共识.在这种情况484第5期潘春光等:软件项目风险管理理论与方法研究综述 下,软件项目的风险管理也开始受到重视.目前,国内对软件项目风险管理的研究还停留在学习和吸收国外已有理论和方法的基础上,近年来逐渐有文章见诸期刊,如张珞玲、李师贤对M IS 项目开展了一些风险管理的研究[48];张李义提出一种信息系统开发的动态风险模糊估测方法[49];鞠彦兵等提出一种基于证据理论的软件开发风险评估方法[50];潘陈勇从生命周期的角度提出了软件开发动态风险管理的研究方法[51].另外,方德英以IT项目风险管理为题,提出一种风险管理体系,在SEI风险管理框架中加入了组织保障体系[52].焦鹏对软件项目全生命周期的风险评估方法与应用作了详细探讨[53].纵观这些研究可知,我国的软件项目风险管理研究大都还是秉承国外的模式,在理论、方法及实践上没有取得实质性的突破,因此我国软件项目的风险管理研究基本上还处于起步阶段.如何结合我国软件行业的实际进行相关技术的研究,是一个挑战性的课题,也必将经历一个较长的阶段.6 未来研究展望 从目前软件项目风险管理的发展趋势看,其研究热点和需要进一步解决的问题主要有以下几方面:1)与软件过程改进相融合的风险管理理论和实践.软件项目管理朝着稳定化、有规律、可重复、可量化的方向发展已是大势所趋,风险管理应与当前软件工程的发展潮流相融合.软件过程改进的成功,使得软件项目风险管理受益匪浅.目前,人们已将风险管理的研究置于过程改进的框架之下,力图使风险管理在理论和实践上真正突破静态管理的模式,从而从根本上克服操作性不强、缺乏有效的技术和工具支持、定性分析多于量化管理等缺陷.这样,在过程改进的基础上发展起来的新的软件项目风险管理的研究,便成为该学科的一个发展方向.2)基于客观度量的风险评估技术.尽管目前应用于软件项目领域的风险评估技术不少,但大多是借鉴其他工程项目风险管理技术,而且多是以经验和主观分析为主.这些方法虽在一定程度上解决了某些风险问题,但在实践中往往不能取得较好的效果.因此应研究以软件度量为基础的客观风险评估方法.3)与新的项目管理方法的结合.项目管理领域中新的突破,往往能给软件项目的风险管理提供有益的参考,如前面总结的关键链等技术.但如何应用于软件项目风险管理并发挥作用,也是目前研究的热点问题之一.4)新的软件工程实践给风险管理带来的变化.软件工程的不断实践会出现一些新的问题,随之而来也会有许多风险问题出现.如何对这些变化开展有针对性的研究,也是未来软件项目风险管理需要解决的课题之一.总之,软件项目风险管理是一门实践性很强的学科,必须不断探求软件开发项目的规律和特点,紧密与软件工程的最新实践相结合,才会使其具有更强的生命力.参考文献(R eferences)[1]丁义明,方福康.风险概念分析[J].系统工程学报,2001,16(5):4022406.(Ding Y M,Fang F K.Analysis of concept of risk[J].J of Systems Engineering,2001,16(5):4022406.) [2]张哲.风险哲学初探[J].武警工程学院学报,2000,16(5):30232.(Zhang Z.A study of risk philosophy[J].J of Engineering College of Armed Police Force,2000,16(5):30232.)[3]Boehm B W.Software risk management[M].Piscataway:IEEE Computer Society Press,1989. [4]Madachy R.Heuristic risk assessment using cost factors[J].IEEE Software,1996,14(5/6):51259.[5]Charette R.Software engineering risk analysis andmanagement[M].New Y ork:Mc Graw2Hill,1989. [6]Kumamoto H,Henley E J.Probabilistic riskassessment and management for engineers and scientists [M].New Y ork:IEEE Press,1996.[7]Software Engineering Institute.The SEI approach tomanaging software technical risks[R].Bridge:Software Engineering Institute,1992:19221.[8]Boehm B W.Software risk management:Principles andpractices[J].IEEE Software,1991,8(1):32241. [9]Higuera Ronald P,Haimes Y Y.Software riskmanagement[R].Pittsburgh:Carnegie Mellon University,1996.[10]Dorofee A J,Walker J A.Continuous risk management[R].Pittsburgh:Carnegie Mellon University,1996.[11]Elaine M Hall.Managing risk:Methods for softwaresystems development[M].Addison2Wesley Publishing Company,1998.[12]Prikladnicki R,Yamaguti M H,Antunes D C.Riskmanagement in distributed software development:A process integration proposal[C].5th IFIP Working Conf on Virtual Enterprises.Toulouse,2004.[13]Dipak Surie.Evaluation and integration of riskmanagement in CMMI and ISO/IEC[J].http://www.cs.umu.se/~dipak/paper2cmmi.pdf.[14]Alf red B.Process2based software risk assessment[C].584 控 制 与 决 策第22卷Proc of the4th European Workshop on Software Process Technology.Nordwijkerhout,1995:1221. [15]Barki H,Riverd S,Talbot J.Toward an assessment ofsoftware development risk[J].J of Management Information Systems,1993,10(2):2032225.[16]Capers Jones.Assessment and control of software risks[M].Englewood Cliff s:Y ourdon Press,1994.[17]Carr M,K onda S L,Monarch F.Taxonomy2basedrisk identification[R].Pittsburgh:Carnegie Mellon University,1993.[18]Linda Wallace,Mark Keil,Arun Rai.Understandingsoftware project risk:A cluster analysis[J].Information and Management,2004,42(1):1152125.[19]Linda Wallace,Mark Keil,Arun Rai.How softwareproject risk affects project performance:An investigation of the dimensions risk and an exploratory model[J].Decision Sciences,2004,35(2):2892321.[20]Dawson R J,Dawson C W.Practical proposals formanaging uncertainty and risk in project planning[J].Int J of Project Management,1998,16(5):2992310.[21]Alquier A M,Tignol M H.Project managementtechnique to estimate and manage risk of innovative projects[C].IPMA Int Symp and NORDN ET’2001.Stockholm,2001.[22]Moeller G L,Digman L A.Operations planning weihV ER T[J].Operations Research,1981,29(4):6762 697.[23]G oldratt E M.Critical chain[M].New Y ork:NorthRivef Press Inc,1997.[24]Lawrence M Hayhurst.The critical chain in softwareengineering[J]./hunsaker/Critical_Chain_Software_Eng.pdf.[25]Bengee Lee,J ames Miller.Multi2project managementin software engineering using simulation modeling[J].J of Software Quality,2004,12(1):59282.[26]Fan C F,Yu Y C.BBN2based software project riskmanagement[J].J of Systems and Software,2004,73(1):1932203.[27]Ammar H,Nikzadeh T,Dugan J B.An example ofrisk assessment of software systems specifications[C].Proc of8th Int Symp on Software Reliability Engineering.Albuquerque,1997:1562167.[28]Liu L C,Horowitz E.A formal model for softwareproject management[J].IEEE Trans on Software Engineering,1989,15(10):128021293.[29]Chang C K,Christensen M.A net practice forsoftware project management[J].IEEE Software, 1999,16(6):80288.[30]Chang C K,Christensen M,Zhang T.G eneticalgorithms for project management[J].Annals ofSoftware Engineering,2001,11:1072139.[31]Chang C K.SPMN ET:A new methodology forsoftware management[D].Chicago:The University of Illinois,1995.[32]Lai L S Linda.A synergistic approach to projectmanagement in information systems development[J].Int J of Project Management,1997,15(3):1732179.[33]Abdel Hamid T K,Madnick S.Software projectdynamics:An integrated approach[M].Prentice2Hall, 1991.[34]Madachy Raymond J.A software project dynamicsmodel for process cost,schedule and risk assessment[D].University of Southern California,1994.[35]John Douglas Tvedt.An extensible model forevaluating the impact of process improvements on software development cycle time[D].Phoenix:Arizona State University,1996.[36]Sycamore Douglas M.Improving software projectmanagement through system dynamics modeling[D].Phoenix:Arizona State University,1996.[37]Dan X Houston,Gerakd T Mackulak,J ames SCollofello.Stochastic simulation of risk factor potential effects for software development risk management[J].J of Systems and Software,2001,59(3):2472257. [38]Dan X Houston.A software project simulation modelfor risk management[D].Phoenix:Arizona State University,2000.[39]Barry Boehm.Software engineering economics[M].New Jersey:Prenctice Hall,1981.[40]J yrki K ontio.Software engineering risk management:A method,improvement f ramework and empiricalevaluation[D].Helsinki:Helsinki University of Technology,2001.[41]Yacoub S M,Ammar H H,Robinson.A methodologyfor architectural2level risk assessment using dynamic metrics[C].11th Int Symp on Software Reliability Engineering.San Jose,2000:2102221.[42]Greer D,Bustard D W.SERUM—Softwareengineering risk:Understanding and management[J].Project and Business Risk Management,1997:1(4): 3732388.[43]Michael J Pennock,Yacov Y Haimes.Principles andguidelines for project risk management[J].Systems Engineering,2002,5(2):892107.[44]Clyde G Chittister,Yacov Y Haimes.Systemintegration via software risk management[J].IEEE Trans on Systems,Man and Cybernetics:Part A, 1996,26(5):5212532.(下转第493页)684第5期康惠骏等:混合励磁电机系统输入输出解耦和线性化 excitation of AC and DC machine[C].Electrical Machines and Drives:4th Int Conf.London,1989:48252.[2]Naoe Nobuyuki,Fukami Tadashi.Trial production of ahybrid excitation type synchronous machine[C].Electric Machines and Drives Int Conf.Cambridge,2001:5452 547.[3]Aydin M,Huang S R,Lipo T A.A new axial fluxsurface mounted permanent magnet machine capable of field control[C].IEEE IAS Annual Meeting.Pittsburgh,2002:125021257.[4]Amara Y,Oujehani K,Hoang E,et al.Flux weakeningof hybrid synchronous machines[C].Electric Machines and Drives Int Conf.Cambridge,2001:3672373.[5]Hori H,Ashikaga T.Current controller for hybridexcitation type permanent magnet motor[P].J apan Patent:8242600,1996.[6]Zhao C H,Yan Y G.A review of development of hybridexcitation synchronous machine[C].IEEE ISIE.Dubrovnik,2005:8572862.[7]徐衍亮,唐任远.混合励磁同步电机的结构、原理及参数计算[J].微特电机,2000,28(1):16218.(Xu Y L,Tang R Y.A kind of structure,principle and parameter calculation for hybrid excitaion synchronous machine[J].Small and Special Electrical Machines,2000,28(1):16218.)[8]杨儒珊.混合磁路电机系统的结构性质分析[D].上海:上海大学,2005.(Yang R S.Analysis of structure of hybrid excitation permanent magnet sychronous machine system[D].Shanghai:Shanghai University,2005.)[9]谢七月,康惠骏.混合磁路电动机的非线性解耦控制[J].上海大学学报,2006,12(2):1582161.(Xie Q Y,Kang H J.Nonlinear decoupling control of hybrid excitation permanent magnet synchronous motor [J].J of Shanghai University,2006,12(2):1582161.)[10]康惠骏,谢七月,杨儒珊.混合励磁电动机的可逆性[C].2006中国控制与决策学术年会论文集.天津,2006:131321316.(Kang H J,Xie Q Y,Yang R S.Invertibility of hybrid excitation synchronous machine[C].CDC’2006.Tianjin,2006:131321316.)[11]Isidori A.Nonlinear control systems[M].2nd ed.Birlin:Springer2Verlag,1989.[12]康惠骏.异步电动机非线性系统分析与控制[D].上海:上海大学,1996.(Kang H J.Analysis and control for nonlinear systems of induction motors[D].Shanghai:Shanghai University,1996.) (上接第486页)[45]Leung M F,Santos J R,Haimes Y Y.Risk modeling,assessment and management of lahar flow threat[J].Risk Analysis,2003,23(6):132321335.[46]Yacov Y Haimes,Kaplan S,Lambert J H.Riskfiltering,ranking and management f ramework using hierarchical holographic modeling[J].Risk Analysis, 2002,22(2):3812395.[47]Raz T,Michael e and benefits of tools for projectrisk management[J].Int J of Project Management, 2001,19(1):9217.[48]张珞玲,李师贤.软件项目风险管理方法比较和研究[J].计算机工程,2003,29(3):91294.(Zhang L L,Li S parision and research on models of software project risk management[J].Computer Engineering,2003,29(3):91294.)[49]张李义.信息系统开发的动态风险模糊估测方法[J].系统工程理论与实践,2001,21(10):88292.(Zhang L Y.Approach to dynamic risk estimation for information system development[J].System Engineering Theory and Practice,2001,21(10):88292.)[50]鞠彦兵,冯允成,姚李刚.基于证据理论的软件开发风险评估方法[J].系统工程理论方法应用,2003,12(3):2182223.(J u Y B,Feng Y C,Yao L G.Research on the measure of risk in the course of software development[J].Systems Engneering—Theory Methodology Applications,2003,12(3):2182223.)[51]潘陈勇.基于生命周期的软件开发动态风险管理[D].杭州:浙江大学,2002.(Pan C Y.Dynamic risk management based on the software development life cycle[D].Hangzhou: Zhejiang University,2002.)[52]方德英.IT项目风险管理理论与方法研究[D].天津:天津大学,2003.(Fang D Y.The study on theories and methods of IT project risk management[D].Tianjin:Tianjin University,2003.)[53]焦鹏.软件项目风险评估方法的研究[D].北京:北京工业大学,2003.(Jiao P.The study on software project risk assessment[D].Beijing:Beijing University of Technology,2003.)394。
软件项目实施风险评估与管控

软件项目实施风险评估与管控软件项目实施过程中存在着各种各样的风险,如合作方人员调整、需求变更、技术难题等,如果不加以及时评估和管控,这些风险可能会导致项目延期、超出预算、质量低下等问题。
因此,软件项目实施风险评估与管控显得尤为重要。
本文将围绕该主题展开,探讨软件项目实施风险评估与管控的方法与策略。
一、风险评估风险评估是软件项目实施前的一项重要工作,其目的是识别潜在的风险因素,并对其进行评估。
以下是一些常用的风险评估方法:1. SWOT分析法:通过识别项目的优势、劣势、机会和威胁,来评估项目的风险状况。
该方法能够全面、系统地分析项目内外部的因素,为项目实施提供有力的支持。
2. 专家评估法:通过邀请相关领域的专家参与评估,根据其经验和专业知识,对可能的风险进行评估和预测。
该方法能够借助专业人员的聪明才智,挖掘出项目存在的隐藏风险。
3. 相似性评估法:通过对过去类似项目的风险进行评估,找出相似性项目中存在的风险因素,并据此对当前项目进行风险评估。
该方法能够参考历史数据,提前发现项目的潜在风险。
二、风险管控风险管控是指在项目实施过程中,根据评估的风险情况,制定相应的措施来避免、减轻或转移风险,以确保项目的顺利进行。
以下是一些常用的风险管控策略:1. 风险分级管理:将风险按照严重程度和紧急程度进行分类管理,重点关注高风险和紧急风险,并制定相应的应对措施。
2. 风险应对计划:制定详细的风险应对计划,明确应对措施、责任人、时间节点等信息,以便在风险发生时能够迅速应对。
3. 风险监控:建立风险监控机制,定期对项目的风险进行跟踪和监测,及时发现和应对风险。
4. 团队沟通与协作:促进团队内部的沟通与协作,加强信息的共享和交流,以便及时获取项目实施中的风险信息,并采取相应的措施。
三、案例分析为了更好地理解软件项目实施风险评估与管控的重要性,下面将通过一个案例进行分析。
某公司在实施一个关键业务系统时,由于项目组成员的调整和需求变更,导致项目进度延迟和成本超支的风险增加。
软件工程中的项目风险管理与应对策略

软件工程中的项目风险管理与应对策略在软件工程中,项目风险管理起着至关重要的作用。
随着项目的复杂性和规模的增加,项目风险也不可避免地出现。
有效的项目风险管理可以提前识别和应对潜在的风险,保障项目的顺利进行和成功交付。
本文将探讨软件工程中的项目风险管理和应对策略。
一、项目风险的分类在软件开发过程中,项目风险可分为以下几类:1.技术风险:包括技术选型不当、技术难题、技术人员能力不足等。
2.进度风险:包括项目进展缓慢、进度延误、资源不足等。
3.需求风险:包括需求变更、需求不明确、用户对软件功能预期不符等。
4.质量风险:包括软件缺陷、系统稳定性差、性能不足等。
5.人员风险:包括人员流动、人员能力不匹配、沟通合作困难等。
二、项目风险管理流程为了有效管理软件项目中的风险,可以采取以下流程:1.风险识别:通过充分分析项目的各个方面,识别潜在的风险因素。
可以借助SWOT分析、头脑风暴等方法,将想象的可能风险一一列举出来。
2.风险评估:对已经识别的风险进行评估,确定风险的概率和影响程度。
可以采用定性分析和定量分析相结合的方法,依据历史数据和专家经验进行评估。
3.风险优先级排序:根据风险的概率和影响程度,对风险进行优先级排序。
将高概率和高影响的风险列为重点关注对象。
4.风险应对策略制定:针对每个风险,制定相应的应对策略。
常见的应对策略包括:避免风险、减轻风险、转移风险和接受风险。
具体策略可以根据风险的特点和项目情况来确定。
5.风险控制与监控:在项目开发过程中,密切关注已识别的风险并采取相应的控制措施。
持续监控风险的变化,及时调整应对策略。
三、项目风险应对策略针对不同类型的项目风险,可以采取不同的应对策略:1.技术风险应对:建立完善的技术评估机制,确保选择合适的技术方案;提供培训和学习机会,提高技术人员的能力;与技术专家合作,解决技术难题。
2.进度风险应对:制定详细的项目计划,合理安排资源;提前做好风险评估,制定应急计划;建立团队沟通机制,及时解决进度方面的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件项目风险管理研究[内容摘要]随着软件产业的迅速发展,软件的规模越来越大,复杂性也越来越高,风险变得更加难以控制,最终导致软件项目失败的结果越来越常见。
如何对软件项目风险因素进行分析并有效地规避风险,从而致使项目顺利成功是进行软件风险管理的主要课题之一。
只有充分地理解和学习软件风险管理的理论知识,同时在实践中不断地积累经验才能有效地进行风险防X和控制,达到减少风险的影响程度和实现利益最大化追求的目的。
本文从分析国内外软件风险管理的发展现状入手,详细地按照软件生命周期各阶段将软件项目风险进行分类,并总结对比分析了国外经典软件风险管理模型,同时介绍了软件风险管理全过程,同时基于经典软件风险管理模型,提出了改进的软件风险管理模型和方法,并根据自身经验对如今国内企业提出软件风险管理一些建议和意见。
[关键词]项目管理;软件风险;风险管理1.研究背景随着经济全球化的不断深入,以信息技术为依托的知识经济初见端倪,各国都在实施信息化带动工业化的发展战略,软件行业成为许多国家的支柱产业,软件业的发展程度从某种意义上体现了该国的综合国力,决定着国家未来的国际竞争地位。
软件是一种特殊的逻辑产品,不具备实体的可见性,它是人经过智力劳动而产生出来、具有特殊性质的复杂事物川。
一些调查表明,约的软件项目开发超出估计时间,大型项目平均超出交付时间,以上的软件项目开发费用超出预算。
软件项目成功的几率要远远低于其它任何工程项目,软件行业面临着所谓的“软件危机”。
在软件产品开发过程中存在着众多不确定因素,这些因素使得软件项目比其它工程项目具有更高的风险。
从学科发展角度来看,软件工程的形成得益于人们用工程化思想看待软件产品的开发,软件工程的产生又使得软件项目管理学科应运而生。
软件项目管理的出现使所谓的“软件危机”得到了一定程度的缓解和控制。
项目管理的目标是在有限资源标注条件下,保证项目时间进度、质量、成本达到最优化。
软件项目管理的主要目标是确保软件产品能够按预期方案交付,同时还要满足用户需求。
软件项目风险管理的目的是要找出导致项目需求不明晰、不能按进度计划及时交付、产品质量存在缺陷、开发费用超支等各种不良后果的风险因素,对风险因素及可能造成的后果和危害进行定性和定量分析,从而为软件项目管理人员等提供有效的风险控制方案和措施,使其对软件项目的损失或影响降到最低程度或使决策者可以接受的程度。
因此,软件项目风险管理是软件项目管理的重要部分。
软件项目风险管理经过近三十年发展,已从理论、方法乃至实践都取得了一定进展。
随着软件工程实践深入和软件企业的不断成熟,软件项目风险管理逐渐成为当前软件工程领域研究的热点问题,受到广泛关注。
2.国内外研究现状2.1软件项目风险管理理论框架模型研究情况美国学者Barry Boehm在1989年出版的著作《软件风险管理》奠定了软件项目风险管理的理论基础。
在随后的时间里,随着计算机技术和软件工程的的深入发展,软件项目风险管理的发展逐渐趋于体系化。
下面简要介绍几种软件项目风险管理的理论框架模型。
2.1.1Boehm和Charette的风险管理框架Boehm在其著作《软件风险管理》中将软件项目风险管理分为风险评估和风险控制两大部分,其中风险评估又分为风险识别、风险分析和风险的优先级排序,风险控制又分为风险管理计划、风险解决和风险监控。
Boehm和Charette风险管理框架表如下:在此框架中,风险识别主要指出一个潜在破坏项目成功的风险列表,这个风险列表将作为风险控制的基础。
风险分析是指评估每个风险出现的可能性及其影响,判定风险的级别。
风险优先排序是指按风险影响大小排出一个风险优先级。
风险控制是由风险管理计划、风险化解和风险监控组成。
风险管理计划是指制定一个应对每个重要风险的方案,同时应确保每一个单独的风险管理计划之间以及与整体项目计划之间相一致。
风险化解是指每个重要风险所对应计划的执行。
风险监控是指对解决风险的过程进行监控,风险监控还可以包括识别新的风险并将其反馈到正在进行的风险管理过程中。
2.1.2Higuera和Haimes风险管理框架Higuera和Haimes提出的软件项目风险管理框架是美国卡内基·梅隆大学软件工程研究所提出的风险管理理论体系的一部分。
它将风险管理分为风险识别、分析、计划、追踪、控制五个步骤,风险管理方式是连续循环的,核心是风险交流,要求在软件项目生命周期所有阶段都关注风险管理的各项活动,即所谓持续风险管理框架模型(CRM)。
如下图,持续风险管理框架模型。
图2 持续风险管理框架模型(Continuous Risk Management Paradigm)在各种软件项目风险管理理论框架研究中,每一理论体系都具有结构完整、内容完善的特点,并附带有与结构和内容相配套的方法和技术,它们借用运筹学、决策理论等思想、方法和工具,秉承了经典风险管理理论体系的优点,同时又体现了软件项目的某些特点。
这些研究成果对于奠定整个软件项目风险管理学科的基础起着非常重要的作用。
3.软件项目风险管理基本内容3.1软件项目风险管理定义软件项目的风险管理更是软件项目管理中的重要内容。
大量的统计表明,实行有效的风险管理是软件项目开发过程中减少损失的一种重要手段。
软件项目风险管理出现在上世纪年代末,到现在只有三十多年的历程,在软件项目风险管理领域中,人们多是借鉴于工程项目的管理方法来解决软件项目开发中出现的风险问题,并且对于软件项目的风险管理概念的理解是来自于其他工程项目的风险管理,并在其基础上有所讨论和改进。
因此,软件项目风险管理是指项目管理团队通过风险识别、风险量化和风险控制,采用多种管理方法、技术和工具,对软件项目所涉及的各种风险实施有效的控制和管理,采取主动行动,尽量使风险事件的有利后果带来的机会最大,而使风险事件所带来的不利后果威胁降到最低,以最少的成本保证项目安全、可靠的实施,从而实现项目的总目标。
3.2软件项目风险的特点软件项目管理的风险来自于软件项目自身的特点:(1)软件产品不可见。
开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于把握;(2)软件的生产过程不存在绝对正确的过程形式。
不同的软件开发项目应当采用不同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目的开发完成才能明了的。
因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整;(3)大型软件项目往往是“一次性”的。
以往的经验可以被借鉴的地方不多。
回避和控制软件管理风险的惟一办法就是设立监督制度,进行有效的风险监控和管理。
3.3软件项目风险的分类按照风险的内容,可分为五个方面:(1)社会环境风险:国家政策、新技术发展、自然灾害、国际形势等。
(2)技术风险:技术的复杂性、兼容性、承受性以及与其他项目的相关性等。
(3)费用风险:成本预算准确性、任务要求明确性、进度和技术因素制约、合同类型和报价制约等。
(4)进度风险:项目人员经验、进度因素制约、计划合理性和资源充分性等。
(5)管理风险:领导素质、组织结构、研发人员的素质、各阶段的协调沟通等。
按风险性质分类,可以分为三个方面:(1)己知风险,是通过仔细评估项目计划、开发项目的商业及技术环境、以及其它可靠的信息来源(如不现实的交付时间,没有需求或软件X围的文档、恶劣的开发环境)之后可以发现的那些风险。
(2)可预测风险,能够从过去项目的经验中推测出来(如人员调整,与客户之间无法沟通,由于需要进行维护而使开发人员精力分散。
)(3)不可预测风险,它们可能、也会真的出现,但很难事先识别出它们来。
一般来讲,软件项目过程是一个不断识别风险、分析风险、计划风险、监控风险和应对风险的过程。
一个大型软件的开发大约存在30至40种风险。
如果每种风险都需要3至7个风险管理步骤,那么风险管理本身就可以构成软件开发过程的一个子项目。
一个好的风险管理过程体现了组织在风险管理上的知识和经验,这种知识和经验通过组织制定的过程规X得以确定,组织在风险管理基础结构上的投入,往往也会获得理想的回报。
4.软件项目风险应对和监控4.1软件项目风险应对过程定义风险应对就是处置风险的过程。
风险无法被完全避免,对于某些风险也无需完全避免。
重要的是把风险置于人们的控制之下。
风险应对活动主要有两部分内容事前、事中和事后。
事前控制主要是降低风险发生的可能性,事后控制则主要是减小风险造成的损失。
事中主要是对风险状态的监控,并随着风险状态的改变而做出不同的风险反映。
风险应对模型如图:图3 风险应对过程定义(1)过程控制如同控制风险识别过程一样,项目资源、项目需求和风险管理计划同样约束着风险应对过程。
(2)过程输入风险行动计划是风险应对过程的输入。
它包括风险应对的目标、约束和决策,记录了选择的途径、需要的资源和批准权利。
计划提供了高层次的指导并允许达到目标过程中的灵活性。
(3)过程输出风险状态、可接受的风险、减少的重复劳动、校正行动和问题防X是风险应对过程的输出。
风险状态是对照风险行动计划所取得或缺乏的进展。
报告风险状态,即是报告计划的实施结果。
可接受的风险意思是指你可接受风险后果,甚至是最糟糕的后果。
当你在风险应对方面取得足够进展时,项目状态指标就会得以改进。
当状态指标回落到可接受X围内时,将触发解除或延缓风险应活动。
重复劳动是第一次做某事时没有做对所付出的代价。
通过减少重复劳动,不必再次工作,因为你第一次做对了没有浪费时间。
用节省的成本计算减少的重复劳动,需要将劳动成本翻两倍,再加上一般管理费用。
校正行动是解决问题所需的活动之一。
通过校正行动,可以找到问题的己知解决方案。
使用这些过程找出大家普遍能接受的解决方案、然后执行某些活动来解决问题。
问题防X发生于避免问题时。
避免了问题,便消除了问题将带来的后果,它包括问题发现成本,重复劳动成本和机会成本。
我们将问题定义为风险的发生,所以必须同时考虑风险发生的后果。
用节省的成本计算问题防X,合计发现和解决问题的成本、重复劳动的成本、机会成本和风险发生的后果。
(4)过程机制机制可以是方法、技巧、工具或其他为过程活动提供结构的手段。
风险应对技巧、风险应对工具和风险数据库都是风险应对过程的机制。
风险应对技巧是对风险应对细节有帮助的方法。
风险应对工具利用电脑使风险应对技巧自动化,如做原型和模拟。
风险数据库包含负责人的XX和风险应对活动的结果,它还包含重要结果的完成日期。
4.2软件项目风险应对依据软件风险应对的依据,是软件风险分析过程的结果,主要包括以下两个方面:(1)风险管理计划,包括风险应对的目标、约束、决策、资源等。
(2)风险登记清单,指风险分析的结果。
4.3软件项目风险应对活动根据风险分析的结果和风险管理成本对制定的项目实施计划和方案进行风险评估,选择风险收益比较小的方案,或按风险收益原则对原计划方案进行修改。