共查询到20条相似文献,搜索用时 15 毫秒
1.
Data-flow analysis to identify “dead” variables and reset them to an “undefined” value is an effective technique for fighting state explosion in the enumerative verification of concurrent systems. Although this technique is well-adapted to imperative languages, it is not directly applicable to value-passing process algebras, in which variables cannot be reset explicitly due to the single-assignment constraints of the functional programming style. This paper addresses this problem by performing data-flow analysis on an intermediate model (Petri nets extended with state variables) into which process algebra specifications can be translated automatically. It also addresses important issues such as avoiding the introduction of useless reset operations and handling shared read-only variables that child processes inherit from their parents. 相似文献
2.
María del Mar Gallardo Christophe Joubert Pedro Merino 《Electronic Notes in Theoretical Computer Science》2007,190(4):33-48
The combination of static and dynamic software analysis, such as data flow analysis (Dfa) and model checking, provides benefits for both disciplines. On the one hand, the information extracted by Dfas about program data may be utilized by model checkers to optimize the state space representation. On the other hand, the expressiveness of logic formulas allows us to consider model checkers as generic data flow analyzers. Following this second approach, we propose in this paper an algorithm to calculate Dfas using on-the-fly resolution of boolean equation systems (Bess). The overall framework includes the abstraction of the input program into an implicit labeled transition system (Lts), independent of the program specification language. Moreover, using Bess as an intermediate representation allowed us to reformulate classical Dfas encountered in the literature, which were previously encoded in terms of μ-calculus formulas with forward and backward modalities. Our work was implemented and integrated into the widespread verification platform Cadp, and experimented on real examples. 相似文献
3.
Cindy Eisner 《Software and Systems Modeling》2005,4(1):14-31
We describe the experience of modeling and formally verifying a software cache algorithm using the model checker RuleBase. Contrary to prevailing wisdom, we used a highly detailed model created directly from the C code itself, rather than a high-level abstract model. 相似文献
4.
Franjo Ivančić Zijiang Yang Malay K. Ganai Aarti Gupta Pranav Ashar 《Theoretical computer science》2008
This paper discusses our methodology for formal analysis and automatic verification of software programs. It is applicable to a large subset of the C programming language that includes pointer arithmetic and bounded recursion. We consider reachability properties, in particular whether certain assertions or basic blocks are reachable in the source code, or whether certain standard property violations can occur. We perform this analysis via a translation to a Boolean circuit representation based on modeling basic blocks. The program is then analyzed by a back-end SAT-based bounded model checker, where each unrolling is mapped to one step in a block-wise execution of the program. 相似文献
5.
冯庆奎 《计算机工程与设计》2010,31(1)
为了简化在限界模型检测过程中模型的建立过程,给出了一种采用基于一阶迁移系统语言的模型建立方法,并在此一阶迁移系统语言中加入了通道的功能,增强了描述能力.然后在此基础上完成了一个以基于插值和k步归纳的限界验证算法为核心的模型检测工具(BMCF),最后利用该工具对常见的互斥协议,简单数据传输协议的性质进行了分析与验证.结果表明,利用该工具对系统进行建模具有方便直观的特点,并借助实现的验证算法能高效的检验性质的正确性,如果性质不成立工具还会给出反例提示. 相似文献
6.
The computer-assisted resuscitation algorithm (CARA) is the software component of an automatic infusion pump system being designed by US Armys Walter Reed Institute of Research (WRAIR) to be used in the battlefields of tomorrow. Such medical devices are safety critical, and their use needs to be approved by the US Food and Drug Administration (FDA) – a process on which formal methods can have a great impact. In this special section, six papers on the analysis of CARAs requirements are presented. In the rest of this introduction, we present the framework and summary of results from those papers. 相似文献
7.
Modern concurrent programming languages like C# and Java have a programming language level memory model, which captures the
set of all allowed behaviors of programs on any implementation platform—uni- or multi-processor. Such a memory model is typically
weaker than Sequential Consistency and allows reordering of operations within a program thread. Therefore, programs verified
correct by assuming Sequential Consistency (that is, each thread proceeds in program order) may not behave correctly on certain
platforms! One solution to this problem is to develop program checkers which are memory model sensitive. In this paper, we
develop a bytecode level invariant checker for the programming language C#. Our checker identifies program states which are
reached only because the C# memory model is more relaxed than Sequential Consistency. It employs partial order reduction strategies
to speed up the search. These strategies are different from standard partial order reduction methods since our search also
considers execution traces containing bytecode re-orderings. Furthermore, our checker identifies (a) operation re-orderings
which cause undesirable states to be reached, and (b) simple program modifications—by inserting memory barrier operations—which
prevent such undesirable re-orderings.
A preliminary version of this paper appeared as (Huynh and Roychoudhury, in: Formal Methods Symposium, 2006). The conference
paper is available from .
This work was done when the first author was a Research Assistant at National University of Singapore. 相似文献
8.
对任务流模型检验技术进行了讨论。任务流方法不关心状态数量、能否从一个指定状态到达另一指定状态及系统必须的状态是否存在,而是关心状态组合提供的功能是否存在及各状态组合之间是否存在指定的转换关系,从而避免了状态空间爆炸问题。模块搜索算法以模块为基础对任务流模型进行搜索来验证给定系统是否满足规范要求。 相似文献
9.
A strength of model checking is its ability to automate the detection of subtle system errors and produce traces that exhibit those errors. Given the high-computational cost of model checking most researchers advocate the use of aggressive property-preserving abstractions. Unfortunately, the more aggressively a system is abstracted the more infeasible behavior it will have. Thus, while abstraction enables efficient model checking it also threatens the usefulness of model checking as a defect detection tool, since it may be difficult to determine whether a counter-example is feasible and hence worth developer time to analyze.We have explored several strategies for addressing this problem by extending an explicit-state model checker, Java PathFinder (JPF), to search for and analyze counter-examples in the presence of abstractions. We demonstrate that these techniques effectively preserve the defect detection ability of model checking in the presence of aggressive abstraction by applying them to check properties of several abstracted multi-threaded Java programs. These new capabilities are not specific to JPF and can be easily adapted to other model checking frameworks; we describe how this was done for the Bandera toolset. 相似文献
10.
Corina S. Păsăreanu Dimitra Giannakopoulou Mihaela Gheorghiu Bobaru Jamieson M. Cobleigh Howard Barringer 《Formal Methods in System Design》2008,32(3):175-205
Assume-guarantee reasoning enables a “divide-and-conquer” approach to the verification of large systems that checks system
components separately while using assumptions about each component’s environment. Developing appropriate assumptions used to be a difficult and manual process. Over the
past five years, we have developed a framework for performing assume-guarantee verification of systems in an incremental and
fully automated fashion. The framework uses an off-the-shelf learning algorithm to compute the assumptions. The assumptions
are initially approximate and become more precise by means of counterexamples obtained by model checking components separately.
The framework supports different assume-guarantee rules, both symmetric and asymmetric. Moreover, we have recently introduced
alphabet refinement, which extends the assumption learning process to also infer assumption alphabets. This refinement technique starts with assumption alphabets that are a subset of the minimal interface between a component
and its environment, and adds actions to it as necessary until a given property is shown to hold or to be violated in the
system. We have applied the learning framework to a number of case studies that show that compositional verification by learning
assumptions can be significantly more scalable than non-compositional verification.
J.M. Cobleigh currently employed by The MathWorks, Inc., 3 Apple Hill Drive, Natick, MA 01760, USA. 相似文献
11.
12.
13.
软件验证一直是确保软件正确性和安全性的热点研究问题.然而,由于程序语言复杂的语法语义特性,应用形式化方法验证程序的正确性存在准确度低和效率差的问题.其中,由指针操作带来的地址空间的状态变化使得现有模型检测方法的检测准确度难以得到保证.为此,通过结合模型检测与稀疏值流分析方法,设计了一种空间流模型,实现了对C程序在符号变量层面和地址空间层面的状态行为的有效描述,并提出了一种反例引导的抽象细化和稀疏值流强更新算法(CEGAS),实现了C程序指向信息敏感的形式化验证.建立了包含多种指针操作的C代码基准库,并基于该基准库进行了对比实验.实验结果表明:所提出的模型检测算法CEGAS在分析含有多种C代码特性的任务中,与现有模型检测工具相比均能取得突出的结果,其检测准确度为92.9%,每行代码的平均检测时间为2.58 ms,优于现有检测工具. 相似文献
14.
Electronic commerce is an important application that has evolved significantly recently. However, electronic commerce systems
are complex and difficult to be correctly designed. Guaranteeing the correctness of an e-commerce system is not an easy task
due to the great amount of scenarios where errors occur, many of them very subtle. In this work we presents a methodology
that uses formal-method techniques, specifically symbolic model checking, to design electronic commerce applications and to automatically verify them. Also, a model checking pattern hierarchy has
been developed—it specifies patterns to construct and verify the formal model of e-commerce systems. We consider this research
the first step to the development of a framework, which will integrate the methodology, an e-commerce specification language
based on business rules, and a model checker.
Adriano Pereira received the B.S. and M.S. degrees in computer science in 2000 and 2002, respectively, and he is currently pursuing the Ph.D.
degree in computer science from the Federal University of Minas Gerais, Belo Horizonte, Brazil. His current interests are
on performance analysis and modeling of e-business and distributed systems, and formal methods.
Mark Song received the B.S., M.S. and Ph.D. degrees in computer science from the Federal University of Minas Gerais, Belo Horizonte,
Brazil. His current interests are on distributed systems and formal methods – especially BMC (Bounded Model Checking).
Gustavo Franco received the B.S. and M.S. degrees in computer science in 2001 and 2004, respectively, from the Federal University of Minas
Gerais, Belo Horizonte, Brazil. His research was on modeling the user behavior of e-business and distributed systems, and
formal methods. Actually his current interests are on software engeneering and project management of IT projects. 相似文献
15.
Software verification has always been a popular research topic to ensure the correctness and security of software. However, due to the complex semantics and syntax of programming languages, the formal methods for verifying the correctness of programs have the problems of low accuracy and low efficiency. In particular, the state change in address space caused by pointer operations makes it difficult to guarantee the verification accuracy of existing model checking methods. By combining model checking and sparse value-flow analysis, this paper designs a spatial flow model to effectively describe the state behavior of C code at the symbolic-variable level and address-space level and proposes a model checking algorithm of CounterExample-Guided Abstraction refinement and Sparse value-flow strong update (CEGAS), which enables points-to-sensitive formal verification for C code. This paper establishes a C-code benchmark containing a variety of pointer operations and conducts comparative experiments on the basis of this benchmark. These experiments indicate that in the task of analyzing multi-class C code features, the model checking algorithm CEGAS proposed in this paper can achieve outstanding results compared with the existing model checking tools. The verification accuracy of CEGAS is 92.9%, and the average verification time of each line of code is 2.58 ms, both of which are better than those of existing verification tools. 相似文献
16.
标记迁移系统是一种在计算机辅助设计和验证中得到广泛使用的形式模型。当系统中的模块比较多时,系统的整体模型有可能出现状态空间的指数级爆炸,组合可达性分析是缓解这一问题的一种有效方法。已有的工作缺乏对该方法基本原理的清晰描述和精确表达。本文对其基本原理进行了分析和概括,并作了形式化陈述,证明了相关结论。本文的工作有助于深入理解和澄清组合可达性分析的内部工作机制。 相似文献
17.
状态迁移矩阵(State Transition Matrix,STM)是一种基于表结构的程序建模语言。事件变量类型单一,事件和状态数量的增加很容易造成状态空间爆炸问题,无法表达具有时间语义的软件系统等原因,极大限制了该建模方法的推广应用。文中针对这些问题,首先提出层次化时间状态迁移矩阵(Hierarchical Time State Transition Matrix,HTSTM)模型,用于设计、建模和验证具有时间条件约束的软件系统,并给出形式化表示方法。基于该表示方法提出一种符号化编码方法,采用有界模型检测思想将需要验证的LTL性质输入SMT(Satisfiability Modulo Theories)求解器进行验证,从而在一定程度上证明了软件设计的正确性。 相似文献
18.
体系结构分析设计语言AADL是一种可支持软硬件一体化建模及同一模型多元分析的形式化与图形化建模语言。采用时间自动机形式化模型检验方法对AADL模型中的数据流进行转换和验证。考虑到单一数据流与混合数据流的差异性,分别设计了数据流到时间自动机模型的转换规则,并通过时间自动机网络实现数据流的综合分析。设计开发了自动化模型转换的插件AADLToUppaal Plug-in,将其嵌入到OSTATE工具中,使用时间自动机建模与验证工具Uppaal对转换得到的时间自动机进行模拟和验证,等价地验证所设计的AADL模型数据流时延是否满足系统实时性要求。仿真实验结果表明,所设计的数据流模型转换方法能有效地将AADL模型转换到时间自动机模型,并能在Uppaal中正确地分析原模型的数据流时延特性。 相似文献
19.
The software model checker Blast 总被引:2,自引:0,他引:2
Dirk Beyer Thomas A. Henzinger Ranjit Jhala Rupak Majumdar 《International Journal on Software Tools for Technology Transfer (STTT)》2007,9(5-6):505-525
Blast is an automatic verification tool for checking temporal safety properties of C programs. Given a C program and a temporal
safety property, Blast either statically proves that the program satisfies the safety property, or provides an execution path that exhibits a violation
of the property (or, since the problem is undecidable, does not terminate). Blast constructs, explores, and refines abstractions of the program state space based on lazy predicate abstraction and interpolation-based
predicate discovery. This paper gives an introduction to Blast and demonstrates, through two case studies, how it can be applied to program verification and test-case generation. In the
first case study, we use Blast to statically prove memory safety for C programs. We use CCured, a type-based memory-safety analyzer, to annotate a program with run-time assertions that check for safe memory operations.
Then, we use Blast to remove as many of the run-time checks as possible (by proving that these checks never fail), and to generate execution
scenarios that violate the assertions for the remaining run-time checks. In our second case study, we use Blast to automatically generate test suites that guarantee full coverage with respect to a given predicate. Given a C program and
a target predicate p, Blast determines the program locations q for which there exists a program execution that reaches q with p true, and automatically generates a set of test vectors that cause such executions. Our experiments show that Blast can provide automated, precise, and scalable analysis for C programs. 相似文献
20.
Yael Abarbanel-Vinov Neta Aizenbud-Reshef Ilan Beer Cindy Eisner Daniel Geist Tamir Heyman Iris Reuveni Eran Rippel Irit Shitsevalov Yaron Wolfsthal Tali Yatzkar-Haham 《Formal Methods in System Design》2001,19(1):35-44
We examine IBM's exploitation of formal verification using RuleBase—a formal verification tool developed by the IBM Haifa Research Laboratory. The goal of the paper is methodological. We identify an integrated methodology for the deployment of formal verification which involves three complementary modes: architectural verification, block-level verification, and design exploration. 相似文献