Skip to main content
QUICK REVIEW

[論文レビュー] Watch out for This Commit! A Study of Influential Software Changes

Daoyuan Li, Li Li|arXiv (Cornell University)|Jun 10, 2016
Software Engineering Research参考文献 43被引用数 10
ひとこと要約

本稿では、コマンドログ用語や共変更グラフにおけるファイル中心性を含むコード変更特徴量を分析することで、コミット直後に影響力のあるソフトウェア変更を予測する機械学習手法を提案する。モデルは影響力のある変更を特定する際、80.4%のF-measureを達成し、システム全体の品質やパフォーマンスに大きな影響を与える変更を早期に検出可能である。

ABSTRACT

One single code change can significantly influence a wide range of software systems and their users. For example, 1) adding a new feature can spread defects in several modules, while 2) changing an API method can improve the performance of all client programs. Developers often may not clearly know whether their or others' changes are influential at commit time. Rather, it turns out to be influential after affecting many aspects of a system later. This paper investigates influential software changes and proposes an approach to identify them early, i.e., immediately when they are applied. We first conduct a post-mortem analysis to discover existing influential changes by using intuitions such as isolated changes and changes referred by other changes in 10 open source projects. Then we re-categorize all identified changes through an open-card sorting process. Subsequently, we conduct a survey with 89 developers to confirm our influential change categories. Finally, from our ground truth we extract features, including metrics such as the complexity of changes, terms in commit logs and file centrality in co-change graphs, to build machine learning classifiers. The experiment results show that our prediction model achieves overall with random samples 86.8% precision, 74% recall and 80.4% F-measure respectively.

研究の動機と目的

  • 開発者による直感的認識と事後分析に基づき、影響力のあるソフトウェア変更がどのようなものかを特定・定義すること。
  • コードの複雑さ、コミットログ用語、ファイルの共変更グラフ内中心性といった測定可能な特徴量が、影響力のある変更と相関するかどうかを同定すること。
  • コミット時における影響力のある変更を予測する機械学習分類器を構築し、早期の干渉を可能にすること。
  • 実世界のオープンソースプロジェクトにおける開発者サーベイと実証的評価を通じて、提案されたカテゴリーや特徴量の妥当性を検証すること。

提案手法

  • 10のオープンソースプロジェクトから抽出した48,272件のコミットに対して、長期的影響とシステム全体への影響を基準に、影響力のある変更を同定するための事後分析を実施した。
  • 89名の開発者を対象にオープン・カード・ソーティングを実施し、影響力のある変更のカテゴリを定義・検証することで、開発者による承認を得た意味論を確保した。
  • サイクロマティック複雑度、変更された行数、コミットログ内の用語、共変更グラフ内でのファイル中心性といった特徴量を抽出した。
  • ラベル付きデータを用いて機械学習分類器(例:教師あり学習)を訓練し、変更が影響力のあるものかどうかを予測した。
  • データセットのランダムサンプルを用いて、標準的な指標(精度、再現率、F-measure)でモデルを評価した。
  • バージョン管理およびリビジョン履歴データを活用し、長期的影響を追跡し、予測の妥当性を検証した。

実験結果

リサーチクエスチョン

  • RQ1影響力のあるソフトウェア変更とは何か。開発者による承認を得た定義や記述は存在するか?
  • RQ2バージョン管理履歴において、影響力のあるソフトウェア変更を的確に捉え識別するためのメトリクスや特徴量は何か?
  • RQ3機械学習モデルは、コミット直後に影響力のあるソフトウェア変更を正確に予測できるか?

主な発見

  • 提案された予測モデルは、ランダムなテストサンプルにおいて、86.8%の精度、74%の再現率、80.4%のF-measureを達成し、影響力のある変更を特定した。
  • コミットログ用語、コードの複雑さ、共変更グラフ内でのファイル中心性といった特徴量が、影響力の予測に強く寄与した。
  • 影響力のある変更は、一般的に長期的かつシステム全体に及ぼす影響を持つことが多く、例えば広範なバグの導入や依存システム全体のパフォーマンス向上が含まれる。
  • 開発者サーベイの結果、提案された影響力のある変更のカテゴリが妥当であることが確認され、実務家が「影響力のあるコミット」という概念を認識・理解していることが裏付けられた。
  • テスト失敗やカバレッジの変化といった短期的影響に注目する従来の手法では、長期的かつ広範な影響を特定することは不十分である。
  • 本研究では、コミット時の静的特徴量を用いることで、影響力のある変更を早期に検出可能であることを示した。これにより、能動的なメンテナンスやレビューが可能になる。

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

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

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

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