软件项目风险管理策略分析与控制

2016-04-14 14:00徐杏芳
电脑知识与技术 2016年5期
关键词:风险识别风险分析生命周期

徐杏芳

摘要:软件项目风险具有不确定性和损失两个特点,一旦风险发生会给项目带来不可估量的损失甚至导致整个项目的失败。在软件开发的生命周期中,对风险的管理是必要的。在本文中论述了风险的产生,常见风险的类型,以实例说明了在软件开发时,如何对风险进行分析和应对的措施。

关键词:风险;生命周期;风险识别;风险分析;技术风险

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)05-0089-02

在软件项目开发的过程中,不能预测将来发生的事情。这就确定了软件开发是一项创造性的活动。这就决定了一些不确定的事件发生,一旦发生,会对软件项目产生某种正面或者负面的影响,这样就产生了风险,有些风险会给软件带来灾难性的后果,甚至会导致整个项目的失败,项目带来的失败带来的影响是不可估量的。

1 风险产生

IEEE(Institute of Electrical and Electronics Engineers)是全球最大的非盈利性的学术委员会,它给出了风险标准的定义:一种事件、状态发生的可能性,这种可能性会带来严重的后果或者潜在的问题。风险是一种客观存在,风险与效益同存,只有正视风险才能有效地规避风险。软件风险在软件开发的各个阶段的过程中都有可能产生,根据IEEE的标准,软件风险分为以下几种类型,如图1所示。

1.1产品规模风险

一般而言,软件项目的风险与开发产品的规模是成正比的关系。引起产品规模风险常见的因素有:

1)软件产品所使用的用户数过多;2)设计阶段对产品规模估计的偏差;3)将已经存在软件的有用的部分用在新软件数目;4)软件产品规模与以前产品规模平均值的偏差量。

1.2需求风险

绝大多数的软件项目在需求阶段都面临着许多不确定性和未知性,甚至会造成混乱。如果在软件项目开发的早期轻视了软件项目多方面的不确定性,在项目开发过程中得不到解决,这些问题就会对软件项目的结果产生巨大的危害,甚至会造成整个项目的失败。如果在需求分析阶段不控制与需求相关的风险因素,那么就极有可能性产生不合格软件产品,甚至可能产生错误的产品。

在软件开发阶段,与需求相关引起风险的原因:①在需求分析过程中用户参与需求分析的力度不够;②对软件的需求缺少认同;③由于各方面的不确定的需要导致产生新的市场;④对客户需求的不断变化缺少相关分析和认识;⑤在需求分析的过程中,缺乏有效的对需求不断变化管理过程。

1.3相关性风险

在软件开发的过程中,很多软件项目的风险都是与外部环境的相关。在项目开发的过程中,这种与环境的关联性一般都不能够得到有效的控制。软件项目与外部环境相关的主要因素如下:

l 项目的复用性

l 成员或团体之间的依赖性

l 经验丰富软件设计和开发人员的拥有

l 软件系统客户公用的信息

1.4技术风险

目前,计算机软件技术的发展是日新月异,在项目的开发过程中,可能会由于开发成员缺乏对所使用的软件技术深入的了解和使用,可能会导致整个项目的失败。引起软件技术风险的主要原因如下:

l 缺乏对成员的新技术的培训

l 对方法,工具和技术理解不够

l 在该领域经验的缺乏

1.5管理风险

软件项目管理的任务是在整个软件设计和实现的过程中都能够在软件项目管理者的控制之下,使软件能够按照所预定的成本、在规定的时间内交付给用户使用。在软件项目开发的过程中最难预料和控制的是“人”的因素,包括开发人员和客户,与项目管理相关的风险因素有:

l 客户的需求经常发生变化

l 开发人员的技术不过关

l 成员之间欠缺沟通

l 项目成员的责任心不强

2 风险分析与解决

在软件项目的整个生命周期中,任何阶段都可能有风险的存在,风险具有不确定性和损失两个特征,风险的发生时不确定的,一旦风险产生了,对整个项目带来不可估计的损失甚至导致整个项目的失败,在软件项目管理中,进行风险管理是必要的。

在项目启动阶段,对项目进行清晰的定义,对项目所涉及的活动进行尽可能详细的计划,与客户多交流,尽可能的明确用户的需求,项目管理者对团队每个成员的技术和能力要有所了解,确定项目团队每个成员的责任和义务,并以文字的形式归档。开发前的详细的准备可以减少风险的产生。风险管理的流程如图2所示。

