软件项目的风险分析

时间:2024.3.31

 软件项目的风险分析

    软件工程项目的开发也存在各种各样的风险,有些风险甚至是灾难性的。R.Charette认为,风险与将要发生的事情有关,它涉及诸如思想、观念、行为、地点、时间等多种因素;风险随条件的变化而改变,人们改变、选择、控制与风险密切相关的条件可以减少风险,但改变、选择、控制条件的策略往往是不确定的。在软件开发过程中,人们关心的问题是,什么风险会导致软件项目的彻底失败?顾客需求、开发环境、目标机、时间、成本的改变对软件项目的风险会产生什么影响?人们必须抓住什么机会、采取什么措施才能有效地减少风险、顺利完成任务?所有这些问题都是软件开发过程中不可避免并需要妥善处理的。软件工程的风险分析包括:风险标识、风险估算、风险评价和风险管理四部分

1、风险标识
  从宏观上看,风险可以分为项目风险、技术风险和商业风险三类。由于项目在预算、进度、人力、资源、顾客和需求等方面的原因对软件项目产生的不良影响称为项目风险。软件在设计、实现、接口、验证和维护过程中可能发生的潜在问题,如规格说明的二义性、采用陈旧或尚不成熟的技术等等,对软件项目带来的危害称技术风险。开发了一个没人需要的优质软件,或推销部门不知如何销售这一软件产品,或开发的产品不符合公司的产品销售战略,等等,称为商业风险。这些风险有些是可以预料的,有些是很难预料的。为了帮助项目管理人员、项目规划人员全面了解软件开发过程存在的风险,Boehm建议设计并使用各类风险检测表标识各种风险。
2、风险估算
  软件项目管理人员可以从影响风险的因素和风险发生后带来的损失两方面来度量风险。为了对各种风险进行估算,必须建立风险度量指标体系;必须指明各种风险带来的后果和损失;必须估算风险对软件项目及软件产品的影响;必须给出风险估算的定量结果。

3、风险评价和管理
  在风险分析过程中,经常使用三元组[RI,LI,XI]描述风险。其中RI代表风险,LI表示风险发生的概率,XI是风险带来的影响,I = 1,2,…L是风险序号,表示软件项目共有L种风险。软件开发过程中,由于项目超支、进度拖延和软件性能下降都会导致软件项目的终止,因此多数软件项目的风险分析都需要给出成本、进度和性能三种典型的风险参考量。当软件项目的风险参考量达到或超过某一临界点时,软件项目将被迫终止。在软件开发过程中,成本、进度、性能是相互关联的。例如,项目投入成本的增长应与进度相匹配,当项目投入的成本与项目拖延的时间超过某一临界点时,项目也应该终止进行。通常风险估算过程可分为
    四步:①定义项目的风险参考量;②定义每种风险的三元组[RI,LI,XI];③定义项目被迫终止的临界点;④预测几种风险组合对参考量的综合影响。

三元组[RI,LI,XI]是风险管理的基础。设高级职员流动给项目带来的风险为R。根据历史的经验或直观感觉,高级职员离开课题组的概率:LI = 70%。这一事件的出现带来的影响XI是项目开发时间延长15%,项目成本增加20%。于是项目负责人可以采取下列风险管理措施:

 
(1)项目开始以前应控制产生风险的原因,在项目开工后应想方设法减轻风险影响。

(2)了解导致项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。
(3)在工作方法和技术上应采取适当措施,防止因人员流动给工作带来损失。
(4)项目在开发过程中应及时公布并交流项目开发的信息。
(5)建立组织机构,确定文档标准,并及时生成文档。
(6)对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。
(7)为关键技术准备后备人员。

    软件项目,尤其是大型项目有二项非常重要的因素,会影响整个项目的进度与质量,它们分别是:“人”、“流程” 与“技术”。
