浅析软件项目风险的形成及对策

时间:2022-10-02 01:01:44

浅析软件项目风险的形成及对策

摘要:现代软件项目的高失败率使得软件项目风险管理成为项目管理的重要内容。该文基于软件项目风险的基本性质和形成过程,对项目风险的形成机制进行了系统地分析,发现项目的复杂性和人的认知水平的局限性之间的冲突是导致软件项目风险产生的主要原因。基于此,给出两方面的对策建议,一是系统分析项目复杂性,二是提高人的认知水平。

关键词:软件项目;风险;形成机制;对策

S着网络通信技术的迅猛发展和社会需求的不断扩大,软件成为信息化的核心内容,主导着信息产业的发展,对于增强企业的竞争力具有重要的意义。2015年3月22日的《中国IT产业发展年度报告》指出,中国IT产业创新指数从2011年的53.4提高到2014年的62.2,并且2014年电子信息产业收入超过了14万亿,其中软件实现了3.7万亿,同比增长20.2%,与2008年相比软件业务占整个IT产业比重提升了12.9%。然而,由于软件项目自身的特点,使得软件项目开发的过程存在着很大的不确定性,项目往往在工期、费用或功能、性能上不能达到人们的预期。美国专门研究IT项目的权威机构Standish Group在其每年的CHA OSReport上公布了IT项目调查数据,软件项目的成功率从1994年的16%、1998年的26%、2002年的34%、2006年的35%到2009年的32%,虽然有明显提高,但仍然处在一个较低的水平。软件项目如此高的失败率引起了企业界和学术界的巨大关注,而软件项目巨大的风险与软件项目自身的特点密切相关,已经成为了当前软件项目管理领域的热点问题。

1.国内研究现状

国内对软件项目风险的研究起步较晚,大多借鉴国外的理论和方法。在理论和模型方面,潘春光等对于分析评价了软件项目风险管理的理论和方法;林关成所给出了经典的风险管理模型;从风险因子的角度,季年芳等川提出了基于风险因子分析的软件项目管理模拟模型;在风险评估上,杨莉田等根据关联函数理论,建立软件项目风险综合评价的物元模型;李华阿等提出了一种基于BP神经网络的软件项目风险评估方法;张莉运用三维结构对软件项目进行分析。然而,现有的研究大多是从风险管理过程的角度对软件项目风险进行分析,根据风险形成过程进行分析的研究较少。赵金元对软件项目风险形成的机制进行了分析,但并没有给出具体的对策。本文对软件项目风险形成的来源进行更深层次的分析,并给出了相应的应对方法,对软件项目的风险控制提供了依据。

2.软件项目风险的基本性质和过程

软件项目风险是指在软件项目的生命周期内,由于某些不确定因素导致软件项目在进度、成本、质量等方面出现风险事件从而形成损失。

一般地,软件项目风险具有如下的基本性质:客观性。风险的客观存在的,不管风险主体是否意识到风险的存在,在一定的条件下风险就可能变成现实;不确定性。风险发生的不确定性,表现风险的程度大小;不利性。风险一旦产生,就会使风险主体产生挫折、失败和损失,对风险主体不利;可变性。风险的可变性表现为,在一定条件下风险与非风险可以进行转化凹。

软件项目的开发过程中,由于软件系统本身的结构和技术的复杂性,需要投入大量人力、物力和财力,加上需求频繁变更,软件设计经常需要更改,而且编码工作量难以估计,还常常要使用一些新技术、新产品,导致任务不确定性高,从而给项目的开发带来风险。风险发生的过程大致上可分为3个阶段,分别是风险因素、风险事件和风险结果。风险因素多来自于产品工程、开发环境和项目限制三方面。风险因素导致风险事件的发生,项目生存期的各个阶段都可能存在风险。风险事件造成损失,得到风险结果,一般是工期延长、费用增加或性能不佳等。

3.软件项目风险的形成机制

风险因素是项目风险发生过程的第一步,找出风险因素对项目成功与否发挥着十分重要的作用。项目本身风险因素是客观存在的,主要来自于项目的复杂性,而人的认知能力的高低决定了风险因素识别的程度。

3.1软件项目的复杂性

