[論文レビュー] Making refactoring decisions in large-scale Java systems: an empirical stance
本稿では、大規模なJavaシステムにおけるリファクタリングのためのキークラスを特定するためのメトリクスベースのアプローチを提案する。このアプローチは、継承および集約結合に対する潜在的利得(PG)と、メソッド数や属性数などのクラス特徴量を組み合わせるものである。研究では、キークラスの特徴に顕著なシステム固有の差異が存在することが判明し、Ant以外のシステムでは期待されるキークラスのパターンと一致しなかった。また、ウェブ検索などの他の分野で用いられるメトリクスが、特定のリファクタリング意思決定に適応可能であることが示された。
Decisions on which classes to refactor are fraught with difficulty. The problem of identifying candidate classes becomes acute when confronted with large systems comprising hundreds or thousands of classes. In this paper, we describe a metric by which key classes, and hence candidates for refactoring, can be identified. Measures quantifying the usage of two forms of coupling, inheritance and aggregation, together with two other class features (number of methods and attributes) were extracted from the source code of three large Java systems. Our research shows that metrics from other research domains can be adapted to the software engineering process. Substantial differences were found between each of the systems in terms of the key classes identified and hence opportunities for refactoring those classes varied between those systems.
研究の動機と目的
- 大規模なJavaシステムにおいて、リファクタリングの対象となるクラスを選択するための体系的基準の欠如に対処すること。
- システム構造の中心に位置する、リファクタリングの優先候補となるキークラスを特定すること。
- 他の分野(例:ウェブ検索)で用いられるメトリクスが、リファクタリング意思決定支援のためにソフトウェア工学分野に適応可能かどうかを評価すること。
- 異なるJavaシステム(ライブラリやアプリケーションを含む)間でキークラスの特徴にどのような差異が存在するかを調査すること。
- キークラスは一般的に継承階層の根元に位置するという仮説を検証すること。
提案手法
- 元来ウェブ検索で用いられていた潜在的利得(PG)メトリクスを改変し、UMLクラス図に基づいて継承および集約結合に基づくクラスの中心性を測定する。
- 3つの大規模なJavaシステム(JDK、Ant、Tomcat)から、クラスのメソッド数、属性数、継承結合、集約結合の4つのクラスレベル特徴量を抽出した。
- 継承および集約関係のグラフベース解析を用いてPGスコアを計算し、クラスの重要度を順位付けた。
- PGスコアとメソッド数・属性数の実数値を組み合わせ、リファクタリングの対象となる候補クラスを特定した。
- Fowlerの72のリファクタリングをメタアナリシスし、結合性やクラスサイズに依存するコアなリファクタリングパターン(例:Move Field、Move Method)の選定根拠を裏付けた。
- 依存関係解析を用いてコアなリファクタリングを同定し、集約、継承、クラスサイズをリファクタリングの必要性を示す主要な指標として位置づける根拠を提示した。
実験結果
リサーチクエスチョン
- RQ1大規模なJavaシステムにおいて、どのクラスがリファクタリングに最も適しているか。また、それらを信頼性高く特定するための基準は何か?
- RQ2特に潜在的利得メトリクスを含む、他の分野で用いられるメトリクスが、クラスレベルのリファクタリング意思決定にどの程度効果的に再利用可能か?
- RQ3キークラスは、先行研究の仮説が示すように、継承階層の根元に一貫して位置するのか?
- RQ4アプリケーション型とライブラリ型の異なるシステム間で、キークラスの特徴(例:メソッド数、属性数、コンストラクタ数、結合度)にどのような差異が存在するか?
- RQ5コアなリファクタリングパターン(例:Move Field、Move Method)とキークラスの構造的特徴との間にどのような関係があるか?
主な発見
- 潜在的利得メトリクスは、3つのすべてのシステムでキークラスを的確に特定した。これは、他の分野のメトリクスが、リファクタリングの優先順位付けに効果的に適応可能であることを示している。
- システム間で顕著な差異が認められた:JDKの平均コンストラクタ数(1.242)は、Ant(1.073)やTomcat(1.069)と比べて著しく多かった。これは、構造的パターンの違いを示している。
- 唯一、Antシステムだけが、仮説C1が示すキークラスの期待される特徴を満たしており、キークラスが継承階層の根元に一貫して存在するとは限らないことが示された。
- メタアナリシスの結果、Move FieldおよびMove Methodは、集約と結合性に依存するコアなリファクタリングであることが判明し、リファクタリングの必要性を示す指標としてのその妥当性が裏付けられた。
- キークラスにLarge ClassおよびPrimitive Obsessionのコードスメルが広く見られ、高水準のメソッド数・属性数がリファクタリングの緊急性を示す指標として有効であることを裏付けた。
- 本研究は、ソフトウェア設計におけるパワー則に関する先行研究の結果を支持しており、特に複雑なシステムではインターフェースが複数継承の代替として機能することが多いと示唆している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。