“人”是项目中最难预料与掌控的一项要素,人可分成两部份,一是客户,二是开发团队。
“技术”是指软件项目所使用的开发半台,主要指开发环境及开发语言。是最容易掌握的部份。
“流程”是指软件开发流程或是项目流程,定义流程的目的是要掌控所有的情况。项目的最大敌人是时间及预算,这两者都是有限的,如何在有限预算内准时完成项目,可说是一项艺术。
  “人”因素分析
  “人”是指客户和开发团队,其中开发团队的因素对项目影响很大,对于这方面影响因素主要分析如下:
  ·人员技能未达到要求
  在项目开始之初,我们假设项目成员都能够达到组织级的要求,但往往并不是每个成员都能够达到要求。而且项目中每个成员的生产率差异可能很大,也给项目进度安排造成影响。所以在项目始之初,应该对项目成员的技能进行一次总体的评估,对于大家都欠缺的技能,应该安排统一的培训,后续需要对培训的效果进行跟踪;对于个别人员技能欠缺的,应该单独预留自我学习时间或通过以师带徒的方式进行培养,使其技能能够尽快达到要求:对于项目新员的工作和任务,应该加强评审和检查,保证输出不出现大的偏差而导致后续大量的返工。对于这方影响因素主要分析如下:
  ·项目成员责任心不强
  态度决定一切,细节决定成败。对于项目过程中的各项任务,经常出现由于项目成员责任心不强敷衍了事,导致产出的工件质量较差,引起大量返工的情况。在这种情况下,项目更应该加强项目规范的建设,项目经理应加强同这些成员的单独沟通,加强项目的团队建设和集体荣誉感。让项目成员感觉到做的系统是他们自己的产品,而不是公司的项目,项目经理的项目。
  ·项目沟通问题
  在软件项目中,保证项目各种角色和成员中的高效沟通是很重要的,如何建立起快捷顺畅的沟通渠道,采用最佳的沟通方式来解决问题,必须在项目中经常强调。如果一周的项目任务花存实际做事情上有2天,而花在沟通上却占用了3天,这时必须及时分析和总结原因。沟通最重要的就是要在最短的时间里面,采用各种方法或工具,使交流双方或多方达成一致。
  ·项目人员流失
  项目人员特别是项目关键成员在项目进行过程中的流失,对项目影响很大,对于这种情况,应该在项目开始之初,就作为专门的风险进行跟踪,并考虑具体的应对措施。  

“流程”因素分析
  软件的开发流程般定义为:需求分析一可行性分析一概要设计一结构化设计一详细设计一编码一软件测试一软件维护。
  “流程”中软件项目的风险,主要体现存4个阶段:软件需求阶段、软件设计阶段、软件实现阶段和软件维护阶段

  ·软件需求阶段
  软件的开发是以用户的需求开始,在大多数情况下,用户需求要靠软件开发方诱导,才能保证需求的完整,再以的形式形成《用户需求》这一重要的文档。需求分析更多的是开发方确认需求的可行性和一致性的过程,在此阶段需要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失,会在软件系统的后续阶段被一级级地放大,因此本阶段的风险最大。
  ·软件设计阶段
  设计的主要目的在于软件功能正确地反映了需求,需求的不完整和对需求分析的不完整或者错误,在设计阶段将被成倍地放大。设计阶段的主要任务是完成系统体系结构的定义,使之能够完成需求阶段的即定目标;另一方面也是检验需求的致性和需求分析的完整性和正确性。
  设计阶段的风险主要来自于系统分析人员。分析人员存设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至会造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度上升,可靠性降低,给实现和测试阶段带来风险,系统的稳定性也会受到影响。从另一个角度上看,用户需求和将来软件运行环境的变化都是必然的,目前软件设计的所渭的“通用性”是否就能很好的适应将来需求和运行环境的变化,都是需要认真折衷的,而这种折中也蕴涵着很大的风险。
  设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成实现阶段的困难,更会在后期的测试和维护造成灾难性的后果,例如根本无法对软件系统进行版本级,甚至是发现的简单错误都无从更正。
  ·软件实现阶段
  软件的实现从某种意义上讲是软件代码的生产。源代码木身也是文档的一部分,同时它又是将来运行于计算机系统之上的实体。源代码书的规范性,可读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。
  ·软件维护阶段
  软件维护包含两个主要的维护阶段,一个是软件生产完毕到软件试运行阶段的维护,这个阶段是一种实环境的测试性维护,其主要目的是发现在测试环境中不能或末发现的问题;另一个阶段是当软件的运行不再能适应用户业务需求或是用户的运行环境(包括硬件平台、软件环境等)时进行的软件维护,具体可能是软件的版本升级或软件移植等。


 “技术”因素分析
  存软件项目开发和建设的过程中,技术因素是一个非常重要的因素。项目组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目的实际情况选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。
  建立项目管理流程
  那么如何解决这些问题,实际上很多模型已经给出了答案,比如RUP、QoS、XP等,但是大家在学习和使用这些模型的时候,往往觉得这些模型提出的概念和实施比较难以操作,另外就是不管是RUP、Q0S还是XP,既然是一个方法模型,就不可避免要描述为一个完整的、系统化的理论模型,否则就体现不出理论的完整和逻辑的严谨。下面我们只是把以软件设计为核心的开发管理流程化,避免在频繁发生外界变化的情况下,变被动为主动。
  软件项目管理除了按照既定的管理流程进行有效的控制,还要对各阶段的文档进行标准化管理,保证文档的完整和标准化,为软件后期的维护提供有力的支持。

                  风险分析表

