您好, 访客   登录/注册

软件项目管理中风险控制策略研究

来源:用户上传      作者:詹红艳

  摘  要: 风险的发生在软件项目开发过程中是必然的,如何有效的降低在其过程中的风险,最大程度上减小风险对项目的影响是本文研究的重点所在。首先,根据实际情况,本文先对软件项目管理中风险进行分类,并阐明了影响,说明了风险识别、分析、应对以及控制的过程,提出了风险优化的策略,并指出了加强项目成员风险培训管理的重要性。
  关键词: 软件;项目管理;风险管理;控制策略
  中图分类号: TP31    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.06.053
  本文著录格式:詹红艳. 软件项目管理中风险控制策略研究[J]. 软件,2019,40(6):230232
  【Abstract】: It is inevitable to have risk in process of software project development. It is an important issue of the paper to reduce risk occurrence probability and risk effect scientifically. Firstly, according to actual situation, the paper classifies risks in software project management, clarifies the impact, explains process of risk identification, analysis, response and control, puts forward risk optimization strategy, and points out importance of strengthening risk training management of project members.
  【Key words】: Software; Project management; Risk management; Control strategy
  0  引言
  隨着我国现代化脚步的不断推进,信息产业的发展蒸蒸日上,软件项目层出不穷,软件行业发展越来越快,软件行业为我国创造了巨大的财富。软件项目风险管理也随之变得十分重要,在软件项目开发过程当中往往会遇到一些风险,如何规避风险,如何降低风险影响率成为了项目管理的重点,也是软件项目成败的关键因素。
  软件项目风险是由项目进行过程中的一些不确定的事件或条件所引起的,可能会引发软件开发过程中风险因素指的是可能对项目造成消极影响或积极作用条件,例如潜在的需求、假设条件、制约因素或某种状况等,所以软件开发过程中一旦有风险发生,就会使得项目受到影响,譬如成本增加、进度受到影响等等[1]。
  1  软件项目风险分类及其影响
  1.1  产品规模风险
  项目风险与产品规模密切相关,产品规模越大项目风险也越大。并且在实际操作过程中,估算项目规模的方法、规模估算的精确度、用户数等因素也与产品风险有关。通常项目规模越大存在的问题越多,越复杂。
  1.2  需求风险
  项目需求是一个不可控因素,由于种种因素的影响导致项目在确定需求时都有不确定性,如果在项目进行前到项目前期仍未解决这些不确定性,项目就将会受到极大的威胁。因此团队需要在项目研发前尽早控制与需求相关的风险因素,避免影响产品的品质,使产品投入市场后达不到预期目标。在这个过程中如果客户对项目的没有足够的认同度,使得客户在项目研发过程中参与度不够,比如在项目需求分析的过程中客户参与度差甚至没有参与,从而导致客户不能清晰认识产品,亦或者是客户的需求不断发生变化等都属于与客户有关的需求风险因素。
  1.3  相关性风险
  在软件开发过程中有很多种风险,但是从本质上进行分析,风险都是由于内部或外部因素导致的,与之有关的因素有:团队成员之间的依赖性、项目复用性、客户供应信息、分包转包商的关系等。所以做风险应对预案的时候需要做可行性计划,在发生问题时及时的获取资源,解决问题[2]。
  1.4  技术风险
  在软件开发行业技术的更替速度快,工作人员缺乏从业经验都会对项目的开发造成影响。早期准确的风险识别是解决风险的关键,因此在项目技术团队组建前需要提前招聘培训师,顾问和适合的人才,尽早避免一些技术风险。与技术有关的风险有:员工缺乏培训、员工对技术的理解不到位、从业经验不足,对新技术不了解、不熟悉等。
  1.5  管理风险
  管理的问题有时会掣肘项目的发展,因为写风险管理的人有时会缺乏自检的品行,导致风险管理计划并未包含所有的管理活动,这个问题会对项目造成很大的影响。对于这个问题可以通过划分每个成员的任务和责任进行解决,实际操作过程中与之相关的风险因素有:计划和任务定义不够充分,项目成员沟通不清楚,项目干系人识别不清晰等。
  1.6  安全风险
  软件开发过程就是一个创造过程,因此在这过程中,生产资料即产品核心技术或者设计思路,对这些核心技术的保密就显得十分重要。但是我国对知识产权的保护意识还比较淡薄,许多团队对项目的开发重视大于对知识产权的保护。由于软件行业的人员流动性大,项目有关信息被泄露,让项目的核心信息被其他公司窃取,导致项目失败,这对项目开发具有很大的威胁。
  2  软件项目风险管理的过程
  2.1  风险识别
  现阶段风险识别是指对软件开发项目过程中可能造成影响的因素进行判断识别,并对可能对项目造成影响的因素特征进行记录,对已发现并解决或者已发现未解决的问题记录整理,这个过程需要对风险来源进行追溯,对风险产生条件进行确定,然后对风险特征做出完整描述。通过这种风险识别和风险归档的方法可以为项目积累知识和技能提供强有力的理论和经验支撑。   在整个风险识别活动过程中需要项目参与者参加识别,比如就项目团队而言其团队负责人、团队技术骨干,其他单位参与者有专业项目风险管理团队、专家、最终用户等参与者。在此过程中应倡导呼吁全体与项目核心相关人员参与到潜在风险的识别工作中,因为风险的产生有不确定性,在项目的推进过程中,随时可能产生新的风险[3]因此风险识别工作是一个反复进行的过程,需要所有骨干人员的参与并且应该伴随项目的整个生命周期。识别风险常用方法有:头脑风暴、德尔菲技术、访谈、根本原因分析、假设分析、图解分析技术等。
  2.2  风险分析
  风险分析包括实施定性和实施定量风险分析两部分。实施定性风险分析是对已识别的风险发生的可能性、影响程度等因素对风险的优先级进行评估。但是这种方法容易受项目参与者主观因素的影响。因此,需要建立科学的评定标准,有助于降低评定者的主观因素的影响。定性分析主要方法有风险概率和影响评估、风险数据质量评估、风险分类、风险紧迫性评估等。
  在定性风险分析过程中被确定为对项目的竞争性需求存在潜在重大影响的风险需要使用定量风险分析风险对项目目标的影响,评估所有风险对项目的总体影响。主要分析方法有:访谈、概率分布、敏感性分析、预期货币价值分析、建模和模拟技术等。实施定量风险分析一般是在定性分析之后开展,由项目经理运用专家判断来确定定量风险分析的必要性和有效性。
  在软件项目风险分析过程中,采用哪种方法进行风险分析,取决于可用的时间和预算,以及风险分析的需求[4]。但是为了风险更好的管控,建议反复开展风险定量分析,以确定项目发展过程中风险的降低程度是否令人满意。
  2.3  风险应对和控制
  风险应对措施是建立在风险评估基础上的,项目组需要根据风险评估结果,选择可靠的技术,高效的办法从而制定出可以降低风险影响方案的过程,风险应对措施是软件项目过程中风险处理顺序、规避风险、消除风险的指南[5-6]。
  风险应对措施是通过风险控制实现的,风险控制包括两大板块,风险预防,风险处理,在发生风险前对风险进行预防,尽量降低、避免甚至消除风险发生的几率,在发生风险之后最大限度的降低风险对项目造成的影响,常见有风险控制、风险自留、风险转移等方法。
  3  软件项目风险管理的控制策略汇总
  3.1  风险管理方法科学化
  通过长时间的实践,CRM、MSF、RISKIT三种方法是受到国内外认可的软件项目风险管理方法。
  3.1.1  CRM法的应用
  SEI作为世界上著名的旨在改善软件工程管理实践的组织,也对风险管理投入了大量的研究。SEI提出了持续风险管理管理模型CRM[7]。
  CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为5个步骤:风险识别、分析、计划、跟踪、控制。CRM模型强调在项目开发过程中反复持续进行的这些风险管理步骤。每个风险因素一般都需要按顺序经过这些步骤,但是对不同风险因素开展的不同活动可以是并发的或者交替的。
  3.1.2  MSF法的应用
  MSF方法来自于微软,微软通过对长时间的软件开发经验进行总结优化。将其完善成一套可行的项目管理规范,这种方法是以管理项目中的工作人员、研发过程和知识管理为主,将风险管理做为项目管理的核心,主张在项目完成后及时总结教训并列出主风险列表、顶级风险列表、过时风险列表三个表格帮助完成经验积累[8]。
  3.1.3  RISKIT法的应用
  Riskit方法是一种提高系统化的风险管理过程和技术,它是由Maryland大学提出,旨在对风险的起因、触发时间及其影响等进行完成的提醒和管理,并使用合理的步骤评估风险。对于风险管理中的每个活动,Riskit都提供了详细的活动执行模板,包括活动描述、进入标准、输入、输出、采用的方法和工具、责任、资源、退出标准。
  Riskit方法的特点:提供风险的明确定义;明确定义目标、限制和其他影响项目成功的因素;采用图形化的工具,Riskit分析图对风险建模,定性地记录风险;使用应用性损失的概念排列风险的损失;不同相关者的观点被明确建模。
  3.2  风险管理档案的建立和完善
  对每个软件项目进行及时的经验总结,然后建立风险管理档案是有积极作用的。完整详实的风险管理文档可以帮助团队更好的进行风险管理,帮助团队在以后的项目建设中更好的规避项目需求、进度、质量上的风险问题。而且可以通过文档记录项目工作绩效的信息,包括偏差分析结果、挣值数据和预测数据等,这些数据可以用于控制与绩效有关的风险,尽量让风险最小化[9]。
  3.3  加强风险管理培训
  3.3.1  加强管理者综合能力培养
  软件项目的负责人是项目经理,所以需要对项目经理提出更高的要求,把专业技术的水平高低作为选拔项目经理的重要依据之一。但是技术型的项目经理往往缺乏沟通、管理方面的知识和能力。
  因此有计划的对项目管理人员进行综合性的培训是有必要的,将项目管理人员培养成为专业扎实,沟通效率高,业务能力强,管理水平高的人才可以促进团队的发展,降低项目的不确定性风险。
  3.3.2  加强团队风险管理知识培训
  管理者需要具有相当的综合素质能力,团队成员也需要加强自身素质建设,因此对团队成员进行有针对性的整体技术构架、项目关键点等内容的培训,提升项目成员对技术方法、技术规范、技术标准的认识水平可以消除技术障碍,提升沟通效率,消除因团队成员缺乏对项目的整体认识等因素造成的风险[10]。
  4  总结
  风险管理的意义在于将风险消除在发生之前,减少风险发生的几率,降低风险对项目造成的影响。笔者认为在实际工作过程中风险管控处理方法很多,其中预见性风险管理是最有效的风险管理方法之一。在项目进行过程中,如果发生风险管理人员应当积极应对,及时识别风险并采取相应措施。在日常工作时,企业需要加强对项目管理者、团队成员的风险管理培训。在项目完结后及时进行经验总结并存档,以便于为后续的项目研发起到借鉴作用,尽量减小或者消除软件项目管理中的风险。
  参考文献
  [1] 张培良, 王见伟, 崔锡霖, 等. 软件项目管理中的風险识别与管理分析[J]. 数字通信世界, 2018(09): 276+284.
  [2] 罗畏. 科信公司定制软件项目关键风险识别与控制策略研究[D]. 湖南大学, 2017.
  [3] 杨会兰. 软件项目管理中的风险识别与管理分析[J]. 无线互联科技, 2016(04): 53-54+75. 毛明志,葛晓炜. 软件项目风险管理模型的分析与研究[J]. 科技管理研究,2005(06): 148-151.
  [4] 张珞玲, 李师贤. 软件项目风险管理方法比较和研究[J]. 计算机工程, 2003, 29(3): 91-94.
  [5] 林时蕴. 软件项目风险管理研究[D]. 合肥工业大学, 2007.
  [6] 朱斐. 面向工程教育专业认证的《软件项目管理》实验教学探索[J]. 软件, 2018, 39(12): 187-190.
  [7] 丁剑洁, 郝克刚, 侯红, 等. 基于粗糙集的软件项目风险管理研究[J]. 计算机科学, 2010, 37(4): 117-119.
  [8] 王光治. 软件外包企业的风险控制研究[D]. 天津大学, 2014.
  [9] 吴宗东. 软件项目风险管理理论和方法探究[J]. 电脑知识与技术, 2013(2X): 1198-1199.
转载注明来源:https://www.xzbu.com/8/view-15016124.htm