一句话:DepOwl 通过检测依赖缺陷,让用户从一开始就避开不兼容版本,从而预防兼容性失败。
应用常依赖库以避免重复造轮子,但库在演化过程中可能引入不兼容变更,导致应用出现兼容性失败。已有研究多聚焦于检测库中的不兼容变更,或帮助应用与库协同演化,但这些方案本质上都是事后补救:终端用户已经遭受失败,只能等待新版本发布。本文提出 DepOwl,一个帮助用户预防兼容性失败的实际工具,其核心思想是从一开始就避免使用不兼容的版本,即通过检测依赖缺陷来提前规避风险。作者在 StackOverflow 上收集的 38 个已知兼容性失败案例上评估 DepOwl,成功预防了其中 35 个;此外还在 Ubuntu-19.10 附带的软件仓库上进行了评估,DepOwl 检测出 77 个未知的依赖缺陷,这些缺陷可能导致兼容性失败。
Applications depend on libraries to avoid reinventing the wheel. Libraries may have incompatible changes during evolving. As a result, applications will suffer from compatibility failures. There has been much research on addressing detecting incompatible changes in libraries, or helping applications co-evolve with the libraries. The existing solution helps the latest application version work well against the latest library version as an afterthought. However, end users have already been suffering from the failures and have to wait for new versions. In this paper, we propose DepOwl, a practical tool helping users prevent compatibility failures. The key idea is to avoid using incompatible versions from the very beginning. We evaluated DepOwl on 38 known compatibility failures from StackOverflow, and DepOwl can prevent 35 of them. We also evaluated DepOwl using the software repository shipped with Ubuntu-19.10. DepOwl detected 77 unknown dependency bugs, which may lead to compatibility failures.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@inproceedings{abs-2102-08543,
title = {DepOwl: Detecting Dependency Bugs to Prevent Compatibility Failures},
author = {Zhouyang Jia and Shanshan Li and Tingting Yu and Chen Zeng and Erci Xu and Xiaodong Liu and Ji Wang and Xiangke Liao},
booktitle = {ICSE},
year = {2021},
doi = {10.1109/icse43902.2021.00021}
}