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

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

3天内不再提示

静态分析可提高效率,降低下游集成成本

星星科技指导员 来源:嵌入式计算设计 作者:ANDY CHOU 2022-11-08 10:53 次阅读

随着现代军事系统越来越依赖软件,正在采用新技术来降低成本并增加任务成功的机会。因此,静态分析基于其在运行时之前的深度分析功能,在软件开发社区中越来越受欢迎。

这些静态分析工具(增强但不能取代传统的测试和调试方法)可在集成发生之前很久就发现集成错误,从而消除了代价高昂的后期集成问题。

随着军事装备和车辆的日益现代化,它们在技术上也不可避免地变得更加复杂。在许多情况下,这些机器代表了硬件和软件的微妙融合,两者必须完美地交互。由于这些机器的软件组件必须在现场尽可能可靠地工作,因此使用多种技术组合执行广泛的调试和测试非常重要,以便在缺陷导致长时间延迟或超限之前消除缺陷。这通常是不切实际的,因为在代码实际实现到最终运行代码的设备之前,通常没有办法可靠地测试代码。由于软件很少在第一次执行时完美运行,因此使用传统的开发方法和工具返回并修复错误会阻碍生产力,并将宝贵的资源和人员从需要完成的其他项目中转移出来。

例如,波音787梦想客机由于硬件和软件缺陷而延误了两年。这些问题往往是相互交织的。就梦想客机而言,一个特殊的延迟是由于控制制动系统的软件存在缺陷。重要的是要注意,传统的测试并没有在它真正成为一个问题之前发现这个缺陷,并在开发过程中造成代价高昂的挫折和其他并发症。静态分析等现代技术可以增加内存损坏和释放后用户等问题被更快地发现的可能性,并有助于实现DO-178B的设计保证级别(DAL)。与传统的V模型相比,静态分析是一种更高效、更具成本效益的途径,与传统的测试和调试方法协同工作,以缓解集成问题和费用。

静态分析和开发过程

软件开发往往遵循特定的生命周期。一个例子是航空航天工程中常用的V模型。V 模型代表了一种整体开发方法,它试图在一段时间内协调项目定义和测试过程。该模型从建立项目的范围开始,包括其操作概念、要求和体系结构,以及其设计的具体细节。

这个过程在更高层次上开始非常抽象,并在设计过程中逐渐完善和详细。随着设计的实现,在开发周期的后期修复问题的成本会更高。一旦项目基本完成并正在测试中,回去对其基本方面的维修就变得非常昂贵。

最终,许多软件问题是由低效的开发模型和不精确的调试过程引起的,然后恶化。通过使用静态分析等现代技术尽早消除软件缺陷,可以提高开发效率和成本效益。

具体来说,静态分析是一种在不运行软件的情况下查找软件缺陷的技术。它的工作原理是检查产品源代码,从单个功能开始,一直到模块,最后是整个程序。静态分析可以发现许多不同类型的缺陷,包括C / C++程序中的内存错误。例如,静态分析可以检测以下简单代码片段中的错误:

int a[10];

for(int i = 0; i < 10; i++); {

a[i] = 0;

}

有时人类很难看到软件代码中的问题,因为他们看到的是他们想要看到的东西,而不是实际存在的东西。当编译器将此代码转换为可执行程序时,编译器以机械和精确的方式读取源代码,忽略缩进和间距等人为提示。编译器将按以下方式读取示例:

int a[10];

for(int i = 0; i < 10; i++)

;

{

a[i] = 0;

}

如图所示重新格式化代码后,导致程序具有完全不同的含义的额外“;”字符突然变得更加明显。如果此错误在最终程序中仍未纠正,则当 i = 10 时,数组访问 a[i] 将仅执行一次。结果是分配给数组末尾的内存位置,这可能会导致程序崩溃。

静态分析像编译器一样机械而精确地检查代码。但是,静态分析器不会盲目地将代码转换为可执行程序,而是查找代码功能与开发人员最初预期的工作方式不同的路径。静态分析可以通过模式匹配等简单技术或过程间数据流分析和布尔满足性等高级技术来完成。无论使用何种技术,静态分析都是定制的,用于查找人类开发人员可能忽略或出错的情况。这为全面的逐行代码审计提供了一种更有效的替代方案,这对于大型软件系统来说并不具有成本效益。

