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

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

3天内不再提示

为什么模块化可组合性对当今的安全关键型软件开发至关重要

星星科技指导员 来源:嵌入式计算设计 作者:Mark Pitchford 2022-11-16 16:51 次阅读

模块化和可组合性是软件中的流行语,适用于从企业计算到裸机应用程序的所有内容。对于安全关键型嵌入式系统,这些概念通过允许针对不同用例以不同的组合使用现有软件组件来定义软件重用的目标。

虽然正式模块化开发的大部分推动力来自航空航天和国防领域,但它提供的好处与安全关键部门相关。了解模块化可组合性为何以及如何融入安全关键型开发,是利用软件重用优势同时满足当今功能安全标准的苛刻目标的关键。

模块化可组合性的概述和挑战

模块化解决了设计具有明确定义的接口的子系统(模块)的问题,这些接口可用于各种上下文。可组合性要求模块之间的关系,以便它们可以以解决多个问题的方式组合在一起。特温特大学的Ansgar Fehnker对这两个概念如何协同工作给出了这样的定义:

“如果一种设计方法有利于生产软件元素,那么它就满足了模块化可组合性,这些软件元素可以自由地相互组合以产生新系统,可能与最初开发它们的环境完全不同。

简而言之,模块化可组合性意味着跨系统的可移植性和可重用性,就像乐高积木从街景到航天器一样。

像乐高一样,模块化有一个实际的限制。乐高是一个特定品牌的建筑玩具,不能轻易与斯蒂克尔积木或麦卡诺连接。这同样适用于模块化软件,因为一旦组件投入生产,在不同的环境中重用它通常会受到约束和警告。

一个真实而臭名昭著的例子是阿丽亚娜5发射失败。根据欧洲航天局的报告,损失“是由于惯性参考系统软件的规格和设计错误。在阿丽亚娜5号开发计划期间进行的广泛审查和测试不包括对惯性参考系统或整个飞行控制系统的充分分析和测试,这些系统本可以检测到潜在的故障。虽然该软件实际上与阿丽亚娜4中成功使用的软件相同,但它受到新环境环境的影响。

安全关键标准如何反映模块化可组合性

许多行业标准都引用了与安全可重用性相关的过程和目标,如以下各节所述。

软件项目隔离:IEC 62304:2006+AMD1:2015

国际电工委员会 (IEC) 62304:2006+AMD1:2015 医疗器械标准允许将软件项目分开,目的是将尽可能少的系统放置在安全关键性较高的类别中(例如,C 类软件“在考虑软件系统外部的风险控制措施后,可能导致危险情况,从而导致不可接受的风险, 由此可能造成的伤害是死亡或重伤“):

“软件架构应促进安全操作所需的软件项的隔离,并应描述用于确保有效隔离这些软件项的方法”

图 1 说明了安全影响较少的软件项目(第 X 项)和具有高安全关键影响的软件项(Y 项和 Z 项)的分离。由于存在高度安全的关键项目,整个软件系统被指定为C类。

6362c3f7a9f1c-Fig1+for+LDRA+ModComp+article.jpg

图 1:根据 IEC 62304:2006 +AMD1:2015 对软件项目进行分区的示例 图 B.18(来源:IEC)

提高开发效率:FAA AC 20-148

美国联邦航空管理局 (FAA) 咨询通告 AC 20-148 为可重用软件组件 (RSC) 的开发提供了指导,例如软件库、操作系统通信协议。RSC 与其他组件的不同之处在于,所需的文档和指南远远超出了通常提供的软件工件。

咨询通告有明确的指导方针,以确保每个接口(包括应用程序代码和目标硬件)都由开发人员以 RSC 提供商规定的方式完全定义。这种高度指定的模块化意味着RSC在很大程度上可以被视为“黑匣子”,因为无论目标应用程序的目的如何,RSC都可以被假定为以明确定义的方式运行。

这意味着在符合 DO-178 标准的系统中部署 RSC 可以节省大量认证时间。如果没有 RSC,FAA 要求每次重用时重新生成、重新提交和重新审查认证工件,包括对现有安装进行的软件更改。

