佘红英,徐凯健
(中国航发控制系统研究所,江苏无锡214063)
发动机控制软件是航空发动机控制系统中的核心关键部件,属于机载安全关键软件,其运行结果直接影响人身和设施的安全,为此采取有效的方法来保证安全关键软件的“零缺陷”泄漏,将得到越来越多的关注。根据美国防务系统统计数据,进入21世纪后,超过80%的系统功能由软件参与实现,随着航空发动机功能和性能要求的不断提高,软件的规模和复杂度越来越大,其安全性和可靠性问题也愈加突出,研发进度也更加难以保证。
在质量和进度都要保证的双重要求之下,基于“高质量的过程产生高质量的产品”这一理念的“能力成熟度模型集成(CMMI)”和“民航机载软件适航标准(DO-178)”应运而生,成为应对问题和挑战的主要方法。在保证安全关键软件的“零缺陷”泄漏方面,当前国内外研究方向主要包括基于测试缺陷预测模型的量化控制[1]、基于技术评审绩效的量化控制[2]和基于故障模式和检查准则的量化控制[3]等,并取得了一定的成果。
本文主要结合航空发动机控制软件的特点和面临的挑战,采用CMMI4级量化管理的方法,以安全关键软件的零缺陷泄漏为目标,建立量化控制模型和过程性能指标,结合项目研制实际利用蒙特卡洛模拟来预测和控制质量目标的实现情况,逐步实现航空发动机控制软件的质量量化控制。
发动机控制软件的主要特点是与上一级系统的特点紧密相关,从软件的角度来说,主要面临的挑战为:
(1)由于控制系统的各项功能需要在发动机的试车、试飞过程中逐步明确,所以软件的全生命周期过程中需求变更异常频繁,而这种变更所带来的质量控制和进度的要求挑战巨大;
(2)正因为变更频繁,对于软件版本控制的要求苛刻,技术状态的并发和收敛的管理和控制需要异常严格的措施,尤其在基于需求的符合性追溯证明方面,需要极其严密的证据确保质量的全过程可追溯;
(3)随着发动机试车、试飞以及列装部队后的实战化、常态化演练的需要,软件的任何质量问题均可能导致严重后果,零缺陷泄漏已经成为当前的迫切需要和挑战。
基于以上特点,结合CMMI模型高级别(4级)成熟度能力要求中的软件质量量化控制和管理的要求,以零缺陷泄漏为目标,将研制过程细分成标准子过程并定义,建立质量预测模型和过程性能指标,推进过程量化管理的落实、调整和监测,以保证最终实现软件产品的零缺陷泄漏目标。
当发动机控制软件发生缺陷泄漏时,会通过相应的事件序列层层传递到航空器层级,从而引起航空器的灾难性后果[4]。由于软件产品的复杂性,软件缺陷不可能像硬件失效那样可以事前去分解、量化和预测,软件缺陷泄漏引起的失效事件也不可能是1种按事件顺序简化的线性关系,而是异常复杂的交错关系,因为绝大多数软件缺陷会通过软件模块之间的数据流传递和功能耦合进行快速传递和相互影响,从而严重破坏系统的包容性,引起系统层面功能失效。
基于对软件缺陷泄漏的后果分析和软件本质特点的认识,采用量化质量管理的方法,构建零缺陷泄漏的量化控制模型和过程性能指标,当前常用的质量量化管理方法主要有:
(1)GJB 9001C质量管理体系要求;
(2)六西格玛质量管理;
(3)CMMI能力成熟度模型集成。
虽然以上3种方法都有量化管理的要求,但方法之间有较大的差异性。GJB 9001C基于规范化和符合性,强调以过程方法和基于风险的管理思维开展过程管理,包括过程的策划、实施、检查和改进,其量化管理的要求围绕过程目标的建立与实施展开,侧重于管理和控制,是量化质量管理的基础;六西格玛管理利用数据和事实来驱动质量水平的提高,重点关注的是变异、波动和效率提升,对生产过程的稳定性要求极高,在制造生产领域广泛采用;而CMMI 4级能力涉及的质量量化管理的核心是定量测量和基于目标的量化管理,通过建立过程的性能基线和性能模型来实施量化管理[5-7],更加注重软件行业的特点,基于目标牵引,模型驱动的方式进行质量的预测、干预和控制。
当前针对发动机控制软件的质量量化管理方法,主要依据CMMI4级量化管理的要求进行构建。在构建过程中,首先确定零缺陷泄漏的目标影响因子,DO-178C标准给出了实现软件高安全性的可行方法,即基于“高质量的过程产生高质量的产品”的理念,将研制过程分解为5个工程过程和4个管理过程,共定义了71项质量符合性目标,目标的满足可以保证系统安全性达到10-9。基于此,结合发动机控制软件的研发特点,对控制软件的研制过程重构和细分,建立了8个标准子过程,同时依据DO-178C的71个符合性目标,针对每个子过程识别影响最终产品缺陷泄漏的过程质量要素,具体如图1所示。
图1 研发过程对缺陷泄漏的影响
最终产品的缺陷泄漏概率为各过程质量要素的综合影响结果,即为
各过程的质量要素{Xn}之间存在一定的关联性,可以通过对前序过程质量要素的评价,发现某些{Xn}的偏离后,通过{Xn}和{Xn+1}之间的关联性,提前对后续的{Xn+1}进行关注,采取补救措施,从而降低缺陷泄漏风险。由此{Xn}和{Xn+1}之间的关联性建立尤为重要,在此提出1种基于缺陷分类的关联性构建方法。
采用正交缺陷分类方法[8-10]定义如下缺陷泄漏的类型:
(1)需求理解错误;
(2)派生需求错误;
(3)数据检查缺失;
(4)初始化错误;
(5)数据流错误;
(6)库函数使用错误;
(7)库函数错误;
(8)关联性更改错误。
将每一过程的质量要素和缺陷类型进行关联,默认所有关联的质量要素均被满足时,该类缺陷泄漏的概率为零;如果前序过程的质量要素未满足,通过后续与之关联的其他过程质量要素进行补充完善的,则该类缺陷泄漏概率有一定的提升;完全不满足并且也没有在后续采取任何补救措施的,则出现该类缺陷泄漏概率为100%。依据以上原则,通过历史数据的积累,构建过程质量关联预测模型,变更过程的模型应用原理如图2所示。
图2 变更过程质量关联预防模型应用原理
为了更加直观地体现过程能力,及时掌握质量偏离情况,及时采取相应的纠正措施,需要在各过程片段上进行质量“指示器”的设置。使用缺陷的检出数作为质量指示器是业界的通常做法,而其背后的假设条件是:过程稳定,团队相对稳定,在一段时间内,缺陷的注入可能性是一定的,只要多检出缺陷,那么遗留到后续过程的缺陷就会减少,每个过程如果都能100%的检出本过程注入的缺陷,那么最后的缺陷泄漏也必然为零。相关的原理说明如图3所示。
图3 缺陷的注入/检出和过程能力的关系
由此,对研制过程中的所有检出活动发现的缺陷进行采集和分析,从检出和注入2个维度进行缺陷的分类,建立了3个过程性能指标:
(1)PCE:Phase Containment Effectiveness,度量本过程验证类活动检出本过程注入缺陷的能力,PCE应用于所有软件开发的标准过程中。软件开发过程PCE越高,开发能力越强,软件开发过程的PCE为100%,即可实现软件开发过程“一次做对”,无任何缺陷被注入到软件产品中,即表示软件即使不测试,也已经实现零缺陷。计算公式为
(2)DCE:Defect Containment Effectiveness,度量本过程检出前序过程泄漏缺陷的能力,DCE应用于软件测试的标准过程中。软件测试过程DCE越高,测试能力越强,软件测试过程的DCE为100%,即表示软件测试可以检出前序所有过程的缺陷,通过软件测试的产品即为零缺陷的软件产品。计算公式为
(3)TCE:Total Containment Effectiveness,度量交付前整个研制过程检出缺陷的能力,TCE用于评价软件研制过程的整体能力。TCE越高,软件研制过程抑制缺陷泄漏的能力越强,TCE为100%,即表示所有缺陷都能被研制过程检出,缺陷泄漏为零。计算公式为
基于PCE、DCE和TCE的算法定义,可以将缺陷按照过程分布进行统计和分析,在数据积累到一定程度后,通过正态检验的缺陷过程分布数据可使用蒙特卡洛模拟的方法进行缺陷泄漏预测建模[11-15],从而得到各过程的缺陷检出期望数,并通过实际检出数和期望检出数之间的偏离分析,调整后续期望的过程性能指标和过程质量要素,从而达到期望的缺陷泄漏为零的目标。在项目研制初期,依据产品的估计规模(一般为软件代码行),使用蒙特卡洛模拟分析预测项目整个研制过程中的总缺陷数和最终目标实现的概率。其基本原理是:利用历史数据的积累,将每个项目的总缺陷数进行分析,将符合正态分布的数据进行计算得到均值和标准差,由于受到样本点大小的影响,使用蒙特卡洛模拟的方式随机产生10000个符合历史数据均值和标准差的随机点,如图4所示,再依据具体项目的预测缺陷总数,通过蒙特卡洛模拟计算得到项目能够实现其预测目标的概率,一般要求确定性概率达到80%以上。
图4 蒙特卡洛模型预测研制过程总缺陷数
基于总缺陷数符合正态分布的前提,进一步对各过程的注入缺陷数进行正态性检验,同样使用蒙特卡洛模拟的方式,对每个注入缺陷的过程,自动生成10000个符合正态分布数据均值和标准差的随机点,据此将缺陷总数分配到各过程,得到每个过程的注入缺陷数。基于各过程注入的缺陷均能在过程中被检出这一假设,设置各过程的“计划发现缺陷数”,如图5所示。在项目研制过程中,将实际发现的缺陷数填入“当前发现的缺陷能力”,通过蒙特卡洛模拟的10000个随机数,可以自动得到计划和实际之间的偏离,并模拟得到后续期望的总缺陷被完全检出的概率(将具体的缺陷检出数的数值对应的直方图面积除以总的直方图面积即为概率)。图5中给出的示例是在分配完各过程的检出缺陷数后,最终实现零缺陷泄漏的软件产品的概率达到94.28%(图中的表格是由“水晶报表”工具自动生成的,所以“组织能力”一行始终为0,其内置了相关的蒙特卡洛随机数自动生成等模拟算法)。基于这个概率值的高低,对各过程的检出缺陷数的期望值进行调整,通过设置过程目标,以实现项目的最终目标。在实施过程中,逐步使用实际的缺陷检出数代入模型进行计算,以判断最终的缺陷泄漏概率目标值是否可达,持续调整后续过程的质量控制策略,以获得最终缺陷泄漏为零的概率。
图5 蒙特卡洛模型预测最终缺陷泄漏为零的概率
产品质量和过程质量密切相关,只有良好的过程质量才能保证最终产品质量的符合性,对于安全关键软件来说,追求零缺陷泄漏是必然的选择。CMMI4级量化管理对基于顶层目标的持续质量改进过程提出了明确要求,通过不断将过程标准化、规范化,在过程测量项完整、采集规范、数据真实可信的条件下,逐步积累有效数据,基于组织的质量和过程性能目标,结合项目的特点,运用蒙特卡洛模拟来预测和监控质量目标的可达性,确保及时采取纠偏措施,不断用数据和证据来提升组织的软件研发能力是可以实现的,也是安全关键软件实现零缺陷泄漏目标的必经之路。