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

    文章

    327

    浏览量

    21318
  • 应用程序
    +关注

    关注

    37

    文章

    3232

    浏览量

    57536
收藏 人收藏

    评论

    相关推荐

    模块化插座接线方法有哪些

    扩展或改变插座的功能。以下是一些模块化插座接线方法的概述,以及一些安全和安装的注意事项。 1. 基本接线方法 模块化插座的基本接线方法通常包括以下几个步骤: 1.1 断开电源 在开始接线之前,确保断开电源,以防止触电事故。 1.
    的头像 发表于 10-18 09:50 223次阅读

    无刷电机驱动芯片方案的选择至关重要

    当今科技飞速发展的时代,无刷电机因其高效、低噪、长寿命等显著优势,在众多领域得到了广泛应用,从工业自动到智能家居,从电动汽车到航空航天。而在无刷电机系统中,驱动芯片方案的选择至关重要,它直接影响
    的头像 发表于 09-05 17:28 427次阅读

    IO模块的作用及其在工业生产中的重要性

    IO模块,作为自动控制系统的重要组成部分,发挥着至关重要的作用。本文为您介绍IO模块在工业生产中的作用及其
    的头像 发表于 07-17 15:59 644次阅读

    【《软件开发珠玑》阅读体验】+ 心得

    的财富。 人类是单线程工作的,同时只能完成一项任务。感慨颇深。只能根据优先级选择重要的任务了(或事情)。需要养成单日单任务的习惯。 此外,《软件开发珠玑》还强调了团队协作和沟通的重要性。在软件
    发表于 06-23 17:56

    PLC的I/O模块的作用及其重要性

    在工业自动领域中,可编程逻辑控制器(PLC)扮演着至关重要的角色。作为PLC的核心组成部分,I/O(输入/输出)模块不仅连接着PLC与外部设备,更是实现信息交换的关键桥梁。本文将详细
    的头像 发表于 06-19 10:43 2636次阅读

    上位机软件开发用什么语言

    维护的上位机软件至关重要。本文将详细介绍几种常用的上位机软件开发编程语言,并分析它们的优缺点。 C/C++ C和C++是两种广泛使用的编程语言,它们在上位机软件开发中具有很高的地位。C
    的头像 发表于 06-06 10:44 1296次阅读

    浅谈存内计算生态环境搭建以及软件开发

    环境搭建 (一)背景介绍 存内计算环境搭建是一种高效的数据处理方法,它涉及在计算机内存中配置和管理数据及应用程序,以提高数据处理和计算的速度。存内计算环境的搭建对于高效软件开发至关重要。首先,它提供了
    发表于 05-16 16:40

    浅谈存内计算生态环境搭建以及软件开发

    当今数据驱动的商业世界中,能够快速处理和分析大量数据的能力变得越来越重要。而存内计算开发环境在此领域发挥其关键作用。存内计算环境利用内存(RAM)而非传统的磁盘存储来加速数据处理,提
    的头像 发表于 05-15 17:10 420次阅读
    浅谈存内计算生态环境搭建以及<b class='flag-5'>软件开发</b>

    什么是模块化机房?

    在这个数据驱动的时代,数据中心的作用变得日益重要。而模块化机房,作为一种创新的数据中心解决方案,正在逐渐改变我们构建和管理这些关键设施的方式。但究竟什么是模块化机房呢?它又为何受到越来
    的头像 发表于 03-12 15:05 1313次阅读

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

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

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

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

    模块化UPS是什么?模块化UPS电源并机的优点

    模块数量。通过并机技术,多个模块可以一起运行,提供高可靠和高可扩展性的电源系统。下面将详细介绍模块化UPS电源并机的优点。 1. 高可靠
    的头像 发表于 01-10 15:16 1198次阅读

    碳化硅器件封装与模块化关键技术

    碳化硅(Silicon Carbide,简称SiC)器件封装与模块化是实现碳化硅器件性能和可靠提升的关键步骤。
    发表于 01-09 10:18 420次阅读
    碳化硅器件封装与<b class='flag-5'>模块化</b>的<b class='flag-5'>关键</b>技术

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

    (ASPICE) 和 ISO 26262。ASPICE 用于评估并改进汽车软件开发流程,而 ISO 26262 则着重解决安全关键系统的
    的头像 发表于 11-22 16:37 451次阅读

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

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