软件项目风险管理方法探讨

2009-07-07 09:11王秋芹等
价值工程 2009年11期
关键词:风险风险管理

王秋芹等

摘要:软件项目风险管理是一门新兴的学科。近年来,出现了一系列软件项目风险管理方法,取得了相应的成果。介绍了软件项目风险管理相关概念,阐述了软件项目风险管理工具和方法,并进行了比较分校。

关键词:风险;软件项目;风险管理;

中图分类号:F069·9 文献标识码:A

文章编号:1006-4311(2009)11-0094-03

0引言

随着社会需求的增加和计算机技术的迅速发展,软件产业在经济发展中的地位日趋重要。但是,由于软件产品的纯知识性,随之而来的软件项目高失败率也成为一个焦点。20世纪80年代末,软件项目风险管理作为一门学科应运而生。经过近30年的发展,出现了一系列的软件项目风险管理工具和方法。

由于对风险管理技术和实践缺少了解,风险管理技术却没有得到广泛的应用。鉴于此原因,本文对近年来出现的一些风险管理方法进行分析与比较,以期对软件开发企业起到一定的帮助作用。

1软件项目风险管理定义

SEI认为[1],“风险”就是承受损失的不确定性。风险管理是指在项目中含有过程、方法和工具的管理风险实践,它建立了预先决策的规范环境,使得:①连续地评估风险;②明确了哪些风险因重要而需要处理;③③实施处理这些风险的战略[1]。Hall[2]认为风险管理是评估和控制影响软件项目、过程或产品的风险的实践,该实践围绕目标设定、项目计划、执行、度量、改进和发现新信息 6 部分展开。

Boehm认为[3] ,软件风险管理指的是“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险,其目的是辨识、描述和消除风险因素,以免它们威胁软件的成功运作”。

2软件风险管理技术、工具和方法

经过近30年的发展,软件项目风险管理研究中出现了一系列的技术、工具和方法。其中,软件工程研究所(SEI)为整个风险管理提出了一整套的标准步骤。这篇论文将对具有代表性的6个软件项目风险管理工具和方法进行介绍和分析。

2.1 软件风险评估(SRE)技术

SRE 模式是由SEI开发的,旨在对与系统相关的风险进行识别、分析、沟通、缓解。SRE系统包括风险管理流程、软件开发风险分类图(SDRT)以及基于问卷的分类法(TBQ)。该模型有五个过程,分别为风险识别、风险分析、计划、风险跟踪和风险控制,即对软件项目中存在的风险行识别并加以分析评估,对风险进行优进化排序, 并对TOP风险加以管理,制定相应的应对计划,最后进行跟踪控制。

SRE不但是一种诊断工具而且还是一种决策工具。该技术从产品,过程和约束条件上进行风险处理,识别和分类。另外,项目成员参与风险识别与分析过程,并设法规避风险领域以面对自己的开发计划。因此,项目经理可以在早期阶段了解项目风险。

2.2 团队风险管理(TRM)技术

Ronald P·Higuera, David P·Gluch, Richard L· Murphy 指出,团队风险管理是指“在软件开发项目生命周期的各个阶段中,所有项目直接涉及到包括组织,团队,部门和代理等都作为团队的参与者参与其中,协同进行对组织结构和操作活动的风险管理。团队风险管理,为政府和承包商提供了过程、方法和工具,从而使这两个组织都能够单独的或者共同的参与决策过程,从而防患于未然[4]。”团队风险管理活动使所有人包括从开发者到客户都参与到一个组织当中。这种技术确保通过项目可以反复地和协作地进行持续风险管理[5]。TRM工作程序是风险识别,定期评估和分析新风险,计划资源的合理利用以降低风险,风险跟踪和风险规范行动,开始风险控制并将之变成问题,最终,项目中的伙伴关于风险开始沟通。

2.3 Softrisk 模型

Softrisk[6]风险管理技术是由于一些传统的风险管理技术存在缺陷的情况下出现的。Softrisk模型结合其它项目管理来探讨风险管理,确保了风险管理自动化并且适用于任何类型和规模的项目[7]。Ayad Ali Keshlaf,Khairuddin Hashim指出, Softrisk模型“是建立在一种思想基础上设计出来的,这种思想就是风险文档化和集中注意力在最大风险上是节省开发者时间和精力并且在降低软件风险上能达到好的结果的最好的方法”[6]。

模型步骤概括如下[6]:

Softrisk模型第一步就是风险识别。Softrisk模型识别不仅针对可能发生在任何类型项目的一般风险也针对仅发生在特定项目的特定风险。第二步就是对第一步中识别出的每一种风险都要确定它发生的概率及其影响。风险的概率和影响都由特殊的风险清单进行评估。利用风险清单,将风险分为很低,低,中等,高,很高五类。第三步,风险文档化阶段。在这一阶段,Softrisk将所有一般的和特别的风险数据文档化。这个文档用来跟踪项目情况、统计业务和预测未来风险。第四步,风险评估。Ayad Ali Keshlaf, Khairuddin Hashim定义了风险暴露(RE)公式:

RE=风险发生的概率*风险造成的影响

