3、风险种类
对软件项目的管理部门来说,在做出与规定费用按规定时间交付规定产品或达到规定性能水平的决断时,风险是永远存在的。软件项目管理部门因风险而导致工作失败有三种方式:产品达不到规定的性能水平、实际费用过高、交付过迟等。就一个项目而言,其面临的风险可分为五个方面:技术(与性能有关)、保障性(与性能有关)、计划(与环境有关)、费用和进度。
3.1、技术风险
技术风险可以定义为发展某项新设计所包含的风险,发展这项设计的目的是要将性能水平在原有基础上提高一步,但也可能因为受到某些新的约束条件的作用而使性能水平原封未动,甚至反而有所下降。技术风险的性质和原因随军用系统的设计而各不相同。许多技术风险往往是由于对新系统和新设备提出前所未有的性能要求造成的。
3.2、计划风险
计划风险是包括获取和使用一些可能不受软件项目控制但又可能影响软件项目方向的可用资源和活动。计划风险一般不会与改善技术水平有直接关系。计划风险可按一些因素的性质和来源分类,这些因素有可能中断软件项目实施计划。造成软件中断的因素主要以下几种:(1)与软件项目直接有关的高层权力机构决策造成的中断;(2)一些影响软件项目的事件或行动造成的中断;(3)主要由于一些不能预见的与生产有关的问题造成的中断;(4)因能力不足造成的中断。
3.3、保障性风险
保障性风险是与系统的部署和维修有关的风险,这些系统指目前正在研制或正在部署的系统。保障性风险包含有技术和计划两个方面风险的特征。构成综合后勤保障要素潜在的十种风险 源要素是:(1)维修规划;(2)人力和人员;(3)保障设备;(4)技术资料;(5)训练;(6)训练保障;(7)计算机资料保障;(8)设施;(9)包装、装卸、存储和运输;(10)设计接口。
3.4、费用和进度风险
一些性能和设计技术问题有时要靠增加费用和延长进度来解决,这往往会使问题变得复杂化。费用和进度增长指预计软件项目费用和进度与实际费用和时间之间的差异。因此,费用和进度增长会造成两个主要的费用/进度风险区:预计时定下不合理的低费用/进度目标所造成的风险;要想满足合理的费用/进度目标,软件项目就必须给定一个谨慎的风险。
4、风险分析的步骤
风险分析试图定量回答一些问题,这些问题与为了完成某个特定任务所研制的软件和硬件性能上固有的效果范围有关,也与人们自身相互因素的作用和影响有关。风险分析人员确定风险的方法是:把不希望的事件发生的概率与每个可预见的后果的大小相结合。
一般地,系统运行风险分析可以分为以下四个步骤:(1) 风险识别、检测某种情况,确定潜在的风险范围;(2) 风险量化,确定事件发生的概率以及产生的后果;(3) 风险影响评估和方案选择,定量计算发生风险的后果和选择行动方案;(4) 风险处理计划,描述处理风险的各种方法,并推荐具体的处理风险的行动。项目风险分析步骤也可以这些步骤为参考。
5、风险分析的方法
我们知道,对于风险分析所作的工作大多局限于任务风险分析当中。这些方法对于考虑项目风险领域的分析方法也有一定意义,风险分析方法可分为定性和定量两种,定量的风险分析方法是在定性的基础上而实现的。下面,我们对这两类风险分析方法作简要的论述。
5.1、定性风险分析方法
定性风险分析的目的是界定风险源,并初步判明风险的严重程度,以给出系统风险的综合印象,表1是一些定性风险分析方法的简介。易于看出,初步危险分析是用于识别系统中可能存在的风险源,而以下的几种方法则用于定性地量化各种风险源可能对系统造成的破坏,从而判明系统风险大小。
5.2、定量风险分析方法
定量风险分析是在定性分析的逻辑基础上,给出各个风险源的风险量化指标及其发生概率,再通过一定的方法合成,得到系统风险的量化值。它是基于定性风险分析基础上的数学处理过程。现发展较为成熟的方法有PRA(概率风险评估),DPRA(动态风险概率评估)及仿真通用软件VERT(风险评审技术)等。
PRA和DPRA都是在FTA分析基础上的量化,在可靠性及运行系统风险分析领域内应用广泛。稍作改造,我们便可将其运用到项目风险分析领域。其分析步骤如下:(1)识别项目研制过程中的困难环节,找出风险源;(2)对各风险源考察其在项目研制中的地位,及相互逻辑关系,给出项目的风险源树;(3)标识各风险源后果大小,及风险概率;(4)对风险源通过逻辑及数学方法进行组合,最后得到系统风险的度量。如果是用DPRA进行评估,则尚须考虑它们在时间上的关系。
另一种被广泛运用于风险评估的方法是VERT 。VERT是国外在八十年代初期发展的一通用仿真软件,它对项目研制构造过程网络,将各种复杂的逻辑关系抽象为时间、费用、性能的三元组的变化。网络模型面向决策,统筹处理时间、费用 、性能等风险关键性参数,有效地解决多目标最优化问题,具有较大的实用价值。它的原理是通过丰富的节点逻辑功能,控制一定的时间流、费用流和性能流流向相应的活动。每次仿真运行,通过蒙特卡洛模拟,这些参数流在网络中按概率随机流向不同的部分,经历不同的活动而产生不同的变化,最后至某一终止状态。用户多次仿真后,通过节点收集到的各参数了解系统情况以辅助决策。如果网络结构合理,逻辑关系及数学关系正确,且数据准确,我们可以较好地模拟实际系统研制时间、费用及性能的分布,从而知道系统研制的风险。
6、风险分析的原则
在风险分析时,应该遵循一些分析原则。下面是进行风险分析的几个一般性原则:
(1)风险分析是软件设计的一部分,就像应力分析是传统软件设计实践的部分一样;
(2)风险分析是正式的、严谨的、定量化的;
(3)风险分析的目的是为了支持决策,应当把风险分析作为系统软件设计和研制过程的一部分,而不应该过迟而无法做出主要的改变和资金的压力强迫在安全性和可靠性上妥协,而这种妥协不能接受的情况下,作为一种反省进行;
(4)风险分析可以按各种等级的详细程度、彻底程度和精密程度来进行;
(5)风险分析详细、彻底、精确程度与分析项目的重要性和环境潜在的破坏程度大小相一致;
(6)在一个项目的早期概念阶段,能够而且应该实施近似的风险分析,随着设计的逐渐开展,风险分析的精度和详细程度也随之提高。