ACM Transactions on Programming Languages and Systems (TOPLAS)
Symbolic execution and program testing
Communications of the ACM
Finding bugs with a constraint solver
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Contract Soundness for object-oriented languages
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Alloy: a lightweight object modelling notation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
An analyzable annotation language
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Executing Formal Specifications with Concurrent Constraint Programming
Automated Software Engineering
Integrating Constraints with an Object-Oriented Language
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Design by Contract: Making Object-Oriented Programs that Work
TOOLS '97 Proceedings of the Technology of Object-Oriented Languages and Systems - Tools-25
Automatic detection and repair of errors in data structures
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
TestEra: Specification-Based Testing of Java Programs Using SAT
Automated Software Engineering
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Data structure repair using goal-directed reasoning
Proceedings of the 27th international conference on Software engineering
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
Modular verification of code with SAT
Proceedings of the 2006 international symposium on Software testing and analysis
Starc: static analysis for efficient repair of complex data
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Assertion-based repair of complex data structures
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Juzi: a tool for repairing complex data structures
Proceedings of the 30th international conference on Software engineering
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Bounded Verification of Voting Software
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
An integrated proof language for imperative programs
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
A constraint solver for software engineering: finding models and cores of large relational specifications
jmle: a tool for executing JML specifications via constraint programming
FMICS'06/PDMC'06 Proceedings of the 11th international workshop, FMICS 2006 and 5th international workshop, PDMC conference on Formal methods: Applications and technology
Checking properties of heap-manipulating procedures with a constraint solver
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Unifying execution of imperative and declarative code
Proceedings of the 33rd International Conference on Software Engineering
Extensive validation of OCL models by integrating SAT solving into USE
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
A language for automatically enforcing privacy policies
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
What to do when things go wrong: recovery in complex (computer) systems
Proceedings of the 11th annual international conference on Aspect-oriented Software Development Companion
Proving acceptability properties of relaxed nondeterministic approximate programs
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
History-Aware data structure repair using SAT
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Strengthening SAT-based validation of UML/OCL models by representing collections as relations
ECMFA'12 Proceedings of the 8th European conference on Modelling Foundations and Applications
Synthesizing iterators from abstraction functions
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Liberating the programmer with prorogued programming
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Program extrapolation with jennisys
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
From UML and OCL to relational logic and back
MODELS'12 Proceedings of the 15th international conference on Model Driven Engineering Languages and Systems
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Growing solver-aided languages with rosette
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Hi-index | 0.00 |
We describe a new approach to employing specifications for software reliability. Rather than only using specifications to validate implementations, we additionally employ specifications as a reliable alternative to those implementations. Our approach, which we call Plan B, performs dynamic contract checking of methods. However, instead of halting the program upon a contract violation, we employ a constraint solver to automatically execute the specification in order to allow the program to continue properly. This paper describes Plan B as well as its instantiation in an extension to Java with executable specifications that we call PBnJ (Plan B in Java). We present the design of PBnJ by example and describe its implementation, which leverages the Kodkod relational constraint solver. We also describe our experience using the language to enhance the reliability and functionality of several existing Java applications.