Semantic Code Refactoring for Abstract Data Types
summary
Automates ADT refactoring by taking an original implementation, a new data layout and a relational representation invariant, then synthesizing each method via a CEGIS loop that reduces relational synthesis to programming-by-example, uses symbolic abduction to mine code snippets and exploits partial equivalence to compose partial solutions. Tool called Revamp refactors 29 of 30 Java ADTs (144 of 146 methods), runs in under five minutes on average, and outperforms several baselines.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 2:10ADT refactoring challenges
- 4:55Relational invariants
- 7:26Revamp tool overview
- 8:53Rectangle ADT refactoring
- 11:01Synthesis via examples
- 13:54Accelerating search
- 14:37Evaluation results
- 16:22Conclusion
- 16:42Q&A
related talks
47mComputer, refactor my code!
21mAutomating Front-End Refactoring
01h 29mAlchemical Code Rejuvenation
36mCode as Data: How data insights on legacy codebases fill the knowledge gap in modernization projects
34mData-Driven Refactoring
15mLanguage-Parametric Reference Synthesis
01h 03mElevate Your Code to Modern C++11 with Automated Tooling
44mThe Art of Refactoring
