首页> 外文OA文献 >Static and Dynamic Formal Analysis of Concurrent Systems and Languages: A Semantics-Based Approach
【2h】

Static and Dynamic Formal Analysis of Concurrent Systems and Languages: A Semantics-Based Approach

机译:并发系统和语言的静态和动态形式分析:基于语义的方法

摘要

Concurrency is ubiquitous in modern software. The computing base of systems software, including operating systems and databases, has always been highly concurrent and with the introduction of language- level thread primitives in languages like Java and C# and the advent of distributed web services, concurrency has become commonplace even in application software. The design of concurrent software is notoriously error-prone due to the nondeterministic interaction among concurrently executing threads. Therefore, it is important to develop techniques for specifying correctness properties of concurrent software and tools for automatically checking these properties.A burning problem in program verification today is how to model the world of concurrent systems. The excellent models of sequential behavior that have evolved during the past thirty years of sequential program verification do not adequately reflect the nature of a concurrent universe. In this work, we present solutions to the commonly know problems of concurrency by using appropriate semantic models for concurrency, namely rewriting logic, and traces and Petri nets. We argue that using the appropriate semantic model helps one to define the problem in a simple, intuitive, and effective way in the first place, and then provides sound solutions for these now well-defined problems. This work addresses some verification problems for concurrent programs and systems. The approaches presented here fall into two main category of static versus dynamic verification.In the dynamic category, we use rewriting logic as a true concurrency model to specify concurrent programs and systems. We established the tool JavaFAN based on rewriting logic semantics of Java at both language and bytecode level. We provide a methodology in which formal semantics is then used as a basis to develop formal analyses tools (interpreter, model checker, and safety property checker) for analyzing programs in any language, in the case of JavaFAN tool for Java programs at both levels. We furthermore advanced these ideas by developing a generic partial order reduction module that with minimum effort can be added to any language specification and automatically enrich it with POR capabilities. We took this idea even further by providing reduction methods that can work on the specification of any concurrent system. Experimental result suggest that these methods are effective in practice, despite their generality and relative effortless implementations.In the static category, the focus of this work is to provide an appropriate notion of static abstraction for concurrent programs, called control net, based on Petri nets which captures the abstraction of program into a control only (no data) structure and at the same time captures the interaction mechanism of the threads and preserves the independence of their execution where applicable. This model is then used to show how two very important static analyses problems in the context of concurrency, namely atomicity and dataflow analyses can be cleanly defined for the program traces (partially-ordered runs) generated by the control net, and how clean algorithmic solutions can be provided to solve these problems. Experimental results suggest that these solutions are feasible in practice.
机译:并发在现代软件中无处不在。系统软件(包括操作系统和数据库)的计算基础一直高度并行,并且随着Java和C#等语言的语言级线程基元的引入以及分布式Web服务的出现,即使在应用程序软件中,并发也变得司空见惯。 。众所周知,由于并发执行线程之间不确定的交互作用,并发软件的设计容易出错。因此,开发用于指定并发软件的正确性属性的技术和用于自动检查这些属性的工具非常重要。当今程序验证中的一个紧要问题是如何对并发系统的世界进行建模。在过去的三十年的顺序程序验证中发展出的出色的顺序行为模型未能充分反映并发宇宙的本质。在这项工作中,我们通过使用适当的并发语义模型(即重写逻辑,跟踪和Petri网)为并发问题提供解决方案。我们认为使用适当的语义模型首先可以帮助人们以简单,直观和有效的方式定义问题,然后为这些现已明确定义的问题提供合理的解决方案。这项工作解决了并发程序和系统的一些验证问题。这里介绍的方法分为静态验证和动态验证两个主要类别。在动态类别中,我们使用重写逻辑作为真正的并发模型来指定并发程序和系统。我们基于语言和字节码级别的Java重写逻辑语义建立了工具JavaFAN。我们提供了一种方法,在这种方法中,形式上的语义随后被用作开发形式分析工具(解释器,模型检查器和安全性属性检查器)的基础,以分析任何语言的程序(在两个级别上都适用于JavaFAN的JavaFAN工具的情况下)。我们还通过开发通用的偏序简化模块来推进这些想法,该模块可以以最小的努力将其添加到任何语言规范中,并通过POR功能自动丰富其功能。通过提供可以适用于任何并发系统规范的简化方法,我们使这一想法更进一步。实验结果表明,尽管这些方法具有通用性和相对不费力的实现,但它们在实践中仍然有效。在静态类别中,这项工作的重点是为基于Petri网的并发程序(称为控制网)提供适当的静态抽象概念。它捕获程序抽象为仅控件(无数据)结构,同时捕获线程的交互机制,并在适用的情况下保留其执行的独立性。然后使用该模型来说明如何在并发上下文中非常清晰地定义两个非常重要的静态分析问题,即原子性和数据流分析可以为控制网络生成的程序跟踪(部分排序的运行)进行干净定义,以及如何实现干净的算法解决方案可以提供解决这些问题的方法。实验结果表明,这些解决方案在实践中是可行的。

著录项

  • 作者

    Farzan Azadeh;

  • 作者单位
  • 年度 2007
  • 总页数
  • 原文格式 PDF
  • 正文语种 {"code":"en","name":"English","id":9}
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号