本技术方案介绍了一种用于机载软件的安全建模和自动化测试方法。该方法首先根据软件所属领域,通过安全性质抽取模块提取必要的安全性质描述。接着,对系统进行建模,构建安全性质模型,并基于此模型自动生成测试用例,以验证软件的安全性。该方法提高了测试效率,确保了机载软件的安全性。
背景技术
随着信息化程度不断加深和软件工程技术快速迭代,软件在航空、航天、电子、船舶等领域的应用范围也越来越广泛。尤其在军用飞机领域,软件所扮演的角色愈发重要,以F-22和F-35飞机为例,软件源代码超过700万行规模,实现全机80%以上的功能,负责完成飞行控制、任务规划、导航识别等核心关键任务,已经成为航空装备系统中最为核心的部分,其安全性水平至关重要。
机载软件系统属于典型的复杂嵌入式系统,具备“接口交互频繁、软硬耦合密切、复杂任务场景、严格时序约束”等运行特征,故障机理较为复杂,安全性验证工作面临巨大挑战。标准软件安全性验证工作基本遵循“系统危险分析-软件故障模式分析-软件安全性设计-软件安全性测试”流程。通过开展系统危险分析,可以明确软件危险源、原因及影响,在此基础上分析软件故障模式,获取安全性需求,研制人员依据此需求设计软件的安全性要素,形成指导安全性测试的分析准则。机载软件自身的复杂应用场景和运行要求导致故障机理与通用软件明显不同,需要结合机载软件安全性特性,开展领域安全性验证,充分摸底机载软件安全性水平。
目前,在型号研制过程中多采用逐层功能分解开发的思路。模型驱动开发(ModelDriven Development,MDD)是一种以模型作为主要工件的高级别抽象的开发方法,应用范围正在逐渐扩大。但是目前模型驱动的机载软件开发工作基本上围绕“需求分析-设计模型-模型验证-代码生成-代码测试-使用维护”进行开展,其中模型验证的目标主要是确保模型完整性和功能正确性,代码测试阶段主要完成功能测试和安全性测试,未全面开展模型层的机载软件安全性分析和验证,模型层关注功能安全验证,仅在代码层开展安全性验证导致测试滞后于开发过程,安全性缺陷修复成本高昂。因此,需要针对机载软件SysML模型层安全性验证进行研究,保障模型设计安全可靠。此外,安全性分析过程过于依赖人工也导致测试验证自动化程度低,测试效率难以满足研制进度要求。
综上所述,在机载软件安全性验证过程中仍存在如下痛点问题:
1)安全性模型建模不全面:模型驱动开发方法在机载软件研制领域的应用主要集中于需求模型快速构建、代码自动生成进行研究,对于模型设计、转换过程中的机载软件安全性问题考虑不足,现有的相关方法多集中于典型安全性质,包括资源占用冲突、功能逻辑安全等,无法覆盖机载软件的复杂故障模式,并且现有安全性分析多依赖质量部门对代码层开展,未及时在模型层开展全面安全性建模分析,导致安全性论证不及时,后续维修成本高昂;
2)安全性测试过程不高效:目前开展安全性测试时,测试用例均由测试人员依据系统危险分析以及软件故障模式分析工作中识别的系统危险或者软件故障模式,进行安全性测试用例设计,确定软件安全性测试用例内容(包括输入、约束条件、预期输出、通过准则等)。但该过程主要由测试人员进行手动设计,形成表格形式的安全性测试用例集,导致测试用例遗漏、安全性分析准则覆盖不全,导致测试过程冗长,安全性缺陷暴露效率低,拖延机载软件研制进度。
实现思路