基于GJB5000A的机载设备软件风险管理
2021-07-10张望成罗海鹰周平平
张望成,张 俊,罗海鹰,周平平
(航空工业洪都,江西 南昌,330024)
0 引言
机载设备软件一般是指在高实时性嵌入式平台上运行,用于实现信号处理、数据解算、数据融合、数据交换、时序控制、系统校准、系统自检等功能的软件。这类软件开发具有以下一些共性特点:软件规模一般比地面设备软件规模小;实时性和可靠性要求高;软件需求不易一次到位;软件项目研制时间周期紧。从表面上看,规模较小的软件相对容易开发成功,使人们往往忽视了机载设备软件的开发风险。其实机载设备软件的共性特点恰恰透露出机载设备软件开发可能存在的巨大风险。例如多数机载设备软件代码在3万行以内,参与开发和管理人员配置少,软件开发过程可能缺乏足够的监管和测量分析,造成了项目管理进程缺乏统一性和技术可重复性;软件开发周期紧往往导致验证不充分,一些隐藏问题无法暴露,造成软件的可靠性降低;需求的不稳定性,导致工作进度拖延,计划得不到保证,管理效率低下,从而影响整个软件的研发工作。
如何应对这些风险呢?根据现有掌握的资料看,与国外同类软件开发水平相比,我国的机载设备软件产品开发水平差距较大,因此急需要采用一套科学的工程化方法对机载设备软件风险进行分析和管理。近些年来,软件理论界和产业界开始重视软件的风险管理,并产生了一系列的风险管理过程模型,这些模型所定义的规范对管控软件风险能够发挥有效的指导作用。如Charette模型-该模型设计的风险分析和管理的体系分为两大阶段,分别为分析阶段和管理阶段,这是一个相互重叠和循环的模型;CRM持续风险管理模型-将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。它强调的是对风险管理的各个组成部分的沟通;IEEE风险管理标准-定义了软件开发生命周期中的风险管理过程。包括以下活动:计划并实施风险管理、管理项目风险列表、分析风险、监控风险、处理风险、评估风险管理过程;CMMI(集成能力成熟度模型)的风险管理模型-其核心思想在融合上述风险管理模型的基础上还提出了“风险管理数据库”的概念。
1 风险管理模型
《国家军用软件研制能力成熟度模型(GJB5000A)》规定了软件研制和维护活动中的主要管理过程和工程过程实践,其“风险管理过程域”正是基于CMMI风险管理模型所建立的一个独立的关键过程域,使“在过程中进行风险管理”的原则得以真正体现[1]。风险管理过程域包括三个特定目标(SG):进行风险管理准备、识别并分析风险、处理风险,每个目标的实现通过一系列的特定实践来完成,详细见表1[2]。
表1 CMMI 3级过程域:风险管理
通过图1的GJB5000A风险管理过程域模型可以看出,基于CMMI的GJB5000A风险管理过程域模型对软件风险管理过程作了定义,主要包括确定风险来源和类别、风险参数定义、制定并维护风险管理策略、风险识别及评估、风险跟踪及控制和风险管理产品的提交等,目的是在风险产生危害之前识别出来,从而有计划地消除或削弱风险。在项目的生命周期内,循环地执行风险识别分析、减缓跟踪,直到项目的所有风险都被识别与解决为止[3]。
图1 GJB5000A风险管理过程域模型
2 风险管理具体实践
我们在GJB5000A实施过程中逐渐摸索和总结出一些适合机载设备软件风险管理的方法。首先将风险管理看作是一个迭代的过程,风险管理贯穿于项目的全生命周期,项目组所有成员对风险管理都负有责任。其次做好项目风险的策划,为了管理项目可能存在的风险,在进行项目策划时需要根据历史项目所积累的经验和当前项目的情况进行风险识别和评估,并制订风险管理计划。风险管理计划作为机载设备软件开发计划的一部分进行描述。然后依照风险策划依次开展风险识别、风险评估、制定风险缓解和应急措施、跟踪和管理风险等活动。
2.1 识别风险
软件风险识别是对软件研发的各个方面,特别是对关键技术攻关、项目管理、经费控制等方面进行考察研究,从而确定可能影响项目得以实现的事件或情况[4]。对于机载设备软件的风险识别主要是参照单位资产库提供的风险信息,分析项目或单位内部造成风险的基本因素,确定项目风险源和风险类别,特别要分析有无项目特有风险源,软件项目负责人将识别出的风险记录到项目风险列表中。我们根据机载设备软件特点将风险源分为项目组内、单位内部和客户3种,将风险类别分为需求风险、设计和实现风险、计划编制相关风险、管理风险、人员风险、开发环境风险、客户风险、过程风险、产品风险9类。
2.2 评估风险
风险评价是指用具体的方法评价具体的风险,能否有效降低不确定性是指导这一过程的主要标准。根据风险理论基本定义,风险不是一个数字,也不是一条曲线或向量,而是一个三元组的完备集,即Risk={
在机载设备软件风险评估时,我们根据发生概率、风险影响、风险紧迫度,对每一风险做出评估,而项目组内的风险可以根据经验和相似项目或项目单元参照获得不确定性的概率和影响程度。同时分析各阶段风险的特点,建立其风险评价指标体系并识别出适用的评价方法,包括非正式的推测、数理模型和实践经验。
2.2.1 风险发生概率
风险发生概率使用极高、高、中、低、极低五级进行评估,可以参考概率估计表(见表2)估算风险发生的可能性,其中最后一列得分用于计算风险值。
表2 风险发生概率对应分值
2.2.2 风险影响
风险发生的影响可以从成本、进度、用户满意度几个方面来考虑,在有度量数据支持决策的情况下,可以用量化的费用和时间等指标来描述。在通常情况下,可以使用极高、高、中、低、极低五级进行综合评估。用于评价的评价表如表3,最后一列得分仍然用于计算风险值。
表3 风险影响对应分值
2.2.3 风险紧迫度
风险紧迫度是将风险发生的紧迫度通过时间进行量化,分为紧急、较急、一般、较缓慢四个级别进行预测,得出的最后一列分值仍然用于计算风险值。
表4 风险紧迫度对应分值
2.3 制定风险缓解和应急措施
对于已识别的风险,软件项目组根据风险评估结果,参照单位资产库和《常见风险和措施表》制定风险缓解和应急措施来避免、控制、转移、监督或接受风险,将记录纳入到《项目风险列表》中。机载设备软件风险缓解策略包括以下几种:
1)风险规避:改变或降低要求,但仍然满足用户要求。
2)风险控制:采取积极步骤,转移风险或接受风险。
3)风险转移:重新分配需求,以缓解风险,将风险转移其他机构、组织或人员。
4)风险接受:认可风险,但是不采取措施或当风险出现时把它当作问题处理,不再花费额外的资源来管理。
根据嵌入式机载设备软件开发特点,我们采取的风险应急措施方式已经纳入了组织资产库。如对于需求变更导致开发工作量增大无法预期交付软件的风险,可采取的应急措施有增加人员、调整人员结构、合理安排加班等;对于硬件资源无法按时到位的风险,可采取的应急措施有调整计划,优先安排与硬件资源无关的软件开发活动,采用其他类似硬件替代资源等。
2.4 跟踪和管理风险
根据帕累托80%原理,项目所有风险中只有小部分对项目威胁较大。由于每个项目的资源都是有限的,所以风险管理(处理、减缓、监视和控制)必须把精力集中在最重要的风险子集上。使用以下方法确定需管理的风险项:
1)所有风险均纳入项目风险列表管理。风险根据风险的优先级进行排序,风险的优先级是按照风险对项目的发生概率、影响程度和紧迫度来确定的,风险的值越大,则风险的优先级越高。风险值=发生概率×风险影响×风险紧迫度;
2)风险值小于等于18且所有单项风险参数小于3为低风险,大于18或者某个单项风险参数大于等于3且小于等于60为中风险,大于60为高风险;
3)对于高风险,项目组执行风险缓解策略并制定应急计划;对于中风险,项目组启动缓解计划,采取缓解措施;对于低风险,风险监控,制定风险缓解计划。
在风险跟踪时,需确定和标识风险的状态。风险的状态包括跟踪、关闭,按照下面的方法确定和标识风险的状态:
1)跟踪状态指风险处于项目组的监控下并按照风险管理规程进行处理;
2)关闭状态指风险已经解决不需要跟踪或者不会再发生,对于这类风险应该将发生概率、风险影响、风险紧迫度设置为0。
3 结语
软件风险管理正越来越广泛地被应用,因为它被证明能够在风险变为问题之前得到有效的识别和消除”[6]。随着机载设备信息化和智能化程度不断提升,机载设备软件的规模和复杂度也越来越高,伴随着各种不确定性因素的产生,军用软件项目的风险也不断增大。按照GJB5000A标准要求,在软件生命周期内有效控制和管理风险,遵循风险管理原则,根据风险状态,启动相应的缓解或应急措施,并确保措施成功实施,是提升军用软件质量的有效途径。