将静态分析和传统调试相结合

与功能测试等传统方法相比,静态分析呈现出一组不同的权衡。传统测试只能检测实际测试的代码中的错误,而静态分析可以在没有任何测试的情况下发现所有代码中的缺陷。有时,通过测试发现的错误很难重现并查明源代码中的特定问题。静态分析可以以可重复、可预测的方式发现问题,并且始终指向代码中的特定位置。另一方面,传统测试可以发现静态分析无法发现的功能错误,因为静态分析不会尝试将程序的行为与预期结果进行比较。静态分析在分析深层程序属性时也会失去精度,因此可能会遗漏一些缺陷。因此,静态分析旨在增强传统方法的有效性,而不是直接取代它们。

由于静态分析适用于现有的工具集和编译器,因此无需更改当前的开发实践。静态分析可以在编写第一行代码后立即开始的项目期间频繁应用(即使在夜间构建上)。从本质上讲,如果项目的代码库可以成功编译,则可以使用静态分析来调试它,并在项目交付给质量保证人员进行最终测试之前很久就消除问题。

静态分析的集成优势

静态分析在面向团队的环境中也运行良好。开发人员可以使用静态分析来检查彼此的贡献是否一致,并检查由不同团队成员编写的代码引起的冲突。这可以适用于单个项目,甚至可以扩展到需要多个项目之间集成以创建复杂系统的更大场景。

静态分析不仅可以找到简单的代码缺陷;如前所述,它能够在不同组件集成在一起之前分析它们之间的相互作用。在软件开发的V模型中,测试和验证从单个组件开始。当这些组件满足其低级规格时,它们将集成在一起,以便根据系统要求进行更高级别的测试。如果严格按照此理想执行软件集成,则集成阶段会带来很高的风险,因为各个组件将是第一次交互。这些交互可能会暴露原始项目规范的问题,特别是关于如何将系统需求和体系结构转换为详细的设计要求和源代码。静态分析工具可以在编写软件组件后立即分析它们之间的交互,在实现阶段捕获其中一些昂贵的集成问题。这些工具通过跨过程边界分析代码来查找应用程序编程接口 (API) 使用中的问题,即使过程位于不同的软件组件中,也可以实现此目的。

通过静态分析最大限度地提高效率

软件正被用于以曾经不可能的方式改进智能炸弹和无人驾驶无人机等军事系统。静态分析工具,例如Coverity提供的分析工具,也是这一趋势的一部分。静态分析工具与传统的测试和调试方法结合使用时,可在运行时之前有效地分析软件并检测代码错误,从而最大限度地降低风险和成本,同时最大限度地提高软件开发投资的价值。

审核编辑:郭婷

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

    关注

    1

    文章

    1617

    浏览量

    49021
  • 无人机
    +关注

    关注

    227

    文章

    10315

    浏览量

    179265
