Correctness Matters: Automatic Program Transformation in the Age of Generative AI
Software engineers never start from a blank page, but rather from an extant and usually long-running project in need of modification (for repair, extension, update, etc.). One way to view modern programming is thus as a continual process of iteratively transforming existing programs into something new, and hopefully better. In this context, I will talk about the development of the area of automatic program repair, from research novelty to industrial deployment. I will discuss the potential that this class of automatic program transformation approaches has to augment or automate a broad range of software development activities. I will focus especially on the fundamental challenge of ensuring that automatically transformed code is of acceptable quality, and ways to tackle that challenge, especially in light of recent advances in generative AI. Finally, I will reflect on the implications these emerging techniques have for the ways human engineers interact with their toolchains and their software systems, as well as for analysis and tool designers.