首页 > 最新文献

State Of the Art in Java Program Analysis最新文献

英文 中文
A software product line for static analyses: the OPAL framework 用于静态分析的软件产品线:OPAL框架
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614630
Michael Eichberg, Ben Hermann
Implementations of static analyses are usually tailored toward a single goal to be efficient, hampering reusability and adaptability of the components of an analysis. To solve these issues, we propose to implement static analyses as highly-configurable software product lines (SPLs). Furthermore, we also discuss an implementation of an SPL for static analyses -- called OPAL -- that uses advanced language features offered by the Scala programming language to get an easily adaptable and (type-)safe software product line. OPAL is a general purpose library for static analysis of Java Bytecode that is already successfully used. We present OPAL and show how a design based on software produce line engineering benefits the implementation of static analyses with the framework.
静态分析的实现通常是针对单一目标进行定制的,以提高效率,这阻碍了分析组件的可重用性和适应性。为了解决这些问题,我们建议将静态分析实现为高度可配置的软件产品线(SPLs)。此外,我们还讨论了用于静态分析的SPL的实现——称为OPAL——它使用Scala编程语言提供的高级语言特性来获得易于适应和(类型)安全的软件产品线。OPAL是一个通用的库,用于静态分析已经成功使用的Java字节码。我们介绍了OPAL,并展示了基于软件生产线工程的设计如何有利于使用框架实现静态分析。
{"title":"A software product line for static analyses: the OPAL framework","authors":"Michael Eichberg, Ben Hermann","doi":"10.1145/2614628.2614630","DOIUrl":"https://doi.org/10.1145/2614628.2614630","url":null,"abstract":"Implementations of static analyses are usually tailored toward a single goal to be efficient, hampering reusability and adaptability of the components of an analysis. To solve these issues, we propose to implement static analyses as highly-configurable software product lines (SPLs). Furthermore, we also discuss an implementation of an SPL for static analyses -- called OPAL -- that uses advanced language features offered by the Scala programming language to get an easily adaptable and (type-)safe software product line.\u0000 OPAL is a general purpose library for static analysis of Java Bytecode that is already successfully used. We present OPAL and show how a design based on software produce line engineering benefits the implementation of static analyses with the framework.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116676410","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 32
How to build the perfect Swiss army knife, and keep it sharp?: Challenges for the soot program-analysis framework in the light of past, current and future demands 如何打造一把完美的瑞士军刀,并让它保持锋利?根据过去、现在和未来的需求,烟灰方案分析框架面临的挑战
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614634
E. Bodden
Some program-analysis frameworks have been around for a long time, with Soot alone having been around for more than one decade. Over the years, demand on such frameworks have changed drastically, stressing the flexibility of frameworks such as Soot to their limit. What were those demands back then and how did they impact the design of Soot? What are the current demands and what architectural and methodological changes do they demand? What has the Soot community done to address these challenges? What remains to be solved? This talk means to address these questions to open the debate about the future evolution of Soot and other static-analysis frameworks.
一些程序分析框架已经存在了很长时间,仅Soot就已经存在了十多年。多年来,对此类框架的需求发生了巨大变化,从而使诸如Soot这样的框架的灵活性达到了极限。当时的需求是什么?它们如何影响了Soot的设计?当前的需求是什么?它们需要哪些架构和方法上的更改?烟灰社区做了什么来应对这些挑战?还有什么问题有待解决?本次演讲旨在解决这些问题,以开启关于Soot和其他静态分析框架未来发展的辩论。
{"title":"How to build the perfect Swiss army knife, and keep it sharp?: Challenges for the soot program-analysis framework in the light of past, current and future demands","authors":"E. Bodden","doi":"10.1145/2614628.2614634","DOIUrl":"https://doi.org/10.1145/2614628.2614634","url":null,"abstract":"Some program-analysis frameworks have been around for a long time, with Soot alone having been around for more than one decade. Over the years, demand on such frameworks have changed drastically, stressing the flexibility of frameworks such as Soot to their limit. What were those demands back then and how did they impact the design of Soot? What are the current demands and what architectural and methodological changes do they demand? What has the Soot community done to address these challenges? What remains to be solved? This talk means to address these questions to open the debate about the future evolution of Soot and other static-analysis frameworks.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134112639","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
TS4J: a fluent interface for defining and computing typestate analyses TS4J:用于定义和计算类型状态分析的流畅接口
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614629
E. Bodden
Typestate analyses determine whether a program's use of a given API obeys this API's usage constraints in the sense that the right methods are called on the right objects in the right order. Previously, we and others have described approaches that generate typestate analyses from textual finite-state property definitions written in specialized domain-specific languages. While such an approach is feasible, it requires a heavyweight compiler, hindering an effective integration into the programmer's development environment and thus often also into her software-development practice. Here we explain the design of a pure-Java interface facilitating both the definition and evaluation of typestate analyses. The interface is fluent, a term coined by Eric Evans and Martin Fowler. Fluent interfaces provide the user with the possibility to write method-invocation chains that almost read like natural-language text, in our case allowing for a seemingly declarative style of typestate definitions. In all previously described approaches, however, fluent APIs are used to build configuration objects. In this work, for the first time we show how to design a fluent API in such a way that it also encapsulates actual computation, not just configuration. We describe an implementation on top of Soot, Heros and Eclipse, which we are currently evaluating together with pilot customers in an industrial context at Fraunhofer SIT.
类型状态分析确定程序对给定API的使用是否遵守该API的使用约束,即在正确的对象上以正确的顺序调用正确的方法。以前,我们和其他人已经描述了从用特定领域语言编写的文本有限状态属性定义生成类型状态分析的方法。虽然这样的方法是可行的,但它需要一个重量级的编译器,从而阻碍了有效地集成到程序员的开发环境中,从而也经常集成到他的软件开发实践中。在这里,我们解释了一个纯java接口的设计,它可以促进类型状态分析的定义和评估。界面是流畅的,这是Eric Evans和Martin Fowler创造的术语。流畅接口为用户提供了编写方法调用链的可能性,这些方法调用链读起来几乎像自然语言文本,在我们的例子中,它支持一种看似声明式的类型状态定义。但是,在前面描述的所有方法中,都使用流畅的api来构建配置对象。在这项工作中,我们第一次展示了如何设计一个流畅的API,它也封装了实际的计算,而不仅仅是配置。我们描述了一个基于Soot、heroes和Eclipse的实现,目前我们正在Fraunhofer SIT的工业环境中与试点客户一起对其进行评估。
{"title":"TS4J: a fluent interface for defining and computing typestate analyses","authors":"E. Bodden","doi":"10.1145/2614628.2614629","DOIUrl":"https://doi.org/10.1145/2614628.2614629","url":null,"abstract":"Typestate analyses determine whether a program's use of a given API obeys this API's usage constraints in the sense that the right methods are called on the right objects in the right order. Previously, we and others have described approaches that generate typestate analyses from textual finite-state property definitions written in specialized domain-specific languages. While such an approach is feasible, it requires a heavyweight compiler, hindering an effective integration into the programmer's development environment and thus often also into her software-development practice.\u0000 Here we explain the design of a pure-Java interface facilitating both the definition and evaluation of typestate analyses. The interface is fluent, a term coined by Eric Evans and Martin Fowler. Fluent interfaces provide the user with the possibility to write method-invocation chains that almost read like natural-language text, in our case allowing for a seemingly declarative style of typestate definitions. In all previously described approaches, however, fluent APIs are used to build configuration objects. In this work, for the first time we show how to design a fluent API in such a way that it also encapsulates actual computation, not just configuration.\u0000 We describe an implementation on top of Soot, Heros and Eclipse, which we are currently evaluating together with pilot customers in an industrial context at Fraunhofer SIT.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127390905","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Large-scale configurable static analysis 大规模可配置静态分析
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614635
M. Naik
Program analyses developed over the last three decades have demonstrated the ability to prove non-trivial properties of real-world programs. This ability in turn has applications to emerging software challenges in security, software-defined networking, cyber-physical systems, and beyond. The diversity of such applications necessitates adapting the underlying program analyses to client needs, in aspects of scalability, applicability, and accuracy. Today's program analyses, however, do not provide useful tuning knobs. This talk presents a general computer-assisted approach to effectively adapt program analyses to diverse clients. The approach has three key ingredients. First, it poses optimization problems that expose a large set of choices to adapt various aspects of an analysis, such as its cost, the accuracy of its result, and the assumptions it makes about missing information. Second, it solves those optimization problems by new search algorithms that efficiently navigate large search spaces, reason in the presence of noise, interact with users, and learn across programs. Third, it comprises a program analysis platform that facilitates users to specify and compose analyses, enables search algorithms to reason about analyses, and allows using large-scale computing resources to parallelize analyses.
在过去三十年中开发的程序分析已经证明了证明真实世界程序的非平凡属性的能力。这种能力反过来又应用于安全、软件定义网络、网络物理系统等新兴软件挑战。这类应用程序的多样性要求在可伸缩性、适用性和准确性方面调整底层程序分析以满足客户需求。然而,今天的程序分析并没有提供有用的调优旋钮。本讲座介绍了一种通用的计算机辅助方法,以有效地使程序分析适应不同的客户。这种方法有三个关键要素。首先,它提出了优化问题,暴露了大量的选择,以适应分析的各个方面,例如成本、结果的准确性以及对缺失信息的假设。其次,它通过新的搜索算法解决了这些优化问题,这些算法可以有效地导航大型搜索空间,在存在噪声的情况下进行推理,与用户交互,并跨程序学习。第三,它包含一个程序分析平台,方便用户指定和编写分析,使搜索算法能够对分析进行推理,并允许使用大规模计算资源并行化分析。
{"title":"Large-scale configurable static analysis","authors":"M. Naik","doi":"10.1145/2614628.2614635","DOIUrl":"https://doi.org/10.1145/2614628.2614635","url":null,"abstract":"Program analyses developed over the last three decades have demonstrated the ability to prove non-trivial properties of real-world programs. This ability in turn has applications to emerging software challenges in security, software-defined networking, cyber-physical systems, and beyond. The diversity of such applications necessitates adapting the underlying program analyses to client needs, in aspects of scalability, applicability, and accuracy. Today's program analyses, however, do not provide useful tuning knobs. This talk presents a general computer-assisted approach to effectively adapt program analyses to diverse clients.\u0000 The approach has three key ingredients. First, it poses optimization problems that expose a large set of choices to adapt various aspects of an analysis, such as its cost, the accuracy of its result, and the assumptions it makes about missing information. Second, it solves those optimization problems by new search algorithms that efficiently navigate large search spaces, reason in the presence of noise, interact with users, and learn across programs. Third, it comprises a program analysis platform that facilitates users to specify and compose analyses, enables search algorithms to reason about analyses, and allows using large-scale computing resources to parallelize analyses.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114981336","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Android taint flow analysis for app sets Android应用程序集的污染流分析
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614633
William Klieber, Lori Flynn, Amar Bhosale, Limin Jia, Lujo Bauer
One approach to defending against malicious Android applications has been to analyze them to detect potential information leaks. This paper describes a new static taint analysis for Android that combines and augments the FlowDroid and Epicc analyses to precisely track both inter-component and intra-component data flow in a set of Android applications. The analysis takes place in two phases: given a set of applications, we first determine the data flows enabled individually by each application, and the conditions under which these are possible; we then build on these results to enumerate the potentially dangerous data flows enabled by the set of applications as a whole. This paper describes our analysis method, implementation, and experimental results.
防御恶意Android应用程序的一种方法是分析它们以检测潜在的信息泄露。本文描述了一种新的Android静态污染分析,它结合并增强了FlowDroid和Epicc分析,以精确跟踪一组Android应用程序中的组件间和组件内数据流。分析分两个阶段进行:给定一组应用程序,我们首先确定每个应用程序单独启用的数据流,以及实现这些数据流的条件;然后,我们在这些结果的基础上,列举整个应用程序集支持的潜在危险数据流。本文介绍了我们的分析方法、实现和实验结果。
{"title":"Android taint flow analysis for app sets","authors":"William Klieber, Lori Flynn, Amar Bhosale, Limin Jia, Lujo Bauer","doi":"10.1145/2614628.2614633","DOIUrl":"https://doi.org/10.1145/2614628.2614633","url":null,"abstract":"One approach to defending against malicious Android applications has been to analyze them to detect potential information leaks. This paper describes a new static taint analysis for Android that combines and augments the FlowDroid and Epicc analyses to precisely track both inter-component and intra-component data flow in a set of Android applications. The analysis takes place in two phases: given a set of applications, we first determine the data flows enabled individually by each application, and the conditions under which these are possible; we then build on these results to enumerate the potentially dangerous data flows enabled by the set of applications as a whole. This paper describes our analysis method, implementation, and experimental results.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114036659","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 221
Explicit and symbolic techniques for fast and scalable points-to analysis 用于快速和可扩展的点分析的显式和符号技术
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614632
E. Pek, P. Madhusudan
Points-to analysis that scales to large programs is still an open area of research and there are several trade-offs between speed and precision. In this paper, we report advances in achieving extremely fast and scalable analysis for field-sensitive inclusion-based points-to analysis. The first algorithm is based on an explicit representation, sparse bit-vector set representation. The second algorithm is a refinement of the first using symbolic set representations using binary decision diagrams. The first algorithm scales extremely well when compared with the state-of-the-art points-to analysis problems solving the same problem, while the second reduces the memory footprint tremendously, using, on average, 4.6x less memory than the first, and even performs slightly faster points-to set propagation. The techniques that we introduce are a judicious combination of several heuristics involving sparse bit-vector set representations, prioritized processing of worklists for efficient iteration while computing fixed-points, and usage of binary decision diagrams for storing (but not propagating) points-to sets. The implementation of our approaches scales to large real life Java applications. We evaluated our implementation on benchmark applications from two recent releases of DaCapo benchmark suite using a recent version of Java Standard Library (JRE 1.7_03). Using our techniques we can propagate points-to information on all the benchmarks in less than a minute, using at most 2GB of memory for explicit representation and, at most 600MB for symbolic representation. Comparison with the fastest and the most closely related explicit and symbolic approaches reveals that our techniques are more scalable than related explicit approaches, and in terms of time, on average 4x times faster than the current state-of-the-art.
将指向分析扩展到大型程序仍然是一个开放的研究领域,在速度和精度之间存在一些权衡。在本文中,我们报告了在实现基于场敏感的包含点到分析的极快速和可扩展分析方面的进展。第一种算法是基于显式表示,稀疏的位向量集表示。第二种算法是对第一种算法的改进,使用二元决策图的符号集表示。与解决相同问题的最先进的点到分析问题相比,第一种算法的扩展性非常好,而第二种算法极大地减少了内存占用,平均使用的内存比第一种算法少4.6倍,甚至执行的点到集传播速度略快。我们介绍的技术是几种启发式的明智组合,涉及稀疏的位向量集表示,在计算定点时优先处理工作列表以实现有效迭代,以及使用二进制决策图存储(但不传播)点到集。我们的方法的实现可以扩展到现实生活中的大型Java应用程序。我们使用最新版本的Java Standard Library (JRE 1.7_03),在两个最新版本的DaCapo基准测试套件的基准测试应用程序上评估了我们的实现。使用我们的技术,我们可以在不到一分钟的时间内传播所有基准测试的点到信息,最多使用2GB内存进行显式表示,最多使用600MB内存进行符号表示。与最快和最密切相关的显式和符号方法相比,我们的技术比相关的显式方法更具可扩展性,并且在时间方面平均比当前最先进的方法快4倍。
{"title":"Explicit and symbolic techniques for fast and scalable points-to analysis","authors":"E. Pek, P. Madhusudan","doi":"10.1145/2614628.2614632","DOIUrl":"https://doi.org/10.1145/2614628.2614632","url":null,"abstract":"Points-to analysis that scales to large programs is still an open area of research and there are several trade-offs between speed and precision. In this paper, we report advances in achieving extremely fast and scalable analysis for field-sensitive inclusion-based points-to analysis. The first algorithm is based on an explicit representation, sparse bit-vector set representation. The second algorithm is a refinement of the first using symbolic set representations using binary decision diagrams. The first algorithm scales extremely well when compared with the state-of-the-art points-to analysis problems solving the same problem, while the second reduces the memory footprint tremendously, using, on average, 4.6x less memory than the first, and even performs slightly faster points-to set propagation. The techniques that we introduce are a judicious combination of several heuristics involving sparse bit-vector set representations, prioritized processing of worklists for efficient iteration while computing fixed-points, and usage of binary decision diagrams for storing (but not propagating) points-to sets.\u0000 The implementation of our approaches scales to large real life Java applications. We evaluated our implementation on benchmark applications from two recent releases of DaCapo benchmark suite using a recent version of Java Standard Library (JRE 1.7_03). Using our techniques we can propagate points-to information on all the benchmarks in less than a minute, using at most 2GB of memory for explicit representation and, at most 600MB for symbolic representation. Comparison with the fastest and the most closely related explicit and symbolic approaches reveals that our techniques are more scalable than related explicit approaches, and in terms of time, on average 4x times faster than the current state-of-the-art.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126810862","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Dynamic slicing with soot 煤烟动态切片
Pub Date : 2014-06-12 DOI: 10.1145/2614628.2614631
Arian Treffer, M. Uflacker
Slicing is a powerful technique that can help a developer to understand how the interaction of different parts of a program causes a specific outcome. Dynamic slicing uses runtime information to compute a precise slice for a given execution. However, dynamic slicing is not possible without a static analysis of the underlying code to reveal dependencies between the instructions that have been recorded. In this paper, we present a new algorithm for computing dynamic slices. We describe how the optimization framework Soot was used to compute specialized intraprocedural dependency graphs that better reflect the programmer's view of a program than previous approaches. Combining these dependency graphs with recorded execution traces allowed us to create debuggable dynamic slices. For this, a mapping of the debugger's model of the execution to the static code model of Soot was needed, and could be found with only few ambiguities. This results in the ability to produce a dynamic slice that can not only be visualized, but explored interactively and adjusted to better answer specific questions.
切片是一种强大的技术,可以帮助开发人员理解程序不同部分的交互如何导致特定的结果。动态切片使用运行时信息来计算给定执行的精确切片。然而,如果没有底层代码的静态分析来揭示所记录的指令之间的依赖关系,动态切片是不可能的。本文提出了一种计算动态切片的新算法。我们描述了如何使用优化框架Soot来计算专门的过程内依赖关系图,这些图比以前的方法更能反映程序员对程序的看法。将这些依赖关系图与记录的执行跟踪相结合,使我们能够创建可调试的动态切片。为此,需要将执行的调试器模型映射到Soot的静态代码模型,并且只有很少的模糊性。这就产生了动态切片的能力,不仅可以可视化,而且可以交互式地探索和调整,以更好地回答特定的问题。
{"title":"Dynamic slicing with soot","authors":"Arian Treffer, M. Uflacker","doi":"10.1145/2614628.2614631","DOIUrl":"https://doi.org/10.1145/2614628.2614631","url":null,"abstract":"Slicing is a powerful technique that can help a developer to understand how the interaction of different parts of a program causes a specific outcome. Dynamic slicing uses runtime information to compute a precise slice for a given execution. However, dynamic slicing is not possible without a static analysis of the underlying code to reveal dependencies between the instructions that have been recorded.\u0000 In this paper, we present a new algorithm for computing dynamic slices. We describe how the optimization framework Soot was used to compute specialized intraprocedural dependency graphs that better reflect the programmer's view of a program than previous approaches. Combining these dependency graphs with recorded execution traces allowed us to create debuggable dynamic slices. For this, a mapping of the debugger's model of the execution to the static code model of Soot was needed, and could be found with only few ambiguities.\u0000 This results in the ability to produce a dynamic slice that can not only be visualized, but explored interactively and adjusted to better answer specific questions.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2014-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132621346","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
OCSEGen: open components and systems environment generator OCSEGen:开放组件和系统环境生成器
Pub Date : 2013-06-20 DOI: 10.1145/2487568.2487572
O. Tkachuk
To analyze a large system, one often needs to break it into smaller components. To analyze a component or unit under analysis, one needs to model its context of execution, called environment, which represents the components with which the unit interacts. Environment generation is a challenging problem, because the environment needs to be general enough to uncover unit errors, yet precise enough to make the analysis tractable. In this paper, we present a tool for automated environment generation for open components and systems. The tool, called OCSEGen, is implemented on top of the Soot framework. We present the tool's current support and discuss its possible future extensions.
要分析一个大型系统,通常需要将其分解为更小的组件。要分析被分析的组件或单元,需要对其执行上下文(称为环境)进行建模,环境表示与单元交互的组件。环境生成是一个具有挑战性的问题,因为环境需要足够通用以发现单元错误,但又需要足够精确以使分析易于处理。在本文中,我们提出了一个为开放组件和系统自动生成环境的工具。这个工具叫做OCSEGen,是在Soot框架之上实现的。我们介绍了该工具的当前支持,并讨论了其未来可能的扩展。
{"title":"OCSEGen: open components and systems environment generator","authors":"O. Tkachuk","doi":"10.1145/2487568.2487572","DOIUrl":"https://doi.org/10.1145/2487568.2487572","url":null,"abstract":"To analyze a large system, one often needs to break it into smaller components. To analyze a component or unit under analysis, one needs to model its context of execution, called environment, which represents the components with which the unit interacts. Environment generation is a challenging problem, because the environment needs to be general enough to uncover unit errors, yet precise enough to make the analysis tractable. In this paper, we present a tool for automated environment generation for open components and systems. The tool, called OCSEGen, is implemented on top of the Soot framework. We present the tool's current support and discuss its possible future extensions.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-06-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124974760","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Numerical static analysis with Soot 用Soot进行数值静态分析
Pub Date : 2013-06-20 DOI: 10.1145/2487568.2487571
G. Amato, S. Maio, F. Scozzari
Numerical static analysis computes an approximation of all the possible values that a numeric variable may assume, in any execution of the program. Many numerical static analyses have been proposed exploiting the theory of abstract interpretation, which is a general framework for designing provably correct program analysis. The two main problems in analyzing numerical properties are: choosing the right level of abstraction (the abstract domain) and developing an efficient iteration strategy which computes the analysis result guaranteeing termination and soundness. In this paper, we report on our prototype implementation of a Java bytecode static analyzer for numerical properties. It has been developed exploiting Soot bytecode abstractions, existing libraries for numerical abstract domains, and the iteration strategies commonly used in the abstract interpretation community. We show pros and cons of using Soot, and discuss the main differences between our analyzer and the Soot static analysis framework.
数值静态分析计算数值变量在任何程序执行过程中可能假设的所有可能值的近似值。利用抽象解释理论提出了许多数值静态分析,抽象解释理论是设计可证明正确的程序分析的一般框架。数值性质分析的两个主要问题是:选择合适的抽象层次(抽象域)和制定有效的迭代策略来计算分析结果,保证分析结果的终止性和健全性。在本文中,我们报告了一个用于数值属性的Java字节码静态分析器的原型实现。它的开发利用了Soot字节码抽象、现有的数值抽象域库以及抽象解释社区中常用的迭代策略。我们展示了使用Soot的优点和缺点,并讨论了我们的分析器和Soot静态分析框架之间的主要区别。
{"title":"Numerical static analysis with Soot","authors":"G. Amato, S. Maio, F. Scozzari","doi":"10.1145/2487568.2487571","DOIUrl":"https://doi.org/10.1145/2487568.2487571","url":null,"abstract":"Numerical static analysis computes an approximation of all the possible values that a numeric variable may assume, in any execution of the program. Many numerical static analyses have been proposed exploiting the theory of abstract interpretation, which is a general framework for designing provably correct program analysis. The two main problems in analyzing numerical properties are: choosing the right level of abstraction (the abstract domain) and developing an efficient iteration strategy which computes the analysis result guaranteeing termination and soundness.\u0000 In this paper, we report on our prototype implementation of a Java bytecode static analyzer for numerical properties. It has been developed exploiting Soot bytecode abstractions, existing libraries for numerical abstract domains, and the iteration strategies commonly used in the abstract interpretation community. We show pros and cons of using Soot, and discuss the main differences between our analyzer and the Soot static analysis framework.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-06-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126512794","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
Joogie: from Java through Jimple to Boogie 从Java到Jimple再到Boogie
Pub Date : 2013-06-20 DOI: 10.1145/2487568.2487570
Stephan Arlt, Philipp Rümmer, Martin Schäf
Recently, software verification is being used to prove the presence of contradictions in source code, and thus detect potential weaknesses in the code or provide assistance to the compiler optimization. Compared to verification of correctness properties, the translation from source code to logic can be very simple and thus easy to solve by automated theorem provers. In this paper, we present a translation of Java into logic that is suitable for proving the presence of contradictions in code. We show that the translation, which is based on the Jimple language, can be used to analyze real-world programs, and discuss some issues that arise from differences between Java code and its bytecode.
最近,软件验证被用于证明源代码中存在矛盾,从而检测代码中的潜在弱点或为编译器优化提供帮助。与验证正确性属性相比,从源代码到逻辑的转换非常简单,因此很容易通过自动定理证明器解决。在本文中,我们将Java翻译成适合于证明代码中存在矛盾的逻辑。我们展示了基于Jimple语言的翻译,可以用于分析实际的程序,并讨论了由于Java代码和字节码之间的差异而产生的一些问题。
{"title":"Joogie: from Java through Jimple to Boogie","authors":"Stephan Arlt, Philipp Rümmer, Martin Schäf","doi":"10.1145/2487568.2487570","DOIUrl":"https://doi.org/10.1145/2487568.2487570","url":null,"abstract":"Recently, software verification is being used to prove the presence of contradictions in source code, and thus detect potential weaknesses in the code or provide assistance to the compiler optimization. Compared to verification of correctness properties, the translation from source code to logic can be very simple and thus easy to solve by automated theorem provers. In this paper, we present a translation of Java into logic that is suitable for proving the presence of contradictions in code. We show that the translation, which is based on the Jimple language, can be used to analyze real-world programs, and discuss some issues that arise from differences between Java code and its bytecode.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-06-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128293585","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 12
期刊
State Of the Art in Java Program Analysis
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1