SEPS Invited Tallk: Hybrid Inference of Semantics for Software Adaptation
During a program’s lifecycle, the ecosystem in which it operates often changes. For example, in the cloud computing domain, middleware, virtualization, and storage models may change. As underlying resources change, programs need to adapt. However, such changes cannot be generally anticipated in advance. Specifically, energy requirements, number of cores, and memory change in ways that are not predictable. In current practice, significant rewriting effort is spent by humans on adapting programs. We suggest that a combination of techniques from runtime monitoring, static and dynamic analysis, and pluggable type systems can effectively automate adaptation. In particular, encoding semantic properties of programs as type annotations helps automating the refactoring of programs when changes occur. Through both static and dynamic techniques, programmer intent can be inferred and expressed as pluggable types. Our ongoing work on inference of pluggable types that express the data-centric concurrency semantics of programs provides one building block. Recent results on parameterized session types, which capture message-passing behavior of programs, provide another. Finally, runtime monitoring enables steering a running program to prevent catastrophic behavior. Such monitoring can now be made evolution-aware, in the sense that information derived before an adaptation is directly used to perform the monitoring and inference afterwards.