一句话:提出 ProvBuild,利用语言级 provenance 跟踪脚本依赖并生成简化调试脚本,降低认知负荷与调试时间。
数据科学家常通过编写脚本分析数据,但参数调优高度迭代,调试耗时。随着脚本演化变复杂,分析者难以把握工作流,编辑后也难以精确判断哪些代码块受影响,因而常重跑整个脚本而非必要部分。本文提出 ProvBuild,利用语言级 provenance 跟踪脚本依赖;调试时自动生成仅包含调试特定问题所需信息的简化脚本,从而降低程序员认知负荷并加快重执行。定量与定性评估表明,尽管首次执行会引入开销,ProvBuild 能帮助用户更高效地调试和调优复杂工作流。该工作展示了语言级 provenance 的新用法:主动提升程序员生产力,而非仅事后理解代码。
Data scientists frequently analyze data by writing scripts. We conducted a contextual inquiry with interdisciplinary researchers, which revealed that parameter tuning is a highly iterative process and that debugging is time-consuming. As analysis scripts evolve and become more complex, analysts have difficulty conceptualizing their workflow. In particular, after editing a script, it becomes difficult to determine precisely which code blocks depend on the edit. Consequently, scientists frequently re-run entire scripts instead of re-running only the necessary parts. We present ProvBuild, a tool that leverages language-level provenance to streamline the debugging process by reducing programmer cognitive load and decreasing subsequent runtimes, leading to an overall reduction in elapsed debugging time. ProvBuild uses provenance to track dependencies in a script. When an analyst debugs a script, ProvBuild generates a simplifed script that contains only the information necessary to debug a particular problem. We demonstrate that debugging the simplified script lowers a programmer's cognitive load and permits faster re-execution when testing changes. The combination of reduced cognitive load and shorter runtime reduces the time necessary to debug a script. We quantitatively and qualitatively show that even though ProvBuild introduces overhead during a script's first execution, it is a more efficient way for users to debug and tune complex workflows. ProvBuild demonstrates a novel use of language-level provenance, in which it is used to proactively improve programmer productively rather than merely providing a way to retroactively gain insight into a body of code.