论文导读::基于CMMI的风险管理模型。基于CMMI的软件风险管理实践。对软件过程和产品都有定量的理解与控制。定义5极限值:对每一风险类别。
论文关键词:CMMI,软件风险管理,定量,极限值
0 引言
随着企业和社会信息化的日益普及,与信息技术紧密相关的各类软件项目,诸如软件开发、组建计算机网络和信息系统集成等软件项目和我们生活的联系越来越频繁。随着软件建设环境的日趋复杂,软件项目的投资和建设规模也急剧增加。软件项目所固有的需求很难准确定义、建设标准和目标不易统一、技术人员流动频繁、研发技术发展迅速等特点决定了它要充分考虑项目管理中可能遭遇的各种风险,还面临着其他类型项目所不具备的特殊风险。这些风险的存在很可能会造成数据丢失、进度推迟、成本增加等不良后果,更为严重的可能会导致项目中断甚至整个项目的失败。
软件项目风险管理是指贯穿于软件项目生命周期,保证项目按计划进行的策略、方法、技术和工具的集合,它含有风险辨识、评估、排序、计划、监督和控制活动,并成为软件项目管理的主要部分之一。软件项目风险管理的目标是识别可能影响软件项目成功的任何风险;提供识别和评估风险的标准过程和方法;通过适当的行动将风险产生的概率或后果压至最低;实时监测和报告风险,为制定防范和应对风险的措施提供决策依据。
项目风险管理强调对项目目标的主动控制,对项目实现过程中遭遇的风险和干扰因素可以做到防患于未然,以避免和减少损失。
1基于CMMI的风险管理模型
美国卡内基梅隆大学软件工程研究院(SEI)在CMM(能力成熟度模型) 的基础上提出了CMMI(能力成熟度模型集成)。
1.1 CMMI介绍
CMMI把各种能力成熟度模型集成到一个框架中去,这个框架有两个功能极限值,第一,软件采购方法的改革;第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。CMMI是CMM的修订本。CMMI的源模型为:CMM 2.0(C稿);电子行业协会临时标准(EIA/IS)731;集成产品开发能力成熟度模型(IPD-CMM)v0.98。CMMI共有五个等级,分别标志着软件企业能力成熟度的五个层次。
(1)初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
(2)已管理级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验论文格式。
(3)已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
(4)量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个做出结论的客观依据,管理能够在定量的范围内预测性能。
(5)优化管理级 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。每个等级都被分解为若干关键过程域,特殊目标和特殊实践,通用目标、通用实践和共同特性。风险管理过程在CMMI第三级―已定义级中描述。[1]
1.2 CMMI风险管理模型
风险管理是一种连续的、前瞻性的过程。它要识别潜在的可能危及关键目标的因素,以便策划应对风险的活动和在必要时实施这些活动,缓解不利的影响,最终实现组织的目标。CMMI的风险管理被清晰地描述为实现三个目标,每个目标的实现又通过一系列的活动来完成(见图1)[2]。

