astah professional logo

目次

前のトピックへ

ステートマシン図を元に状態遷移パスを表示し、テストケースを作成する

次のトピックへ

不整合チェックプラグインを使ってシーケンス図を作成する

DSMを使ってクラス図を解析する

クラス図の作成を通して、astah* DSMプラグインの基本的な操作を説明します。
DSMは “Design Structure Matrix”の略で、要素間の依存関係を解析する手法を表します。

クラス図を作成する

  1. メニュー [図]-[クラス図] を選択します。
  2. ツールパレットにあるクラスアイコンを選択して、ダイアグラムエディタに配置し、クラスの名前を編集します。
../_images/Tutorial_Astah_DSM00.png
  1. クラス間に依存を作成します。
../_images/Tutorial_Astah_DSM0.png
  1. 次のようなクラス図を作成します。
クラス図

DSMを使ってクラスの依存関係を確認する

拡張ビューの[DSM]タブをクリックし、DSMを表示します。 色の付いているセルは、依存関係の改善候補を示しています。

DSMを表示

色には意味があります。

セル 備考
循環参照(相互参照)がある要素間のセル 赤色 デッドロックやデータの未開放の発生や、モジューラビリティが低下する可能性があります
間接的な循環参照がある要素間のセル ピンク 循環参照と同様の問題が発生する可能性があります
5つ以上の要素から依存される要素の全カラムの背景色 黄色 責務が肥大している可能性があります。該当要素の変更時に、影響範囲が広くなる可能性があります

依存が集中しているクラスを分割する

依存関係の集中を解消しましょう。

先に示したDSMタブから、サービス2クラスに依存が集中している(セルが黄色になっている)ことが分かります。 意図せずこのような依存関係になっている場合、クラスの責務が肥大している可能性があります。 (ユーティリティクラスやコンポーネントの窓口となるインターフェースには、多くの場合、意図的に依存が集中します。)

ここでは、サービス2クラスを「サービス2クラス」と「サービス4クラス」に分割し、依存関係を分散することで解消しましょう。

split class

サービス2クラスを分割すると、DSMタブで依存の集中を示す黄色のセルが白くなりました。

dependency

循環参照を解消する

DSMタブから、サービス4クラスとサービス3クラスの交わるセルが赤くなっていて、循環参照であることが分かります。

意図せずこのような依存関係になっている場合、データやインスタンスが開放されない(デッドロックやメモリリーク)問題や、モジュールの再利用性が低下するという問題につながります。 このような依存関係を解消する方法は、設計指針によって異なります。

本チュートリアルでは、循環参照が解決されたこととし、サービスクラス3からサービスクラス4の依存関係を除去します。

../_images/Tutorial_Astah_DSM5.png

DSMタブで、循環参照を表わす赤色のセルが白に変わりました。

../_images/Tutorial_Astah_DSM6_ja.png

間接的な循環参照を解消する

間接的な循環参照を解消しましょう。

DSMタブから、サービス3クラス、データ4クラス、データ5クラスが、間接的に循環参照になっている(交わるセルがピンクになっている)ことがわかります。

意図せずこのような依存関係になっている場合、循環参照と同じ問題につながる可能性があります。

本チュートリアルでは、データ5クラスからサービス3クラスへの依存の方向が逆であることに気付いたものとして、データ5クラスからサービスクラス3への依存関係を、逆方向にします。

../_images/Tutorial_Astah_DSM7.png

DSMタブで、循環参照を表わすピンクのセルが白に変わりました。

../_images/Tutorial_Astah_DSM8_ja.png

ヒント

astah*では、一つの要素を複数のクラス図で用いることができます。DSMを使って一元的に要素の依存関係を確認することで、 意図しない構造の複雑性を見つけて、改善できます。

このように、astah*で作成したクラスの依存関係を DSMのタブで確認できます。