《软件开发过程存在的风险(共6页).docx》由会员分享,可在线阅读,更多相关《软件开发过程存在的风险(共6页).docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时、按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属于软件项目开发过程中考虑的风险问题。软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺、项目进度延误、人员变更以及预算和进度等方面的问题。风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择。风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态。另一方面,风险将
2、涉及思想、观念、行为、地点等因素的改变。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。因此有必要对软件项目中的风险进行分析并采取相应的措施加以管理,尽可能减少风险造成的损失。风险是在项目开始之后才对项目的执行过程其负面的影响,所以软件项目开始之前风险分析的不足,或者是软件项目实施过程中风险应对措施不得力,都有可能造成软件失败。如果对项目进行风险管理,就可以最大限度的减少风险的发生。它是为了将不确定因素出现的概率控制到最低,将不确定性所造成的损失减少到最低限度,对软件项目全过程中的风险识别、分析和应对的过程。在整个软件项目
3、的实施过程中,可能形成项目风险的因素有很多,如在项目启动阶段可能存在项目目标不明确,与用户沟通少导致项目范围不明确等分先因素;在系统设计阶段可能因为缺乏有经验的分析人员、设计人员导致和设计的结果不能直接用于程序员的开发;在项目实施阶段可能因为开发环境没有准备好,程序员开发能力差,或者因为用户提出新的功能需求导致原有设计实效、开发费用超支,还有可能因为开发人员的流动导致项目延期,客户不满意等情况。软件项目运用专家调查法和头脑风暴法分析软件开发项目中,并将其进行整理分类。由于与客户沟通不畅对客户的需求了解不足造成的风险在软件开发项目整个生命周期的中都存在的风险,主要包括需求变更风险,涉及风险,过程
4、风险,安装及维护风险。由于管理人员素质不够,经验不足,沟通不畅,任务或其分配不合理,对项目的控制力度不够造成的各种风险,主要包括进度风险,预算风险,管理能力风险,信息安全风险。由于技术力量不足,开发环境工具不足造成的。主要包括技术风险,质量风险,软件设计工具风险,软件开发工具风险,员工技能风险。由于公司或项目组内外部环境变化所导致的风险,主要包括人力资源风险,政策风险,市场风险,营销风险。软件项目中的风险永远不能全部消除,而只能采用避免、减轻、和接受三种因对策略。避免:通过分析找出发生风险事件的原因,消除这些原因来避免一些特定风险事件的发生。减轻:通过降低风险事件发生的概率或得失衡量来减轻风险
5、对项目的影响,也可采用风险转移的方法来减轻风险对项目的影响。接受:对于一些无法避免的风险,应当接收风险造成的后果或者提前设计相应的应对措施,但这需要一定的资金做后盾。下面我们就以上四大类别中的一些主要风险进行具体分析以及提出应对策略。需求变更风险需求变更风险是指需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;产品定义含混的部分比预期需要更多的时间;在做需求中客户参与不够;缺少有效的需求变化管理过程。一个看似很有“钱途”的软件项目,往往由于无限度的需求变更而让项目承建方苦不堪言,甚至最终亏损(实际上项目建设方也面临巨大的风险)。预防这种风险的
6、办法是需要团队成员的高度配合和密切协作的阶段,在进行需求分析的时候要仔细分配团队成员的工作,具体分配如下:如项目经理负责需求分析阶段项目进度的安排和控制;参与项目的各种资源调度;负责项目的总体协调工作,人员组成为双方项目负责人。再如系统分析人员要通过与用户方的技术人员和业务人员进行良好的沟通,了解业务流程、功能需求、系统构想和项目目标,完成软件需求说明书的编制任务,等等。要求需求分析阶段的团队按照项目管理中典型的矩阵式结构来开展,这种结构能够有效的利用项目资源,减少条块分割的冲突,增加了沟通和协调的机会,降低了项目的执行成本,能够充分发挥项目经理和个分组人员的积极性,并通过采用一些激励机制,保
7、证项目成员有充分的责任感和成就感。并且要有效的遏制需求变更,软件的需求变更时软件项目开发和实施的最大敌人,在软件项目的各个阶段都可能出现。需求变更的越晚,对项目造成的危害就越大。所以对软件的需求变更控制贯穿与软件实施的各个阶段。在需求分析阶段用户需求变更主要表现为用户需求的反复,容易使需求分析工作原地转圈,无法按计划完成需求分析工作。要遏制分析阶段的变更风险,采用以下几种方法:1、充分到位的需求调研。2、用户签字制度。签字的方法可以是用户在需求调研中积极负责的态度,认真对待每个需求分析项。在实际分析中,分析人员要善于与用户沟通,通过系统原型或相似系统演示等手段,消除用户的顾虑;另外,如果用户方
8、代表个人难以决定,可通过召开项目协调会议,由用户的项目有关人员集体决定。3、定期的工作通报制度。即开发项目经理要定期将需求分析阶段的工作进展情况、存在的问题进行汇总,向项目双方的高层领导、项目管理委员会进行工作汇报。促使项目双方人员以积极协作的心态开展需求调研工作,减少变更,确定进度。4、对签字认可的需求纳入需求管理,对发生的需求变更,执行需求变更处理流程。另外,在该过程中,分析人员需要对所有需求项目分析项目进行分类管理,按照其重要程度及发现变更后造成的影响范围大小,将不同的需求项分别设置不同的优先级。在需求分析工作中,重点要解决好优先级别更高的需求项的调研及确认工作。可最大限度地降低需求变更
9、发生的可能性,将变更造成的影响减小到最小。进度风险有些项目对进度要求非常苛刻(进度要求不高的项目,我们同样要考虑该风险),项目进度的延迟意味着违约或市场机会的错失。软件的工期常常是制约软件项目的主要因素。软件项目工期估算是软件项目初期最困难的工作之一。很多情况下,软件用户对软件的需求是出于实际情况的压力,希望项目承担方尽快开发出软件来。在软件招标时,开发方为了尽可能争取到项目,对项目的进度承诺出已远远超出实际能做到的项目进度,使项目在开始时就存在严重的时间问题。软件开发组织在工期的压力下,往往放弃文档的编写与更新,结果在软件项目的晚期大量需要通过文档进行协调时,却拖累软件进度越来越慢。此外,由
10、于用户配合问题、资源调配等问题也可能使软件项目不能在预定的时间内完成任务。软件项目过程中有自身的客观规律性,用户对软件项目的进度要求不能与软件开发过程的时间需要相矛盾。因此,对于这种风险解决方案一般是分阶段交付产品、增加项目监控的频度和力度、多运用可行的办法保证工作质量避免返工。在项目实施的时间进度管理上,需要充分考虑各种潜在因素,适当留有余地;任务分解要详细,便于考核;在执行过程中,应该强调项目按照进度执行的重要项,再考虑任何问题时,都要经保持进度作为先决条件;同时,合理利用赶工期及快速跟进等方法,充分利用资源。乐观主义应受到慎重分析。在进度安排上适度悲观,在项目的实施中适度乐观,做到悲观并
11、不消极,乐观并不大意。项目进行中盲目增加人员可能造成事倍功半的效果,所以任务、人力、时间三者之间存在最佳组合,值得项目负责人引起足够重视。应该避免:某方面的人员没有到位,或者在多个项目的情况下某方面的人员中途被抽到其他项目,或身兼多个项目,或在别的项目中无法抽身投入本项目。为系统测试安排足够的时间,能使项目进度在改变之初就被发现,这对及时调整项目进度至关重要。渐近明细是项目的特点,特别是对于软件开发项目,并不是一个一成不变的过程。开始时的项目计划可以先制定得比较粗一些,随着项目的进展,特别是需求明确以后,项目的计划就可以进一步的明确,这时候应该对项目计划进行调整修订,通过变更手续取得项目干系人
12、的共识,在这个过程中发生错误是在所难免的,因此必要的测试是项目渐近明细的方式之一,随着项目的推进再进一步细化、调整、修正和完善。持续地监控,项目进度控制是随着项目的进行而不断进行的,是一个动态过程,也是一个循环进行的过程。从项目开始,实际进度就进入了进行轨迹,直到项目结束,这个过程的每一个环节都必须完全在监控之中。在计划制定时就要确定项目总进度目标与分进度目标;在项目进展的全过程中,进行计划进度与实际进度的比较,及时发现偏离,及时采取措施纠正或者预防,协调项目参与人员之间的进度关系。预算风险技术风险在软件项目开发和建设的过程中,战略管理技术因素是一个非常重要的因素。项目组一定要本着项目的实际要
13、求,选用合适、成熟的技术,千万不要无视项目的实际情况而选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。重大的技术风险包括:软件结构体系存在问题,使完成的软件产品未能实现项目预定目标;项目实施过程中才用全新技术,由于技术本身存在缺陷或对技术的在掌握不够深入,造成开发出的产品性能以及质量低劣。预防这种风险的办法是选用项目所必须的技术、在技术应用之前,针对相关人员开展好技术培训工作。首先,做好各阶段的技术评审工作,通过集体智慧确保项目所采用技术的可行性以及技术方案的正确性。其次,对新技术的使用要谨慎,要循序渐进,尽量采用成
14、熟的技术方案完成软件开发工作。再次,在技术创新与技术风险之间进行平衡,并做好创新技术的研究和试验工作。需要对软件项目过程中使用的各种技术进行评估,软件项目管理在制定软件开发计划时必须考虑这些因素,并作出合理的权衡决策。质量风险任何软件项目实施过程中缺乏质量标准,或者忽略软件质量监督环节都将对软件的开发构成巨大的风险。有些项目,用户对软件质量有很高的要求,如果项目组成员同类型项目的开发经验不足,则需要密切关注项目的质量风险。矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;开发额外的不需要的功能(镀金),延长了计划进度;严格要求与现有系统兼容,需要进行比预期更多的测试、设计和实
15、现工作;要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作;在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题;开发一种全新的模块将比预期花费更长的时间;依赖正在开发中的技术将延长计划进度。预防这种风险的办法一般是经常和用户交流工作成果、品牌管理采用符合要求的开发流程、认真组织对产出物的检查和评审、计划和组织严格的独立测试等。软件质量的保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。所以制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。工具风险软件项目开发和实施过程,所必须用到的管理工具、开发工具、测试工具等是否
16、能及时到位、到位的工具版本是否符合项目要求等,是项目组需要考虑的风险因素。有些软件项目属于多用户并发的应用系统,系统对性能要求很高,这时项目组就需要关注项目的性能风险。预防这种风险的办法一般是在项目的启动阶段就落实好各项工具的来源或可能的替代工具,在这些工具需要使用之前(一般需要提前一个月左右)跟踪并落实工具的到位事宜。在进行项目开发之前先设计和搭建出系统的基础架构并进行性能测试,确保架构符合性能指标后再进行后续工作。并且团队成员的技术是偏向该种工具的。人力资源风险软件的开发不同于其他的工程,它是智力密集型、劳动密集型、项目,受人员资源的影响很大。软件的开发在不同的工程阶段,需要的人员不同,同
17、样需要团队成员之间的密切配合。在人力资源使用过程中,人员能力的表现往往体现在软件成果监控的困难导致对人员能力观察的困难。人员流失、人员不能适合软件项目的要求,都可造成人力资源上的风险。人力资源的能力(包括业务能力和技术能力)和素质,对项目的进展、项目的质量具有很大的影响,项目经理在项目的建设过程需要实时关注该因素。预防这种风险的办法是在用人之前先选对人、开展有针对性的培训、将合适的人安排到合适的岗位上。要降低项目的人力资源风险,就要保证参加项目的各类人员能够胜任项目中所承担的工作。因此,实施双方应对参与人员进行认真地评估。这种评估是两个方面的,不仅是用户对开发方人员的评估,也包括开发方对参与项
18、目的用户方成员的评估。同时,应保证项目人员对项目的投入程度。另外,项目经理要采取相应的措施维持开发队伍的稳定,将参与项目人员的业绩评估与项目实施的状况相联系,制定适当的奖惩措施。同时,项目经理也需要做好项目组人员变动的应对措施。开发人员的水平应该符合项目开发要求。技术上是应该和算选取的开发工具相配套。是能够自始至终地参加软件开发工作。是能够集中全部精力投入软件开发工作。并且员工对自己的工作有正确的期望。要接受过必要的培训。保证开发人员的流动保证工作的连续性。尽可能将项目的核心工作分派给多人(而不要集中在个别人身上)、加强同类型人才的培养和储备。结论:软件项目开发过程中面临的风险是多种多样的,风
19、险的大小以及重点各不相同,项目管理人员应当充分考虑,认真分析,在考虑风险损失和合理的风险应对成本之后,选择采用合适的风险应对计划,避免因风险造成各方面的重大损失。如何进行风险控制识别和分析风险并不是软件风险管理的最终目标。针对所发现的每一个软件风险,尤其是高危险度的软件风险,风险管理还需要对它们进行有效的控制,包括:(1) 制定风险管理计划:针对各个重要风险制定风险管理计划,并确保它们的一致性;(2)化解风险:执行风险管理计划,以缓解或消除风险;(3)监控风险:监控风险化解的过程。n 制定风险管理计划针对每一个重要的软件风险,制定相应的处理该软件风险的计划。风险管理计划主要描述有关软件风险处理
20、的以下内容- 软件风险名称- 软件风险由谁引起- 软件风险的表现形式是什么- 软件风险可能什么时候发生- 为什么会发生该软件风险- 如何避免或者消除软件风险的发生- 软件风险发生后的处理措施n 风险化解方式执行风险管理计划,以缓解或消除风险。一般地,软件风险化解有以下几种方式。- 避免风险采取主动和积极的措施来规避软件风险,将软件风险发生的概率控制为零。例如针对用户可能没有时间参加需求评审这一软件风险,项目组可以考虑选择用户方便的时间来进行需求评审,这样“用户不能出席需求评审会”这一软件风险就不会发生。- 转移风险将可能或者潜在的软件风险转移给其它的单位或个人,从而使得自己不再承担该软件风险。
21、例如如果开发某个子系统存在技术和人力资源方面的风险,可以考虑将它外包给其它软件开发公司,从而将该软件风险从项目中转移出去。- 消除发生软件风险的根源如果知道导致软件风险发生的因素,那么针对这些因素,采取手段消除软件风险发生的根源。例如如果发现导致小刘离开项目组的主要原因是薪酬太低,那么可以通过给小刘增加薪酬来消除发生软件风险的根源。n 风险监控在风险评估和控制过程中,项目组人员和负责人必须对软件风险的化解程度及其变化(如发生概率、可能导致的损失和危险度)进行检查和监控,并对收集到的有关软件风险信息进行记录,以促进对软件风险的持续管理。风险监控的主要内容包括:监控和跟踪重要软件风险,记录这些软件风险危险度的变化以及软件风险化解的进展,确认软件风险是否已经得到化解和消除,是否有新的软件风险发生等等。专心-专注-专业