首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 78 毫秒
1.
芦运照  张兆庆 《计算机科学》2004,31(12):186-188
本文分析了LINUX下的动态连接和静态连接,默认的动态连接方式在一定程度上限制了编译器的优化,而静态连接方式又有很多不足。本文在ORC编译器中提出了一种程序调用共享连接技术,对程序编译单元应用冗余的代码优化,并且展望了这种优化技术的未来研究,具有很强的实际意义。  相似文献   

2.
介绍了描述程序信息的两种模型(EPOM和OSTPM)以及它们之间的联系,并举例介绍了如何利用这两种模型进行程序的静态分析检测。  相似文献   

3.
模糊测试是一种行之有效的软件缺陷检测方法.其基本思想是生成大量随机输入,从而广泛探索程序行为,并以此发现程序崩溃和崩溃背后的软件缺陷.显然,纯随机的输入无法高效探索程序行为,大量程序缺陷也难以导致崩溃.为了进一步提升模糊测试的有效性,模糊测试往往引入静态插桩技术,用于加快探索程序状态空间速度,提升发现缺陷的能力.因此,引入静态插桩已经成为当下模糊测试的经典实践.聚焦于模糊测试场景下的插桩需求,除了介绍静态插桩技术的基本原理外,从安全特性强化和导向信息收集两个视角出发,系统性地分析了当下静态插桩的典型方法.同时,针对插桩的额外开销问题,全面地测量了不同插桩方案下的程序的执行速度,并与基线的未插桩程序进行比对.最后基于上述分析和测量,初步展望了静态插桩的优化方向.  相似文献   

4.
多线程并发程序的广泛使用引发了更多的数据竞争问题,竞争检测对于提高软件质量具有重要意义。将竞争静态检测和静态切片分析结合起来,提出了一种基于类的Java数据竞争静态检测算法,该算法利用函数调用层次获得函数调用链,对类域进行分析,找出可能数据竞争,通过静态切片缩小程序分析范围,并结合数据竞争的必要条件,去掉不可能数据竞争。实例表明,该算法可用于指导修复程序中的竞争缺陷。  相似文献   

5.
函数式程序的分层λ抽象   总被引:3,自引:0,他引:3  
廖湖声 《计算机学报》1989,12(12):892-899
本文提出应该根据函数调用形式来决定如何使用程序变换技术,并且提出一个算法来实现对函数调用形式的静态分析及其相应的程序变换.  相似文献   

6.
对现有二进制程序安全缺陷静态分析方法进行了综述和分析,提出了整个程序分析过程中的关键问题以及二进制程序安全分析的主要研究方向.通过对二进制程序缺陷静态分析流程的总结,发现二进制程序信息恢复是整个分析过程的关键,构造内容丰富的、通用的中间表示是二进制程序缺陷分析的重要研究方向.  相似文献   

7.
程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。首先对程序静态分析的特点、常用静态分析技术、静态分析实现方式进行描述,然后通过一个实例讲解C语言静态代码分析中函数与变量的调用关系的实现方法,总结了现今在C语言调用关系分析中可以借鉴的工具与实现方式。  相似文献   

8.
张弛  黄志球  丁泽文 《计算机科学》2017,44(12):126-130, 155
在安全关键领域中,如何保证软件的安全性已经成为了一个广受关注的重要课题。静态程序分析是一类十分有效的程序自动化验证方法。基于抽象解释的静态分析技术在验证软件的非功能性安全属性上表现十分突出。可配置程序分析(Configurable Program Analysis,CPA)是一种通用静态分析方法形式化体系,旨在用一种形式化体系对静态分析的分析阶段进行建模。使用CPA对基于抽象解释的静态分析进行建模,给出如何使用CPA形式化体系描述基于抽象解释的静态分析,给出了从待分析程序到CPA形式化体系的转换规则;提供了一种在安全关键性领域中的软件正确性自动验证方法,为基于抽象解释的静态分析工具的实现提供了一种可行方案。  相似文献   

