浅谈软件项目开发过程中的主要项目风险及对策

软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时、按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属于软件项目开发过程中考虑的风险问题。

  软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺、项目进度延误、人员变更以及预算和进度等方面的问题。风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择。风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态。另一方面,风险将涉及思想、观念、行为、地点等因素的改变。

  软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。因此有必要对软件项目中的风险进行分析并采取相应的措施加以管理,尽可能减少风险造成的损失。风险是在项目开始之后才对项目的执行过程其负面的影响,所以软件项目开始之前风险分析的不足,或者是软件项目实施过程中风险应对措施不得力,都有可能造成软件失败。

  如果对项目进行风险管理,就可以最大限度的减少风险的发生。它是为了将不确定因素出现的概率控制到最低,将不确定性所造成的损失减少到最低限度,对软件项目全过程中的风险识别、分析和应对的过程。在整个软件项目的实施过程中,可能形成项目风险的因素有很多,如在项目启动阶段可能存在项目目标不明确,与用户沟通少导致项目范围不明确等分先因素;在系统设计阶段可能因为缺乏有经验的分析人员、设计人员导致和设计的结果不能直接用于程序员的开发;在项目实施阶段可能因为开发环境没有准备好,程序员开发能力差,或者因为用户提出新的功能需求导致原有设计实效、开发费用超支,还有可能因为开发人员的流动导致项目延期,客户不满意等情况。

  软件项目运用专家调查法和头脑风暴法分析软件开发项目中,并将其进行整理分类。

  由于与客户沟通不畅对客户的需求了解不足造成的风险在软件开发项目整个生命周期的中都存在的风险,主要包括需求变更风险,涉及风险,过程风险,安装及维护风险。

  由于管理人员素质不够,经验不足,沟通不畅,任务或其分配不合理,对项目的控制力度不够造成的各种风险,主要包括进度风险,预算风险,管理能力风险,信息安全风险。

  由于技术力量不足,开发环境工具不足造成的。主要包括技术风险,质量风险,软件设计工具风险,软件开发工具风险,员工技能风险。

  由于公司或项目组内外部环境变化所导致的风险,主要包括人力资源风险,政策风险,市场风险,营销风险。

  软件项目中的风险永远不能全部消除,而只能采用避免、减轻、和接受三种因对策略。

  避免:通过分析找出发生风险事件的原因,消除这些原因来避免一些特定风险事件的发生。

  减轻:通过降低风险事件发生的概率或得失衡量来减轻风险对项目的影响,也可采用风险转移的方法来减轻风险对项目的影响。

  接受:对于一些无法避免的风险,应当接收风险造成的后果或者提前设计相应的应对措施,但这需要一定的资金做后盾。

  下面我们就以上四大类别中的一些主要风险进行具体分析以及提出应对策略。

  需求变更风险

  需求变更风险是指需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;产品定义含混的部分比预期需要更多的时间;在做需求中客户参与不够;缺少有效的需求变化管理过程。一个看似很有“钱途”的软件项目,往往由于无限度的需求变更而让项目承建方苦不堪言,甚至最终亏损(实际上项目建设方也面临巨大的风险)。

  预防这种风险的办法是需要团队成员的高度配合和密切协作的阶段,在进行需求分析的时候要仔细分配团队成员的工作,具体分配如下:如项目经理负责需求分析阶段项目进度的安排和控制;参与项目的各种资源调度;负责项目的总体协调工作,人员组成为双方项目负责人。再如系统分析人员要通过与用户方的技术人员和业务人员进行良好的沟通,了解业务流程、功能需求、系统构想和项目目标,完成软件需求说明书的编制任务,等等。要求需求分析阶段的团队按照项目管理中典型的矩阵式结构来开展,这种结构能够有效的利用项目资源,减少条块分割的冲突,增加了沟通和协调的机会,降低了项目的执行成本,能够充分发挥项目经理和个分组人员的积极性,并通过采用一些激励机制,保证项目成员有充分的责任感和成就感。并且要有效的遏制需求变更,软件的需求变更时软件项目开发和实施的最大敌人,在软件项目的各个阶段都可能出现。需求变更的越晚,对项目造成的危害就越大。所以对软件的需求变更控制贯穿与软件实施的各个阶段。在需求分析阶段用户需求变更主要表现为用户需求的反复,容易使需求分析工作原地转圈,无法按计划完成需求分析工作。要遏制分析阶段的变更风险,采用以下几种方法:1、充分到位的需求调研。2、用户签字制度。签字的方法可以是用户在需求调研中积极负责的态度,认真对待每个需求分析项。在实际分析中,分析人员要善于与用户沟通,通过系统原型或相似系统演示等手段,消除用户的顾虑;另外,如果用户方代表个人难以决定,可通过召开项目协调会议,由用户的项目有关人员集体决定。3、定期的工作通报制度。即开发项目经理要定期将需求分析阶段的工作进展情况、存在的问题进行汇总,向项目双方的高层领导、项目管理委员会进行工作汇报。促使项目双方人员以积极协作的心态开展需求调研工作,减少变更,确定进度。4、对签字认可的需求纳入需求管理,对发生的需求变更,执行需求变更处理流程。另外,在该过程中,分析人员需要对所有需求项目分析项目进行分类管理,按照其重要程度及发现变更后造成的影响范围大小,将不同的需求项分别设置不同的优先级。在需求分析工作中,重点要解决好优先级别更高的需求项的调研及确认工作。可最大限度地降低需求变更发生的可能性,将变更造成的影响减小到最小。

  进度风险

  有些项目对进度要求非常苛刻(进度要求不高的项目,我们同样要考虑该风险),项目进度的延迟意味着违约或市场机会的错失。软件的工期常常是制约软件项目的主要因素。软件项目工期估算是软件项目初期最困难的工作之一。很多情况下,软件用户对软件的需求是出于实际情况的压力,希望项目承担方尽快开发出软件来。在软件招标时,开发方为了尽可能争取到项目,对项目的进度承诺出已远远超出实际能做到的项目进度,使项目在开始时就存在严重的时间问题。软件开发组织在工期的压力下,往往放弃文档的编写与更新,结果在软件项目的晚期大量需要通过文档进行协调时,却拖累软件进度越来越慢。此外,由于用户配合问题、资源调配等问题也可能使软件项目不能在预定的时间内完成任务。软件项目过程中有自身的客观规律性,用户对软件项目的进度要求不能与软件开发过程的时间需要相矛盾。

  因此,对于这种风险解决方案一般是分阶段交付产品、增加项目监控的频度和力度、多运用可行的办法保证工作质量避免返工。在项目实施的时间进度管理上,需要充分考虑各种潜在因素,适当留有余地;任务分解要详细,便于考核;在执行过程中,应该强调项目按照进度执行的重要项,再考虑任何问题时,都要经保持进度作为先决条件;同时,合理利用赶工期及快速跟进等方法,充分利用资源。乐观主义应受到慎重分析。在进度安排上适度悲观,在项目的实施中适度乐观,做到悲观并不消极,乐观并不大意。项目进行中盲目增加人员可能造成事倍功半的效果,所以任务、人力、时间三者之间存在最佳组合,值得项目负责人引起足够重视。应该避免:某方面的人员没有到位,或者在多个项目的情况下某方面的人员中途被抽到其他项目,或身兼多个项目,或在别的项目中无法抽身投入本项目。为系统测试安排足够的时间,能使项目进度在改变之初就被发现,这对及时调整项目进度至关重要。渐近明细是项目的特点,特别是对于软件开发项目,并不是一个一成不变的过程。开始时的项目计划可以先制定得比较粗一些,随着项目的进展,特别是需求明确以后,项目的计划就可以进一步的明确,这时候应该对项目计划进行调整修订,通过变更手续取得项目干系人的共识,在这个过程中发生错误是在所难免的,因此必要的测试是项目渐近明细的方式之一,随着项目的推进再进一步细化、调整、修正和完善。持续地监控,项目进度控制是随着项目的进行而不断进行的,是一个动态过程,也是一个循环进行的过程。从项目开始,实际进度就进入了进行轨迹,直到项目结束,这个过程的每一个环节都必须完全在监控之中。在计划制定时就要确定项目总进度目标与分进度目标;在项目进展的全过程中,进行计划进度与实际进度的比较,及时发现偏离,及时采取措施纠正或者预防,协调项目参与人员之间的进度关系。

  预算风险

  技术风险

  在软件项目开发和建设的过程中,战略管理技术因素是一个非常重要的因素。项目组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目的实际情况而选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果项目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。重大的技术风险包括:软件结构体系存在问题,使完成的软件产品未能实现项目预定目标;项目实施过程中才用全新技术,由于技术本身存在缺陷或对技术的在掌握不够深入,造成开发出的产品性能以及质量低劣。

  预防这种风险的办法是选用项目所必须的技术、在技术应用之前,针对相关人员开展好技术培训工作。首先,做好各阶段的技术评审工作,通过集体智慧确保项目所采用技术的可行性以及技术方案的正确性。其次,对新技术的使用要谨慎,要循序渐进,尽量采用成熟的技术方案完成软件开发工作。再次,在技术创新与技术风险之间进行平衡,并做好创新技术的研究和试验工作。需要对软件项目过程中使用的各种技术进行评估,软件项目管理在制定软件开发计划时必须考虑这些因素,并作出合理的权衡决策。

  质量风险

  任何软件项目实施过程中缺乏质量标准,或者忽略软件质量监督环节都将对软件的开发构成巨大的风险。有些项目,用户对软件质量有很高的要求,如果项目组成员同类型项目的开发经验不足,则需要密切关注项目的质量风险。矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;开发额外的不需要的功能(镀金),延长了计划进度;严格要求与现有系统兼容,需要进行比预期更多的测试、设计和实现工作;要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作;在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题;开发一种全新的模块将比预期花费更长的时间;依赖正在开发中的技术将延长计划进度。

  预防这种风险的办法一般是经常和用户交流工作成果、品牌管理采用符合要求的开发流程、认真组织对产出物的检查和评审、计划和组织严格的独立测试等。软件质量的保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。所以制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。

  工具风险

  软件项目开发和实施过程,所必须用到的管理工具、开发工具、测试工具等是否能及时到位、到位的工具版本是否符合项目要求等,是项目组需要考虑的风险因素。有些软件项目属于多用户并发的应用系统,系统对性能要求很高,这时项目组就需要关注项目的性能风险。

  预防这种风险的办法一般是在项目的启动阶段就落实好各项工具的来源或可能的替代工具,在这些工具需要使用之前(一般需要提前一个月左右)跟踪并落实工具的到位事宜。在进行项目开发之前先设计和搭建出系统的基础架构并进行性能测试,确保架构符合性能指标后再进行后续工作。并且团队成员的技术是偏向该种工具的。

  人力资源风险

  软件的开发不同于其他的工程,它是智力密集型、劳动密集型、项目,受人员资源的影响很大。软件的开发在不同的工程阶段,需要的人员不同,同样需要团队成员之间的密切配合。在人力资源使用过程中,人员能力的表现往往体现在软件成果监控的困难导致对人员能力观察的困难。人员流失、人员不能适合软件项目的要求,都可造成人力资源上的风险。人力资源的能力(包括业务能力和技术能力)和素质,对项目的进展、项目的质量具有很大的影响,项目经理在项目的建设过程需要实时关注该因素。

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

  结论:

  软件项目开发过程中面临的风险是多种多样的,风险的大小以及重点各不相同,项目管理人员应当充分考虑,认真分析,在考虑风险损失和合理的风险应对成本之后,选择采用合适的风险应对计划,避免因风险造成各方面的重大损失。

