Resource-Aware Program Analysis Via Online Abstraction Coarsening

@article{Heo2019ResourceAwarePA,
  title={Resource-Aware Program Analysis Via Online Abstraction Coarsening},
  author={Kihong Heo and Hakjoo Oh and Hongseok Yang},
  journal={2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)},
  year={2019},
  pages={94-104}
}
  • K. Heo, Hakjoo Oh, Hongseok Yang
  • Published 25 May 2019
  • Computer Science
  • 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)
We present a new technique for developing a resource-aware program analysis. Such an analysis is aware of constraints on available physical resources, such as memory size, tracks its resource use, and adjusts its behaviors during fixpoint computation in order to meet the constraint and achieve high precision. Our resource-aware analysis adjusts behaviors by coarsening program abstraction, which usually makes the analysis consume less memory and time until completion. It does so multiple times… 

Figures and Tables from this paper

A Survey of Parametric Static Analysis
TLDR
The parametric static analysis is formally defined, analysis parameters and their parameter selection in the literature are surveyed, and open challenges and future directions of the parametricstatic analysis are discussed.
Automatically Tailoring Abstract Interpretation to Custom Usage Scenarios
TLDR
This paper proposes a technique that automatically tailors an abstract interpreter to the code under analysis and any given resource constraints, and implements this technique in a framework, tAIlor, which is used to perform an extensive evaluation on real-world benchmarks.
Data-Driven Synthesis of Provably Sound Side Channel Analyses
TLDR
This work proposes a data-driven method for synthesizing static analyses to detect side-channel information leaks in cryptographic software and guarantees soundness by proving each learned analysis rule via a technique called query containment checking.
Sporq: An Interactive Environment for Exploring Code using Query-by-Example
TLDR
Sporq is a tool that allows developers to mine their codebases for a range of patterns, including bugs, code smells, and violations of coding standards, through an interactive environment in which the user highlights program elements, and the system responds by identifying other parts of the codebase with similar patterns.
Return of CFA: call-site sensitivity can be superior to object sensitivity even for object-oriented programs
TLDR
It is claimed that call-site sensitivity is generally a superior context abstraction because it is practically possible to transform arbitrary context-tunneled object sensitivity into more precisecall-site-sensitivity.
Learning to Find Naming Issues with Big Code and Small Supervision
TLDR
This work introduces a new approach for finding and fixing naming issues in source code based on a careful combination of unsupervised and supervised procedures and demonstrates that Namer is effective in finding naming mistakes in real world repositories with high precision.
Learning to find naming issues with big code and small supervision
TLDR
This work introduces a new approach for finding and fixing naming issues in source code based on a careful combination of unsupervised and supervised procedures and demonstrates that Namer is effective in finding naming mistakes in real world repositories with high precision.
Estimating GPU memory consumption of deep learning models
TLDR
DNNMem employs an analytic estimation approach to systematically calculate the memory consumption of both the computation graph and the DL framework runtime, and shows that DNNMem is effective in estimating GPU memory consumption.
Context-aware In-process Crowdworker Recommendation
TLDR
A context-aware in-process crowdworker recommendation approach, iRec, to detect more bugs earlier and potentially shorten the non-yielding windows and results show the potential of iRec in improving the cost-effectiveness of crowdtesting by saving the cost and shortening the testing process.
SEADS: Scalable and Cost-effective Dynamic Dependence Analysis of Distributed Systems via Reinforcement Learning
TLDR
This paper presents Seads, a distributed, online, and cost-effective dynamic dependence analysis framework that aims at scaling the analysis to real-world distributed systems and demonstrates the efficiency and scalability advantages of the framework over a conventional dynamic analysis at method level.
...
1
2
...

References

SHOWING 1-10 OF 39 REFERENCES
Bounded Abstract Interpretation
TLDR
A technique that enables engineers to interactively bound a static analysis based on the available resources and shows that bounded abstract interpretation can significantly increase the performance of the analysis while also increasing the quality of the reported warnings.
Global Sparse Analysis Framework
TLDR
A general method for achieving global static analyzers that are precise and sound, yet also scalable, and a general sparse analysis technique that supports relational as well as nonrelational semantics properties for various programming languages.
Abstraction refinement guided by a learnt probabilistic model
TLDR
This paper presents a new approach for automatically finding a good program abstraction, based on counterexample-guided abstraction refinement, which is a variant of the Erdos--Renyi random graph model, and is tunable by what they call hyperparameters.
Abstractions from tests
TLDR
The main insight is to directly and efficiently compute from a concrete trace, a necessary condition on the parameter configurations to prove a given query, and thereby prune the space of parameter configurations that the static analysis must consider.
A Progress Bar for Static Analyzers
TLDR
The technique first combines a semantic-based pre-analysis and a statistical method to approximate how a main analysis progresses in terms of lattice height of the abstract domain, then uses this information during the main analysis and estimates the analysis’ current progress.
Design and implementation of sparse global analyses for C-like languages
TLDR
A general method for achieving global static analyzers that are precise, sound, yet also scalable, and to support relational as well as non-relational semantics properties for C-like languages is presented.
Selective context-sensitivity guided by impact pre-analysis
TLDR
This method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries, and demonstrates generality by following the same principle and developing a selective relational analysis.
Strictly declarative specification of sophisticated points-to analyses
TLDR
The DOOP framework for points-to analysis of Java programs is presented, carrying the declarative approach further than past work by describing the full end-to-end analysis in Datalog and optimizing aggressively using a novel technique specifically targeting highly recursive Datalogy programs.
Automatically generating features for learning program analysis heuristics for C-like languages
TLDR
The technique goes through selected program-query pairs in codebases, and it reduces and abstracts the program in each pair to a few lines of code, while ensuring that the analysis behaves similarly for the original and the new programs with respect to the query.
Data-driven context-sensitivity for points-to analysis
TLDR
This work proposes an automated and data-driven approach that learns to effectively apply context-sensitivity from codebases and presents a greedy algorithm that efficiently learns the parameter of the heuristic rules.
...
1
2
3
4
...