当前信息产业发展迅速,人员流动加快,用户需求和技术创新日新月异。在这种环境下,软件项目日益趋于复杂,企业需要应对的挑战大大增加。

3.1.1过程的复杂性

软件项目过程是软件开发中用于开发和维护软件及其相关产品的一系列活动、方法、实践和改造的步骤。软件是由需求驱动的,有了用户应用的实际需求才会引发一个软件产品的开发。软件项目过程包括需求的分析、产品设计、开发过程、测试、安装和维护。程序规模越来越大,代码行可能达到数百万行,软件的维护也越来越困难,软件项目过程也越来越复杂。

3.1.2管理的复杂性

与其他工程类项目管理相比,软件项目管理更加复杂。范围方面,针对软件性能范围的描述更加模糊,复杂,软件的需求经常发生变更;时间方面,由于软件的生产开发过程中没有明显的制造或重复生产过程,实际的生产进度与原有的计划往往有很多的差异;质量方面,软件是纯知识产品,软件质量很难估计和度量,需要通过单元测试、集成测试和系统测试等加以评估,给软件项目的质量监控带来很大困难。

3.1.3技术的复杂性

技术创新速度的加快对于软件项目的开发提出了挑战。软件的开发受到计算机系统的限制,对计算机系统有不同程度的依赖。软件产品基本上是“定制的”,很难通过现有的软件组装完成新软件的开发。开发的环境日益复杂,代码共享日益困难,需跨越的平台增多,这都增加了软件项目技术上的复杂性。

3.1.4环境的复杂性

软件项目的环境主要包括政策、市场等外部环境,组织结构和资源等内部环境。对于开发周期较长的软件而言,外部环境中政府机构政策的变化必然对整个行业及软件需求造成影响。而在企业内部环境中,组织结构的各要素之间的差异性、项目组织结构设计是否合理都会对项目造成影响。在资源方面,人是软件项目的核心,人才的流动也是企业经验财富的损失。

3.2人的认知水平的局限性

人作为执行项目的主体,决定着项目的成功与否,是项目中最重要的资源。软件项目是由不同角色的人共同协作完成的,其中对于项目影响较大的主要是项目经理、团队人员和其他项目干系人之间的差异。

3.2.1项目经理

项目经理是项目组织的核心和项目团队的灵魂,对项目进行全面的管理,其管理能力、经验水平、知识结构和个人魅力等都ο钅康某砂芷鹱殴丶的作用。然而,当前在政府机关和企事业单位软件项目管理中存在的主要问题是,没有专门项目管理专业的人员来担任项目经理。专业项目经理人才的缺乏使得在项目管理中出现失误或错误的可能大大增加,是项目风险形成的原因之一。

3.2.2团队开发人员

一个项目要取得成功,一个有效的团队是必不可少的。然而,一方面我国软件项目行业尚处于发展阶段,团队成员人数相比国外成熟开发团队明显不足;另一方面在软件项目开发的具体阶段,一个软件项目通常被分成若干个子项目,由项目团队中的各小组协作完成,小组内部成员之间的相互合作和各小组之间的配合和协同使得团队开发过程中的复杂性大大提高。

3.2.3其他项目干系人

软件项目还涉及客户、项目管理办公室和商业合伙人等三方面。客户发起并参与软件的整个开发过程中;项目管理办公室负责对其所辖项目进行集中协调管理;商业合伙人是企业软件项目开发的合作伙伴,一般负责模块外包等,以追求自身利润最大化为目标。项目干系人在职责和目标上的差异决定了各自的利益诉求的不同,使得项目在实施过程中产生分歧和冲突,影响项目的进程。

3.3软性项目风险的形成

软件项目的复杂性和人的认知水平的局限性之间的交互作用是导致软件项目风险产生的主要原因,软件项目本身和完成项目的人是成功执行一个项目的两大组成部分。软件项目本身是复杂的,各因素之间相互联系、错综复杂。而人作为执行项目的主体,是项目中最重要的资源。由于人的认知水平的局限性,项目的复杂性往往无法得到充分的认识,项目相关人员在需求的搜集和分析、对新技术的应用、相互的协调沟通以及自身的知识能力等方面往往无法尽如人意,使得项目在执行过程中存在不确定性,在工期、费用或功能、性能上不能达到人们的预期。软件项目的风险形成机制可用下图描述。