图1. CMMI的风险管理模型
(1)目标1:准备风险管理
包括三个活动:确定风险来源和类别;定义风险参数;建立风险管理策略。在该目标实施过程中,将产生:①风险来源清单和风险类别清单;②风险可能性(也就是风险发生的机率)、风险结果(也就是风险发生的影响和严重性)、引发管理活动的极限值;③项目风险管理策略等数据,并写进风险库。
(2)目标2:识别并分析风险
包括两个活动:识别风险;评估、分类和排序风险。在该目标实施过程中,将产生:④已识别的风险清单;⑤风险清单(包含各个风险的优先级)等数据,并写进风险库。
(3)目标3:降低风险
包括两个活动:制订风险降低计划;执行风险降低计划。在该目标实施过程中,将产生:⑥每个已识别风险的处理方案、风险降低计划、紧急应变计划、负责追踪和解决每个风险的人员清单;⑦更新后的风险状态清单、更新后的风险可能性、结果和极限值的评估、更新后的风险处理方案清单、更新后的风险处理行为清单、风险降低计划等数据,并写进风险库。
CMMI强调将所做的工作记录下来,作为后续工作的历史参考。该模型中各个目标的每个活动都会更新风险库,从而实现了管理的可追溯性。
2基于CMMI的软件风险管理实践
2.1 风险形式化描述
定义1 风险可以用风险来源、风险类别、风险可能性、风险结果、风险系数、极限值和风险状态这七类信息来描述。故可令Risk=(Source极限值,Categories,Likelihood,Effect,Coefficient,Threshold,Status)。简记为:R=(So,Ca,L,E,Co,T,St)。
定义2风险可能性可以根据其发生的概率划分为五个等级:近乎确定 ( 80%≤L≤100% )、非常可能( 60%≤L<80% )、可能(40%≤L<60%) )、不太可能(20%≤L<40% )和微乎其微(0≤L<20% )。
定义3风险结果E由严重性(Severity,简称S)和风险发生的影响(Impact Rate,简称I)来共同标识。风险发生的严重性S可划分为五个等级:很高、比较高、中等、比较低和很低。可以量化为(5,4,3,2,1),即S={5,4,3,2,1}。
风险发生的影响I来源于N个因素。这N个因素在每个风险中所占的比重用Ii表示,严重性用Si表示。故风险结果可表示为: [3]
E=
定义4风险系数表示风险可能性和风险结果所带来的综合影响。风险系数的定义:Co=L*E。
定义5极限值:对每一风险类别,可建立极限值以确定风险的可接受性或不可接受性、风险的优先级,或引发管理行为。
假设第i种类别的风险有Ni条极限值,该类别风险中各条风险的风险系数表示为Cok(其中,1≤k≤Ni),则该类别风险的极限值Ti可表示为:
Ti=
假设某软件项目有N种类别的风险,故针对整个项目风险的极限值可表示为:
T=
定义6风险状态St={S1,S2,S3,S4,S5}。
S1:新引入风险,即已经发现风险,但还未对其进行评估。
S2:对风险进行评估之后,发现风险系数低于极限值,表明该风险不是急迫的论文格式。
S3:对风险进行评估之后,发现风险系数高于极限值,表明该风险是急迫的。
S4:风险已经演化为问题,此时需要问题跟踪进行应对。
S5:通过风险应对,风险已经消除。
所以,也可将风险状态量化为:风险状态St={1,2,3,4,5}。[4]
2.2 软件风险管理实践
下面以某软件项目Project为例来实施CMMI软件风险管理。
如表1所示,风险评估与管理表确定11个风险来源,6个风险类别;设置各个风险的风险可能性。
如表2所示,假设风险受性能、支持、成本和进度这四个因素综合影响。设置各个风险的风险影响和风险严重性,按照定义3求得1号风险的风险结果。
将表2计算风险结果中得到的1号风险的风险结果填到表1中,依此类推极限值,可得到这11个风险的风险结果,并依次填写到表1中。然后,按照定义4求出风险系数,根据定义5求出同类别风险的风险系数,以及引发管理活动的极限值。
在风险管理的过程中,我们通常只对极限值之上的风险进行重点关注。每周需要做一份新的风险评估与管理表,每周根据以上方式获得一个极限值,从而了解哪些风险是需要重点关注的,以便处理那些会对项目产生重大影响的风险。
表1 风险评估与管理表
风险编号
|
风险来源
|
风险类别
|
风险可能性
|
风险结果
|
风险系数
|
同类别风险系数
|
极限值
|
1
|
规模估计可能非常低
|
产品/项目规模风险
|
20%
|
3.6
|
0.72
|
1.08
|
1.32
|
2
|
复用程度低于计划
|
30%
|
4.2
|
1.26
|
3
|
用户需求频繁变动
|
60%
|
2.1
|
1.26
|
5
|
用户对系统采取消极态度
|
商业风险
|
40%
|
3.5
|
1.4
|
1.3
|
6
|
交付期模糊
|
50%
|
2.4
|
1.2
|
7
|
资金不足
|
客户特性风险
|
40%
|
4.9
|
1.96
|
1.96
|
8
|
技术达不到预期的效果
|
建造技术风险
|
30%
|
1.1
|
0.33
|
0.33
|
9
|
缺少对工具的培训
|
开发环境风险
|
60%
|
3.2
|
1.92
|
1.92
|
10
|
项目人员缺乏经验
|
人员数目与经验风险
|
30%
|
2.6
|
0.78
|
1.35
|
11
|
项目人员流动过于频繁
|
60%
|
3.2
|
1.92
|
表2计算风险结果
风险结果
|
风险编号
|
风险因素
|
风险影响
|
风险严重性
|
风险结果
|
1
|
性能
|
0%
|
0
|
3.6
|
支持
|
20%
|
2
|
成本
|
40%
|
4
|
进度
|
40%
|
4
|
3 结论
在软件项目开发过程中,当对软件的期望很高时,一般都会进行项目风险分析、预测、评估、管理及监控等风险管理。通过风险管理可以使项目进程更加平稳,可以获得更高的跟踪和控制项目的能力,并且可以增强项目组成员对项目如期完成的信心。风险管理是项目管理中很重要的管理活动,有效的实施软件风险管理是软件项目开发工作顺利完成的保证。[5]
目前的风险评估主要是依靠项目人员的经验以及风险库中积累的历史数据进行。如何确定风险的可能性;如何确定每个风险中若干个风险因素所占的比重和严重性,都需要进一步研究相应的模型来确定。
参考文献:
1SEI.CMMI .规范. http://www.sei.cmu.edu/cmmi/
2毛明志,葛晓炜.软件项目风险管理模型的分析与研究[J]. 科技管理研究,2005(6):148-151
3杜庆峰,王帆.定量化风险评估及动态规划控制策略[J]. 电脑知识与技术,2009(5):4317-4319
4王天青,潘金贵.基于CMMI的软件风险管理[J].计算机科学,2005(32):140-141
5王如龙,邓子云,罗铁清.IT项目管理[M] .北京:清华大学出版社,2009
|