InfoQ

News

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

作者 Michael Bushe, 翻訳者 編集部 投稿日 2008年2月18日 午前12時50分

コミュニティ
Architecture
トピック
Artifacts & Tools,
コード分析
タグ
IntelliJ IDEA,
Visualization
良いとされるアーキテクチャの主な特徴は、モジュール間の依存関係がアーキテクチャーを流れるようなコンポーネントを層にしている。コンポーネント間で 依存関係を記述したり維持することは、ごくありふれたことだが、骨の折れる作業である。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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。

ソフトウェアのリーン思考入門

これは、InfoQ Chinaのアジャイル編集者、Jacky Li氏によるリーン思考とリーン思考をどのようにソフトウェア開発に適用するかについての入門です。

Java 6のスレッド最適化は実際に動作しているのか?

2つのパートからなるこの記事では、シングルスレッドベンチマークの助けを借りて、Java 6のスレッドのパフォーマンスに関する疑問に答える試みをしようと思います。

平鍋氏のGordon Pask Award受賞スピーチ

Agile2008において、Gordon Pask Awardの授与式が行われ、その一人として、チェンジビジョンの平鍋氏が受賞しました。本賞は、毎年、アジャイルコミュニティで定評のあるリーダーだけではなく、新たなリーダーになる可能性のある者に贈られるものです。InfoQでは、授与式のスピーチを動画にてお送りします。

Linda Rising氏による「誰を信頼しますか?」

Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。