BT

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

| 作者: Michael Bushe フォローする 0 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年2月18日. 推定読書時間: 3 分 |
良いとされるアーキテクチャの主な特徴は、モジュール間の依存関係がアーキテクチャーを流れるようなコンポーネントを層にしている。コンポーネント間で 依存関係を記述したり維持することは、ごくありふれたことだが、骨の折れる作業である。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

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT