软件项目管理——风险分析与管理
一、风险及风险管理的含义
1、风险的含义
风险即所有在软件开发过程中带来负面影响的问题,是一个潜在的问题。
2、风险管理含义
风险分析和管理是标识风险、评估其发生的概率、估算其影响和建立在实际发生情形下问题的应急计划,是一系列帮助软件小组理解和管理不确定性的步骤。
对于一个好的软件项目管理来说,理解风险和采取积极的措施管理风险是关键。
二、被动和主动的风险策略
1、被动风险策略
(1)定义: 被动风险策略是一种救火模式,是对风险不闻不问,直到发生了错误后项目组才赶紧采取行动试图迅速地纠正错误。
2、主动风险策略
(1)定义: 在技术工作开始之前就已经启动,标识出潜在的风险,评估出现的概率和产生的影响,且按重要性加以排序。
(2)主要目标: 主要目标是预防风险,但不是所有的风险都可以预防,因此需要建立一个应急计划,使其在必要时能够以可控的和有效的方式做出反应。
三、风险的特性
风险有两大特性,分别为不确定性
和损失性
。具体如下:
1、不确定性 —— 风险可能发生,也可能不发生;
2、损失 —— 如果风险变成了现实,就会产生恶性后果或损失。
四、风险的类型
风险类型有三类,分别是项目风险
、技术风险
和商业风险
。具体如下:
1、项目风险
(1)主要威胁:威胁到项目计划。
(2)风险因素:①潜在的预算、进度、人力资源、客户和需求等方面的问题以及这些因素对软件项目的影响;②项目复杂度、规模和结构不确定性。
2、技术风险
(1)主要威胁:威胁到要开发软件的质量和交付时间。
(2)风险因素:① 潜在的设计、实现、接口、验证和维护等方面的问题;②技术的不确定性、陈旧的技术和“领先的”技术。
3、商业风险
(1)主要威胁: 威胁到要开发软件的生存能力。
(2)五种商业风险类型:
- 市场风险——开发了一个没有人真正需要的优秀产品或系统;
- 策略风险——开发的产品不再符合公司的整体
商业策略
; - 销售风险——建造了一个销售部门不知道如何去做出售的产品;
- 管理风险——由于重点转移或人员的变动而失去了
高级管理层
的支持; - 预算风险——没有得到预算或人力上的保证。
五、风险管理的步骤
风险管理主要有三个步骤,第一步为风险识别
,第二步为风险预测
,第三步为风险缓解、监控和管理
。具体如下:
1、风险识别
(1)定义: 风险识别是试图系统化地确定对项目计划(估算、进度、资源分配)的威胁。
(2)分类
- 一般性风险:对每一个软件项目而言,一般性风险都是一个潜在的威胁。
- 产品特定风险:指只有那些对当前项目的技术、人员及环境非常了解的人才能识别出来。
(3)风险识别的方法
风险识别的方法为建立风险条目检查表,具体步骤如下:
- ①产品规模 —— 与
需要建造或修改的软件的总体规模
相关的经验; - ②商业影响 —— 与
管理或市场所添加的约束
相关的风险; - ③客户特征 —— 与
客户的素质
、开发者和客户及时通信的能力
相关的风险; - ④过程定义 —— 与
软件过程被定义的程度
和软件被开发组织所遵守的程度
相关的风险; - ⑤开发环境 —— 与
建造产品所使用工具的可用性及质量
相关的风险; - ⑥将建造的技术 —— 与
待开发软件的“复杂性”
和系统所包含技术的“新奇性”
相关的风险; - ⑦人员数目及经验 —— 与
软件工程师的总体技术水平和项目经验
相关的风险。
总结:
通过建立风险条目检查表,使得计划者通过得出每一项的答案后,能够估算风险产生的影响。
2、风险预测
风险预测从两个方面评估风险:①风险发生的可能性或概率,即 评估风险概率
;②风险发生所产生的后果,即 评估风险影响
。具体如下:
(1)评估风险概率:以 百分比
表示
(2)评估风险影响
①从定性角度看:有四个级别,分别为可忽略的
、轻微的
、严重的
、灾难性的
;
②从定量角度看:即计算风险显露度,RE=P*C;其中P
是风险发生的概率,C
是风险发生时带来的项目成本。
举个例子:
Question:
某公司计划将使用60个可复用构件,其中只有70%可能被使用,剩下的要重新定制开发,已知构件平均是100LOC,每个LOC的成本是14美元,假设该风险发生的概率是80%,计算风险显露度RE。
Answer:
- 风险:30%的构件要重新开发;
- 风险发生的概率P为:P=80%;
- 损失成本C为:C=60×30%×100×14=25200元;
- 风险显露度为:RE=P×C=80%×25200=20160。
3、风险缓解、监控和管理(Risk mitigation, monitoring and management,即RMMM)
(1)风险缓解
目的:避免问题活动产生。
(2)风险监控
目的: 提供关于风险的高低变化的指示。
监控措施举例:
- 监控项目组成员对项目压力的态度;
- 监控项目组的凝聚力;
- 监控项目组成员的关系;
- 监控与报酬和利益相关的潜在问题;
- 监控在公司内及公司外工作的可能性。
(3)风险管理
目的: 假设风险已发生,提前做好管理和应急计划。
总结: 在一个项目中,RMMM越详细越好,但同时,RMMM步骤将导致额外的项目开销。
六、风险表
1、建立风险表的步骤
(1) 列出所有的风险,并分类。
(2) 估算每个风险发生的概率。
(3) 评估每个风险所产生的影响,影响值分为:1=灾难性的;2=严重的;3=轻微的;4=可忽略的。
注意: 根据概率和影响来进行排序:高概率、高影响的风险放在表上方。
(4) 形成RMMM。
2、风险表图例
风险 | 类别 | 概率 | 影响 | RMMM |
…… | …… | …… | …… | …… |
七、结束语
在一个软件项目中,风险分析是尤为重要的。如果前期没做好风险分析,那软件所产生的后果完全不堪设想。所以,学会做风险分析和管理,对软件能有一个更好的评估。
软件项目管理的风险分析与管理就讲到这里啦!如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~