原文地址:https://www.cnblogs.com/tiechui2015/p/10230808.html

时间: 2024-08-08 17:44:43

浅谈软件项目开发过程中的主要项目风险及对策的相关文章

浅谈软件项目的需求管理

软件项目区别于其它项目的最显著的特征是其不可见性,它不像硬件购销.建筑工程,都是实实在在可见的东西.而软件项目在系统交付之前很长一段时间,客户是无法感知自己想要的系统究竟是什么样子.因此,需求管理就显得十分重要,据相关统计数据分析,软件项目90%以上失败的原因都在于没有重视需求或者需求管理方面做的不到位导致的. 需求管理作为软件项目管理的一个重要内容,贯穿项目实施的全生命周期.俗话说:万事开头难.需求作为软件开发的第一个环节,其重要性不言而喻.市面上关于需求管理的相关理论和书籍很多,但多数停留在

浅谈软件项目团队的建设和稳定

如何建设团队?如何保持现有团队稳定?这些都是很高深的问题,但解决方案却很简单. 因为答案只有两个字. 吃饭!吃饭!吃饭! 聚餐!聚餐!聚餐! 大城市我不清楚,至少热干面这种二三线城市,要保持团队人员的凝聚力的一个最简单办法就是聚餐吃饭. 毕竟中国的事情都是在饭桌上达成的.我也不清楚为何聚餐/一起吃饭为何有如此的神奇作用,反正每次 无论我作为组长还是作为组员去聚餐,就能深刻感受到团队/小组集体的凝聚力.或许我需要找本关于 中国的饭桌文化的书来认识学习一下. 作为项目小组组长除了请大家吃饭之外,最好

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上

