Symbolic execution and program testing
Communications of the ACM
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Korat: A Tool for Generating Structurally Complex Test Inputs
ICSE '07 Proceedings of the 29th international conference on Software Engineering
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
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Repairing structurally complex data
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Efficiently generating structurally complex inputs with thousands of objects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Dynamic symbolic data structure repair
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Automated fixing of programs with contracts
Proceedings of the 19th international symposium on Software testing and analysis
DSDSR: a tool that uses dynamic symbolic execution for data structure repair
Proceedings of the Eighth International Workshop on Dynamic Analysis
Falling back on executable specifications
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Specification-based program repair using SAT
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 34th International Conference on Software Engineering
Computing repair trees for resolving inconsistencies in design models
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Current challenges in automatic software repair
Software Quality Control
Hi-index | 0.01 |
This paper describes Juzi, a tool for automatic repair of complex data structures. Juzi takes a Java class representing the data structure as well as a predicate method that specifies the structural integrity constraints as inputs. Juzi instruments its inputs and generates a new Java class which behaves similarly to the original class, yet automatically repairs itself when the structural integrity constraints are violated. Juzi implements a novel repair algorithm. Given a structure that violates its integrity constraints, Juzi performs a systematic search based on symbolic execution to repair the structure, i.e., mutate it such that the resulting structure satisfies the given constraints. Experiments on structures ranging from library classes to standalone applications, show that Juzi repairs complex structures while enabling programs to recover from erroneous executions caused by data structure corruptions.