Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Commutativity analysis: a new analysis technique for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Debugging temporal specifications with concept analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Discovering and debugging algebraic specifications for java classes
Discovering and debugging algebraic specifications for java classes
Synthesis of interface specifications for Java classes
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
Mining object behavior with ADABU
Proceedings of the 2006 international workshop on Dynamic systems analysis
Experimental program analysis: a new program analysis paradigm
Proceedings of the 2006 international symposium on Software testing and analysis
Have things changed now?: an empirical study of bug characteristics in modern open source software
Proceedings of the 1st workshop on Architectural and system support for improving software dependability
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
Finding what's not there: a new approach to revealing neglected conditions in software
Proceedings of the 2007 international symposium on Software testing and analysis
Static specification mining using automata-based abstractions
Proceedings of the 2007 international symposium on Software testing and analysis
Differential testing: a new approach to change detection
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Mop: an efficient and generic runtime verification framework
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Weak Mutation Testing and Completeness of Test Sets
IEEE Transactions on Software Engineering
Testing Programs with the Aid of a Compiler
IEEE Transactions on Software Engineering
Effective typestate verification in the presence of aliasing
ACM Transactions on Software Engineering and Methodology (TOSEM)
Symbolic mining of temporal specifications
Proceedings of the 30th international conference on Software engineering
Javert: fully automatic mining of general temporal properties from dynamic traces
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Specification Mining with Few False Positives
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
A comparative study of programmer-written and automatically inferred contracts
Proceedings of the eighteenth international symposium on Software testing and analysis
DETERMIN: inferring likely deterministic specifications of multithreaded programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Generating test cases for specification mining
Proceedings of the 19th international symposium on Software testing and analysis
Mining parametric specifications
Proceedings of the 33rd International Conference on Software Engineering
Generating parameterized unit tests
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Extracting significant specifications from mining through mutation testing
ICFEM'11 Proceedings of the 13th international conference on Formal methods and software engineering
Unifying FSM-inference algorithms through declarative specification
Proceedings of the 2013 International Conference on Software Engineering
Inferring dependency constraints on parameters for web services
Proceedings of the 22nd international conference on World Wide Web
Current challenges in automatic software repair
Software Quality Control
Hi-index | 0.00 |
Specifications are necessary for nearly every software engineering task, but they are often missing or incomplete. "Specification mining" is a line of research promising to solve this problem through automated tools that infer specifications directly from existing programs. The standard practice is one of inductive learning: mining tools make observations about software and inductively generalize them into specifications. Inductive reasoning is unsound, however, and existing tools commonly grapple with the problem of inferring "false" specifications, which must be manually checked. In this work, we introduce a new technique for automatically validating mined specifications that lessens this manual burden. Our technique is not based on heuristics; it rather uses a general, semantic definition of a "true" specification. We perform systematic, targeted program transformations to test a mined specification's necessity for overall correctness. If a "violating" program is correct, the specification is false. We have implemented our technique in a prototype tool that validates temporal properties of Java programs, and we demonstrate it to be effective through a large-scale case study on the DaCapo benchmarks.