Many systems must be periodically updated to add features, fix bugs, patch security vulnerabilities, and eliminate performance bottlenecks. In some systems, updates can be applied by simply halting the program, updating the code and data, and restarting the new version, but in critical systems even brief interruptions for maintenance are unacceptable. Although the research community has developed techniques for updating programs on the fly, existing frameworks only handle a single machine. To update the software running on a distributed system, programmers typically use ad hoc techniques that are difficult to reason about and prone to error.

The goal of this project is to develop foundational principles and practical techniques for managing distributed updates. A central theme is the use of bidirectional transformations to bridge the gap between different versions of a program, thereby allowing multiple versions to interoperate seamlessly. Specific contributions include developing (i) formal foundations for distributed updates, (ii) programming abstractions for constructing and deploying updates, (iii) verification tools for checking update correctness properties automatically, and (iv) an evaluation of these abstractions and tools on practical examples. The project will have broad impact by (i) discovering techniques for increasing the reliability of distributed systems during updates, (ii) building reusable software infrastructure for managing updates, and (iii) improving K-12 education and increasing the participation of underrepresented minorities in science through a high school outreach program.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
1253165
Program Officer
Anindya Banerjee
Project Start
Project End
Budget Start
2013-02-01
Budget End
2019-01-31
Support Year
Fiscal Year
2012
Total Cost
$532,005
Indirect Cost
Name
Cornell University
Department
Type
DUNS #
City
Ithaca
State
NY
Country
United States
Zip Code
14850