预习思考讨论题3:软件开发中可能存在哪些风险?如何应对这些风险?

软件开发中的风险及应对方法

软件开发中的风险及应对方法

by 3208010208 杨文秀 -
number of replies: 0
  •        需求变更风险

  需求变更风险是指需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;产品定义含混的部分比预期需要更多的时间;在做需求中客户参与不够;缺少有效的需求变化管理过程。一个看似很有“钱途”的软件项目,往往由于无限度的需求变更而让项目承建方苦不堪言,甚至最终亏损(实际上项目建设方也面临巨大的风险)。
  预防这种风险的办法是需要团队成员的高度配合和密切协作的阶段,在进行需求分析的时候要仔细分配团队成员的工作,具体分配如下:如项目经理负责需求分析阶段项目进度的安排和控制;参与项目的各种资源调度;负责项目的总体协调工作,人员组成为双方项目负责人。再如系统分析人员要通过与用户方的技术人员和业务人员进行良好的沟通,了解业务流程、功能需求、系统构想和项目目标,完成软件需求说明书的编制任务,等等。

  •         进度风险

  有些项目对进度要求非常苛刻(进度要求不高的项目,我们同样要考虑该风险),项目进度的延迟意味着违约或市场机会的错失。软件的工期常常是制约软件项目的主要因素。软件项目工期估算是软件项目初期最困难的工作之一。很多情况下,软件用户对软件的需求是出于实际情况的压力,希望项目承担方尽快开发出软件来。在软件招标时,开发方为了尽可能争取到项目,对项目的进度承诺出已远远超出实际能做到的项目进度,使项目在开始时就存在严重的时间问题。软件开发组织在工期的压力下,往往放弃文档的编写与更新,结果在软件项目的晚期大量需要通过文档进行协调时,却拖累软件进度越来越慢。此外,由于用户配合问题、资源调配等问题也可能使软件项目不能在预定的时间内完成任务。软件项目过程中有自身的客观规律性,用户对软件项目的进度要求不能与软件开发过程的时间需要相矛盾。
  渐近明细是项目的特点,特别是对于软件开发项目,并不是一个一成不变的过程。开始时的项目计划可以先制定得比较粗一些,随着项目的进展,特别是需求明确以后,项目的计划就可以进一步的明确,这时候应该对项目计划进行调整修订,通过变更手续取得项目干系人的共识,在这个过程中发生错误是在所难免的,因此必要的测试是项目渐近明细的方式之一,随着项目的推进再进一步细化、调整、修正和完善。持续地监控,项目进度控制是随着项目的进行而不断进行的,是一个动态过程,也是一个循环进行的过程。从项目开始,实际进度就进入了进行轨迹,直到项目结束,这个过程的每一个环节都必须完全在监控之中。在计划制定时就要确定项目总进度目标与分进度目标;在项目进展的全过程中,进行计划进度与实际进度的比较,及时发现偏离,及时采取措施纠正或者预防,协调项目参与人员之间的进度关系。

  •   预算风险、技术风险

  在软件项目开发和建设的过程中,战略管理技术因素是一个非常重要的因素。项目组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目的实际情况而选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。重大的技术风险包括:软件结构体系存在问题,使完成的软件产品未能实现项目预定目标;项目实施过程中才用全新技术,由于技术本身存在缺陷或对技术的在掌握不够深入,造成开发出的产品性能以及质量低劣。
  预防这种风险的办法是选用项目所必须的技术、在技术应用之前,针对相关人员开展好技术培训工作。首先,做好各阶段的技术评审工作,通过集体智慧确保项目所采用技术的可行性以及技术方案的正确性。其次,对新技术的使用要谨慎,要循序渐进,尽量采用成熟的技术方案完成软件开发工作。再次,在技术创新与技术风险之间进行平衡,并做好创新技术的研究和试验工作。需要对软件项目过程中使用的各种技术进行评估,软件项目管理在制定软件开发计划时必须考虑这些因素,并作出合理的权衡决策。

  •   质量风险

  任何软件项目实施过程中缺乏质量标准,或者忽略软件质量监督环节都将对软件的开发构成巨大的风险。有些项目,用户对软件质量有很高的要求,如果项目组成员同类型项目的开发经验不足,则需要密切关注项目的质量风险。矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;开发额外的不需要的功能(镀金),延长了计划进度;严格要求与现有系统兼容,需要进行比预期更多的测试、设计和实现工作;要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作;在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题;开发一种全新的模块将比预期花费更长的时间;依赖正在开发中的技术将延长计划进度。
  预防这种风险的办法一般是经常和用户交流工作成果、品牌管理采用符合要求的开发流程、认真组织对产出物的检查和评审、计划和组织严格的独立测试等。软件质量的保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。所以制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。

  •   人力资源风险

  软件的开发不同于其他的工程,它是智力密集型、劳动密集型、项目,受人员资源的影响很大。软件的开发在不同的工程阶段,需要的人员不同,同样需要团队成员之间的密切配合。在人力资源使用过程中,人员能力的表现往往体现在软件成果监控的困难导致对人员能力观察的困难。人员流失、人员不能适合软件项目的要求,都可造成人力资源上的风险。人力资源的能力(包括业务能力和技术能力)和素质,对项目的进展、项目的质量具有很大的影响,项目经理在项目的建设过程需要实时关注该因素。
  预防这种风险的办法是在用人之前先选对人、开展有针对性的培训、将合适的人安排到合适的岗位上。要降低项目的人力资源风险,就要保证参加项目的各类人员能够胜任项目中所承担的工作。因此,实施双方应对参与人员进行认真地评估。这种评估是两个方面的,不仅是用户对开发方人员的评估,也包括开发方对参与项目的用户方成员的评估。同时,应保证项目人员对项目的投入程度。另外,项目经理要采取相应的措施维持开发队伍的稳定,将参与项目人员的业绩评估与项目实施的状况相联系,制定适当的奖惩措施。同时,项目经理也需要做好项目组人员变动的应对措施。开发人员的水平应该符合项目开发要求。技术上是应该和算选取的开发工具相配套。是能够自始至终地参加软件开发工作。是能够集中全部精力投入软件开发工作。并且员工对自己的工作有正确的期望。要接受过必要的培训。保证开发人员的流动保证工作的连续性。尽可能将项目的核心工作分派给多人(而不要集中在个别人身上)、加强同类型人才的培养和储备。

  •   工具风险

  软件项目开发和实施过程,所必须用到的管理工具、开发工具、测试工具等是否能及时到位、到位的工具版本是否符合项目要求等,是项目组需要考虑的风险因素。有些软件项目属于多用户并发的应用系统,系统对性能要求很高,这时项目组就需要关注项目的性能风险。
  预防这种风险的办法一般是在项目的启动阶段就落实好各项工具的来源或可能的替代工具,在这些工具需要使用之前(一般需要提前一个月左右)跟踪并落实工具的到位事宜。在进行项目开发之前先设计和搭建出系统的基础架构并进行性能测试,确保架构符合性能指标后再进行后续工作。并且团队成员的技术是偏向该种工具的。