网站首页 > 创业起步 > 创业计划书 > 软件项目风险管理方法比较和研究

软件项目风险管理方法比较和研究

近几年来软件开发技术、工具都有了很大的进步,但是软件项目开发超时、超支、甚至不能满足用户需求而根本没有得到实际使用的情况仍然比比皆是。软件项目开发和管理中一直存在着种种不确定性,严重影响着项目的顺利完成和提交。但这些软件风险并未得到充分的重视和系统的研究。直到20世纪80年代,Boehm比较详细地对软件开发中的风险进行了论述,并提出软件风险管理的方法。Boehm认为,软件风险管理指的是“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险”,其目的是“辨识、描述和消除风险因素,以免它们威胁软件的成功运作”。

  在此基础上,业界对软件风险管理的研究开始慢慢丰富起来,理论上对风险进行了一些分类,提出了风险管理的思路;实践上也出现了一些定量管理风险的方法和风险管理的软件工具。虽然业界对风险管理表现了极大的兴趣,作出了不少努力,但似乎很少开发项目的组织真正积极地在软件开发过程中使用风险管理的方法。1995年IWSED会议作出的调查显示:风险管理技术没有得到广泛应用的原因并不是大家不相信这种技术的实效性,而是对风险管理的技术和实践缺乏了解。因此,我们认为很有必要对风险管理进行研究,并将其应用于现在广泛使用但失败率较高的MIS系统开发中。

  1 经典风险管理理论

  (1)BarryBoehm的模型

 Boehm用公式RE=P(UO)*L(UO)对风险进行定义,其中RE表示风险或者风险所造成的影响,P(UO)表示令人不满意的结果所发生的概率,L(UO)表示糟糕的结果会产生的破坏性的程度。在风险管理步骤上,Boehm基本沿袭了传统的项目风险管理理论,指出风险管理由风险评估和风险控制两大部分组成,风险评估又可分为识别、分析、设置优先级个子步骤,风险控制则包括制定管理计划、解决和监督风险3步。

 Boehm思想的核心是10大风险因素列表,其中包括人员短缺、不合理的进度安排和

预算、不断的需求变动等。针对每个风险因素,Boehm都给出了一系列的风险管理策略。在实际操作时,以10大风险列表为依据,总结当前项目具体的风险因素,评估后进行计划和实施,在下一次定期召开的会议上再对这10大风险因素的解决情况进行总结,产生新的10大风险因素表,依此类推。

 10大风险列表的思想可以将管理层的注意力有效地集中在高风险、高权重、严重影响项目成功的关键因素上,而不需要考虑众多的低优先级的细节问题。而且,这个列表是通过对美国几个大型航空或国防系统软件项目的深入调查,编辑整理而成的,因此有一定的普遍性实际性。但是它只是基于对风险因素集合的归纳,尚未有文章论述其具体的理论基础、原始数据及其归纳方法。另外,Boehm也没有清晰明确地说明风险管理模型到底要捕获哪些软件风险的特殊方面,因为列举的风险因素会随着多个风险管理方法而变动,同时也互相影响。这就意味着风险列表需要改进和扩充,管理步骤也需要优化。

  虽然其理论存在一些不足,但Boehm毕竟可以说是软件项目风险管理的开山鼻祖。在其之后,更多的组织和个人开始了对风险管理的研究,软件项目风险管理的重要性日益得到认同。

  SEI(SoftwareEngineeringInstitution)作为世界上著名的旨在改善软件工程管理实践的组织,也对风险管理投入了大量的热情。SEI提出了持续风险管理管理模型CRM(Con-tinuousRiskManagement)。

  (2)SEI的CRM模型

  SEI的风险管理原则是:不断地评估可能造成恶劣后果的因素;决定最迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。

 CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为5个步骤:风险识别、分析、计划、跟踪、控制。图1所示的框架显示了应用CRM的基础活动及其之间的交互关系,强调了

这是一个在项目开发过程中反复持续进行的活动序列。每个风险因素一般都需要按顺序经过这些活动,但是对不同风险因素开展的不同活动可以是并发的或者交替的。

   图1中的箭头标识了信息的逻辑流,而沟通则是信息流的核心和手段。其中,风险识别依靠问卷完成,问卷覆盖了大概200个问题,一共涉及13个主要领域。风险分析侧重于理解每个风险在该项目中的发生几率和后果严重性,从而产生最严重的 10大风险问题。风险计划是将如下内容文档化:风险管理步骤的描述、负责人及其职责、行为执行和完结的时间,并且确定风险处理的优先级,制定整体的管理计划。风险跟踪是获取、整理并汇报10大风险问题当前的状态,其目的是收集精确的、及时的和相关的信息,并将它们表达成容易理解的方式提交给负责人。风险控制是为了根据风险及其缓解计划进行及时而有效的决策,具体操作包括分析风险跟踪阶段产生的风险状态信息,明确地决定采取什么行动,并实现它们。而处于核心地位的沟通则强调其有效性和针对性,要注意将合适的信息传达给合适的组织层次以得到最有效的分析和管理,这些层次包括开发方和用户方双方的组织结构。

  SEI和Boehm的模型都以风险管理的过程为主体,研究每个步骤所需的参考信息及其操作。而Aalborg大学提出的思路则是以Leavitt模型为基础,着重从导致软件开发风险的不同角度出发探讨风险管理。

  (3)基于Leavitt模型的风险管理

  1964年提出的Leavitt模型将形成各种系统的组织划分为4个有趣的组成部分:任务、结构、角色和技术。这4个组成部分和软件开发的各因素很好地对应起来:角色覆盖了所有的项目参与者,例如软件用户、项目经理和设计人员等;结构表示项目组织和其他制度上的安排;技术则包括开发工具、方法、硬件软件平台;任务描述了项目的目标和预期结果。Leavitt 模型的关键思路是:模型的各个组成部分是密切相关的,一个组

