作者 | 蔡喁 上海控安可信软件创新研究院副院长
版块 | 鉴源论坛 · 观擎
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”
01
基于模型的开发和验证MBDV
模型泛指用于支持软件开发过程或软件验证过程的系统的一组软件方面的抽象表示,在机载软件中,基于模型的开发和验证中所涉及的模型一般包含以下特征:
1. 使用明确标识的建模符号来完全描述模型。这里所说的建模符号可以是图形和/或文本的。
2. 该模型包含软件需求和/或软件体系结构定义。
3. 该模型的形式和类型用于软件开发过程或软件再验证过程支持的直接分析或行为评估。
相比之下一些其他类型的“类模型方法”在机载软件领域内并不被定义为一种MBDV方法。包括无法形成语法语义有限闭环的图形表达方法、或者在机载软件生命周期中无法用于表达需求/设计的图文结合表达方法。
之所以在民机机载软件中对模型开发进行如此的定义,与民用飞机所面临的适航符合性要求是相关的。正如前面几期介绍的,机载软件适航标准对软件研制过程、生命周期数据以及符合性证据等都提出了明确的要求。然而,这些过程要求都是建立在欧美80~90年代软件工程实践的基础上,以文本需求+代码为主要的开发方式。随着近些年模型技术的进步,很多研制方法中通过模型表达需求或者设计,从而改变了以往单纯依靠人工方法的开发状态。因此,传统RTCA DO-178B/C标准中部分目标不再适用于MBDV情况,同时,MBDV也存在自有的特殊方法,也会存在特有的引入错误的可能。在本世纪初期的民机研制和适航实践中,民航局方经常通过对MBDV补充专门的问题纪要的形式对其符合性要求进行专门的规定。为改变这种情况,在RTCA DO-178C标准修订时专门制定了基于模型的开发和验证补充标准。
02
MBDV在民机中的应用模式
由于民机中潜在的模型多种多样,其表达方式以及承载的设计内涵各不相同,这将造成模型在整个层次化的研制体系中发挥不同的作用。且,由于很多实际项目中,难以用一种模型完全表达一款机载软件中所有的需求和设计,往往存在模型和文本需求/设计混用的情况。以下是几个不同的模型场景例子:
下表提供了几组使用了模型的软件生命周期,解释了不同的模型开发时的较高级需求:
表1 不同模型开发时的模型运用场景
-
例A: 用来描述低级需求和软件构架的模型,如表1中案例3,用一个或者多个模型来代表软件的低级需求和软件构架。
图 1
-
例B: 用来描述高级需求、低级需求和软件构架的模型,如表1中案例2。
图 2
-
例C: 另一种用来描述高级需求、低级需求和软件构架的模型。
图 3
-
例D:仅用一个模型来描述部分的高级需求,其下层为经典的开发流程。
图 4
-
例E:如表1中案例2,仅用一个模型来描述系统设计、高级需求、低级软件需求和软件的构架。
图 5
03
MBDV在民机适航中的主要挑战
3.1 层次和追溯方面的问题
传统的机载软件过程要求软件研制环境具备明显的层次特征,且不同层次之间实现严格的追溯关系。然而,由于模型的引入,传统上通过条目进行的追溯方法变得困难。且,由于不同类型的模型表达的需求和设计维度不同,模型在层次中的定位实际上无法给出统一的规定,进一步加剧了上述问题。具体在运用过程中,由于模型中的单元维度与传统条目化需求和设计中的维度不同,研制单位可能难以建立有效的精确追溯,或者难以检查和评估追溯的正确和完整性。此外,由于层次的相对不稳定,也造成了模型具体需要满足机载软件适航标准中哪些生命周期目标变得不再直接。
3.2 模型仿真方法的有效性
在早期开展模型化设计的研制单位内,模型自身可以通过早期的仿真来检验设计的正确性是模型运用的重要驱动力。相比于必须完成代码开发和集成才能通过测试检验正确性的传统开发环境,仿真方法无疑将早期验证活动很大程度上自动化了。然而,作为民机软件工程,为保证产品的安全性,验证方法自身的有效性也是重要的方面。在通用软件中使用的很多技术,由于难以达到民机适航所要求的确定性和准确性水平,难以在民机中使用的例子屡见不鲜。为此,使用模型仿真的研制单位,需要在定义模型以及设计模型仿真方法的过程中,通过理论分析以及实践检验等方法自证模型仿真的有效性。这也无疑提高了在民机中运用模型方法的难度。
04
标准中对MBDV的要求
DO-331标准,正是基于上述两点,对使用模型定义的各级需求/架构/设计数据的研制和验证要求(包括验证覆盖率的判断方法)、仿真作为验证手段的符合性要求进行了规定。
在具体工程应用中,利用基于模型的方法进行机载软件的研制和验证时,除了要满足DO-178C中相应过程的目标外,还需要满足补充文件DO-331中新增的如下几类目标。
(1)软件开发过程
· 标识任何对高级需求实现或执行无用的特定模型元件
当软件高级需求可以通过规范模型进行表示时,没有描述任何高级需求且不能作为开发过程或开发活动输入的模型元件都应该被标识出来。该目标是否满足可以通过MB.6.3.1中的验证目标进行证明。
· 标识任何对软件架构实现或执行无用的设计模型元件
当软件低级需求可以通过规范模型进行表示时,没有描述任何低级需求且不能作为开发过程或开发活动输入的模型元件都应该被标识出来。该目标是否满足可以通过MB.6.3.2中的验证目标进行证明。
· 标识任何对低级需求实现或执行无用的设计模型元件
当软件架构可以通过规范模型进行表示时,没有描述任何软件架构且不能作为开发过程或开发活动输入的模型元件都应该被标识出来。该目标是否满足可以通过MB.6.3.3中的验证目标进行证明。
(2)软件需求过程输出结果的验证
· 仿真用例正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-3中目标1、2、4或7是否满足,则在传统测试方法的基础上必须补充对仿真用例的确认工作。MB.A-7目标10“仿真用例正确”也应被满足。
· 仿真程序正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-3中目标1、2、4或7是否满足,则目标“仿真程序正确”也应被满足。
· 仿真结果正确,并且解释差异性
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-3中目标1、2、4或7是否满足,则目标“仿真结果正确,并且解释差异性”也应被满足。
(3)软件设计过程输出结果的验证
· 仿真用例正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-4中目标1、2、4、7、8、9或11是否满足,则目标“仿真用例正确”也应被满足。
· 仿真程序正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-4中目标1、2、4、7、8、9或11是否满足,则目标“仿真程序正确”也应被满足。
· 仿真结果正确,并且解释差异性
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-3中目标1、2、4、7、8、9或11是否满足,则目标“仿真结果正确,并且解释差异性”也应被满足。
(4)软件验证过程输出结果的验证
· 仿真用例正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-6中目标1或2是否满足,则目标“仿真用例正确”也应被满足。
· 仿真程序正确
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-6中目标1或2是否满足,则目标“仿真程序正确”也应被满足。
· 仿真结果正确,并且解释差异性
补充文件DO-331中规定,若使用仿真技术作为符合性方法,用于证明表格MB.A-6中目标1或2是否满足,则目标“仿真结果正确,并且解释差异性”也应被满足。