摘要:软件项目的开发有很高的失败率。从20世纪80年代后期开始,软件理论界和产业界开始重视软件的风险管理,并产生了一系列的风险管理过程模型,这些模型对风险管理的规范有积极的意义。文章回顾了风险管理模型的发展,发现目前的软件项目开发风险管理模型只强调承包工程方过程,而较少关注建设方的参与。这将带来二方面的不足:第一,建设方对项目的参与是成功的重要保证,没有建设方的参与的管理过程是不完整的。第二,在信息不对称的情况下,软件项目的开发风险被转移到建设方身上。为了有效解决目前模型的不足,文章在原有的风险管理模型基础上建立软件项目的建设方和承包商风险管理的协同过程模型,并设计了相关的数据结构和项目干系人在项目周期的不同阶段的参与情况。
关键词:软件项目;风险管理;协同;过程
一、 引言
世界银行的统计表明:在发展中的政府信息系统项目中,只有15%是完全成功的。因此,加强软件项目开发中的风险管理是软件开发中的重要的工作之一,尤其对于大型的软件项目,软件风险管理的奠基人之一,Charatte认为大型软件项目的管理是风险管理。Microsoft的量化研究表明,在风险管理中投入5%的项目工作可以获取50%~75%的如期完成的机会。可见风险管理在软件开发中的重要性。风险管理的研究在起源于20世纪80年代末,经过二十多年的发展,产生了大量的理论成果并对软件项目的开发起到积极的作用。其中,风险管理的过程研究是风险管理的框架和基础,为风险管理提供规范的模式。本文在分析现有研究的基础上建立软件项目的建设方和承包商风险管理的协同过程模型,以实现更加完整的规范的风险管理。
二、 风险管理过程模型的比较
1. Boehm模型:Boehm于1991年详细描述了他的思想体系。Boehm认为:软件风险管理这门学科的出现是试图将影响项目成功的风险形式化为一组易用的原则和实践的集合,是在风险成为软件项目返工的主要因素并由此威胁到项目的成功运作前,识别、描述并消除这些风险项。他将风险管理过程归纳成二个基本步骤:风险评估和风险控制。其中风险评估包括风险识别、风险分析、风险排序;风险控制包括制定风险管理计划、解决风险、监控风险。
Boehm风险管理理论的核心是维护和更新十大风险列表。他通过对一些大型项目进行调查总结出了软件项目十大风险列表,其中包括人员短缺、不切实际的工期和预算、不合时宜的需求、开发了错误的软件功能、开发了错误的用户界面、过高的非实质性能要求、接连不断的需求改变、可外购部件不足、外部已完成任务不及时、实时性能过低和计算机能力有限。在软件项目开始时归纳出现在项目的十大风险列表,在项目的生命周期中定期召开会议去对列表进行更新、评比。十大风险列表是让高层经理的注意力集中在项目关键成功因素上的有效途径,可以有效地管理风险并由此减少高层的时间和精力。
2. Charette模型:1989年Charette设计的风险分析和管理的体系分为两大阶段,分别为分析阶段和管理阶段,每个阶段内含三个过程,这是一个相互重叠和循环的模型。Charette同时为各个过程提供了相应的战略思路、方法模型和技术手段。
3. CMU/SEI的CRM(Continuous Risk Management)持续风险管理模型:CMU/SEI的软件风险管理原则包括:(1)全局观点;(2)积极的策略;(3)开放的沟通环境;(4)综合管理;(5)持续的过程;(6)共同的目标;(7)协调工作。具体来说是要不断地评估可能造成恶劣后果的因素;决定迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。它强调的是对风险管理的各个组成部分的沟通。
4. IEEE风险管理标准:IEEE风险管理标准定义了软件开发生命周期中的风险管理过程。这个风险管理过程系统地描述和管理在产品或服务的生命周期中出现的风险。包括以下活动:计划并实施风险管理、管理项目风险列表、分析风险、监控风险、处理风险、评估风险管理过程。
5. CMU/SEI的CMMI(Capability Maturity Model Integration)风险管理过程:CMMI是由SEI在CMM基础上发展而来。目前,CMMI是全球软件业界的管理标准。风险管理过程域在CMMI的第三级,即已定义级中建立一个关键过程域(KPA,Key Practice Area)。CMMI认为风险管理是一种连续的前瞻性的过程。它要识别潜在的可能危及关键目标的因素,以便策划应对风险的活动和在必要时实施这些活动,缓解不利的影响终实现组织的目标。CMMI的风险管理被清晰地描述为实现三个目标,每个目标的实现又通过一系列的活动来完成,如图1示。
该模型的核心是风险库,实现各个目标的每个活动都会更新这个风险库。其中活动“制订并维护风险管理策略”与风险库的联系是一个双向的交互过程,即通过采集风险库中相应的数据并结合前一活动的输入来制订风险管理策略。
6. Microsoft的MSF风险管理模型:MSF(Microsoft Solutions Framework)的风险管理思想是,风险管理必须是主动的,它是正式和系统的过程,风险应被持续评估、监控、管理,直到被解决或问题被处理。该模型大的特点是将学习活动溶入风险管理,强调了学习以前项目经验的重要性。
它的风险管理原则是:(1)持续的评估;(2)培养开放的沟通环境:所有组成员应参与风险识别与分析;应鼓励建立没有责备的文化;(3)从经验中学习:学习可以大大降低不确定性;强调组织级或企业级的从项目结果中学习的重要性;(4)责任分担:组中任何成员都有义务进行风险管理。
7. Riskit模型:Maryland大学的Kontio提出Riskit方法,该方法对于风险管理中的每个活动都提供了详细的活动执行模板,包括活动描述、进入标准、输入、输出、采用的方法和工具、责任、资源、退出标准。Riskit方法包括以下内容。(1)提供风险的明确定义:损失的定义建立在期望的基础上,即项目的实际结果没有达到项目相关者对项目的期望的程度;(2)明确定义目标、限制和其它影响项目成功的因素;(3)采用图形化的工具Riskit分析图对风险建模,定性地记录风险;(4)使用应用性损失的概念排列风险的损失;(5)不同相关者的观点被明确建模。