1、分析软件开发项目的不确定性因素与风险因素,如何预防项目风险软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺、项目进度延误、人员变更以及预算和进度等方面的问题。风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择。风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态。另一方面,风险将涉及思想、观念、行为、地点等因素的改变。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。因此有必要对软件项目中的风险进行分析并采取相
2、应的措施加以管理,尽可能减少风险造成的损失。风险是在项目开始之后才对项目的执行过程其负面的影响,所以软件项目开始之前风险分析的不足,或者是软件项目实施过程中风险应对措施不得力,都有可能造成软件失败。如果对项目进行风险管理,就可以最大限度的减少风险的发生。它是为了将不确定因素出现的概率控制到最低,将不确定性所造成的损失减少到最低限度,对软件项目全过程中的风险识别、分析和应对的过程。软件项目中的风险永远不能全部消除,而只能采用避免、减轻、和接受三种因对策略。避免:通过分析找出发生风险事件的原因,消除这些原因来避免一些特定风险事件的发生。减轻:通过降低风险事件发生的概率或得失衡量来减轻风险对项目的影
3、响,也可采用风险转移的方法来减轻风险对项目的影响。接受:对于一些无法避免的风险,应当接收风险造成的后果或者提前设计相应的应对措施,但这需要一定的资金做后盾。需求变更风险需求变更风险是指需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;产品定义含混的部分比预期需要更多的时间;在做需求中客户参与不够;缺少有效的需求变化管理过程。一个看似很有“钱途”的软件项目,往往由于无限度的需求变更而让项目承建方苦不堪言,甚至最终亏损(实际上项目建设方也面临巨大的风险)。预防这种风险的办法是需要团队成员的高度配合和密切协作的阶段,在进行需求分析的时候要仔细分配团
4、队成员的工作,具体分配如下:如项目经理负责需求分析阶段项目进度的安排和控制;参与项目的各种资源调度;负责项目的总体协调工作,人员组成为双方项目负责人。再如系统分析人员要通过与用户方的技术人员和业务人员进行良好的沟通,了解业务流程、功能需求、系统构想和项目目标,完成软件需求说明书的编制任务,等等。要遏制分析阶段的变更风险,采用以下几种方法:1、充分到位的需求调研。2、用户签字制度。签字的方法可以是用户在需求调研中积极负责的态度,认真对待每个需求分析项。在实际分析中,分析人员要善于与用户沟通,通过系统原型或相似系统演示等手段,消除用户的顾虑;另外,如果用户方代表个人难以决定,可通过召开项目协调会议
5、,由用户的项目有关人员集体决定。3、定期的工作通报制度。4、对签字认可的需求纳入需求管理,对发生的需求变更,执行需求变更处理流程。进度风险有些项目对进度要求非常苛刻(进度要求不高的项目,我们同样要考虑该风险),项目进度的延迟意味着违约或市场机会的错失。软件的工期常常是制约软件项目的主要因素。软件项目工期估算是软件项目初期最困难的工作之一。很多情况下,软件用户对软件的需求是出于实际情况的压力,希望项目承担方尽快开发出软件来。在软件招标时,开发方为了尽可能争取到项目,对项目的进度承诺出已远远超出实际能做到的项目进度,使项目在开始时就存在严重的时间问题。软件开发组织在工期的压力下,往往放弃文档的编写
6、与更新,结果在软件项目的晚期大量需要通过文档进行协调时,却拖累软件进度越来越慢。此外,由于用户配合问题、资源调配等问题也可能使软件项目不能在预定的时间内完成任务。软件项目过程中有自身的客观规律性,用户对软件项目的进度要求不能与软件开发过程的时间需要相矛盾。技术风险在软件项目开发和建设的过程中,战略管理技术因素是一个非常重要的因素。项目组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目的实际情况而选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。重大的技术风险包括:软件结构体系存在问题,使完成的软件产品未
7、能实现项目预定目标;项目实施过程中才用全新技术,由于技术本身存在缺陷或对技术的在掌握不够深入,造成开发出的产品性能以及质量低劣。预防这种风险的办法是选用项目所必须的技术、在技术应用之前,针对相关人员开展好技术培训工作。首先,做好各阶段的技术评审工作,通过集体智慧确保项目所采用技术的可行性以及技术方案的正确性。其次,对新技术的使用要谨慎,要循序渐进,尽量采用成熟的技术方案完成软件开发工作。再次,在技术创新与技术风险之间进行平衡,并做好创新技术的研究和试验工作。需要对软件项目过程中使用的各种技术进行评估,软件项目管理在制定软件开发计划时必须考虑这些因素,并作出合理的权衡决策。质量风险任何软件项目实
8、施过程中缺乏质量标准,或者忽略软件质量监督环节都将对软件的开发构成巨大的风险。有些项目,用户对软件质量有很高的要求,如果项目组成员同类型项目的开发经验不足,则需要密切关注项目的质量风险。矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;开发额外的不需要的功能(镀金),延长了计划进度;严格要求与现有系统兼容,需要进行比预期更多的测试、设计和实现工作;要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作;在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题;开发一种全新的模块将比预期花费更长的时间;依赖正在开发中的技术将延长计划进度。预防这种风险的办法一般是经常和用户交流工作成果、品牌管理采用符合要求的开发流程、认真组织对产出物的检查和评审、计划和组织严格的独立测试等。软件质量的保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。所以制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。结论:软件项目开发过程中面临的风险是多种多样的,风险的大小以及重点各不相同,项目管理人员应当充分考虑,认真分析,在考虑风险损失和合理的风险应对成本之后,选择采用合适的风险应对计划,避免因风险造成各方面的重大损失。