第五步,排序。RE值是用来对所有风险进行分类并列出十大风险。第六步,把一图形分成红、黄、蓝三个区域来表示RE值。第七步,控制阶段。根据风险严重程度来选择一个合适的风险减少技术。这项技术可以是缓解偶然性或危机计划。在应用了这种技术后,再估计,再评估,再排序是必须的。最后一步,确定没有任何风险存在。如果有新的风险,就要再转到第一步。

2.4 ARMOR

M·R·Lu, J·S·Yu, S·R·Dalal认为, ARMOR(Analyzer for Reducing Module Operational Risk)“是一种自动识别软件项目模块操作风险的软件风险分析工具”[8]。ARMOR的工作程序是访问数据仓库,项目数据库,失败数据库和项目开发数据库。该工具创建风险模型,并显示项目管理的各种统计数据。通过提高用户界面,简化了风险建模程序。ARMOR建立了可行的项目评估风险模型,能够衡量软件项目风险。并且可以识别出风险源,指出如何提高软件项目以减少它们的风险水平,并决定数据资料得来的风险模型的有效性。

在这个工具中,用户可以将软件风险分布的各种统计数据显示出来。最后,用户应用回归分析验证风险模型的有效性。经验证的风险模型通常保存在一个模型库。该模型将进一步应用于其它项目或完全不相关的项目当中。

2.5 Riskit模型

Riskit方法是由Maryland大学提出的,目的是为了支持系统风险分析,避免危险区域的出现,并使用合理的步骤评估风险。Riskit方法使用了图形形式化工具,支持在定量分析之前对风险情景的定性分析。该方法根据历史数据的有效性,准确的评估效用理论以其对风险进行量级,其特征就是支持多目标和利益相关者的多项需要。Riskit分析图是Riskit模型的一种图形形式,用来描述风险。使用Riskit分析图不同的是使风险得到了明确的定义,因此,它比口头交流更加形式化。Riskit分析图在Riskit程序中将风险分解成风险元素。

2.6 基于CMM的软件风险控制优化模型

在基于CMM的模型中,软件风险评估和风险控制遵循CMM(能力成熟度模型)框架。在这个模型中,过程数据库用来识别风险和制定相应的风险缓解计划[9]。此模型在相似项目历史数据基础上实行软件风险控制策略[10]。在这个模型中,软件风险管理过程分成两个活动:软件风险评估和软件风险控制。软件风险评估主要是识别风险源,找出它们的潜在影响因素,最终确定风险的优先级。软件风险控制主要是制定风险缓解计划,监控风险情况,启动风险缓解计划,并调整计划。对风险进行识别和优化后,制定结构化的计划以使列表中高风险的影响程度最小化。其中,过程数据库或风险库对于识别和制定风险控制决策起着重要作用。

3比较与分析

软件风险管理是一种新兴学科,目标就是在风险因素对软件的成功运作构成威胁之前,对风险因素进行识别,描述和消除。

软件风险评估(SRE)方法是风险管理方法中比较好的例子。这个方法根据分析对风险进行识别,分析和制定计划,并且具有很强的可操作性。但是,在识别和分析阶段仅有项目开发人员而没有其他利益相关人员如客户的参与。这可能是一个比较严重的问题。由于项目的主要风险都是由利益相关者提出的需求因素引起的。因此,如果缺少利益相关者的参与,项目开发团队可能没有得到明确的需求,从而导致项目的失败。

相反地,TRM确保了所有人员参与到风险管理过程中,使得项目经理很容易得到项目的明确需求。在团队风险管理中,个人同组织一起参与到风险管理活动中,它包括了组织内部活动和组织间的进程。

Softrisk方法的重点是文档化。这个模型可以应用于任何类型项目的任何阶段。该模型的一个重要特点就是能对风险进行量化并计算风险发生的概率。模型将风险进行优先排序,并对TOP风险重点采取减缓措施。Softrisk方法利用图形进行风险监控,并根据风险缓解计划提出风险减缓建议。跟ARMOR方法一样,Softrisk方法也利用了风险数据库。

ARMOR方法是一种系统化的方法,不仅识别风险,还可以确定风险源并通过降低风险水平积极地对项目进行完善。

Riskit管理模型广泛应用于许多行业。该模型使用图形对不同方面的风险进行定义。一方面,模型拥有在TRM模型中相关参与者的主要特征;另一方面,模型还突出了在Softrisk模型中有主要特征的重要风险。

在基于CMM的软件风险控制优化模型方法中,我们不难发现其与ARMOR方法在运行程序上的相似之处。两种方法都从之前应用的启发式知识失败数据库中收集数据。CMM方法以通过研究所遵循的SEI标准为基础。

4结束语

本文对软件开发中流行的风险管理工具和方法进行了研究,旨在通过比较分析找到较好的风险管理工具和方法。通过比较分析发现,在软件开发风险管理中,由于每种方法都有不同的特点及运行程序,因而没有一种单一的工具或方法是完美的。因此,软件开发组织应当结合本组织的特点,选择不同的风险管理模型,以提高软件项目管理水平。

猜你喜欢
风险风险管理
探讨风险管理在呼吸机维护与维修中的应用
护理风险管理在冠状动脉介入治疗中的应用
本地化科技翻译的风险管理
风险管理在工程建设中的应用
新版GMP中质量风险管理实施初探