为了降低高级职员流动给软件项目带来的风险,管理人员可以采取培养后备人才的措施。在软件开发过程中,尽量让更多的人参与总体设计和关键技术的攻关工作。实施这些措施需要一定的人力、时间和经费。管理人员应根据降低风险、减少损失的原则,客观地分析形势,做出正确的决策。

参考文献:

朱少民 韩莹    软件项目管理    人民邮电出版社

卢有杰.项目风险管理[M].北京:清华大学出版社

赵冬梅.软件项目的模糊风险评估及风险控制[J].河北省科学院学报
 


第二篇:软件产品开发项目的风险分析管理与控制


软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

一、软件开发项目的风险背景

信息产业的发展是目前发展最快的行业之一,也是对社会影响最大的一个行业,它不但为我们创造了巨大的财富,而且从各个方面改变着我们的生活,达到一个行业,小到一项服务。我们不得不承认软件是二十一世纪最不可思议的产品。

伴随着软件开发技术的不断更新、软件数量的增多、软件复杂程度不断加大、客户对产品的要求也在不断的提高,随之而来的是软件开发项目给软件开发企业和需求企业带来的巨大风险。软件开发项目的成功与否会直接影响到公司的生存。这对软件开发企业来讲应该是更大的难题。一方面是业务需求更加复杂。人们对软件质量和用途的期望大幅度提高,对业务系统的要求也越来越挑剔。另一方面是开发成本不断缩减。在此形势下,风险管理与控制已成为软件开发项目成败的关键。

软件开发项目由于其具有连续性、复杂性、少参照性,无标准规范等特点,其风险程度较高。目前国内的大多数软件开发企业还缺乏对软件开发项目的风险认识,缺少进行系统、有效的度量和评价的手段。据有调查数据显示,有15—35%的软件项目中途被取消,剩下的项目不是超期就是超出预算或是无法达到预期目标。另外,软件项目因风险控制和管理原因失败的约占90% ,可见,软件风险控制与管理在目前的软件开发项目中的重要性。

二、 软件开发项目的风险来源及对项目成败的影响

软件开发项目风险是指在软件生命周期中所遇到的所有的预算、进度和控制等各方面的问题,以及由这些问题而产生的对软件项目的影响。软件项目风险经常会涉及许多方面,如:缺乏用户的参与,缺少高级管理层的支持,含糊的要求,没有计划和管理等,总体概括下来应该由五大方面。

1、 产品规模风险

项目的风险是与产品的规模成正比的。与软件规模相关的常见风险因素有:(1)估算产品规模的方法(包括:代码行,文件数,功能点等),(2)产品规模估算的信任度,(3)产品规模与以前产品规模平均值的偏差,(4)产品的用户数,(5)复用的软件有多少,(6)产品的需求变更多少等。一般规律,产品规模越大,以上的问题就越突出,尤其是估算产品规模的方法,复用软件的多少,需求变化。

2、 需求风险

软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

很多项目在确定需求时都面临着一些不确定性。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。每一种情况对产品来讲都可能致命的。

与客户相关的风险因素有:(1)对产品缺少清晰的认识,(2)对产品需求缺少认同,(3)在做需求中客户参与不够,(4)没有优先需求,(5)由于不确定的需要导致新的市场,(6)不断变化需求,

(7)缺少有效的需求变化管理过程,(8)对需求的变化缺少相关分析等。

3、 相关性风险

许多风险都是因为项目的外部环境或因素的相关性产生的。经常我们在控制外部的相关性上做的不够,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。与外部环境相关的因素有:(1)客户供应条目或信息,(2)交互成员或交互团体依赖性,(3)内部或外部转包商的关系,(4)经验丰富人员的可得性,(5)项目的复用性。

4、 技术风险

软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:培训、聘请顾问以及为项目团队招聘合适的人才等。主要有下面这些风险因素:(1)缺乏培训,(2)对方法、工具和技术理解的不够,(3)应用领域的经验不足,(4)新的技术和开发方法应用等。

