一句话:通过复用新旧版本代码片段,自动合成动态软件更新中非平凡的对象状态转换器。
动态软件更新(DSU)旨在不重启系统的情况下在线修补程序状态,但跨版本的对象状态转换往往非平凡,阻碍了其实际应用。本文对 Tomcat 8 中 190 余个类变更开展实证研究,发现大多数非平凡的对象状态转换器可以通过重新组装旧版本与新版本的现有代码片段来构造。基于这一发现,作者提出了一种领域特定语言(DSL)以及一种基于代码复用的高效合成算法,用于自动生成非平凡的对象转换器。作者实现了工具 PASTA,并在真实软件系统上进行了实验评估,结果表明 PASTA 在非平凡对象转换任务上的成功次数是现有最佳 DSU 技术的 7.5 倍。
There is an increasing demand for evolving software systems to deliver continuous services of no restart. Dynamic software update (DSU) aims to achieve this goal by patching the system state on the fly but is currently hindered from practice due to non-trivial cross-version object state transformations. This paper revisits this problem through an in-depth empirical study of over 190 class changes from Tomcat 8. The study produced an important finding that most non-trivial object state transformers can be constructed by reassembling existing old/new version code snippets. This paper presents a domain-specific language and an efficient algorithm for synthesizing non-trivial object transformers over code reuse. We experimentally evaluated our tool implementation PASTA with real-world software systems, reporting PASTA's effectiveness in succeeding in 7.5X non-trivial object transformation tasks compared with the best existing DSU techniques.