浅谈软件工程师的代码素养

WeTest 导读 写这篇文章时内心是比较忐忑的,因为文章的话题范围非常大,怕自己驾驭不了.在实际工作中,维护过很多类型的代码,其中不乏高级工程师完成的逻辑,大家的需求能力都很不错,能够快速满足产品的需要,但很少能有人能注意到代码的整洁度,甚至很多代码经过多人维护后已经变得无法再进行任何一处的修改,最后不得不花大量的时间进行重构.因此我决定还是写一篇文章来"浅谈"软件工程师应具备的代码素养,希望能够对大家有所帮助,水平所限,如有不当之处还请不吝指正~ "程序是写给人读的,只是

浅谈软件项目管理

初步接触<软件工程>这门专业课,在我看来:软件工程是一个极具挑战性的项目,在约定的时间内,整个项目小组可以在满足用户需求与软件基本规范的情况下,开发出稳定可靠的软件.但是,在软件开发的过程中,往往有许多不可规避的风险与未知的情况,例如:软件不能按时交付,软件的成本明显超过预期,软件未能达到用户的需求等等,"如果所用的时间是预计时间的两倍以上或费用超出预算两倍以上的项目为失控项目",为了有效规避项目在开发过程中的风险,所以笼统来说,项目管理指的是:根据特定的规范,在预算的范围

