The fastest growing areas of IT application development are for mobile devices and browser-based applications. Smartphones are becoming more capable and widespread, which attracts both users and application developers. Browser-based applications are replacing traditional native applications.
This project investigates new programming abstractions, libraries, and tools that can increase programmer and maintainer productivity for mobile and browser-based applications. Among the programming concerns that distinguish these applications from traditional applications, the project focusses on application-level checkpointing and replay. This feature enables the application to save a compact description of its state for restoring at a future time. This is one aspect that is required for usability of mobile and browser-based applications, yet is error-prone, lacks programming support and, if solved properly, can serve as foundation for powerful testing and debugging tools.
This project addresses the checkpointing and replay problem from a language-level and application-level perspective. A system of program annotations will be developed to assist programmers in developing the checkpointing and replay aspects of their programs. The annotations can be used as a basis for synthesis of the checkpointing code, and also as an input for static and dynamic analysis tools that can ensure the correctness of the checkpointing and replay aspects.
This project also explores ways in which an effective checkpointing and replay mechanism for mobile and web-based applications can improve the software maintenance lifecycle, through automated test generation and improved debugging support of deployed software.