下面以某高校的教务管理系统为例,说明各个阶段的风险分析和解决。

2.1需求分析阶段

2.1.1 风险识别

绝大多数软件项目在需求阶段都面临不少的不确定性,教务管理系统也是如此。如果在项目开发的早期容忍了这些不确定性,在项目的开发的过程中也不会得到解决,回给项目带来很大的危害。在需求分析阶段的主要的风险。1)用户包括这个系统管理员,教师和学生不能很好地表达自己的要求,并且需求不断的发生变化。2)业务员配合的力度不够,需求描述存在多义性。

2.1.2 风险分析与应对

要以书面的形式形成“软件需求”这一重要的文档,在这个阶段设计者要和用户进行广泛的交流,在初期阶段进行多方的论证。对不明确存在二义性的需求,派有经验的设计人员去了解,对于不能被识别的需求,让有经验的开发人员去调研。

2.2 设计阶段

在设计阶段产生的风险,主要与系统分析者相关。在设计的过程中要形成详细的“设计报告”文档。

2.2.1 风险识别

教务管理系统前台使用是ASP.NET ,后台使用ORCAL数据库,使用的技术相对比较成熟,不存在技术方面的风险。主要存在的风险如下几个方面:

1)网络方面

教务管理系统使用的用户多,用户分布在不同的校园局域网中,服务器的任务繁重。比如服务器网络缺乏对数据的有效的过滤,会导致学生选课的失败,并且可能会引起各种网络的阻塞,从而影响整个系统的正常运行。

2)管理方面

教务管理系统涉及不同层次,不同身份的用户,每类用户的权限不同。由于管理权限划分不清,可能会导致整个系统的数据的不安全。在项目的设计阶段,主要存在的风险如表1所示。

2.2.2风险分析与应对

1)网络方面

开发时,详细规划整个系统的架构,对架构的合理性进行评估,要对网段进行正确的划分,路由设置合理,做好充分的网络安全措施。对数据进行多样性的备份。

2)管理方面

在设计阶段,详细的划分对用户的类型进行划分,明确每类用户的责任和权力分明。设计者多和不同类型的用户进行交流,使用户的权限具有合理性。

3)设计方面

在设计阶段面临的风险较多,不同的风险应有不同的应对方法。在软件设计阶段,如果出现的风险如错误的理解设计,开发不符合用户需求的软件,那么下一步的设计工作无法开展,这些风险都是由于文档不规范引起的。规范化文档和文字的表达,在设计文档中,对教务管理系统的功能进行详细的规定,按照功能模块分成不同的小组,对函数的接口,采用易于理解的代码进行描述,小组的组成和成员之间经常进行沟通。

在项目的开发的过程中,尽可能的选用经验丰富,技术水平高的人员承担设计任务,鼓励各小组成员之间的交流,对内部员工的培训,有利于减少项目中所出现的各种风险。另外,采用增量的开发模式,可以保证各个小组之间的并发工作,有利于提供开发的效率。

3 结束语

在软件项目的管理中,建立一套完整的软件风险管理机制,可以防止一些风险的产生。在程序设计的过程中,如果采用标准的结构化的管理方法,可以使软件设计者和开发者发现在软件设计和开发各个过程中的不足,并且根据这些不足,及时地采取相应的措施,可以大大地减少潜在软件风险发生的可能性,这样既提高了软件项目成功的机会,同时避免了各种软件风险产生的后果。

参考文献:

[1] 覃征,杨利英,高勇民,等.软件项目管理[M].北京:清华大学出版社,2004.

[2] 阳王东,曾强聪,吴宏斌.软件项目管理方法和实践[M]. 北京:中国水利水电出版社,2009.

[3] 张家浩.软件项目管理[M]. 北京:机械工业出版社,2005.

[4] Bob Hughes ,Mike Cotterell. 廖彬山,周卫华,译.软件项目管理[M]. 北京:机械出版社,2010.

猜你喜欢
风险识别风险分析生命周期
从生命周期视角看并购保险
民用飞机全生命周期KPI的研究与应用
企业生命周期及其管理
H银行企业信贷项目风险评估分析
户外俱乐部活动的风险因素识别与分析
探析企业会计电算化的风险及防范