BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース IntelliJ IDEAのDependency Structure Matrixツールがアーキテクチャを視覚化

IntelliJ IDEAのDependency Structure Matrixツールがアーキテクチャを視覚化

良いとされるアーキテクチャの主な特徴は、モジュール間の依存関係がアーキテクチャーを流れるようなコンポーネントを層にしている。コンポーネント間で 依存関係を記述したり維持することは、ごくありふれたことだが、骨の折れる作業である。UMLパッケージ図を参照すればそのような依存関係の記述方法が分 かるが、作成にしばしば時間がかかり、その上リバースエンジニア時は、graokkableレイアウトを成し遂げるのに長時間を要する。またUMLはス ケールが良くなく、大規模で複雑なシステムのUMLで依存関係図を維持すしても、費やした努力相当の見返りは滅多に得られない。

このような隙間を埋めようと現れた最新の技術が、Dependency Structure Matrices (DSM)(source)である。 DSMはマトリックスを表し、各行にモジュール、列は他次元における同様の一連のモジュールである。付けられているそれぞれのセルは、2つのモジュールの共通部分およびその依存関係の数を示している。 さらに詳しい情報がなければ、以下にあるような昔ながらの例(PDF・英語)でDSM視覚化のすばらしさをすぐさま直感することができる。

 

DSM of a layered system


DSMのレイヤードシステム



DSM of a strictly layered system.


厳密なDSMのレイヤードシステム


詳しく見ると、各行はレイヤードアーキテクチャでのパッケージを表している。行は1から5までの番号が付けられている。列にも1から5までの番号が付い ており、それぞれ同じモジュールを表している。厳密なレイヤードシステムでは、アプリケーションはモデルのみに依存し(37回)、モデルはドメインのみに 依存している。レイヤードシステムでは、アプリケーションなどの高位層はutilなどのすべての低位層に依存することができる。このような視覚化を考慮す ると、ルールを無視するコードが記述されると、すぐにそれは明らかになる。右上に表示されている依存関係は、アーキテクチャーの意図に背く可能性がある。

IntelliJは「Magnificent 7」の新リリースで新たなDSMツール(ブログ・英語)を導入した。コードベースの予定通りの階層化について考えたり、手動でUML図を配置する必要がなく、 IntelliJは既存のプロジェクトから自動的にDSMを生成する。他のDSMツールと同様に、自動的にノードを配置し、依存関係が左下に表示されるよ うになる。DSMはクラスレベルにインタラクティブでドリル可能である。

DSM for the EventBus, drilled to the class level


IntelliJ DSMのEventBus(source)ライブラリ


この例では、IntelliJのDSMツールはReferenceStrengthがアーキテクチャーでそれより下位の層で4回使用されることを示している。DSMツールをIDEAに統合すると、非常に便利である。IDEAは、コードベースでの4回すべての参照を簡単に表示し、問題修正を楽にさせる。この場合、ReferenceStrengthはItelliJのリファクタリングツールを使用して、上位パッケージへ移動することができる。

navigation to the broken dependency


IntelliJ DSM の壊れた依存関係へのナビゲート


IntelliJのDSMツールには改良の余地がある。IDEAには珍しいが、前述の番号付きの行や列によって実現される使用可能性が欠落している。 Lattixのような他のツールには、さらに強力なリファクタリングサポート(source)がある。Lattixはクラスやパッケージを、マトリックスの視覚化から直接 移動することができる。

Lattix Refactoring


Lattix リファクタリング


DSMは、 実行者のマシン上で進歩している強力なツールである。

原文はこちらです:http://www.infoq.com/news/2008/02/idea-dependency-structure-matrix

この記事に星をつける

おすすめ度
スタイル

BT