5、 管理风险

尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足——自己检查自己的错误,这是最难的。然而,像这些问题可能会使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:(1)计划和任务定义不够充分,(2)实际项目状态,(3)项目所有者和决策者分不清,(4)不切实际的承诺,(5)员工之间的沟通等。

6、 安全风险

软件产品本身是属于创造性的产品,产品本身的核心技术保密非常重要。但一直以来,我们在软件这方面的安全意识比较淡薄,对软件产品的开发主要注重技术本身,而忽略了专利的保护。软件行业的技术人员流动是很普遍的现象,随着技术人员的流失、变更,很能会导致产品和新技术的泄密,致使我们的软件产品被它公司窃取,导致项目失败。而且在软件方面关于知识产权的认定目前还没有明确的一个行业规范,这也是我们软件项目潜在的风险。

三、 风险的分析、管理与控制

1、风险分析

以上所说的各类风险都是项目成败的巨大隐患,它们对软件开发项目的成败有多大影响,我们可以利用风险分析工具,对以上各类风险进行分析,并加以控制和管理,将风险将到最低。常

软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

用方法有风险条目检查表,它是利用一组提问来帮助项目风险管理者了解在项目和技术方面有哪些风险。在风险条目检查表中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的、已知的和可预测的风险,如产品规模风险、依赖性风险、需求风险、管理风险及技术风险等。 风险条目检查表可以不同的方式组织,通过假设分析、成本效益分析、风险剖面分析、判定树等,给出这些提问确定的回答,就可以帮助项目管理人员估算风险的影响。

另外,我们可以依据风险条目检查表,制作风险控制概图(见图1),让项目管理和实施人员能很直观的看到在项目开发个阶段的风险存在状况和各风险的大小,并采取相应措施。从风险发生的概率来看,需求风险和管理风险对项目成败影响最大,当一个软件项目开发团队接手项目后,都是按照习惯性的方式来开发软件。需求风险意识比较淡薄,软件需求分析阶段的完成的不够细致,忽略和很多软件开发必要的内容。在整个软件开发过程中需求分析阶段的风险控制尤为重要,如果控制不好,对软件开发项目影响巨大,甚至是失败。管理风险实际上是项目开发管理层,对项目开发的风险的意识反映。国内的软件企业大多规模较小,企业年轻,开发经验不足,软件工程师较年轻,缺少开大型软件项目的经验,在管理方面缺少经验,特别是风险管理,更是缺乏。

软件产品开发项目的风险分析管理与控制

2、风险管理

风险管理应是贯穿软件项目开发始末的一项重要任务,其中包括风险识别、风险评估、风险计划、风险解决和风险监控。它能让风险管理者主动“规避”风险,进行有效的风险管理。风险管理模型有:SEI风险管理模型、Riskit风险管理模型、SoftRisk风险管理模型、IEEE风险管理过程模型、CMMI风险管理模型、MSF风险管理模型等。在项目管理中,建立风险管理策略,在项目的生命周期中不断控制风险是非常重要的,风险管理主要包括五个阶段:

(1)风险识别:识别风险的方法常用的有现场观察法、座谈法、流程图法、财务报表法、相关部门配合法和环境分析法等。

软件产品开发项目的风险分析管理与控制

软件产品开发项目的风险分析管理与控制

(2) 风险评估:对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。

(3) 计划进度:按照评估后的风险结果,制定相应的风险管理进度表,为后续的风险管理提供参考。

(4) 风险处理:一般而言,风险处理有三种方法,① 风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。② 风险自留,当风险量不大时可以余留风险。③ 风险转移。

(5) 风险监控:包括对风险发生的监督和对风险管理的监督,前者是对已识别的风险源进行监视和控制,后者是在项目实施过程中监督人们认真执行风险管理的组织和技术措施。

3、风险控制

(1)建立有效的风险控制的组织机构

①设置风险管理岗位:在软件开发项目管理过程中设置风险管理岗位,该岗位的主要职责是在制订与评估规划时,从风险管理的角度对项目规划或计划进行审核并发表意见,不断寻找可能出现的任何意外情况,试着指出各个风险的管理策略及常用的管理方法,以随时处理出现的风险,风险管理者最好是由项目主管以外的人担任。风险管理岗位的人数依据项目大小来决定,一般2—3人较为适合。

