当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]如何提高嵌入式软件质量

 操作应用于安全苛刻的航空和军事领域的嵌入式软件时必须高度关注安全问题。为达到可靠性目标,软件开发团队精益求精,力争使这些软件应用符合严格的验证流程并实现零缺陷目标。Edsger Dijkstra有句名言:测试只能发现错误,但不能证明错误不存在。如果测试无法证明不存在严重的运行错误,那么嵌入式软件开发团队如何才能确定其软件没有这些错误呢?基于数学证明的代码验证是值得一试的解决方案。在软件验证方面,可扩展的高性能数学技术在实际应用方面的最新发展十分有用,可实现对软件中不存在运行时错误进行证明。

  航空领域的软件应用

  高集成系统中的嵌入式软件日益复杂。在军事领域中,用于F-22猛禽战斗机的航空电子软件由170万行代码组成,用于F-35联合攻击战斗机的航空电子软件预计有570万行代码。对于商务班机,波音787飞机飞行控制系统将有大约650万行代码。软件内容不断膨胀,飞机复杂性不断增加,使发生故障的风险也不断加剧,从而使获得高度可信性软件的过程复杂无比。

  软件故障风险

  研究以往发生的嵌入式设备故障对于理解代码相关的问题大有裨益。例如,一次性使用火箭在测试飞行期间发生的故障归根于代码缺陷。在这种特殊情况下,发射器在发射后不到一分钟的时间内自毁,原因在于:攻角超过规定的安全限度,导致发射器遭遇高气动载荷。

  事后调查揭露了故障的根本原因:溢出导致嵌入式软件发生运行错误。在将一个64位浮点数转换为16位有符号整数时,一对决定火箭姿态和位置的冗余惯性参考系统中产生溢出,从而将火箭喷管移到了极端位置。冗余系统的存在不起作用,因为备用系统也发生了同样的问题。

  如上所述的运行时错误代表一类特定的软件错误,称作潜伏性故障。这类故障位于代码中,但是除非在特殊条件下运行特定测试,否则在系统测试期间无法检测到这些故障。因此,这些代码表面上能正常运行,但实际上会导致意外的系统故障。以下为若干运行时错误示例:数据未初始化;数组访问越界;空指针解引用;溢出和下溢;计算错误;同时访问共享数据;非法类型转换。

  高集成软件验证

  按照传统方法,源代码级软件验证涉及代码检查、静态分析和动态测试。每种方法都有缺点。

  代码检查仅依赖于检察人员的专业技术,若有大量代码需要检查,则会是一项繁琐的工作。传统的静态分析技术主要依靠模式匹配方法检测不安全的代码模式,但无法证明不存在运行时错误。随着嵌入式软件日益复杂,对所有操作条件进行动态测试已经不太可能,这进一步证明了Edsger Dijkstra的观点:测试只能发现错误,但不能证明错误不存在。

  一种新的验证方法称为抽象解释,它以静态分析为基础,使用形式化数学证明,可发现某些运行时错误或证明它们不存在。抽象解释可直接应用于源代码,而无需执行代码。

  抽象解释和基于证明的验证方法作为一种基于证明的验证方法,通过在以下问题中将三个大整数相乘可对抽象解释进行说明:–4586×34985×2389=?

  虽然手动计算此问题的答案很费时,但是我们可以应用乘法法则确定答案的符号为负。确定此计算的符号就是抽象解释的一种应用。这种技巧使我们不需要对整数执行完成的乘法计算就能够准确地知道最终结果的一些属性,例如符号。利用乘法法则,我们还知道此计算的结果符号不可能为正。采用类似方式可将抽象解释应用到软件符号学中,以证明软件的某些属性。不执行程序本身,

  通过验证源代码的某些动态属性,抽象解释在传统静态分析技术和动态测试之间架起桥梁。抽象解释在单个阶段中调查程序的所有可能行为,即所有可能值的组合,以确定如何以及在何种条件下程序会产生某些类别的运行时故障。由于抽象解释与考虑中的操作相关,我们可以用数学方法证明该技术能预测正确的结果,因此它得出的结果被认为是可靠的。

  使用抽象解释验证软件

  抽象检查可用作静态分析工具,检测并用数学方法证明源代码中不存在某些运行时错误,如溢出、除以零以及数组访问超出边界等。执行此验证无需执行程序、代码插装或测试用例。MathWorks Polyspace代码验证产品使用的便是此类静态分析。向Polyspace产品输入C、C++或Ada源代码。Polyspace产品首先检查源代码,以确定可能出现潜在运行时错误的位置。然后它会生成一份报告,该报告使用颜色编码表示代码中各元素的状态,如图1和表1所示。

  


 

  图1 Polyspace颜色编码

  表1:颜色编码

  

 

  标为绿色的Polyspace结果表示代码中不存在某些运行时错误。在检测到运行时错误且代码显示为红色、灰色或橙色的情况下,软件开发人员和测试人员可使用验证流程中生成的信息修复发现的运行时错误。

  结论

  静态分析融合抽象解释后,可提高高集成系统中嵌入式软件的质量和可靠性。此方法能帮助工程师实现证明软件中不存在某些运行时错误的目标。具有抽象解释的代码验证解决方案有助于实现良好的质量流程。这是强有力的验证流程,可帮助实现嵌入式设备的高集成性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

