Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
The minimum consistent DFA problem cannot be approximated within and polynomial
STOC '89 Proceedings of the twenty-first annual ACM symposium on Theory of computing
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Quickly detecting relevant program invariants
Proceedings of the 22nd international conference on Software engineering
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Automatic generation of program specifications
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Tracking down software bugs using automatic anomaly detection
Proceedings of the 24th International Conference on Software Engineering
Debugging temporal specifications with concept analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Synthesis of interface specifications for Java classes
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scalable error detection using boolean satisfiability
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Perracotta: mining temporal API rules from imperfect traces
Proceedings of the 28th international conference on Software engineering
Dynamically discovering likely interface invariants
Proceedings of the 28th international conference on Software engineering
Mining object behavior with ADABU
Proceedings of the 2006 international workshop on Dynamic systems analysis
SMArTIC: towards building an accurate, robust and scalable specification miner
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Path-Sensitive Inference of Function Precedence Protocols
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Static specification inference using predicate mining
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
From uncertainty to belief: inferring the specification within
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
Static specification mining using automata-based abstractions
Proceedings of the 2007 international symposium on Software testing and analysis
Mining API patterns as partial orders from source code: from usage scenarios to specifications
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Detecting object usage anomalies
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
Symbolic mining of temporal specifications
Proceedings of the 30th international conference on Software engineering
Automatic generation of software behavioral models
Proceedings of the 30th international conference on Software engineering
Mining temporal specifications for error detection
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Specification mining of symbolic scenario-based models
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Mining exception-handling rules as sequence association rules
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Graph-based mining of multiple object usage patterns
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
MAPO: Mining and Recommending API Usage Patterns
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Dynamically inferring, refining, and checking API usage protocols
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Online inference and enforcement of temporal properties
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Learning from 6,000 projects: lightweight cross-project anomaly detection
Proceedings of the 19th international symposium on Software testing and analysis
Automated analysis of load testing results
Proceedings of the 19th international symposium on Software testing and analysis
Mining program workflow from interleaved traces
Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining
Scalable specification mining for verification and diagnosis
Proceedings of the 47th Design Automation Conference
A graph-based approach to API usage adaptation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Clara: partially evaluating runtime monitors at compile time tutorial supplement
RV'10 Proceedings of the First international conference on Runtime verification
Mining parametric specifications
Proceedings of the 33rd International Conference on Software Engineering
Detecting anomalies in the order of equally-typed method arguments
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Mining temporal specifications from object usage
Automated Software Engineering
Mining temporal invariants from partially ordered logs
SLAML '11 Managing Large-scale Systems via the Analysis of System Logs and the Application of Machine Learning Techniques
Extracting significant specifications from mining through mutation testing
ICFEM'11 Proceedings of the 13th international conference on Formal methods and software engineering
Mining temporal invariants from partially ordered logs
ACM SIGOPS Operating Systems Review
Mining quantified temporal rules: Formalism, algorithms, and evaluation
Science of Computer Programming
Mining effective temporal specifications from heterogeneous API data
Journal of Computer Science and Technology - Special issue on Natural Language Processing
Graph-based pattern-oriented, context-sensitive source code completion
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 34th International Conference on Software Engineering
On the naturalness of software
Proceedings of the 34th International Conference on Software Engineering
Statically checking API protocol conformance with mined multi-object specifications
Proceedings of the 34th International Conference on Software Engineering
Typestate-based semantic code search over partial programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Hi-index | 0.00 |
Program specifications are important for many tasks during software design, development, and maintenance. Among these, temporal specifications are particularly useful. They express formal correctness requirements of an application's ordering of specific actions and events during execution, such as the strict alternation of acquisition and release of locks. Despite their importance, temporal specifications are often missing, incomplete, or described only informally. Many techniques have been proposed that mine such specifications from execution traces or program source code. However, existing techniques mine only simple patterns, or they mine a single complex pattern that is restricted to a particular set of manually selected events. There is no practical, automatic technique that can mine general temporal properties from execution traces. In this paper, we present Javert, the first general specification mining framework that can learn, fully automatically, complex temporal properties from execution traces. The key insight behind Javert is that real, complex specifications can be formed by composing instances of small generic patterns, such as the alternating pattern ((ab)) and the resource usage pattern ((ab c)). In particular, Javert learns simple generic patterns and composes them using sound rules to construct large, complex specifications. We have implemented the algorithm in a practical tool and conducted an extensive empirical evaluation on several open source software projects. Our results are promising; they show that Javert is scalable, general, and precise. It discovered many interesting, nontrivial specifications in real-world code that are beyond the reach of existing automatic techniques.