②双项目经理:为项目开发项目设定两个项目经理岗位,一个负责技术岗位,另一个负责管理岗位。目前,国内的软件开发企业的项目经理一般都是一名,而且是技术出生的占绝对多数,他们主要擅长的是技术研发,在管理方面先天不足,这不利于项目风险管理和控制。通过增加专门的管理经理岗位,可以弥补技术出生的项目经理的不足,提升软件开发项目的管理水平。而且这样的经验也已得到了国外业界大多企业的认可。

(2) 建立有效的风险控制管理过程

风险管理过程包括培训,风险识别、风险分析、风险计划、执行计划、跟踪计划等活动,有效的风险管理过程应是学习型的、持续的和不断改进的。软件企业应建立自己的风险管理数据库作为风险管理的基础,并在实施中不断地更新和完善。

根据企业和项目的实际情况,进行科学的项目风险和控制,对项目的成功研发有着举足轻重的意义。在项目开发的过程中,进行必要的项目风险分析,制定符合项目特点的风险评估和监督机制,特别是要定期对项目的风险状况进行评估和监管,发现意外风险或者是风险超出预期的一定要重点关照。发现问题要立即上报,尽快解决。并建立风险监管日志,实行“岗位负责制”,将软件开发项目的风险降到最低。

更多相关推荐:
可研项目风险分析报告

XXXXXXX可行性研究项目风险分析编制说明与案例中讯邮电咨询设计院20xx年1月目次文件一XXXXXXX文件二XXXXXXX文件三XXXXXXX可研项目风险评估报告内容提纲1可研项目风险分析内容提纲2可研项目...

项目风险分析报告

澳门电讯3G项目风险分析报告1风险评估的主要内容和思路3G项目风险评估主要包括风险因素识别风险分析与大小评价风险应对等风险识别是指查找项目在建设和运营过程中有无风险有哪些风险风险分析是对识别出的风险及其特征进行...

项目风险评估分析报告

县村村响项目预算可行性报告项目编号内部资料注意保密目录1项目情况介绍12项目目标221项目满足功能222项目施工工期23项目预算分析231项目效益评估232风险评估34人员安排计划341人员安排35工程实施计划...

软件项目风险评估报告

工程项目风险分析与应对论文软件项目风险评估报告由于风险是在项目开始之后才开始对项目的开发起负面的影响所以风险分析的不足或是风险回避措施不得力都很有可能造成软件开发的失败风险分析是在事前的一种估计凭借一定的技术手...

项目风险评估报告范文

项目风险评估报告本文档的范围和目的本文主要针对软件开发涉及到的风险包括在软件开发周期过程中可能出现的风险以及软件实施过程中外部环境的变化可能引起的风险等进行评估在文中对所提到的风险都一一做了详细的分析并提出了相...

项目风险评估报告

项目风险评估报告,内容附图。

风险管理报告(模板)—风险计划—项目计划

附件2风险管理报告模版编写风险管理参加人员日期年月日评审日期年月日批准日期年月日XXXXXXXXXXXXXXXX公司盖章目录第一章概述第二章风险管理人员及其职责分工第三章第四章第五章第六章第七章第八章第九章风险...

重大固定资产投资项目社会稳定风险评估报告编制大纲及说明

国家发展和改革委员会办公厅文件发改办投资20xx428号国家发展改革委办公厅关于印发重大固定资产投资项目社会稳定风险分析篇章和评估报告编制大纲试行的通知各省自治区直辖市及计划单列市新疆生产建设兵团发展改革委国务...

工程进度风险分析报告

湖北省图书馆新馆建设工程项目监理部进度风险分析报告二一年三月1进度风险分析报告一工程概况及目前施工进度情况湖北省图书馆新馆位于洪山区余家湖村南北深约190m东西宽370m呈矩形建筑总规模100823万平方米设臵...

XX项目专项风险评估报告

XXX标项目经理部专项风险评估报告一事项概述一基本情况1背景情况2实施模式项目部设立了工程技术部安全质量环保部物资设备部计划合同部计划财务部综合管理部和综合协调部共7个部门根据业主要求和铁路施工管理模式的特点充...

设计开发风险分析报告

设计开发风险分析报告编号12

房地产项目风险分析报告

郑州市金水区房地产开发项目风险分析摘要为了对郑州市金水区金水路的一个房地产开发项目提供决策依据我们做出了这份风险分析报告在报告中我们找出了房地产项目中常有的七个风险因素宏观环境风险局部环境风险土地风险资金风险设...

项目风险分析报告(38篇)