成部分的变化会影响其他的组成部分,如果一个组成部分的状态和其他的状态不一致,就会造成比较严重的后果,并可能降低整个系统的性能。

  将这个模型和软件风险的概念相对应,即一个系统开发过程中任何Leavit组成成分的修改都会产生一些问题,甚至导致软件修改的失败。根据 Leavitt模型,任何导致风险发生的因素都可以归结为模型中的组成部分,例如技术及其可行性;或者归结为组成部分之间的联系,例如程序开发人员使用某一技术的能力。因此,使用Leavitt4模型从个方面分别识别和分析软件项目的风险是极有条理性和比较全面的。在进行软件项目管理时,可以采用不同的方法对不同的方面进行风险管理。Leavitt模型实际上是提出一个框架,可以更加广泛和系统地将软件风险的相关信息组织起来。Leavitt理论的设计方法和实现研究已经广泛应用于信息系统中,它所考虑的都是软件风险管理中十分重要的环节,而且简单、定义良好、适用于分析风险管理步骤。

  2 MIS项目风险管理采用的策略

  以上介绍的3种经典方法都从不同角度或者细化层次对风险管理进行了研究。由于研究组织的背景和思维差异,不同的模型都有各自的针对性、侧重点和优缺点,很难说孰优孰劣。在进行MIS项目风险管理中,我们选择了操作性比较强的Riskit方法和SERIM方法作为基础模型,吸纳两者的核心思想和方法。

  (1)Riskit方法

  Riskit方法是由Maryland大学提出的,旨在对风险的起因、触发事件及其影响等进行完整的体现和管理,并使用合理的步骤评估风险。该方法使用图形形式化的方法支持在定量分析前进行风险情景的定性分析,其评估方法可以基于历史数据或者对当前项目的预测。

 

  Riskit方法的核心部分是用来描述风险的图形形式化工具分析图(RiskitRiskitanalysisgraph),该分析图可以显式地定义风险的不同

特性,比常规的口头论述要更为形式化。它是风险管理过程中主要的沟通工具。分析图所描述的元素及其关系如图2所示。其中,风险因素 (riskfactor)是指影响风险事件发生的可能性的特征,它用来描述主要的项目环境特征。风险事件(riskevent)指的是对项目有负面影响的事情,它可能被多个风险因素触发,也可能影响其他的事件或者因素。项目关键性成员的退出、一个主要需求的大幅度修改等都属于风险事件。而风险反应 (riskreaction)描述了对风险事件及其后果所采取的相应措施,它也可能影响风险事件发生的可能性。风险后果(riskeffect)表示了风险事件对整个项目的最后影响,例如项目延迟2个月提交、被迫放弃实现一些功能。风险后果主要是反应了风险对项目目标的冲击,而效益损失 (utilityloss)则捕获了这些后果所产生的全局冲击力的严重性,例如项目开发人员所感知的挫折感、CEO等决策层所感到的失败感等。

 

  在Riskit分析图中,使用不同的颜色或者形状表示不同的元素,可以一目了然而又全面地表现与项目相关的风险信息及其制约关系。在此基础上可以进行Riskit风险管理过程。Riskit风险管理过程如图3所示,图中不仅体现了风险管理的基本活动,也描述了这些活动之间的信息流。在项目生命期内,这些活动可以重复多次,也可以并发地开展。其中,风险管理定义指的是定义风险管理的作用域、重点、责任和频率等,并辨识所有相关的风险承担人员。目标查阅指的是查阅已经确立的项目目标,重新定义它们或者显式地补充定义一些原来隐含而未明确表达的目标,并且整理风险承担人员和这些目标的关系。风险识别则是使用不同的方法识别对项目成功构成潜在威胁的元素,产生一系列的原始风险列表。风险分析是对风险元素进行划分和确认,构造完整的Riskit分析图,以对每个风险元素有清晰的认识。风险控制计划对最严重的风险元素提出风险控制