促进重用:开放集团未来机载能力环境

开放集团未来机载能力环境 (FACE) 联盟通过可负担性、速度、敏捷性和卓越改进目标,建立了一条在航空中重用软件的途径。FACE技术战略和标准概述了几个关键原则,包括:

建立一个软件环境,使FACE应用程序从一架国防部飞机或作战平台重新利用到另一架国防部飞机或作战平台,只需最少的软件修订。

采用增强软件可移植性的设计原则 - 例如,为每个便携式 FACE 应用程序提供一组通用接口。

限制使用某些 API 调用并要求其他调用的编码标准 - 例如,遵守 POSIX API 的特定部分,以确保 FACE 可移植性单元 (UoP) 的功能签名在语法上正确,并强制正确使用关键语言结构。

自动化在实现模块化可组合性目标方面的价值

无论标准或方法如何,模块化可组合性原则往往会在时间和金钱方面对安全关键型开发过程产生巨大影响。乍一看,这似乎是一个昂贵的提议,但如今的自动化工具(可重用组件可用于各种工具链)简化了验证的不同方面,如图 2 所示。

6362c4af0fef7-Fig2+for+LDRAModComp+article.jpg

图 2:支持确认重用代码适用性的自动化需求可追溯性和回归测试示例(来源:LDRA)

需求可追溯性

软件生命周期中劳动密集型和易出错元素的自动化在最大限度地减少模块化可组合性的开发影响方面发挥着关键作用。识别需求和证明履行可能是一个苛刻的过程,特别是当功能需求必须与 DO-178 等标准一起验证时。

自动化可追溯性可缓解潜在的项目管理难题。通过自动化,可以在初始模块开发和不同环境中的每次未来部署之间使用相同的机制来管理和跟踪需求。模块需求的确认可以通过自动化和链接回归测试来实现,包括单元测试、针对编码标准的静态分析检查和其他措施。

单元测试

尽管它们的统称,称为“单元测试”工具的自动化工具通常同时支持单元测试和集成测试。这些工具的价值在于使用相同的机制来测试单个可重用单元和多个集成单元作为一个整体。测试本身不需要更改函数是单独测试还是作为调用树的顶部进行测试。在前一种情况下,自动生成的存根可以处理超出范围的代码。

这种自动化方法有助于将模块集成到初始项目和未来项目中。每当在新环境中调用模块时,例如部署到不同的目标硬件时,都可以简单地回归原始测试。通过在新项目的上下文中调用模块的 API,可以验证其适用性。

为您的项目带来模块化可组合性

可重用性是安全关键型应用程序开发人员的圣杯,但模块化可组合性为实现其目标提供了一种可行、现实的机制。虽然有关于软件重用的恐怖故事和许多讨论模块化和可组合性原则的标准,但自动化为任何项目提供了安全重用的有效途径。

自动化减少了在不同环境中管理、跟踪和测试组件重用所需的时间和精力。生命周期平台(如LDRA 工具套件)可确保重用模块适合其环境,具有从需求可追溯性到静态分析再到单元和集成测试的功能。这些功能使安全和安保关键软件开发团队能够根据严格的行业标准获得可重复使用组件的认证和批准。