浅谈软件配置管理工具(github &amp; SVN)

1   配置管理名词定义 1.1 配置项 软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项. 软件配置项包括: ①与合同.过程.计划和产品有关的文档和资料: ②源代码.目标代码和可执行代码: ③相关产品,包括软件工具.库内的可重用软件.外购软件及顾客提供的软件等. 1.2 配置项标识 配置标识是定义各类配置项.建立各种基线.描述相关软件配置及其文档的过程. 配置标识是指为了方便对软件配置的各个片段进行管理,必须对每一个配置项进行标识.其原则为: (1)用易于理解和推测的方式定义文件的标

在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。

        在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性.精确性.清晰性.完整性.灵活性.可追溯性. ◇ 可行性分析报告:说明该软件开发项目的实现在技术上.经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由. ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员.开发的进度.开发经费的预算.所需的硬件及软件资源等. ◇ 软件需求说明书(软件规格说明书):对所开发软件的功能.性能.

浅谈软件需求分析

浅谈软件需求分析 一.什么是需求分析? 通俗的讲,对用户的意图不断揭示和验叛的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述. 假如你是个建筑工程师,有个客户找你建一个鸡窝,这个时候要需要与客户沟通,来确定客户到底想要一个什么样子的鸡窝.我们应该注意三点: 1.准确的理解和描述客户需要的功能. 客户说,我的鸡窝要三层的,带电梯,饮水池,厕所,饮水池要自动判断水位供水,电梯要可以同时乘坐10只鸡-.客户滔滔不绝的讲了一大堆,你也都非常忠实的按照自己的理解再一一的向客户描述一遍,以便于

反思一个软件项目执行中的问题

近期参与了一个联网管理平台的软件项目,该项目由2017年8月立项,迄今已经大半年了.从项目进展上,暴露出一些问题: 1. 项目进度被一拖再拖,原定2018年春节前完成一期功能的上线并完成相关实验局的部署,但目前已经4月份一期功能还未完全完成. 2. 项目质量问题很多.该项目分为前端和后端平台两套系统,这两套系统的协同工作出现很多问题,直至现在,一些基本的功能还老出问题. 3. 项目管理流程混乱,一个问题出现经常找不到干系人,没有统一的协调和控制,解决问题的效率很低. 对该项目出现的问题做了一些反