☆舰船产品可靠性☆船舶标准化与质量2022年第5期36软件故障预测技术研究方法探讨中国船舶集团有限公司综合技术经济研究院闫然李慕宇王梅晨张凯摘要:软件质量在武器装备中越来越重要,软件故障预测是保证软件质量的手段之一。本文介绍了软件故障预测技术的发展和研究背景和与软件故障有关的名词概念或定义,说明此技术研究的重要性;对近些年来对软件故障预测关键技术的研究做了调研,总结了国内外主要的研究方法种类;阐述了软件故障预测技术的发展方向,总结了软件故障预测,指出目前发展的不足,提出自己的看法。关键词:软件故障故障预测引言软件质量工程包括软件测试、故障预防、故障检测、容错、形式化验证和故障预测等众多软件质量保障活动。其中,软件测试是软件开发过程中最重要的质量保障方式,而软件故障预测可以检测出很多软件问题并且可以提高软件测试的效率。因此,有必要在软件测试时引入软件故障预测模型。故障预测可在系统运行过程中通过监测相关参数指标,预测出将要发生的故障,在系统故障或者任务中断之前采取措施,如故障屏蔽、系统重构、系统重组等手段,保证系统的正常运行。这时候故障预测可和可靠性设计技术相结合,待预测出故障后,可用设计时预先的技术手段,共同完成系统任务。对于实时性要求不高的系统软件,可通过故障检测,发现故障并及时恢复系统。软件故障预测模型已从20世纪90年代一直研究至今,故障率预测(fault-prone)模块的定义早于系统测试。Menzies等[1]的研究表明,如果建立了健壮模型,故障预测模型的检测率(71%)高于软件复审的检测率(60%)。因此软件故障预测可以检测出很多软件问题并且可以提高软件测试的效率。软件测试效率的提高可以缩短软件开发周期,减小项目开发风险,缩减资源及基础设施的消耗。软件测试对测试人员的经验水平要求较高(经验丰富的测试人员往往比新手发现软件故障的效率高出很多),并且测试过程耗时且代价大,因此有必要在软件测试时引入软件故障预测模型。预测模型可以使软件测试人员关注那些具有故障倾向的模块,让软件项目的测试具有针对性,从而缩短软件测试周期。除了提高软件测试效率,软件故障预测在软件开发过程中还有很多用处。比如在软件开发过程中对软件进行故障预测可以保障开发出高度可靠的系统,根据方法级属性可以确定出结构较为复杂易出错的代码;根据面向对象(Object-Oriented,OO)属性的度量选择最佳的系统设计方案,确定可以重构的模块,基于预测结果...