当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]如果测试无法证明不存在严重的运行错误,那么嵌入式软件开发团队如何才能确定其软件没有这些错误呢?基于数学证明的代码验证是值得一试的解决方案。在软件验证方面,可扩展的高性能数学技术在实际应用方面的最新发展十分有用,可实现对软件中不存在运行时错误进行证明。

操作应用于安全苛刻的航空和军事领域的嵌入式软件时必须高度关注安全问题。为达到可靠性目标,软件开发团队精益求精,力争使这些软件应用符合严格的验证流程并实现零缺陷目标。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结果表示代码中不存在某些运行时错误。在检测到运行时错误且代码显示为红色、灰色或橙色的情况下,软件开发人员和测试人员可使用验证流程中生成的信息修复发现的运行时错误。

结论

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

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