方案,并选择最合适的计划。风险控制则是对风险控制计划的实现。风险监控保证在项目开发的全过程中对风险情况进行监督和控制。

 对每个活动,Riskit都提供了更加详细的定义模板,包括活动的描述、启动规则、采用的方法和工具、活动负责人、退出规则及其具体活动所特有的属性等。而每个活动又可能由更加具体的子活动组成,例如风险分析又可以细分为:将原始风险项筛选、处理、组织以成为可管理的风险项集合;根据Riskit分析图将风险项的详细信息文档化;对风险项进行优先级排序等。总而言之,Riskit提供了多方面多层次的风险管理过程体系。

  (2)JIT模型

  DaleKarolak提出的SERIM(SoftwareEngineeringRiskModel,软件工程风险模型)方法是IEEE推荐的方法。这种方法的特点在于从多个角度对软件开发中的风险因素进行了评估,并可在开发周期的任何时候根据评估结果监控风险。

 SERIM从技术和商业两个角度对软件风险管理进行剖析,考虑的问题涉及开销、进度、技术性能等。它还提供了一些指标和模型来估量和预测风险,由于这些数据来源于大量的实际经验,因此具有很强的说服力。根据SERIM理论开发的SERIM软件于1999年被提名为“Codie最佳应用软件开发程序”。

 Karolak声称基于“及时(SERIMJITJustinTime)”策略,JIT软件的概念是:应该将软件开发过程中的风险及其影响最小化,而在开发过程早期的管理将会缩短开发周期;在开发过程中使用了风险管理的产品将更倾向于节省开销和满足进度要求。JIT3软件的个标关键思想是:进行计划、在早期识别风险以及并行开发。

  SERIM的理论体系主要基于如下概念:风险元素(element)、因素(factor)、指标(metrics)和活动 (activity),SERIM的分析模型反应了这几个目标的修正,概

念之间的相辅相成关系。Karolak认为软件风险新的目标体现在3个方面,即技术、成本和进度。其中技术方面与性能、可用性等相关,应该尽早识别这个方面的风险;成本则包括预算、盈利等;进度包括进度表的灵活度、现实性等,贯穿于整个开发周期。

  对于风险管理,Karolak提出6个活动:识别、策略和计划、评估、缓解或避免、报告及预报,他从操作性、策略性、技术性、商业性、工业性和实践者6个角度对这些活动进行了描述。SERIM的数据来源是81个问题,这些问题覆盖了软件风险的10大因素:组织、预测、监控、开发方法学、工具,风险文化、可用性、正确性、可靠性和人员。风险因素对风险在技术、成本和进度3方面的影响用高、中、低评估,不同的影响程度可以给予一个确定的权值,以便于定量的计算。

 SERIM的使用可以概括为:在软件开发的不同阶段(Karolak将软件开发分为需求分析前的准备活动、需求分析、涉及、编码、测试和提交),对81个问题中与开发阶段相匹配的问题进行回答,根据公式计算出一系列的值,从中可以看出项目在技术、开销和进度3个不同方面的总的风险系数,还可以分析数据得到对项目造成最大威胁的风险因素。根据这些数据,可以判断出当前项目的稳定状态,获知需要改善的方向,并可以根据将要采取的措施修改问卷的答案,从而对未来的风险进行预测。

 3 我们的工作

  几乎每个模型都声称适用于所有的软件项目开发,但是不可否认具体类型的软件项目应该有各自不同的侧重点与问题域。

  因此,对于MIS项目的风险管理,完全照搬现有的某种风险管理模式或者工具是不实际的。我们需要根据MIS的特点对症下药。经过对多种理论和方法的分析比较,我们最后确定将Riskit方法与SERIM方法融合在一起,MIS并根据项目的特点进行一些修改和调整。

  Riskit方法的风险分析图用于描述项目中的风险因素及其关系,它作为风险管理

的定性依据贯穿于整个开发周期。Riskit是具有一定灵活度的可操作的方法,它建议不同的组织和项目在使用它时根据实际情况进行调整。要考虑组织已有的风险管理实践、可投入的资源、项目的具体情况等,确定项目风险管理的层次级别和细化程度。

  我们的MIS项目风险管理模型基本采纳Riskit方法的管理过程。在风险识别阶段引入SERIM的框架,根据不同的开发阶段使用不同的问卷,问卷内容仍将保持SERIM从多角度各方面交织反映情况的特点,但是我们将根据MIS项目的特点对原SERIM数据来源的81个问题进行修改。在风险评估阶段,首先利用SERIM的评估模型对风险进行评估,原评估模型中所使用的问题答案所代表的数字意义、问题与各风险因素的相关性、以及因素的权重等都要进行相应的调整。而这些数值将根据业界的现状调查和统计分析工具得到。在评估阶段的后期,可以在评估模型上追溯出影响风险

  评估值的最严重的风险表现,使用Riskit分析图对之进行详细的描述。而在风险控制阶段,则将参考本文中提到的各种方法。

  4 结束语

 项目风险管理实际的应用不够广泛或者不够有效,这在相当程度上归咎于各开发组织对风险管理理论和技术的了解不足。因此本文先对几个经典的和著名的风险管理模型和思想进行了介绍。这也是我们在进行MIS项目风险管理的第一步——研究现有的理论。第二步是筛选现有研究成果,并将其与MIS项目的特点进行融合,从而产生针对MIS项目的管理模型。我们下一步的工作是确定评估模型中的权重等数据,并优化、实现并测试这个风险管理模型。

 

上一篇: 格子店的赚钱策略 下一篇: 鲜湿型方便馄饨商业计划书