[論文レビュー] Why Developers Refactor Source Code: A Mining-based Study
本研究では、150のオープンソースJavaプロジェクトにまたがる287,813件のリファクタリング操作を対象とした大規模な混合手法分析を通じて、開発者がリファクタリングを行う理由を調査している。コードおよびプロセスマトリクスの定量的マイニングと、551件のプルリクエストにおける定性的分析を組み合わせることで、リファクタリングの動機として67種類の異なる要因を同定した。その結果、意味的メトリクスと非機能的トレードオフが開発者の意思決定に顕著に影響を与えていることが明らかになり、現在のリファクタリング推奨システムやツールチェーンにおけるギャップも浮き彫りにした。
Refactoring aims at improving code non-functional attributes without modifying its external behavior. Previous studies investigated the motivations behind refactoring by surveying developers. With the aim of generalizing and complementing their findings, we present a large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects. First, we mine 287,813 refactoring operations performed in the history of 150 systems. Using this dataset, we investigate the interplay between refactoring operations and process (e.g., previous changes/fixes) and product (e.g., quality metrics) metrics. Then, we manually analyze 551 merged pull requests implementing refactoring operations and classify the motivations behind the implemented refactorings (e.g., removal of code duplication). Our results led to (i) quantitative evidence of the relationship existing between certain process/product metrics and refactoring operations and (ii) a detailed taxonomy, generalizing and complementing the ones existing in the literature, of motivations pushing developers to refactor source code.
研究の動機と目的
- アンケートに基づく仮定を超えた、実世界におけるソフトウェアリファクタリングの動機を理解すること。
- オープンソースシステムにおけるリファクタリング操作と関連する製品およびプロセスマトリクスを同定すること。
- 実際の開発実務から得た証拠に基づいた包括的なリファクタリング動機の分類体系を構築すること。
- 構造的または品質メトリクスにのみ依存する現在のリファクタリング推奨システムの限界を評価すること。
- 多様で文脈に依存する開発者の目標を踏まえた、将来のツールおよび推薦システムの設計を支援すること。
提案手法
- GitHubにホストされている150のオープンソースJavaプロジェクトのバージョン履歴をRMinerツールを用いてマイニングし、25種類のリファクタリング操作を合計287,813件抽出した。
- リファクタリング操作と製品メトリクス(例:コード品質、可読性、C3)およびプロセスマトリクス(例:欠陥発生の可能性、変更頻度)との関係を分析した。
- リファクタリング変更を含む統計的に有意な551件のプルリクエストのサンプルを選定し、手動分析を実施した。
- プルリクエストの議論およびコミットメッセージの定性的コーディングを実施し、各リファクタリングの裏にある理由と意図を分類した。
- 手動分析の結果を統合し、既存のアンケートベースの分類体系を一般化・拡張することで、67の動機からなる分類体系を構築した。
- 定量的メトリクス相関と定性的な動機を比較することで、メトリクス駆動型リファクタリング推薦システムの限界を評価した。
実験結果
リサーチクエスチョン
- RQ1実世界のソフトウェアプロジェクトにおいて、リファクタリング操作と最も強く相関する製品およびプロセスマトリクスは何か?
- RQ2実際のプルリクエストの議論およびコード変更から導かれる主なリファクタリングの動機は何か?
- RQ3本研究で同定された動機は、過去のアンケートベース研究で得られたものとどのように比較・拡張されるか?
- RQ4コード品質メトリクスにのみ依存する現在のリファクタリング推奨システムは、開発者が主導するリファクタリング動機の全範囲をどの程度カバーしているか?
- RQ5現在のツールおよび実務における、一般的に手作業で行われるリファクタリングの自動化を妨げる主なギャップは何か?
主な発見
- 意味的メトリクス、特に可読性とC3(クラスの概念的結合度)が、リファクタリング操作と最も強い定量的相関を示し、開発者がコードの理解可能性を重視していることを示唆している。
- リファクタリングの主な動機として、コードの重複除去、可読性の向上、コードスメルの修正が頻出しており、定性的分析で合計67の異なる動機が同定された。
- 多くのリファクタリング操作がコードレビューのフィードバックによって引き起こされており、特に名前の改善や省略語の展開に関して顕著で、同僚レビューが変更の主要因であることが示された。
- 多くのリファクタリングが予防的または将来の変更への対応を目的としており、戦略的で前向きな視点が、現在の推奨システムではしばしば見過ごされていることが明らかになった。
- 構造的または品質メトリクスにのみ依存する現在のリファクタリング推奨システムは、意味的または保守性のトレードオフに基づく多くの意味のあるリファクタリングを見逃している可能性が大きい。
- 本研究では、自動的な省略語展開や冗長コードの検出といった、自動化の機会が同定されたが、これらは既存の研究ソリューションが存在するにもかかわらず、生産環境向けのツールでは未対応のままである。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。