4.软件项目风险的对策

软件项目是一个复杂的系统。基于系统论的方法,如果项目的复杂性大于人的认知水平,项目就有很大的不确定性,此时软件项目具有很大的风险。如果项目的复杂性小于或等于人的认知水平,此时人们充分认识到项目的复杂性,因此软件项目的风险就低。然而项目本身的复杂性是客观存在的,不会变化的。因此,提高人对项目复杂性的认识,找出完整的风险因素是降低项目风险的关键。

4.1系统分析项目复杂性

在分析项目本身时,首先要进行过程定义,将过程以一种合理的方式描述出来,并建立企业内部的过程库,使过程成为企业内部可以被重用的共享资源,并不断改进和完善过程。其次,运用科学的项目管理方法、体系指导管理工作。基于经验的方法重点关注管理中常见的问题。虽然每一个项目都是一个新项目,但是通过查询相似软件项目的经验数据或者向相关专家请教,对于及时避免软件项目中常见的风险有很大的帮助。然后,在技术上,一方面要及时更新技术以避免导致项目目标功能的不完备,另一方面避免采取过多的创新型技术形成“信息孤岛”,并通过培训等多种措施提高人员的综合素质。最后,在项目环境上,对内可以通过项目团队定期召开会议等方式加强沟通和团队建设,选择合适的项目组织结构,避免人才的流动对软件的开发造成影响;对外建立专门风险管理机构和人员,以对市场、政策等进行预测。由于软件项目开发周期的因素,软件项目常常在很久之后才交付给客户,因此及时对外部环境中政府机构政策的变化作出预测对软件项目的成功有重大意义。此外,市场中同行业竞争者的战略的变化、客户的需求变更等也会给软件项目的开发提出挑战。

4.2提高人的认知能力

提高认知能力主要是针对项目经理、团队人员和其他干系人而言。对项目经理进行系统地项目管理知识培训,多数项目经理在技术上独当一面,而在管理方面特别是项目管理方面的知识比较缺乏。在一个特定的项目中,项目经理要对项目实行全面的管理,包括制定计划,报告项目进展,控制反馈,组建团队,在不确定环境下对不确定性问题进行决策,在必要的时候进行谈判及解决冲突等。对项目团队成员,一方面要加强培训以提高成员的综合能力,另一方面给予项目成员一定的激励,如薪酬激励、机会激励、环境激励和情感激励等。我国IT软件项目整个行业尚处于发展阶段,人力资源不足,项目开发人员在知识水平及开发应用方面有很大的差异。通过培训等方式提高团队成员的综合能力并施以激励,对于提高团队的开发能力和避免人才流动具有重要作用。对项目干系人之间的差异而言,本文站在项目管理者即项目经理的角度,要重点发挥项目管理办公室的作用,对项目进行集中协调管理,努力减小项目干系人之间的差异。客户通过在开发过程中根据需要变更需求,在项目收尾阶段接收并验证产品,在整个阶段参与到软件的开发过程中。因此对客户要积极建立沟通机制,控制其需求变更。商业合伙人通过负责模块外包等以追求自身利润最大化,对商业合伙人,一方面通过各种条件严格控制商业伙伴的选择,寻找信用好的伙伴,建立长期合作关系。另一方面可以通过对外包业务实行按照项目完成度支付报酬的方法,激励企业合作伙伴高效地完成项目。

5.结束语

现代软件项目的高失败率使得软件项目风险的管理成为项目管理的重要内容。本文在研究软件项目风险的基本性质类型和风险过程的基础上,对项目风险的发生进行了系统地分析,发现项目的复杂性和人的认知水平局限性之间的冲突是软件项目风险产生的根本原因,并给出了相应的对策建议。但本文从软件项目管理整体上进行了分析,并没有对软件项目进行分类,今后应根据不同类型的项目进行更细致的分析,从而给出具体有效的对策手段。

上一篇:推进干部作风转变,建设一支思想素质高、道德品... 下一篇:大数据时代的医学影像物理学课程教学研究