一句话:提出 Konure,用主动学习推断访问关系数据库的应用模型,并将模型再生成带安全检查的 Python 实现。
论文提出 Konure,用于推断并再生成访问关系数据库的应用。此类应用的行为常依赖数据库内容与查询流量,仅凭代码难以理解或迁移。Konure 定义一个领域特定语言,每个模型即该语言程序;其推断算法采用主动学习,自动生成输入和数据库内容,运行原应用并观察数据库访问流量与输出,逐步精化当前模型假设。由于只依赖外部可观测的输入、输出和数据库内容,该方法可处理任意语言和编码风格的应用,只要其行为可用该 DSL 表达。Konure 还提供再生器,将推断模型翻译为 Python 实现,并系统性地加入相关安全与错误检查。
We present K onure , a new system that uses active learning to infer models of applications that retrieve data from relational databases. K onure comprises a domain-specific language (each model is a program in this language) and associated inference algorithm that infers models of applications whose behavior can be expressed in this language. The inference algorithm generates inputs and database contents, runs the application, then observes the resulting database traffic and outputs to progressively refine its current model hypothesis. Because the technique works with only externally observable inputs, outputs, and database contents, it can infer the behavior of applications written in arbitrary languages using arbitrary coding styles (as long as the behavior of the application is expressible in the domain-specific language). K onure also implements a regenerator that produces a translated Python implementation of the application that systematically includes relevant security and error checks.
@article{ShenR21,
title = {Active Learning for Inference and Regeneration of Applications that Access Databases},
author = {Jiasi Shen and Martin C. Rinard},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {42},
number = {4},
year = {2020},
doi = {10.1145/3430952}
}