软件开发
APP开发公司
手机软件
苹果IOS开发
android安卓开发
会员系统
三级分销
网站建设
商城网站
小程序开发
微信公众号开发
联系电话:18842388900

软件项目的研发风险管理及其预防控制措施

频道:APP开发 标签:软件项目软件常见风险软件预防措施广州 时间:2019年03月07日 浏览:269次 评论:0条

  摘 要:在项目的建设过程中,风险几乎无处不在。如何有效地识别、控制和管理风险,对项目的成功起着至关重要的影响。本文在自己多年软件项目工程经验的基础上,整理出软件项目经常遇到的一些风险及其预防措施,期望能为项目经理制定项目风险计划和进行风险预防、控制等提供富有价值的参考。
  在项目的建设过程中,风险几乎无处不在(约定:本文谈到的风险,专指给项目带来不利影响的风险)。如何有效地识别、控制和管理风险,对项目的成功起着至关重要的影响。
  一个项目有可以预料的(包括已知的)风险和不可预料的风险,以下作者总结自己多年的软件项目工程经验,整理出软件项目经常遇到的15种可预料的(包括已知的)风险及其预防措施,期望能为项目经理制定项目风险计划和进行风险预防、控制等提供富有价值的参考。
  (1)合同风险
  签订的合同不科学、不严谨,项目边界和各方面责任界定不清等是影响项目成败的重大因素之一。
  预防这种风险的办法是项目建设之初项目经理就需要全面准确地了解合同各条款的内容、尽早和合同各方就模糊或不明确的条款签订补充协议。
  (2)需求变更风险
  需求变更是软件项目经常发生的事情。一个看似很有“钱途”的软件项目,往往由于无限度的需求变更而让项目承建方苦不堪言,甚至最终亏损(实际上项目建设方也面临巨大的风险)。
  预防这种风险的办法是项目建设之初就和用户书面约定好需求变更控制流程、记录并归档用户的需求变更申请。
  (3)沟通不良风险
  项目组与项目各干系方沟通不良是影响项目顺利进展的一个非常重要的因素。
  预防这种风险的办法是项目建设之初就和项目各干系方约定好沟通的渠道和方式、项目建设过程中多和项目各干系方交流和沟通、注意培养和锻炼自身的沟通技巧。
  (4)缺乏领导支持风险
  上层领导的支持是项目获得资源(包括人力资源、财力资源和物料资源等)的有效保障,也是项目遇到困难时项目组最强有力的“后台支撑”。
  预防这种风险的办法是主动争取领导对项目的重视、确保和领导的沟通渠道畅通、经常向领导汇报工作进展。
  (5)进度风险
  有些项目对进度要求非常苛刻(进度要求不高的项目,我们同样要考虑该风险),项目进度的延迟意味着违约或市场机会的错失。
  预防这种风险的办法一般是分阶段交付产品、增加项目监控的频度和力度、多运用可行的办法保证工作质量避免返工。
  (6)质量风险
  有些项目,用户对软件质量有很高的要求,如果项目组成员同类型项目的开发经验不足,则需要密切关注项目的质量风险。
  预防这种风险的办法一般是经常和用户交流工作成果、采用符合要求的开发流程、认真组织对产出物的检查和评审、计划和组织严格的独立测试等。
  (7)系统性能风险
  有些软件项目属于多用户并发的应用系统,系统对性能要求很高,这时项目组就需要关注项目的性能风险。
  预防这种风险的办法一般是在进行项目开发之前先设计和搭建出系统的基础架构并进行性能测试,确保架构符合性能指标后再进行后续工作。
  (8)工具风险
  软件项目开发和实施过程,所必须用到的管理工具、开发工具、测试工具等是否能及时到位、到位的工具版本是否符合项目要求等,是项目组需要考虑的风险因素。[NextPage]
  预防这种风险的办法一般是在项目的汇海阶段就落实好各项工具的来源或可能的替代工具,在这些工具需要使用之前(一般需要提前一个月左右)跟踪并落实工具的到位事宜。
  (9)技术风险
  在软件项目开发和建设的过程中,技术因素是一个非常重要的因素。项目组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目的实际情况而选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。
  预防这种风险的办法是选用项目所必须的技术、在技术应用之前,针对相关人员开展好技术培训工作。
  (10)团队成员能力和素质风险
  团队成员的能力(包括业务能力和技术能力)和素质,对项目的进展、项目的质量具有很大的影响,项目经理在项目的建设过程需要实时关注该因素。
  预防这种风险的办法是在用人之前先选对人、开展有针对性的培训、将合适的人安排到合适的岗位上。
  (11)团队成员协作风险
  团队成员是否软件公司能齐心协力为项目的共同目标服务,是影响进度和质量的关键因素。
  预防这种风险的办法是项目在建设之初项目经理就需要将项目目标、工作任务等和项目成员沟通清楚,采用公平、公正、公开的绩效考评制度,倡导团结互助的工作风尚等。
  (12)人员流动风险
  项目成员特别是核心成员的流动给项目造成的影响是非常可怕的。人员的流动轻则影响项目进度,重则导致项目无法继续甚至被迫夭折。
  预防这种风险的办法是尽可能将项目的核心工作分派给多人(而不要集中在个别人身上)、加强同类型人才的培养和储备。
  (13)工作环境风险
  工作环境(包括办公环境和人文环境)的好坏直接影响项目成员的工作情绪和工作效率。
  预防这种风险的办法是在项目建设之前就选择和建设好适合项目特点和满足项目成员期望的办公环境、在项目的建设过程中不断培育和调整出和谐的人文环境。
  (14)系统运行环境风险
  目前,大部分项目系统集成和软件开发是分开进行的(甚至由不同公司承接)。因此,软件系统赖以运行的硬件环境和网络环境的建设进度对软件系统是否能顺利实施具有相当大的影响。
  预防这种风险的办法是和用户签定相关的协议、跟进系统集成部分的实施进度、及时提醒用户等。
  (15)分包商风险
  有些项目可能会涉及到将系统的部分功能分包出去,这时项目组就需要关注项目的分包商风险。
  软件项目都存在着这样那样的风险,尤其是数据分析项目这就需要我们在进行软件开发项目时更加注重风险管理,注重风险分析,做好风险管理计划,积极寻求风险应对方法,从而提高项目成功的机会。
  一、风险识别
  软件项目由于其本身的创造性,注定了其风险的复杂性,在具体的风险识别过程中,我们应重点注意以下风险:
  1. 需求风险。主要是指需求不确定性的风险,比如:由于系统使用者对系统将要实现的目标是模糊的、笼统的,而对于具体的需求不能准确描述;而且系统受使用者的个人习惯、知识背景影响较大,在系统范围和系统性能方面也存在着很多不确定性因素;另外,由于企业在发展过程中不断进行的业务流程调整等,都会给系统带来较大的需求不确定性风险,甚至是陷于需求膨胀的状态,便系统难以满足使用者的需求,难以适应企业发展的需要。
  2. 管理风险。软件项目的管理本身就是一项具有风险性的工作,而数据分析项目由于是通过对其他系统的整合,来获取分析所必需的数据,其数据来源可能是多个相关系统,对项目的协调管理工作要求更高。因此,其管理风险主要表现在:工作缺乏计划性或是有计划而不能严格执行;管理工作的随意性、盲目性比较大;没有充分意识到风险管理的重要性,因而没有充分分析可能存在的风险和应该采取的风险应对策略;项目团队内部沟通不够,导致开发人员对系统设计的理解存在偏差等等。
  3. 技术风险。软件技术飞速发展,各种新技术、新应用层出不穷。而数据分析项目不仅涉及到数据交换、数据仓库等技术,还需要依靠大量的数学分析模型,这就要求系统分析、设计人员要具有较好的软件技术、数学背景知识,同时还要对所分析的行业业务非常了解。因此,系统分析、设计人员的个人素质以及项目团队的整体素质将会影响到项目实施的成败。
  二、风险分析
  前述数据分析项目的三大风险对项目的影响都是非常大的,如果按定性的风险分析方法,其影响都是“高”级。
  1、需求风险。需求风险的形成,可以从三方面进行分析:首先是由于应用部门的介入与参与程度不深,考虑需求往往从部门或局部的角度出发;其次是项目组对需求的调研目标不明晰,分析不透彻,缺乏有效的需求变化管理所造成的。这大都是因为从事软件开发的都是“高科技人员”,都具有“从专业或学术角度出发”的特点,而往往忽视了对业务知识的深入了解,不能很好地理解甚至是误解客户的需求。第三,是由于缺乏与决策层进行深层次的交流,难以掌握企业的发展趋势,对需求的延伸性不明确。这些需求不确定性的风险,都可能会造成大量工作“跑题”浪费,甚至是到项目都快要完成时,依然出现应用部门对系统提出一些基本的业务需求,或是软件功能实现了,却发现实际业务已发生了变化,导致软件失去了应有的价值等等,使时间和成本的投入成倍增长,甚至是系统无法正常投入使用。
  2、管理风险。管理风险大都是由于项目经理或管理人员缺乏项目管理知识,对项目的工作范围不明确,对总体计划、阶段计划的作用认识不足,对项目的风险估计不足,而造成计划与控制脱节,无法进行有效的项目进度管理;而且,由于项目管理人员的协调管理能力不足,执行力度不够,使得项目协调成本、时间成本大大增加,造成工作延误等。
  3、技术风险。技术风险可以直接导致项目失败。选择没有成功案例、不熟悉行业业务的开发商;项目的目标、范围超过了项目组的实现能力;采用不熟悉或是欠成熟先进的开发工具、不符合行业特点的数据分析模型等等,都无疑会使项目处于毁灭性的风险之中。
  三、风险应对
  风险分析活动分析的目的在于建立处理风险的策略。而风险规避的最好方式是把风险控制在项目汇海阶段,把损失减小到最小程度。基于以上对数据分析项目风险的识别与分析,可以采用以下措施来规避或减小风险:
  1、建立畅通的沟通渠道和沟通策略。需求的不确定性风险很大程度上是由沟通不畅引起的。因此,在需求调研阶段,要多和应用部门沟通,了解他们真正的需求,最好能将目标系统的模型向应用部门演示,并得到反馈意见,直到双方都达成共识;形成双方认可的验收方案和验收标准,并做好变更控制和配置管理,尽量降低需求不确定性风险。
  2、配备高素质的项目管理人员。最好是具有丰富的项目管理经验,或是经过系统的项目管理知识的人员来担任项目经理,通过制定有效的项目管理计划,并认真执行落实,提高项目的可控性。同时,风险不是静止的、一成不变的,它会随着项目状况的变化而变化,因此,风险管理必须被作为一个日常的正式活动列入项目工作计划,成为项目管理人员的一个重要工作。
  3、建立一支协作高效的项目团队。技术部门有技术,业务部门有需求,因此,项目组中不仅要有开发商、技术部门的参与,更要有应用部门的参与,形成一个合作的项目工作团队,共同理解企业的战略规划和业务发展,从整体全局的角度,提出有效的信息化需求,共同研讨项目进展中出现的问题,共同控制项目进度,共同为项目质量把关。
  4、制定科学的风险管理计划。从风险管理的角度对项目规划或计划进行审核,建立“风险清单”,对每个可能存在风险的表现、范围、时间做出尽量准确的判断并对风险进行监控,提前做好应对准备。如针对需求风险,要制定相应的需求变更控制;针对技术锁定风险,要安排的核心技术人员全程参与开发等等。
  5、选择合适的开发技术。虽然在系统设计时需要考虑新技术的发展和技术的先进性问题,但“最好的不一定是最合适的,最合适的才是最好的”,如果项目组的人员对所需开发技术不熟,在满足业务需求的前提下,尽可能采用熟悉的技术来减轻项目在成本或进度方面的影响,也可以事先进行培训来减轻对项目的影响,以避免因技术瓶颈导致的项目失败。
  6、采用快速原型和迭代模型进行开发。尽管前期会对应用部门进行需求调研和需求分析,但应用部门的需求往往会随着时间的推移、业务发展的变化而有所变化,因此,技术部门要强调敏捷开发,缩短软件第一版本的上线周期,尽快给用户一个快速原型启发用户的需求,并持续为用户提供有价值的软件。同时,以迭代法取代传统的瀑布法开发过程,加强各阶段与用户的沟通,对各个功能逐步完善,可以降低各种不确定因素带来的实现风险,每个迭代过后,软件都向目标接近一步,即使目标发生改变,迭代模型也比其他筛选和建立目标的开发模型,更便于转向新目标。
  软件项目风险管理是一种特殊的规划方式,对任何一个软件项目,我们可以有最佳的期望值,但更应该要有最坏的准备——只有正视风险,我们才能更好地管理风险,规避风险,直至消除风险,获得项目的成功。
 

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。