审核编辑:郭婷

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

    关注

    0

    文章

    302

    浏览量

    21159
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56398
收藏 人收藏

    评论

    相关推荐

    嵌入式软件开发应该掌握哪些知识?

    知识点学习 熟悉 Linux 的基本使用对于嵌入式软件开发至关重要。包括文件系统的管理、用户权限的控制、软件包管理等。嵌入式开发人员需要能够在 Linux 环境下进行开发、调试和部署工
    发表于 02-19 11:23

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的
    的头像 发表于 01-22 15:27 598次阅读

    区块链系统软件开发与应用

    区块链技术是近年来备受瞩目的创新技术,被广泛应用于金融、供应链管理、物联网等领域。区块链系统软件开发是实现区块链应用的关键,它不仅需要掌握区块链的基本原理,还需要具备良好的软件开发能力和项目管理经验
    的头像 发表于 01-10 18:18 974次阅读

    Visual Studio和VS Code有哪些不同?

    软件开发领域,选择合适的集成开发环境(IDE)对于开发至关重要
    的头像 发表于 01-08 09:36 649次阅读

    软件测试的八大特性有哪些?

    软件测试是软件开发过程中重要的一环,其目的是发现软件中存在的问题,并提供解决方案。因此,软件测试的八大特性对于保证
    发表于 01-02 10:15

    安全关键软件开发中实现 ASPICE 和 ISO 26262 的协同

    汽车行业在很大程度上依赖于先进的软件系统来确保汽车整车的安全性和功能性。为了满足消费者对可靠、安全的汽车产品日益增长的需求,两个至关重要的框架由此出现: Automotive SPIC
    的头像 发表于 11-22 16:37 210次阅读

    千兆光模块和万兆光模块在网络安全中的重要

    本文旨在介绍千兆光模块和万兆光模块在网络安全中的重要性。作为网络通信的基础设施,光模块的性能和稳定性对网络
    的头像 发表于 11-13 11:00 264次阅读

    AUTOSAR软件开发流程简介

    AUTOSAR软件开发流程简介 AUTOSAR软件开发流程是指在AUTOSAR架构下进行软件开发的一系列步骤和方法。它包括以下几个主要阶段: 需求分析:在这个阶段,根据汽车电子系统的需求,定义和分析
    的头像 发表于 10-27 15:55 1722次阅读
    AUTOSAR<b class='flag-5'>软件开发</b>流程简介

    车规MCU的软件开发生态解析

    )的核心芯片,其软件开发生态是客户高效快速且可靠的开发各类汽车功能应用软件的基础,是一颗车规MCU芯片能否成功的关键所在,其重要性日益凸显。
    的头像 发表于 10-18 10:00 2281次阅读
    车规MCU的<b class='flag-5'>软件开发</b>生态解析

    软件开发必读!华为云软件开发生产线 CodeArts 深度体验指南

    7 月 7 日-9 日,随着华为开发者大会 2023 的到来,华为云软件开发生产线 CodeArts 也走进了很多开发者的视野。 开发者都比较好奇,什么是华为云 CodeArts?Co
    的头像 发表于 08-25 13:43 784次阅读
    <b class='flag-5'>软件开发</b>必读!华为云<b class='flag-5'>软件开发</b>生产线 CodeArts 深度体验指南

    ARM编译器5.06版软件开发指南

    其他功能,如浮点支持、单指令多数据(SIMD)指令、安全扩展、Java字节码加速和多处理支持。 ARM架构不断发展,以满足前沿应用程序开发人员日益增长的需求,同时保留保护软件开发投资所需的向后兼容
    发表于 08-23 07:49

    为什么IAR编译器对开源ISA:RISC-V业务至关重要

    为什么IAR编译器对开源ISA:RISC-V业务至关重要? 演讲ppt分享
    发表于 07-14 17:15 2次下载

    RTX低功耗软件开发(三)

    软件开发
    橙群微电子
    发布于 :2023年07月11日 15:48:14

    详解自动驾驶安全软件开发流程

    自动驾驶汽车开发越来越重视性能、质量和性价比,自动驾驶口碑成为新技术应用取得市场成功的关键,而口碑的建立依赖于相关软 件开发流程、周期、时间和质量。一家汽车企业只有拥有或者其软件开发
    发表于 06-01 11:38 0次下载
    详解自动驾驶<b class='flag-5'>安全</b><b class='flag-5'>软件开发</b>流程

    安全软件开发的最佳实践

    安全软件开发最佳实践是必要的,因为安全风险无处不在。在网络攻击盛行的时代,它们可以影响每个人,包括个人、公司和政府。因此,确保软件开发安全
    的头像 发表于 05-08 10:51 489次阅读
    <b class='flag-5'>安全</b><b class='flag-5'>软件开发</b>的最佳实践