9.
软件的静态程序分析是确保软件安全可靠的一种有效手段。常见的形式化的静态分析工具一般是基于模型检测,定理证明或抽象解释理论来对软件进行分析验证。然而,基于单一理论的验证工具具有一定的局限性。介绍了一个开源的静态分析平台Frama-C,根据该工具的特点,分别使用不同的插件对一小段代码进行静态分析,有助于将不同的程序分析方法相结合。最后对如何使用Frama-C工具解决航空控制软件等安全关键软件的执行时间分析问题的过程进行了演示。  相似文献   

10.
程序切片的初始概念出现在1979年Mark Weiser的博士论文中。从此其他研究者们也提出一些程序切片,而这些程序切片的概念和计算方法与Weiser的比起来略有不同。一个重要的区别就是出现了动态和静态之分,即前者考虑程序的特定输入,而后者不需要。直到20世纪90年代,由于面向对象程序设计语言的兴起,那些基于传统的结构化语言的程序切片概念和计算方法又不能直接用于  相似文献   

11.
On the value of static analysis for fault detection in software   总被引:1,自引:0,他引:1  
No single software fault-detection technique is capable of addressing all fault-detection concerns. Similarly to software reviews and testing, static analysis tools (or automated static analysis) can be used to remove defects prior to release of a software product. To determine to what extent automated static analysis can help in the economic production of a high-quality product, we have analyzed static analysis faults and test and customer-reported failures for three large-scale industrial software systems developed at Nortel Networks. The data indicate that automated static analysis is an affordable means of software fault detection. Using the orthogonal defect classification scheme, we found that automated static analysis is effective at identifying assignment and checking faults, allowing the later software production phases to focus on more complex, functional, and algorithmic faults. A majority of the defects found by automated static analysis appear to be produced by a few key types of programmer errors and some of these types have the potential to cause security vulnerabilities. Statistical analysis results indicate the number of automated static analysis faults can be effective for identifying problem modules. Our results indicate static analysis tools are complementary to other fault-detection techniques for the economic production of a high-quality software product.  相似文献   

12.
漏洞这一名词伴随着计算机软件领域的发展已经走过了数十载。自世界上第一个软件漏洞被公开以来,软件安全研究者和工程师们就一直在探索漏洞的挖掘与分析方法。源代码漏洞静态分析是一种能够贯穿整个软件开发生命周期的、帮助软件开发人员及早发现漏洞的技术,在业界有着广泛的使用。然而,随着软件的体量越来越大,软件的功能越来越复杂,如何表示和建模软件源代码是当前面临的一个难题;此外,近年来的研究倾向于将源代码漏洞静态分析和机器学习相结合,试图通过引入机器学习模型提升漏洞挖掘的精度,但如何选择和构建合适的机器学习模型是该研究方向的一个核心问题。本文将目光聚焦于源代码漏洞静态分析技术(以下简称:静态分析技术),通过对该领域相关工作的回顾,将静态分析技术的研究分为两个方向:传统静态分析和基于学习的静态分析。传统静态分析主要是利用数据流分析、污点分析等一系列软件分析技术对软件的源代码进行建模分析;基于学习的静态分析则是将源代码以数值的形式表示并提交给学习模型,利用学习模型挖掘源代码的深层次表征特征和关联性。本文首先阐述了软件漏洞分析技术的基本概念,对比了静态分析技术和动态分析技术的优劣;然后对源代码的表示方法进行了说明。接着,本文对传统静态分析和基于学习的静态分析的一般步骤进行了总结,同时对这两个研究方向典型的研究成果进行了系统地梳理,归纳了它们的技术特点和工作流程,提出了当前静态分析技术中存在的问题,并对该方向上未来的研究工作进行了展望。  相似文献   

13.
静态测试作为软件测试的重要方法,是保证民用机载软件中安全关键软件质量的关键步骤。介绍静态测试的概念和方法,采用自动化分析方法,基于软件分析工具LDRA Testbed从主要静态分析、复杂度分析、静态数据流、交叉索引、信息流和数据对象分析六大部分完成软件的静态测试过程,探究其测试原理和关键标准文件的配置,生成相应的代码审查和测试度量报告,以有效提高民用机载软件质量。  相似文献   

