メトリクス測定ツール

メトリクス測定ツール

 メトリクスの測定ツールは、単にJavaのソースコードからメトリクス測定を行うだけでなく、JavaのソースコードをUMLやグラフに変換するものや、パッケージの相互依存などのルール違反も可視化するものまでさまざまあります。

 ここではJavaの開発ツールとしてデファクトと認知されているEclipseにプラグインして利用できる無料と有料の2つの代表的なメトリクス測定ツールの紹介をします。

 無料(BSDライセンス)のツールとして紹介するのは「CAP」です。CAPの特徴は前ページのパッケージのメトリクスで取り上げたA-Iグラフを表示できることです。CAPのA-Iグラフでは、パッケージに含まれるクラス数がパッケージを示すA-Iグラフ上の○の大きさによって変化します。A-Iグラフ上に巨大な○が現れた場合、パッケージの分割を考える必要があります。

 有料のツールの代表は「Lattix」です。Lattixの大きな特徴はDSM(ディペンデンシー ストラクチャ マトリックス)手法に基づいて、モデルを管理することができることです。モデルをUMLで表現した場合、規模の大きいシステムでは、モジュール間の依存関係が複雑に絡み合うために関係線が交錯し、モデルを理解することが非常に困難になります。

 Lattixは、モジュール間の依存関係をDSMで表現するため、モジュール間の依存関係が複雑な場合もUMLで記述されたモデルと比較すると分かりやすくなっています。

 また、通常のメトリクス測定ツールでは、モデルのメトリクスを測定するだけで、モデルが不適切だった場合の変更のアプローチは別の開発ツールで行い、その変更によってモデルが適切に修正されたか否かのメトリクス測定を再度実施する必要がありました。

 Lattixは、DSMを利用してパッケージ構造や階層構造を表現すること、依存の循環などを発見するだけでなく、適切なパッケージ分割や依存関係の最小化など、モデルに対する変更やリファクタリングも、DSMを操作することで行うことができることが最大の特徴であり、利点です。

 以上がメトリクス測定ツールの紹介です。実際のプロジェクトで利用するためには、それぞれの特長を生かして、複数のツールを使いこなすことも考えてみてください。

開発での適用

 最後に、実際の開発現場で、どのようにメトリクスを利用してモデルを管理すれば良いかを解説します。

 実際の開発では、要件定義段階で目標とする値を決め、設計や実装段階でモデルのメトリクスを測定し、目標とする値と付き合わせて、必要があればインスペクションを行い改善するという流れになります。

 また、実際の開発現場でモデルのメトリクスを利用する場合は、その作業をできる限り自動化することが望まれます。例えば、開発者がクラスを作成する度に、モデルの管理者が手作業でツールを動かしていたのでは、管理者に対する作業負担が大きく、十分な評価やモデルに問題があった時のフォローができません。

 自動化の具体例としては、構成管理ツールにチェックインされたクラスを、Antを利用して取り出し、Ant内でコンパイルなどを実施した後にLattixなどのメトリクス測定ツールを動作させ、その測定値を、HTML形式のレポートとして出力する方法を利用することなどが考えられます。また、モデルのメトリクスだけではなく、テストの実行や、そのテスト結果やカバレッジ率などのレポート出力もあわせて、自動で管理すると良いでしょう。
 このようにモデルだけではなく、テスト結果などについても自動で管理することは、開発者が増えてくる実装フェーズ以降では特に重要になってきます。

 また、モデルのメトリクスと組み合わせて、アーキテクチャ構築完了時にATAM(Architecture Trade-off Analysis Method:SEIによって開発されたアーキテクチャの分析手法)やCBAM(Cost Benefit Analysis Method:ROI(Return on Investment:投資回収率)に基づいたアーキテクチャの分析手法)を、設計完了時にインスペクションを実施することで、ソフトウェアのアーキテクチャを管理し、より良いシステムを開発することができます。

 以上のように、モデルのメトリクスは、単なる学者の理論ではなく、皆さんの開発現場で実践することができるものです。ぜひ、より良いシステム開発のために取り入れてください。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30