Skip to main content
QUICK REVIEW

[論文レビュー] A Study of Library Migration in Java Software

Cédric Teyton, Jean‐Rémy Falleri|arXiv (Cornell University)|Jun 26, 2013
Software Engineering Research参考文献 11被引用数 4
ひとこと要約

本研究では、GitHub、Google Code、SourceForgeのプロジェクトから8,600件のプロジェクトを対象に、Javaオープンソースソフトウェアにおけるライブラリ移行を自動的に検出する静的解析ベースのアプローチを提案する。8,600件のプロジェクトを分析し、324件の移行を同定。これにより、古くなったプロジェクトほど移行の可能性が高く、ログライブラリは特に slf4j に置き換えられる傾向にあり、移行は通常迅速かつ1回のコミットで完了することが明らかになった。

ABSTRACT

Software intensively depends on external libraries whose relevance may change during its life cycle. As a consequence, software developers must periodically reconsider the libraries they depend on, and must think about \ extit{library migration}. To our knowledge, no existing study has been done to understand library migration although it is known to be an expensive maintenance task. Are library migrations frequent? For which software are they performed and when? For which libraries? For what reasons? The purpose of this paper is to answer these questions with the intent to help software developers that have to replace their libraries. To that extent, we have performed a statistical analysis of a large set of open source software to mine their library migration. To perform this analysis we have defined an approach that identifies library migrations in a pseudo-automatic fashion by analyzing the source code of the software. We have implemented this approach for the Java programming language and applied it on Java Open Source Software stored in large hosting services. The main result of our study is that library migration is not a frequent practice but depends a lot on the nature of the software as well as the nature of the libraries.

研究の動機と目的

  • Javaソフトウェアにおけるライブラリ移行の頻度、タイミング、動機を理解すること。移行は高コストであるが、研究が不足している。
  • どの種類のソフトウェアやライブラリが移行に対して特に脆弱であるかを特定し、一般的な理由と作業量を同定すること。
  • オープンソースプロジェクトから得た現実の移行パターンをマイニングすることで、ライブラリ交換を検討する開発者に対してデータドリブンな推奨を提供すること。
  • Mavenを使用するプロジェクトに限らない、すべてのJavaオープンソースプロジェクトをカバーするように前人研究を拡張し、研究結果の一般化を高めること。

提案手法

  • 依存関係モデルは、ソフトウェアプロジェクト、そのバージョン、ライブラリ依存関係を抽象化し、バージョン間でのライブラリ集合の変化として移行イベントを表現する。
  • 静的解析アプローチにより、Mavenなどのビルドツールに依存せずに、ソースコード内のライブラリ使用の変化を検出することでライブラリ移行を同定する。
  • GitHub、Google Code、SourceForgeにホスティングされた複数バージョンのプロジェクトのソースコードを分析し、1つのライブラリが別のライブラリに置き換えられたかを検出する。
  • 移行検出は、ソースファイル内に特定のライブラリクラスやパッケージが存在するかどうかに基づき、コードレベルの使用からバージョン付き依存関係を推定する。
  • このアプローチは8,600件のオープンソースJavaプロジェクトに適用され、結果として324件の実際のライブラリ移行イベントが同定された。
  • 統計的分析を用いて、移行頻度、ターゲットライブラリ、タイミング、理由、作業量に関する研究課題に回答する。

実験結果

リサーチクエスチョン

  • RQ1どのソフトウェアプロジェクトがライブラリ移行を実施しており、そのうち何パーセントのプロジェクトが影響を受けていたか?
  • RQ2どのライブラリが最も頻繁に移行され、ソースまたはターゲットライブラリにパターンがあるか?
  • RQ3移行はいつ通常行われるか?時間的パターンはあるか?
  • RQ4ライブラリ移行の主な理由は何であり、どのように文書化されているか?
  • RQ5移行に通常どれほどの作業量(コミット数、期間、開発者数)が要するか?

主な発見

  • 分析対象の8,600件のプロジェクトのうち、たった3.8%のプロジェクトが少なくとも1回のライブラリ移行を実施しており、全体として移行は頻繁な実践ではないことが示された。
  • 古くなったプロジェクトは若年プロジェクトよりも著しく移行の可能性が高い—古いプロジェクトの10%が移行を実施したが、若年プロジェクトでは1%未満だった。
  • 2回以上の移行を実施したプロジェクトは非常に少ない(1%未満)ため、移行は通常一度限りの作業であると考えられる。
  • ログライブラリカテゴリが移行で最も活発で、slf4j が主なターゲットとして浮上し、log4j や commons-logging が置き換えられていた。
  • 移行は通常迅速に実施される:90%の移行が1回のコミットで完了し、1日以内に完了し、1名の開発者によって実施された。
  • 移行理由を明示したログはたった12件しかなく、移行動機の文書化が不十分であることが判明し、背後にある要因を理解するには制限がある。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。