刻画 Python 库迁移
软件工程
2024-02-01 v2
摘要
开发者严重依赖库中的应用程序编程接口 (API) 来构建其软件。随着软件演进,开发者可能需要用替代库替换所用库,这一过程称为库迁移。手动执行此过程可能繁琐、耗时且易出错。自动化迁移技术有助于减轻部分负担。然而,设计有效的自动化迁移技术需要理解将使用旧库的客户端代码转换为新库所需的代码变更类型。本文贡献了一项实证研究,从迁移所需的代码变更和典型开发工作量两方面,提供了 Python 库迁移的整体视图。我们在来自 35 个领域、141 个库对的 311 个客户端仓库中的 335 个 Python 库迁移里,手动标注了 3,096 个迁移相关代码变更。基于标注数据,我们推导出一个描述迁移相关代码变更的 taxonomy,PyMigTax。利用 PyMigTax 和标注数据,我们调查了 Python 库迁移的各种特征,例如程序元素类型和 API 映射属性、一次迁移中迁移相关代码变更类型的组合,以及迁移所需的典型开发工作量。我们的发现凸显了当前库迁移工具的多种潜在缺陷。例如,我们发现 40% 的库对具有涉及非函数程序元素的 API 映射,而大多数库迁移技术通常假设源库的函数调用将映射为目标库的一个或多个函数调用。作为对涉及开发工作量的近似,我们发现平均而言,开发者需要学习约 4 个 API 和 2 个 API 映射来执行一次迁移,并且……(截断)
引用
@article{arxiv.2207.01124,
title = {Characterizing Python Library Migrations},
author = {Mohayeminul Islam and Ajay Kumar Jha and Ildar Akhmetov and Sarah Nadi},
journal= {arXiv preprint arXiv:2207.01124},
year = {2024}
}