软件工程课程(期末)论文_第1页
软件工程课程(期末)论文_第2页
软件工程课程(期末)论文_第3页
软件工程课程(期末)论文_第4页
软件工程课程(期末)论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1软件工程课程(期末)论文论文题目:软件项目风险管理与方法探讨院系:信息技术学班级:*************************作者:******学号:**************指导教师:**********撰写时间:2012年12月24—2013年1月4日信息技术学院摘要随着软件产业的迅速发展,软件的规模越来越大,复杂性也越来越高,伴随而来的项目风险也愈加难以控制,软件项目的风险管理已经成为软件技术因素之外决定项目成败的关键。因此,研究软件项目风险管理对于软件开发、软件项目管理及软件产品质量都具有重要意义。本文首先从软件项目风险管理研究的背景及意义出发,叙述了在软件项目开发中风险管理的重要性;其次,重点从软件项目风险管理的5个步骤,即风险识别、风险分析、风险计划、风险监控和风险对策,介绍了软件项目风险管理研究的理论基础与方法;最后,给出了减轻或防止风险发生的几种合理、有效的风险应对措施。关键词:软件风险;风险管理;风险过程分析;风险应对措施AbstractWiththerapiddevelopmentofthesoftwareindustry,thesizeofthesoftwareismoreandmorebigandthecomplexityisalsomoreandmorehigh.Thisleadtotheprojectriskismoreandmoredifficulttocontrol.softwareprojectriskmanagementhasbecomeasoftwaretechnologyfactorsbesidesdecidedtoprojectsuccessorfailureofthekey.Therefore,thesoftwareprojectriskmanagementforsoftwaredevelopment,softwareprojectmanagementandsoftwareproductqualityisofimportantsignificance.Thispaperfromthesoftwareprojectriskmanagementbasedontheresearchbackgroundandsignificance,describedinthesoftwareprojectdevelopmentintheimportanceofriskmanagement;Second,focusfromsoftwareprojectriskmanagementofthefivesteps,namely,riskidentification,riskanalysis,riskplan,riskmonitoringandriskcountermeasures,thispaperintroducesthesoftwareprojectriskmanagementstudyofthetheoreticalbasisandmethods;Finally,thepaperputsforwardtherelieveorpreventtheoccurrenceofarisktheriskofseveralreasonableandeffectivemeasures.Keywords:Softwarerisk;Riskmanagement;processofriskanalysis;Riskmeasures目录第一章绪论 11.1研究背景 11.2研究意义 11.3研究现状 11.4本文研究内容、研究方法与技术路线 21.4.1本文研究内容 21.4.2本文研究方法与技术路线 21.5本文的创新点 2第二章软件项目风险管理的理论基础与方法综述 32.1.软件项目风险管理理论基础 32.1.1软件项目风险定义 32.1.2软件项目风险分类 32.1.3软件项目风险特点 32.1.4软件项目风险处理方式 32.1.5软件项目风险管理框架体系 42.2软件项目风险管理研究方法 52.2.1软件项目风险识别方法 52.2.2软件项目过程风险分析 62.2.3软件项目风险管理 72.2.4软件项目风险评估与监控 8第三章软件项目管理中的风险管理应对措施 10第四章总结 11参考文献: 12第一章绪论1.1研究背景软件产业已经成为国际竞争的焦点和各国竞相发展的战略性先导产业,发展软件产业对于提升我国的产业竞争力,走新型工业化道路和确保国家安全,具有重要的战略意义。目前,随着软件产业规模的快速增长,软件正以其特有的影响力和渗透力,应用于国民经济各行各业,渗透到人们日常工作和社会生活的各个方面。软件的重要性正日渐凸显,然而,软件开发项目却常常遭受失败的打击。软件业界,软件项目进度延期、预算超支、开发的系统不能满足用户需求等,最后导致项目失败的现象十分普遍。据美国StandishGroup通过分析13522个软件项目得出结论:只有1/3的项目是成功的;82%的项目延期,43%的项目超出预算。在分析众多导致软件项目频繁遭受如此巨大失败的原因时,人们得出了一个结论:缺乏有效的风险管理方法是导致软件项目失败的重要原因之一。目前软件项目风险管理理论研究已基本成熟,已有一定数量的风险管理方法、模型等研究成果,但仍有必要,针对不同国家的国情、不同的企业规模、不同类型的软件项目,研究与其相适应的风险管理方法体系。1.2研究意义从软件项目的特殊性来看,软件项目风险与传统工程项目风险有着本质区别,导致传统工程项目风险管理理论与方法并不完全适用于软件项目,因此需要针对软件项目与软件项目风险的特征,研究软件项目风险管理理论与方法。从学科发展的角度来看,研究软件项目风险管理理论与方法,可以丰富和完善软件项目风险管理研究成果,促进软件项目管理学科的发展建设。从近三十年的软件项目风险管理研究成果来看,国外该领域的研究,无论在理论还是应用实践方面,都有着丰富的成果和经验。国内该领域的研究还处于初步阶段,如何借鉴国外的成果和经验,并结合我国国情、软件产业和软件企业发展的环境,进行软件项目风险管理理论、方法与实践的研究,是一项具有现实意义和挑战性的课题,需要经历一个较长时期的研究和发展。1.3研究现状纵观国内外研究现状,从研究内容看,国外软件项目风险管理研究偏重建立完善的理论体系,并配套有系统的方法、技术和工具,国内该领域研究处于学习和吸收国外已有理论和方法的阶段,研究成果主要集中于风险管理方法,有关风险管理理论体系的研究成果很少。从研究风格看,以美国为首的国外软件项目风险管理研究特别强调应用管理规范的建立,相对不太重视引入传统的数理方法,国内研究偏重于数理方法的应用,研究成果大多是单个方法在软件风险管理某步骤中的应用,还没有形成系统的方法体系。从研究方向看,国外研究大多针对大型软件项目,国内研究则针对中小型软件项目。从涉及的相关学科看,主要应用到软件工程、风险管理、项目管理、质量管理、数理统计学、模糊数学以及决策理论等。1.4本文研究内容、研究方法与技术路线1.4.1本文研究内容本文主要围绕软件项目风险管理过程中风险识别、风险分析、风险计划、风险跟踪和风险对策5个步骤进行研究,并给出可以减轻或防止风险发生的合理、有效的风险应对措施。1.4.2本文研究方法与技术路线本文主要围绕软件项目风险管理过程中风险识别、风险分析、风险计划、风险跟踪和风险对策5个管理过程展开研究,研究主要采用文献研究法,通过收集、研读国内外相关图书、文献资料,分析和整理现有软件项目风险管理理论与方法研究成果,探讨减轻或防止软件项目风险发生的风险应对措施。1.5本文的创新点本文的创新点可归纳为:通过分析归纳现有软件项目风险管理理论与方法研究成果在实践中的应用和可能存在的缺陷与不足,并给出了一些常用的可以减轻或防止软件项目风险发生的风险应对措施。第二章软件项目风险管理的理论基础与方法综述2.1.软件项目风险管理理论基础2.1.1软件项目风险定义软件项目风险是指在软件项目生命周期内,由于某些不确定性而可能导致软件项目偏离预定目标,造成软件项目损失(进度、成本、质量)的风险事件。2.1.2软件项目为了有效地进行软件项目风险管理,有必要对风险进行分类。按照不同的分类标准,可对软件项目风险进行不同的分类。从风险来源来分,技术风险、管理风险、人员风险、需求风险等。从风险对项目目标的影响来分,进度风险、费用风险、质量风险。从软件组织角度来分,发生在组织外部的风险,称为外部风险,反之,发生在组织内部的风险,称为内部风险。由于外部风险是组织不可控制的,而在进行项目风险管理时,通常只研究组织可以控制的那部分风险,即内部风险。2.1.3软件项目风险与将要发生的事情有关,它涉及诸如思想、观念、行为、地点、时间等多种因素;风险随条件的变化而改变,人们通过改变、选择、控制与风险密切相关的条件可以减少风险,但改变、选择、控制条件的策略往往是不确定的。软件项目管理的风险来自于软件项目自身的特点:1、软件产品不可见。开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于把握。2、软件的生产过程不存在绝对正确的过程形式。不同的软件开发项目应当采用不同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目开发完成后才能明了的。因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整;3、大型软件项目往往是“一次性”的。以往的经验可以被借鉴的地方不多。回避和控制软件管理风险的惟一办法就是设立监督制度,进行有效的风险监控和管理。同时,风险本身又具有以下特点:(1)不确定性:刻画风险的事件可能发生也可能不发生;(2)损失性:如果风险变成了现实,就会产生恶性后果或者损失;(3)进行风险分析时,重要的是量化不确定性的程度及与每个风险相关的损失的程度;(4)当没有办法消除风险,甚至连试图降低该风险也存在疑问时,这些风险就是真正的风险了;(5)在能够标识出软件项目中的“真正风险”之前,先要能识别出所有对于管理者以及开发者而言均为明显的风险是很重要的。2.1.4软件项目风险处理方式软件风险管理工作就是在风险成为影响软件项目成功的威胁之前,识别、着手处理并消除风险的源头。项目开发过程中对风险进行控制管理可以大大提高软件开发的成功性,一般可以在一下几个层次上定位、管理风险:(1)危机管理:即所谓“救火模式”,就是在风险已经造成麻烦后才着手处理它们;(2)失败处理:察觉到了风险并迅速做出反应,但只是在风险发生之后;(3)风险缓解:事先制定好风险发生后的补救措施,但不做任何防范措施;(4)着力预防:将风险识别与风险防范作为软件项目的一部分加以规划和执行;(5)消灭根源:识别和消除可能产生风险的根源。前3项都是被动进行的,对项目已造成一定、甚至重大的损失,正所谓“亡羊补牢,为时已晚”。所以应当着力于预防风险,更好的是消除风险根源。2.1.5软件项目风险管理框架体系从软件项目风险管理的发展历史看,Boehm于1989年出版的专著《软件风险管理》,奠定了该领域的理论基础,在随后近30年中,又陆续出现了几种框架体系。现总结和比较如下:1、Boehm和Charette的风险管理框架Boehm在《软件风险管理》中,将软件项目风险管理分为风险评估和风险控制两大部分,其中风险评估又分为风险识别、风险分析和风险的优先级排序,风险控制又分为风险管理计划、风险解决和风险监控。软件项目风险管理的另一位创始人Charette构建的风险管理框架,则直接将其分为风险分析和风险管理两部分,其中风险分析包括识别、估算和评价,风险管理包括计划、控制和监控。二者的理论框架(如表1所示)。表1Boehm和Charette的风险管理框架从本质上讲,二者风险管理框架基本相同。从内容上看,与其他工程项目风险管理也没有实质性差别。2、Higuera和Haimes的持续风险管理框架模型Higuera和Haimes提出的软件项目风险管理框架,是美国卡内基·梅隆大学软件工程研究所(SEI)风险管理体系中的一部分。该体系将风险管理划分为风险识别、分析、计划、跟踪、控制5个步骤,风险管理的方式是连续循环的,其核心是风险沟通。它要求在项目生命期的所有阶段都关注风险管理,即所谓持续风险管理(CRM)框架模型(如图1所示)。图1SEI的持续风险管理框架模型SEI的模型在Boehm和Charette的模型基础上有所改进,注重了软件项目的过程特点。但这一模型只是在理论上对风险管理的过程有了初步认识,而如何把风险管理演绎成一个动态、持续的风险管理过程,未作详细阐述。3、Hall的六学科模型Hall的六学科风险管理模型(如图2所示),将风险管理分解为6个学科。其中:E代表预想,是把思想转化为目标的学科,用于研究软件产品的远期规划;P代表计划,是为软件目标分配资源的学科;W代表工作,是指产品计划的执行;M代表度量,是比较期望值和实际值的学科,两个值的差异用于调整项目计划;I代表改进,是从过去经验中学习的学科,它通过分析基准和项目度量结果,找出改进的方向;D代表发现,是预知未来的学科,它通过对不确定性的评价和对困惑的思考,考虑机会和风险的均衡,预先指导计划和规划的改变。图2Hall的六学科风险管理模型2.2软件项目风险管理研究方法2.2.1软件项目风险识别方法软件项目风险管理力求系统化地确定风险对项目计划(估算、进度、资源分配)的威胁,在可能时避免风险,在必要时控制风险。为了规避风险、控制风险,首先应识别风险,发现项目可能的风险。识别风险就是试图确定系统中的各种风险因素和事件,并预测它的不良后果和发生情况。风险识别可以通过项目组集体讨论完成,或凭借管理者的经验进行。从已有成果看,软件项目风险识别的研究方法大致有以下几种:1)风险清单法。Boehm给出了top10风险序列,并提出了顶级十大风险源清单。随后,他指出在软件项目开发生命期的每个重要阶段,都可进行top10风险清单的调查和修改,并将风险管理加入软件项目开发生命期模型。Boehm还提出了软件项目开发期的螺旋式模型,使项目管理人员可对软件项目进行动态风险追踪。Barki等通过总结列出了35项风险变量;Jones描述了60项最常见的风险因素。这些成果对于开展风险识别、提供风险源素材具有很大的帮助。2)风险识别法(TBI).Marvin等提出的基于分类的风险识别法,主要是从项目分类学的角度考虑风险,对项目的风险项进行分类,从单纯的清单列表走向由分类树与问卷识别过程的统一,从而使软件项目风险项具有结构性的特点。另外,它也秉承了动态管理的特点,使风险识别及后续处理有计划、分步骤、周期性地在项目生命期内进行。3)基于分类的问卷调查表法(TBQ)。该方法是由专家根据项目特点设计风险管理问卷调查表,对企业有关人员进行问卷调查,并根据调查结果对数据进行统计分析。文献在问卷调查的基础上提出一种簇分析方法,对507个软件项目管理人员进行问卷调查。文献在此基础上进一步扩展,提出一种软件风险和性能的层次模型,并对调查结果作了统计分析。2.2.2软件项目过程风险分析1、软件需求阶段的风险软件的开发是从用户的需求开始,最后以书面的形式形成《用户需求规格说明》这一重要的文档。需求分析是开发方确认需求的可行性和一致性的过程,在此阶段开发方需要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失会在软件系统的后续阶段被逐级放大,我们把错误发现阶段与修复代价间的关系分成0-20,则后续阶段修复代价(如表2所示),因此本阶段的风险最大。需求分析是软件设计及实现的基础,在整个软件开发中处于核心地位,需求分析中产生的风险是软件项目失败的主要因素。表2错误发现阶段与修复代价间的关系阶段需求分析软件设计程序编码单元测试验收测试维护相对修复代价0.1~0.20.5125202、设计阶段的风险设计阶段的主要任务是完成系统体系结构的定义,使之能够完成需求阶段的目标。因此需求本身的不完整和对需求分析的不完整及错误的描述或理解,都会在设计阶段被成倍地放大。设计本身的风险主要来自于系统分析人员。分析人员在设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担,和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险,系统的稳定性也会受到影响。从另一个角度上看,业务规则的变化,或说用户需求和将来软件运行环境的变化都是必然的情况,目前软件设计的所谓“通用性”是否就能很好的适应将来需求和运行环境的的变化,是需要认真折衷的,这种折中也蕴涵着很大的风险。设计阶段蕴涵的另一种风险来自于设计文档。设计文档不健全不仅会造成实现阶段的困难,更会给后期的测试和维护工作带来灾难性的后果,例如根本无法对软件系统进行版本升级。3、实现阶段的风险软件的实现从某种意义上讲是软件代码的生产。原代码本身也是文档的一部分,同时它又是将来运行于计算机系统之上的实体。源代码书写的规范性、可读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。4、运行、维护阶段的风险从软件工程的角度看,软件维护费用约占总费用的55%~70%,系统越大,该费用越高。对系统可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统。在软件系统运营期间,主要的风险源自于技术支持体系的无效运转。科学的方法是有一支客户支持队伍不断收集运行中发现的问题,并将解决问题的方法传授给软件系统的所有使用者。2.2.3软件项目风险管理软件项目风险管理是指软件项目组织对软件项目生命周期内可能遇到的风险进行识别、评估、应对和监控,以减少风险的概率和损失,尽可能以最小成本,在最大程度上实现项目目标的科学管理方法。软件项目风险管理主要包括两方面工作:预防风险,在风险没有发生或者风险尚未造成一定危害程度之前,采取积极主动的措施缓解和最小化可预见风险导致的损失;风险发生后的补救,即事先制定好风险发生后的应急措施,并风险发生后的第一时间执行应急措施。项目风险管理的三目标(进度、成本和质量)与项目管理的三目标是一致的。但是,对于软件项目而言,软件质量的风险问题多属于软件可靠性研究范畴,对于软件和软件开发过程的质量审度也有专门的部门(软件质量保证SQA)和专门的学科分枝与相应技术来解决,如软件度量学、统计过程控制等。因而,在软件项目风险理中主要关注的是软件项目的进度和成本目标。本文对现有软件项目风险管理架构体系及理论研究文献归纳总结后得出一个结论:软件项目风险管理是一个过程,是软件项目管理的重要组成部分。在软件项目生命周期中持续不断地识别、评估、控制风险是非常重要的。通常,将软件项目风险管理过程划分为五个步骤:风险管理规划、风险识别、风险评估、风险应对计划、风险监控(如图3所示)。图32.2.4软件项目风险评估与监控1、软件项目风险评估软件项目风险评估,试图从两方面评估每一个风险:=1\*GB3①风险发生的可能性或概率;②如果风险发生了,所产生的后果。风险评估活动包括了4个活动:首先建立一个尺度,以反映风险发生的可能性;然后描述风险的后果;再估算风险对项目以及产品的影响;最后标注风险预测的整体精度,以免产生误解。风险评估的依据是如下形式的三元组:[r,l,x],其中,r表示风险,l表示风险发生的概率,x表示风险产生的影响。进行风险评估必须定义一个风险参考水平值,对于大多数软件项目而言,主要的风险因素(性能、成本、支持、进度)也代表了风险参考水平值。即,对于性能下降、成本超支、支持困难、进度延迟(或这4种的组合),都有一个参考水平值的要求,超过参考水平值就会导致项目被迫终止。如果风险的组合所产生的问题引起一个或多个参考水平值被超过,则工作将会停止。建立风险表,是一种简单的风险预测和评估技术,在第1列列出所有风险,第2列给出每个风险的类型,每个风险发生的概率值有项目组成员分别估算,然后求其平均值,得到一个具有代表性的概率值,将它写在第3列上,接下来就是评估每个风险所造成的影响。根据概率及影响对风险进行排序。高发生概率、高影响的风险放在表的上方,低概率、低影响风险移到表的下方。在风险表上定义一条终止线:只有那些在线上的风险才会得到进一步的关注,而在线下的风险则需要再评估以完成第2次排序。从管理的角度考虑风险影响及概率:一个具有高影响但发生概率很低的风险因素不应该花太多的管理时间;而高影响且发生概率为中到高的风险,以及低影响且高概率的风险,应该首先列入管理考虑之中。所有中止线之上的风险都必须进行管理。风险表中标有RMMM(riskmitigationmonitoringandmanagement)的列指向相应的风险缓解、监控和管理计划。风险表(如表3所示)。表3风险表风险类别概率影响RMMM规模估算可能非常低产品规模60%严重用户数量大大超出计划产品规模30%轻微复用程度低于计划产品规模70%严重最终用户抵制该系统商业影响40%轻微交付期限将被紧缩商业影响40%严重资金将会流失客户特性40%灾难性用户将改变需求产品规模80%严重技术达不到预期的效果建造的技术30%灾难性缺少对使用工具的培训开发环境80%轻微人员缺少经验人员数目及经验30%严重人员流动比较频繁人员数目及经验60%严重………可忽略2、风险缓解和监控风险缓解是一种问题避免活动,风险监控是一种项目跟踪活动,是对解决风险的过程进行监控。风险监控还可以包括识别新的风险并将其反馈到正在进行的风险管理进程中等方面的工作。风险监控的主要目的是评估一个被预测的风险是否真正发生了;保证为风险而定义的缓解步骤被正确地实施;收集能够用于未来风险分析的信息。在很多情况下,项目中发生的问题可以追溯的不止一个风险,风险监控应该试图在整个项目中确定“起源”即什么风险引起了什么问题。第三章软件项目管理中的风险管理应对措施软件风险要完全避免或消除,几乎不可能。但可以通过一些措施减轻或防止风险发生。下面提供几种方法可以帮助我们控制、减轻或防止风险发生。1.接受风险当采取其他风险规避方法的费用超过风险事件造成的损失数额时,可采取自留风险的方法。风险自留是处理风险最普通的方法,它可以是被动的,也可以是主动的。2.规避风险通常在两种情况下采用风险回避方法:①某种特定风险所致的损失概率和损失程度相当大;②应用其他风险处理技术的成本超过其产生的经济效益,采用风险回避措施可使项目受损失的可能性最小。采取风险回避策略,最好在项目活动尚未实施时,这时对项目损失最小。放弃或改变正在进行的项目,付出的代价一般都比较高。3.缓解和降低风险与风险回避相比,风险减轻措施是一种积极的风险处理手段,是指项目班子对不愿放弃也不愿转移的风险,通过降低其损失发生的可能性,缩小其后果不利影响的损失程度来达到控制目的的各种控制技术或方法。这类措施是对付无预警信息项目风险的主要应对措施之一,实际上就是减轻风险的措施。4.转移风险这类风险控制措施多数是用来对付那些概率小、但是损失大,或者项目组织很难控制项目风险的情况。转移风险的实现大多是借助于协议或合同,将损失的法律责任或财务后果转由他人承担。转移风险主要有五种方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论