布尔可满足性(Boolean satisfiability)的概念正在被用于确定软件代码中的“bug”,从而保证代码基本上不存在bug,满足编程者的愿望。
在2007年嵌入系统会议上,Coverity宣布了据称是第一种基于布尔可满足性(SAT)的源代码分析引擎。Coverity公司的SAT引擎利用了它的软件DNA图谱,自动、正确和精确地确定源代码中的缺陷。该软件DNA图谱精确地代表人们已写出来的任何软件。
Coverity在企业应用领域是领导厂商。它的静态分析软件客户包括财富500强上面57%的软件公司和50%的电脑外设公司。它的主要产品是Prevent Software Quality System (SQS),SQS通过在编译时解析源代码来使复杂软件中的缺陷和安全漏洞检测实现自动化。
目前的静态分析引擎依赖数据流分析和多个检验程序来确定软件缺陷。与此不同的是,SAT引擎基于布尔可满足性,将能支持多个解算程序确定软件缺陷。
这种新的软件代码分析方法,得益于Coverity正在申请专利的技术,该技术以精确到位(bit)的精度代表软件系统,每个相关软件运算都被翻译成布尔值真(true)与假(false)和布尔运算符(Not逻辑非)、and(逻辑与)、or(逻辑或)。这允许利用基于SAT的解算程序对源代码进行分析,这在商业电脑编程领域还是第一次。
300多家客户已经在依靠Coverity Prevent SQS来分析其应用程序中的每个路径。通过利用SAT,Prevent SQS不仅能够分析每个路径,而且能够分析这些路径之中每次计算中的每个值。Chelf表示,这样彻底的静态代码分析,实现了业内对关键性能和安全漏洞的最精确鉴定。
据Forrester Research的安全与风险管理部门的首席分析师Chenxi Wang,“可满足性”原理用于硬件检验已有一段时间,但以前从未用于软件检验。
Wang认为,还有创新空间,具体而言是在嵌入软件领域。“嵌入软件通常在复杂性和状态数量方面比普通应用软件受到的限制多一点,因此,SAT更可能在嵌入编程领域增强软件验证的水平。”
Coverity的Chelf表示,“静态分析方法一直成功地用于EDA产业。我们只是把电路设计工作中使用的同样的软件布尔原理用于软件代码领域。”
Coverity Prevent SQS的基础技术是20世纪90年代在斯坦福大学电脑系统实验室开发出来的,当时在此工作的Ben Chelf和同事把该技术用于商业应用。
关键字:引擎 图谱 编程 编译
引用地址:
将代码静态分析提高一个层次,Coverity提出布尔可满足性概念
推荐阅读最新更新时间:2024-05-02 20:38
针对H.264的编译码设计以及各种硬件加速架构
前言 不只在高解析视讯应用上发光发热,H.264针对中低分辨率,也能发挥其降低流量的长处,因此应用于网络实时串流传输,或者是行动装置上小屏幕视讯的播放,都是非常合宜的方式。由H.264具有一系列优于MPEG4和H.263的特性,在相同的重建图像质量下,能比H.263节省约50%左右的流量。但是,在获得优越性能的同时,H.264的计算复杂度却大大增加。 了解视讯编译码发展历史的读者会知道,H.264编码的计算复杂度大约相当于H.263的3倍,解碼复杂度大约相当于H.263的2倍,乍看之下,所得到的成果似乎与计算负担不成比例,考虑到以目前的网络环境、硬件的总线频宽限制等因素,现阶段硬件频宽与网络环境的拓展有其限制且进展缓慢,但是处理
[嵌入式]
步进电机控制器原理_步进电机控制器编程实例
步进电机控制器原理 步进电机控制器是一种能够发出均匀脉冲信号的电子产品,它发出的信号进入步进电机驱动器后,会由驱动器转换成步进电机所需要的强电流信号,带动步进电机运转。步进电机控制器能够准确的控制步进电机转过每一个角度。 驱动器所接收的是脉冲信号,每收到一个脉冲,驱动器会给电机一个脉冲使电机转过一个固定的角度,就因为这个特点,步进电机才会被广泛的应用到现在的各个行业里。 步进电机控制器的应用设置 1、设置步进驱动器的细分数,通常细分数越高,控制分辨率越高。但细分数太高则影响到最大进给速度。一般来说,对于模具机用户可考虑脉冲当量为0.001mm/P(此时最大进给速度为9600mm/min)或者0.0005
[嵌入式]
AD9833型高精度可编程波形发生器及其应用
1 引言 AD9833是ADI公司生产的一款低功耗,可编程波形发生器,能够产生正弦波、三角波、方波输出。波形发生器广泛应用于各种测量、激励和时域响应领域,AD9833无需外接元件,输出频率和相位都可通过软件编程,易于调节,频率寄存器是28位的,主频时钟为25MHz时,精度为0.1Hz,主频时钟为1MHz时,精度可以达到0.004Hz。 可以通过3个串行接口将数据写入AD9833,这3个串口的最高工作频率可以达到40MHz,易于与DSP和各种主流微控制器兼容。AD9833的工作电压范围为2.3V-5.5V。 AD9833还具有休眠功能,可使没被使用的部分休眠,减少该部分的电流损耗,例如,若利用AD9833输出作为时钟源,就可
[工业控制]
玩转mini2440开发板之【linux内核的编译和下载】
今天首先来玩一玩linux内核的编译和下载。 1、背景交代 开发环境:64位的Ubuntu 14.04; 编译工具:arm-linux-gcc 4.4.3; 下载工具:SuperViVi USB Transfer Utility; 调试工具:SecureCRT 7.2.6; 开发板材:友善之臂mini2440(64M版本); 内核版本:linux-2.6.32.2-20150709; 2、编译步骤 首先按照友善之臂官方手册(mini2440用户手册-20140103)的介绍,将linux 2.6.32.2的源码解压出来,我本人是解压到/opt/FriendlyARM/mini2440/linux-2.6.32.2-2015
[单片机]
51单片机-多文件编程首次测试
延时函数虽然很少使用了,但是有时需要测试代码的时候还会派上用场,所以也把它放进“function.c”文件中。 1.function.c的代码 #include reg52.h #include function.h u8 code LedChar ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//数码管状态值初始化 u8 LedBuff ={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//初始化数码管显示缓存区 void delay_ms(u16 x) { u
[单片机]
腾讯推出首款医疗AI引擎“腾讯睿知”
昨日(5月10日),腾讯正式宣布推出首款医疗AI引擎——腾讯睿知,从诊前环节切入,推出智能导诊,落地广州妇女儿童医疗中心,利用大数据与人工智能解决资源错配问题,通过智能的人机对话,患者可以精准获得最合适的医生,医生可以筛选与其专业方向匹配的患者。 据了解,腾讯睿知是腾讯医疗大数据实验室的研发成果,其最大的优势在于其核心能力,即基于大数据打造的知识图谱,结合AI算法模型,实现对疾病及病程的预判,而这正是医疗AI应用的关键一环。腾讯睿知的 医学 知识图谱主要来自两方面,一是权威的医学先验知识,包括近万本医学教科书籍、上千万篇论文及科普文章,以及各种症状体征、检验检查指标、用药治疗的疾病知识库;二是实时更新的数据,包括脱敏患者的健康数据
[医疗电子]
2021年中国机器视觉行业全景图谱
机器视觉行业主要上市公司: 目前国内机器视觉行业的上市公司主要有天准科技(688003)、美亚光电(002690)、精测电子(300567)、赛腾股份(603283)、矩子科技(300802)、先导智能(300450)、康鸿智能(839416)、劲拓股份(300400)等。 本文核心数据: 机器视觉市场规模、机器视觉市场竞争格局、机器视觉市场规模预测 1、机器视觉行业概况 ——机器视觉行业定义 机器视觉就是用机器来代替人眼做测量和判断的系统,它通过光学装置和非接触传感器自动获取目标对象的图像,并由图像处理设备根据所得图像的像素分布、亮度和颜色等信息进行各种运算处理和判别分析,以提取所需的特征信息或根据判别分析结果对某些现场
[机器人]
C51编程6-双向I/O口与准双向I/O口
通过前面的输入输出的内容(LED控制与按键的使用),我们对控制I/O口有了一个基本的了解。如果需要输出高低电平,可以对该引脚进行写 1 或者 0 ;如果需要读取I/O的电平,直接判断该引脚是高电平或者低电平既可。 在程序上对P0~P3的输入输出控制是一样的,但实际上它们内部结构是不一样的,下面是P0~P3的内部结构图。 双向I/O与准双向I/O 从P0~P3的内部结构图可以看出,P0口内部没有上拉电阻。当用作I/O口时,CONTROL输出为0,ADDRDATA部分不起作用,P0口为开漏(Open Drain)如下图红色部分不需要考虑。 而P1~P3口均有输出引脚均有上拉( internal pull-up),以P
[单片机]