During the development of a software project, developers often need to upgrade third-party libraries (TPLs), aiming to keep their code up-to-date with the newest functionalities offered by the used libraries. In most cases, upgrading used TPLs is a complex and error-prone activity that must be carefully carried out to limit the ripple effects on the software project that depends on the libraries being upgraded. In this paper, we propose EvoPlan as a novel approach to the recommendation of different upgrade plans given a pair of library-version as input. In particular, among the different paths that can be possibly followed to upgrade the current library version to the desired updated one, EvoPlan is able to suggest the plan that can potentially minimize the efforts being needed to migrate the code of the clients from the library's current release to the target one. The approach has been evaluated on a curated dataset using conventional metrics used in Information Retrieval, i.e., precision, recall, and F-measure. The experimental results show that EvoPlan obtains an encouraging prediction performance considering two different criteria in the plan specification, i.e., the popularity of migration paths and the number of open and closed issues in GitHub for those projects that have already followed the recommended migration paths.
翻译:在开发软件项目期间,开发者往往需要更新第三方图书馆,目的是使其代码与用过的图书馆提供的最新功能保持更新;在大多数情况下,用过的TPL是一种复杂和容易出错的活动,必须谨慎进行,以限制对软件项目的波纹效应,而这种波纹效应取决于图书馆正在升级;在本文件中,我们提议EvoPlan作为一种新办法,处理不同升级计划的建议,给予一对图书馆翻版作为投入。特别是,在可以将其目前的图书馆版本升级到所期望的更新版本的不同路径中,EvoPlan能够提出可能最大限度地减少将客户代码从图书馆目前发布的转换到目标1的所需努力的计划。我们用信息Retrievval(即精确度、回顾率和F度)中使用的常规衡量标准,评价了这一方法。实验结果显示,EvoPlan取得了令人鼓舞的预测业绩,其中考虑到计划规格中的两项不同标准,即移徙路径的广度和Giub的封闭路径的建议数字。