0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DO-332帮助解决OOT的动态灵活性关键认证挑战

星星科技指导员 来源:嵌入式计算设计 作者:BENJAMIN BROSGOL 2022-11-08 14:27 次阅读

DO-332是DO-178C标准对面向对象技术(OOT)和相关技术的补充,分析了安全关键软件中面向对象引发的问题,并为处理OOT的漏洞提供了新的指导。DO-332的一个重要新目标是“本地类型一致性验证”,它利用了称为“Liskov替换原理”的类型理论结果,并帮助解决OOT的动态灵活性带来的一些关键认证挑战。

面向对象技术(OOT)被广泛使用,并得到包括C++JavaAda在内的一系列编程语言的支持,但由于各种原因,它的普及尚未扩展到机载和其他安全关键软件。根本问题是验证利用OOT三个基本元素的软件的复杂性:继承,多态性和动态绑定。(图 1 说明了面向对象的基础知识。一个简单的例子说明了这些问题:

图1:面向对象基础知识

poYBAGNp9tyATsxyAAB1h1SmucU165.jpg

假设 Sensor 类是继承层次结构的根,ref 是对此层次结构中任何类中的对象的多态引用,而 Reset 是为不同的 Sensor 类定义不同的操作。声明参考。Reset(。..) 根据 ref 表示的对象的类动态绑定到相应的版本。如何验证此调用是否满足重置操作的要求?

如果使用继承来定义不是传感器专用化的子类,则会出现一个问题。此子类的重置可能具有与重置传感器无关的某些效果,或者可能会生成异常。ref 从这样的子类引用对象将是一个错误,需要分析以表明错误不会发生。这使验证过程复杂化。

另一个问题涉及结构覆盖率分析。对于 DO-178 标准中三个最高级别(A、B 或 C)中的任何一个的系统,必须使用基于需求的测试来证明完整的语句覆盖率。但是,编译器可能会选择几种实现策略来处理动态绑定,这些策略对“语句覆盖率”的含义有不同的含义。结构覆盖范围的范围不应取决于编译器使用的实现策略。

DO-332[1]是DO-178C[2]的OOT补充,通过局部类型一致性的新概念解决了这些问题,该概念利用了继承只应用于类专用化的原则。

继承和利斯科夫替代原则

在面向对象的设计中,系统的体系结构反映了类及其关系。一个特别重要的关系是专业化(“is a”),但还有很多其他关系。实现设计涉及选择用于捕获关系的语言机制。

在面向对象的语言中,继承可用于实现两个类之间的各种关系。但是,当继承用于专用化以外的任何内容时,可能会出现异常,因为为超类定义的操作可能对子类没有意义。在类型论的背景下,已经研究了将继承限制为专业化关系,其中它被称为Liskov替换原理(LSP)[3]。非正式地说,LSP 意味着无论在哪里可以使用超类的实例,都应该允许替换任何子类的实例。

使用继承进行专业化与操作的前置条件和后置条件(其“协定”)具有重要的交互作用。前提条件是在调用操作时对程序状态所做的假设。后置条件是保证操作在操作完成时对程序状态进行的操作。前置和后置条件可以明确指定 - 可以在源文本中指定,如Ada 2012[4]或SPARK[5],也可以单独指定 - 或者它们可以隐含在操作逻辑中。

如果继承符合 LSP,则操作的子类版本不应施加比超类版本更强(更具限制性)的前提条件。否则,调用可能在某些情况下(在超类实例上)成功,但在其他情况下(在子类实例上)失败。类似地,子类的操作版本不应指定比超类版本更弱(更通用)的后置条件。

因此,符合 LSP 意味着满足两个属性:

协定一致性:任何子类操作都不会加强它所覆盖的超类操作的前置条件或削弱后置条件。

行为一致性:每个子类操作都满足其超类的要求。

DO-332 在新目标“本地类型一致性验证”中捕获了这些概念。此目标不需要证明类层次结构符合 LSP,这将过于严格。相反,它反映了对于符合要求的类体系结构,验证工作更简单,并且分析只需要考虑本地上下文。

本地类型一致性

图 2 显示了与验证本地类型一致性相关的活动,DO-332 需要 A、B 或 C 级别的软件。“对于使用替换的每个子类型”的措辞是指发生动态绑定的上下文,例如 ref。Reset(。..),所讨论的“子类型”是 ref 在这一点上可以引用的对象的类。潜在的类不一定是完整的层次结构,不同的类集可能适用于同一操作的不同调用。

图2:与验证本地类型一致性相关的活动,DO-332 要求级别为 A、B 或 C 级软件

pYYBAGNp9t2ARSCqAABcrcuuKHg531.jpg

考虑引用的特定出现。Reset(。..),并让 HeatSensor 成为 ref 可以在那里引用的对象可能的子类之一。引用的本地类型一致性。HeatSensor的重置(。..)可以“乐观地”或“悲观地”地证明。如果HeatSensor满足LSP,则乐观方法有效,可以通过两种方式进行:

通过形式化方法,通过证明HeatSensor的复位版本满足传感器版本的要求,并且不会加强传感器复位的前置条件或削弱后置条件。

通过测试,通过使用 HeatSensor 的实例对传感器的重置版本运行基于要求的测试。

来自编程语言及其工具集(例如 Ada 2012 或 SPARK)的适当支持可以促进形式化方法。

乐观的方法将证明超类和子类的操作版本之间的契约和行为一致性。通过对子类的基于需求的测试以及可能通过形式化方法获得额外的验证。

如果类不符合 LSP,或者动态绑定调用很少,或者层次结构很浅和/或很窄,那么测试可能出现的每种可能的情况可能是最简单的。这是图 2 中第三个项目符号项中指定的悲观测试。需要基于需求的测试来对可能出现的每个子类执行操作。

DO-332、本地类型一致性和 LSP 指南认证

本地类型一致性验证只是安全使用 OOT 的一个方面;DO-332 包含有关其他 OOT 元素以及相关技术(如通用模板)的指南。DO-332 是“语言不可知论者”;有关如何使用 Ada 2012 作为编程语言在安全关键或高安全性系统中应用 OOT 的更多细节[6]。

DO-332 的本地类型一致性指南与 DO-178C 的一般验证方法一致,确保所有测试都基于要求。它以一种新颖的方式调整验证活动,以反映面向对象的语义和类结构对LSP的遵守程度。新指南应有助于促进面向对象编程(OOP)在航空电子设备和其他关键领域的安全使用。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2541

    文章

    49938

    浏览量

    747425
  • JAVA
    +关注

    关注

    19

    文章

    2943

    浏览量

    104084
  • C++
    C++
    +关注

    关注

    21

    文章

    2084

    浏览量

    73300
收藏 人收藏

    评论

    相关推荐

    使用低成本MSPM0 MCU提高电池管理设计的灵活性

    电子发烧友网站提供《使用低成本MSPM0 MCU提高电池管理设计的灵活性.pdf》资料免费下载
    发表于 09-07 10:53 0次下载
    使用低成本MSPM0 MCU提高电池管理设计的<b class='flag-5'>灵活性</b>

    使用低成本MSPM0 MCU提高电子温度计设计的灵活性

    电子发烧友网站提供《使用低成本MSPM0 MCU提高电子温度计设计的灵活性.pdf》资料免费下载
    发表于 09-07 09:46 0次下载
    使用低成本MSPM0 MCU提高电子温度计设计的<b class='flag-5'>灵活性</b>

    使用BQ27Z746实现反向充电保护的设计灵活性

    电子发烧友网站提供《使用BQ27Z746实现反向充电保护的设计灵活性.pdf》资料免费下载
    发表于 08-30 11:45 0次下载
    使用BQ27Z746实现反向充电保护的设计<b class='flag-5'>灵活性</b>

    OPSL 优势1:波长灵活性

    与其他类型的连续激光器相比,光泵半导体激光器 (OPSL) 技术有许多优势,包括波长的灵活性。 特别是OPSL打破了传统技术的限制,可以通过设计与应用的波长要求相匹配。 不折不扣的波长灵活性 光泵
    的头像 发表于 07-08 06:30 166次阅读
    OPSL 优势1:波长<b class='flag-5'>灵活性</b>

    如何提升NMEA插座的灵活性

    德索工程师说道通过模块化设计,将NMEA插座拆分成多个独立的模块,每个模块具有特定的功能和接口。这种设计方式可以使插座更加灵活,方便用户根据实际需求进行组合和扩展。同时,模块化设计还可以降低制造和维护成本,提高产品的市场竞争力。
    的头像 发表于 06-19 15:48 181次阅读
    如何提升NMEA插座的<b class='flag-5'>灵活性</b>

    8芯M16公头如何提升灵活性

      德索工程师说道在电子设备的连接和传输中,8芯M16公头作为一种重要的电气连接器,其灵活性对于提高连接效率、降低故障率和增强用户体验至关重要。因此,本文将详细探讨如何提升8芯M16公头的灵活性,以满足不断变化的电子系统需求。
    的头像 发表于 05-25 17:48 151次阅读
    8芯M16公头如何提升<b class='flag-5'>灵活性</b>

    英特尔锐炫A系列显卡为客户提供了强大的性能和灵活性

    在当今快速发展的边缘计算和人工智能领域,英特尔凭借其创新的软硬件解决方案,为客户提供了强大的性能和灵活性。其中,推出的英特尔锐炫 A 系列显卡备受关注。
    的头像 发表于 03-22 15:17 380次阅读
    英特尔锐炫A系列显卡为客户提供了强大的性能和<b class='flag-5'>灵活性</b>

    意法半导体推出一款兼备智能功能和设计灵活性的八路高边开关

    意法半导体新推出的八路高边开关兼备智能功能和设计灵活性,每条通道导通电阻RDS(on)(典型值)仅为110mΩ,保护系统能效,体积紧凑,节省 PCB 空间。
    的头像 发表于 03-12 11:41 444次阅读

    利用 IO-Link 提高工业 4.0 工厂的灵活性、利用率和效率

    和其他设备。在具有各种特性的传统自动化网络协议中,这一点是很难有效实现的。工业 4.0 设备需要在现有网络和不断增加的大量本地传感器、执行器和指示器之间建立另一层连接并实现灵活性。 为了应对这些挑战,IO-Link 作为一种开放式标准应运而生。利用这一标准可以
    的头像 发表于 02-13 10:12 574次阅读
    利用 IO-Link 提高工业 4.0 工厂的<b class='flag-5'>灵活性</b>、利用率和效率

    纳米软件电源自动测试系统的灵活性特点详解

    ,实现自动化测试的同时,也为客户实现经济效益最大化。该系统的灵活性体现在:仪器灵活、流程灵活、分析灵活、报告灵活
    的头像 发表于 01-16 16:23 287次阅读

    FPGA为嵌入式设计带来了强大的功能与灵活性

    尽管 FPGA 为嵌入式设计带来了强大的功能与灵活性,但额外的开发流程也给设计工作增加了新的复杂性和限制问题。整合传统的硬件-FPGA-软件设计流程并充分利用 FPGA 的可再编程功能是我们的一个
    的头像 发表于 12-07 09:35 396次阅读

    4G插卡路由器:无线上网的便利与灵活性

    4G插卡路由器:无线上网的便利与灵活性
    的头像 发表于 11-28 17:27 747次阅读

    MAC地址注册管理最佳实践:安全性、可用性和灵活性

    MAC地址注册管理是在网络环境中确保设备身份验证和访问控制的重要步骤。本文将介绍MAC地址注册管理的最佳实践,旨在提高安全性、可用性和灵活性,以满足现代网络的需求。随着网络规模和复杂性的不断增加
    的头像 发表于 11-21 14:57 438次阅读
    MAC地址注册管理最佳实践:安全性、可用性和<b class='flag-5'>灵活性</b>

    最佳灵活性:通过固态继电器适应应用

    在现代电子和自动化领域,对多功能性和适应性的需求不断增加。行业、企业和个人需要能够无缝集成到各种应用程序中的可靠解决方案。在实现这种灵活性方面发挥着至关重要作用的一个关键组件是固态继电器(SSR)。这种电子开关装置彻底改变了电气系统的运行方式,与传统机电继电器相比具有众多
    的头像 发表于 10-12 10:11 380次阅读

    nRF24XX的低级别频率灵活性协议

    本应用说明描述了nRF24XX的低级别频率灵活性协议。这是一种提供保护以防止频率固定系统干扰业务的协议诸如WLAN和诸如蓝牙的跳频设备。 该协议是通用的,可以用于许多需要阻力的不同系统防止来自其他
    发表于 09-26 07:40