旅行不设限 商务亦休闲 上海2022年9月21日 /美通社/ -- 近年来,"Bleisure" 休闲商务旅行的出行模式蔚为风潮,越来越多的宾客在商务出行时愈发关注休闲的需求。作为高端商务...

关键字: BSP 数字化 SPACE WORKS

2022年上半年收入7.1亿元 同比增长14.5%  嵌入式软件和安全支付产品发展势头强劲 收入同比增长28.7% 香港2022年8月16日 /美通社/ -- 金邦达宝嘉控股有限公司及其附属公司(以下合称“...

关键字: 数字化 嵌入式软件 供应链 代码

上海2022年8月11日 /美通社/ -- 8月19日至8月30日,富士X-SPACE策划的两个摄影项目将亮相北京798艺术区悦·美术馆:玛格南摄影师Olivia Arthur(奥利维娅·亚瑟...

关键字: CONNECTION SPACE 富士 影像

北京2022年7月26日 /美通社/ -- 7月16日,香港大学SPACE中国商业学院(ICB)举办主题为「创·赢」的2022年7月开学典礼。为配合各地疫情的最新情况及防疫政策,本次活动采取线上线下混合模式...

关键字: SPACE IC BSP 微软

(全球TMT2022年7月22日讯)由知名策展人何伊宁策划的"New Connection"于7月22日-8月15日在上海X-SPACE富士影像共享空间与大众见面,展览集合了12组青年摄影师和影像艺术家作品,从更广博处...

关键字: CONNECTION SPACE 富士 影像

北京2022年4月22日 /美通社/ -- 红外热成像通过探测景物目标自身的热辐射能量,可以呈现出人类视觉无法捕捉的信息。在工业测温、夜视安防、辅助驾驶、灾情预警等诸多场景均可延伸人类的视觉能力,是视觉的“第六...

关键字: 探测器 高集成 测温 PLAYER

独立的 IDE 插件使开发人员能够检测源代码和开源依赖项中的安全漏洞

关键字: 新思科技 IDE 插件 源代码

来自:知乎,作者:Name1e5s链接:https://zhuanlan.zhihu.com/p/40490357故事要从前两天交流群中一位同学提到的这个问题开始这个问题看起来十分刁钻,不过稍有常识的人都知道,制定C标准...

关键字: POINTER RETURN SPACE SYSTEMS

(全球TMT2021年12月7日讯)开放原子开源基金会(简称“开源基金会”)作为中国首个以开源为主题的基金会,是开源项目的孵化器、连接器和倍增器,致力于为全球开发者搭建可持续的开源合作平台,OpenHarmony、op...

关键字: 开源 PEN 开发者 源代码

文|周立功日期|2021年12月2日ZLG致远电子创始人周立功EsDA(EmbededsoftwareDesignAutomation),全称是嵌入式软件设计自动化,它是一个由多种软件组成的软件过程管理和开发的工具,致力...

关键字: 自动化 嵌入式软件 ESD 周立功

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