パッケージ間およびクラス間の依存関係の解析を図形式で行えます。また、依存関係が循環しているパッケージの検出を行います。
・専用のパースペクティブによる表示
ツール独自のパースペクティブに結果が表示されます。
・GEFとJFreeChartを使った図示
GEF(Graphical Edtiting Framework)とグラフ作成ツールJFreeChartを使用しており、大変見やすい図がEclipse上に表示されます。
・計測対象の除外
計測対象としたくないクラスを除外できます。テストクラスなどが混在している場合に便利です。
FingBugsプラグインを利用する場合は、eclipsePlugin-0.9.5-source.zipとde.tobject.findbugs_0.0.20.zipを以下のサイトから取得してください。
また、Eclipse.org更新サイトからGEF 3.1.1を検索し、インストールします。[ウィンドウ]→[設定]でEclipseの設定画面を開き、ツリーの部分に[CAP]が表示されればインストールが成功しています。
CAPは下記の手順にて利用します。
・計測対象除外ファイルの設定
計測対象から除外したいクラスやパッケージを選択・設定します。[ウィンドウ]→[設定]でEclipseの設定画面を開き、左のツリーから[CAP]を選択します(図1)。設定画面の右側で除外するクラス、パッケージ名はワイルドカードを使って指定できます。
・CAPパースペクティブの表示
プロジェクトのコンテキストメニューから「Show CA]を選択すると(図2)、コード分析が実行され、CAPパースペクティブ(図3)に切り替わります。
ソースコードを修正して、再びコード分析を行いたい場合は、CAPパースペクティブに戻り、「CAP Package Explorer」ビューの「New Analysis」ボタンをクリックすると、分析対象プロジェクトの選択画面(図4)が表示されます。ここで、分析したいプロジェクトを選択して、終了ボタンをクリックすると、コード分析が実行されます。
・循環する依存関係の検出
CAPパースペクティブの各ビューに表示される内容と計測されるメトリクスについては後述することとし、ここでは、依存循環関係の検出方法のみを説明します。
[Cycles]ビューを表示させ、[Check for Cycles]をクリックすると、循環する依存関係にあるパッケージの一覧と、循環している組の数(Cycle-Count)が表示されます(図5)。
あるパッケージのツリーを展開していくと、上位階層に表示されるパッケージに依存するパッケージが下位階層に表示されます。すべて展開すると最上位のパッケージが再び表示される、すなわち依存関係が循環しているということが分かります。この場合、独立性を高めたいパッケージが依存するパッケージとの関係に対して、依存関係を逆にすることにより循環を回避することができ、パッケージの独立性が高まります。
CAPパースペクティブには以下の情報が表示されます。
ビュー名 | 表示内容 |
---|---|
CAP Package Explorer | 計測されたパッケージの一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される) |
Cycles | 循環する依存関係にあるパッケージの検出と一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される) |
Cumulated Packages | 計測されたパッケージのフォルダ階層による一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される) |
Distance Graph | パッケージの抽象度(Abstractness)を横軸、不安定性(Instability)を縦軸としてプロットしたグラフ。プロットされた円の大きさはパッケージ内のクラス数 |
Class Analysis | 選択したパッケージ内のクラス別のメトリクス計測と、ほかパッケージとの関連の表示 |
Package OrverView | パッケージ間の関連 |
Package Analysis | 選択したパッケージとほかのパッケージとの関連 |
Package Graph | 各パッケージの主系列からの標準化された距離 (Distance)の棒グラフ表示 |
Protocol | 操作の履歴 |
Statistic | 選択したパッケージのメトリクス |
Stats-Chart | 選択したパッケージのメトリクスのグラフ表示 |
Afferent Deps | 選択したパッケージに依存するクラス |
Efferent Deps | 選択したパッケージが依存するクラス |
表1 CAPパースペクティブのビュー |
・Class Analysisビュー
CAPで計測され、Class Analysisビューに表示されるメトリクスの一覧を表2に示します。
略称 | メトリクス名 | 意味 |
---|---|---|
EP | Number Of Efferent Packages | 選択したパッケージが依存するパッケージ数 |
EC | Number Of Efferent Classes | 選択したパッケージ内のクラスが依存する、パッケージ外のクラス数 |
AP | Number Of Afferent Packages | 選択したパッケージに依存するパッケージ数 |
AC | Number Of Afferent Classes | 選択したパッケージ内のクラスに依存する、パッケージ外のクラス数 |
表2 CAPにより計測されるメトリクス一覧(Class Analysisビュー) |
いずれの値も大きいほど独立性が低く、修正を行った場合の影響範囲も大きくなります。各メトリクスの値が0でなかった場合には、依存元もしくは依存先のパッケージ、クラスを確認し、それらが本来は同一パッケージ内にあるべきか、別パッケージのままでよいかを検討する必要があります。
・Statisticsビュー
続いて、CAPで計測され、Statisticsビューに表示されるメトリクスの一覧を表3に示します。
カテゴリ | メトリクス名 | 意味 |
---|---|---|
Package Stats | Class Count | 選択したパッケージのクラス数 |
Abstract Classes | 選択したパッケージの抽象クラス数 | |
Interface | 選択したパッケージのインターフェイス数 | |
Abstractness | 選択したパッケージの抽象度(抽象クラス、インターフェイスの割合) | |
Efferent Dependencies | Packages | 選択したパッケージが依存するパッケージ数 |
Abstract Packages | 選択したパッケージから抽象クラスを使用して依存するパッケージの数 | |
Classes | 選択したパッケージ内のクラスが依存する、パッケージ外のクラス数 | |
Abstract Classes | 選択したパッケージ内のクラスが依存する、パッケージ外の抽象クラス数 | |
Afferent Dependencies | Packages | 選択したパッケージに依存するパッケージ数 |
Classes | 選択したパッケージ内のクラスに依存する、パッケージ外のクラス数 | |
− | Instability | 選択したパッケージの不安定性:EC / (AC + EC) |
Distance | 選択したパッケージの主系列(Abstractness + Instability = 1)からの標準化された距離 | |
表3 CAPにより計測されるメトリクス一覧(Statisticsビュー) |
Copyright © ITmedia, Inc. All Rights Reserved.