14.
张术梅  孙辉 《微机发展》2007,17(1):125-127
测试用例的数量和质量决定软件测试的成本和有效性。文中提出了一种基于UML面向对象软件静态测试的方法,论述了软件测试方法的分类、静态分析方法的基本测试框架及具体实现流程。针对面向对象软件的特点,静态测试主要是通过分析源程序得到类关系图,使测试人员能快速而清晰地了解程序结构,有效地设计测试用例。探讨了在对源程序进行充分的词法分析与语法分析的基础上,提取程序中类的有关信息,利用了数据库技术和UML图形模型,从而保证了分析结果的准确有效和标准化。  相似文献   

15.
随着软件漏洞的危害性不断增强,软件漏洞分析已经成为了国内外安全研究的热点。已有的工作大致可以分为静态分析和动态分析两类。本文在开源的软件漏洞静态分析工具Bugscam的基础上,提出了一种建立漏洞模型,映射漏洞模型为分析程序,并进行漏洞分析的思路。对于大量的软件漏洞,我们提出,将其分为函数漏洞和逻辑漏洞两类,并分别探讨了两种模型与程序之间的对应关系。最后,对我们编写的一个改进的自动化漏洞分析工具clearBug进行了介绍,并用实验验证了模型与程序的正确性和有效性。  相似文献   

16.
王涛  韩兰胜  付才  邹德清  刘铭 《计算机科学》2016,43(5):80-86, 116
软件漏洞静态分析是信息安全领域的重点研究方向,如何描述漏洞及判别漏洞是漏洞静态分析的核心问题。提出了一种用于描述和判别漏洞的漏洞静态检测模型。首先对软件漏洞的属性特征进行形式化定义,并对多种软件漏洞和其判定规则进行形式化描述;其次,针对传统的路径分析存在的状态空间爆炸问题,提出了一个新的程序中间表示——漏洞可执行路径集,以压缩程序状态空间。在该模型的基础上,设计了一个基于漏洞可执行路径集的软件漏洞静态检测框架,利用定义的漏洞语法规则求解漏洞可执行路径集上的漏洞相关节点集,利用漏洞判定规则对漏洞相关节点集进行判别得出漏洞报告。实验分析验证了该漏洞检测模型的正确性和可行性。  相似文献   

17.
从理论上阐述了软件静态分析的概念、意义及分类,以及静态分析器与编译器的不同,并详细、系统地介绍了一个静态分析器的设计与实现。描述了它的关于软件系统信息和模块信息提取功能,又从实现的角度介绍了该分析器程序的系统结构及数据结构。初步的实践证明上述静态分析器可以提高数据采集效率,能够对程序系统信息及模块信息进行有效提取。  相似文献   

18.
大型信息系统软件质量的静态分析   总被引:1,自引:0,他引:1  
韩兵  蔡丽萍 《计算机应用》2004,24(2):168-170
文中论述了大型信息系统的软件质量要求,在此基础上介绍了软件质量保证的重要方法、软件质量的静态分析以及静态度量的自动化测试工具Logiscope。同时提出了采用自动化测试工具Logiscope对大型信息系统进行软件静态质量分析的实施方法。  相似文献   

19.
随着嵌入式系统硬件可靠性水平的不断提高和嵌入式软件的日益复杂化,软件的可靠性在嵌入式系统整体可靠性中所占的比重也越来越大.在探讨了代码静态分析技术中关键步骤的基础上,制定了编码标准,并且选择了合适的静态分析工具;同时,介绍了自行开发的代码测试框架和测试用例设计方法,并将其运用到某智能仪表软件的测试中,得到了良好的测试效果.  相似文献   

20.
Static type systems play an essential role in contemporary programming languages. Despite their importance, whether static type systems impact human software development capabilities remains open. One frequently mentioned argument in favor of static type systems is that they improve the maintainability of software systems—an often-used claim for which there is little empirical evidence. This paper describes an experiment that tests whether static type systems improve the maintainability of software systems, in terms of understanding undocumented code, fixing type errors, and fixing semantic errors. The results show rigorous empirical evidence that static types are indeed beneficial to these activities, except when fixing semantic errors. We further conduct an exploratory analysis of the data in order to understand possible reasons for the effect of type systems on the three kinds of tasks used in this experiment. From the exploratory analysis, we conclude that developers using a dynamic type system tend to look at different files more frequently when doing programming tasks—which is a potential reason for the observed differences in time.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号