收藏 人收藏

    评论

    相关推荐

    蓝牙定位系统:实现精准定位、提高效率的利器

    在当今数字化的时代,精准定位技术在各个领域发挥着至关重要的作用。其中,蓝牙定位系统以其独特的优势,成为了提高效率的强大工具。 蓝牙定位系统的工作原理基于蓝牙信号的强度和传播特性。通过在特定区域内
    的头像 发表于 10-14 10:14 209次阅读
    蓝牙定位系统:实现精准定位、<b class='flag-5'>提高效率</b>的利器

    D类放大器中用于提高效率的 Y 桥应用说明

    电子发烧友网站提供《D类放大器中用于提高效率的 Y 桥应用说明.pdf》资料免费下载
    发表于 09-13 11:03 0次下载
    D类放大器中用于<b class='flag-5'>提高效率</b>的 Y 桥应用说明

    取得平衡:提高效率并控制EMI的汽车设计

    电子发烧友网站提供《取得平衡:提高效率并控制EMI的汽车设计.pdf》资料免费下载
    发表于 08-28 11:58 0次下载
    取得平衡:<b class='flag-5'>可</b><b class='flag-5'>提高效率</b>并控制EMI的汽车设计

    加装德国进口高精度主轴 智能手机壳「高质量高效率」钻孔铣槽

    智能手机壳加工需高精度主轴,采用德国进口4060ER-S主轴,高转速、大功率满足高速高效需求,保证加工精度稳定性,提高效率和可靠性,降低生产成本和运营
    的头像 发表于 07-02 15:15 196次阅读
    加装德国进口高精度主轴 智能手机壳「高质量<b class='flag-5'>高效率</b>」钻孔铣槽

    ACM8625P全集成高效率D类立体声音频放大器英文手册

    脉宽调制架构,能根据信号大小动态调整脉宽,在保证音频性能的前提下,降低静态功耗,提高效率。• 出色的音频性能:THD+N(总谐波失真加噪声)≤0.04%(1W,1kHz,PVDD=12V),SNR(信噪比)为114dB(加权)
    发表于 06-24 14:09 7次下载

    GaNSense™半桥IC提高效率降低成本,赋能电机集成逆变器

    电机驱动系统消耗了欧洲近50%的电力 ,因此政府制定了相关法规和标准,以确保尽可能高效地使用电力,同时尽量减少对电网的影响和扰乱。
    的头像 发表于 05-30 14:38 508次阅读
    GaNSense™半桥IC<b class='flag-5'>可</b><b class='flag-5'>提高效率</b>并<b class='flag-5'>降低成本</b>,赋能电机<b class='flag-5'>集成</b>逆变器

    立柱码垛机饲料码垛生产车间提高效率降低成本#

    码垛机器人
    jf_01290382
    发布于 :2024年04月16日 10:03:52

    提高效率的DC电源模块设计技巧

    BOSHIDA  提高效率的DC电源模块设计技巧 设计高效率的BOSHIDA  DC电源模块可以帮助减少能源浪费和提高系统功耗,以下是一些设计技巧: 1. 选择高效率的功率转换器:选择
    的头像 发表于 02-26 14:27 490次阅读
    <b class='flag-5'>提高效率</b>的DC电源模块设计技巧

    什么是电源模块效率 如何计算 提高效率的方法

    什么是电源模块效率 如何计算 提高效率的方法 BOSHIDA博士达 电源模块效率是指输入电能转换为输出电能的比例,通常以百分比表示。高效率的电源模块能够最大限度地将输入电能转化为有用的
    的头像 发表于 02-02 09:44 979次阅读

    搬运机器人已经成为提高效率降低成本的关键技术

    物流、制造业和仓储等领域,搬运机器人已经成为提高效率降低成本的关键技术。近年来,随着技术的不断突破,搬运机器人正朝着更加智能、高效和可靠的方向发展。
    的头像 发表于 01-22 12:00 491次阅读
    搬运机器人已经成为<b class='flag-5'>提高效率</b>、<b class='flag-5'>降低成本</b>的关键技术

    分布式无纸化交互系统的优势:提高效率降低成本

    首先,分布式无纸化交互系统能够显著提高会议的效率。通过电子化的方式传递和展示会议材料,避免了纸质文件的打印、分发等繁琐流程,从而大幅提升了会议的效率。此外,与会者可以通过电子设备随时查阅会议材料
    的头像 发表于 01-15 14:18 315次阅读

    提高系统效率的几个误解解析

    中断任务特别多的话,这个没退出来,后面又接踵而至,一会儿系统就将崩溃了。如果任务数量多但很频繁的话,CPU的 很大精力都用在进出中断的开销上,系统效率极为低下,如果改用查询方式反而极大提高效
    发表于 01-15 07:29

    今日推荐-YB2414高效率同步降压转换器

    YB2414高效率同步降压转换器 概述: YB2414是一款高效率500 kHz同步降压DC-DC转换器,能够提供4A/5A电流。 YB2414可在4.5V至18V的宽输入电压范围内工作,并集成
    发表于 01-13 12:14

    带有快速体二极管的MOSFET器件通过LLC拓扑和FREDFET来提高效率

    带有快速体二极管的MOSFET器件通过LLC拓扑和FREDFET来提高效率
    的头像 发表于 12-08 17:35 651次阅读
    带有快速体二极管的MOSFET器件通过LLC拓扑和FREDFET来<b class='flag-5'>提高效率</b>

    如何使用自增自减运算提高效率

    使用自增自减运算提高效率 在使用到加一和减一操作时尽量使用增量和减量操作符,因为增量符语句比赋值语句更快,原因在于对大多数CPU来说,对内存字的增、减量操作不必明显地使用取内存和写内存的指令,比如
    的头像 发表于 11-21 11:29 497次阅读