This project proposes a program of research aimed at helping developers to more quickly construct and repair software, specifications, and proofs within a continuous reasoning process. our project begins by prototyping a Continuous Assurance system. This system adapts our prior work on Gradual Verification to context of continuous integration, supporting incremental progress towards proofs through the integration of static and dynamic verification. Once an initial prototype of continuous assurance is complete, we will begin on a Proof Maintenance system, which aims to maintain proofs in a checkable state after evolutionary changes are made to one or more components or their specifications. The final technical component of our approach is a Proof repair system, which adapts specifications that have been falsified by finding closely related specifications that remain true after an evolutionary step.
Jonathan Aldrich is an Associate Professor of the School of Computer Science. He does programming languages and software engineering research focused on developing better ways of expressing and enforcing software design within source code, typically through language design and type systems. Jonathan works at the intersection of programming languages and software engineering. His research explores how the way we express software affects our ability to engineer software at scale. A particular theme of much of his work is improving software quality and programmer productivity through better ways to express structural and behavioral aspects of software design within source code. Aldrich has contributed to object-oriented typestate verification, modular reasoning techniques for aspects and stateful programs, and new object-oriented language models. For his work specifying and verifying architecture, he received a 2006 NSF CAREER award and the 2007 Dahl-Nygaard Junior Prize. Currently, Aldrich excited to be working on the design of Wyvern, a new modularly extensible programming language.