要素間依存関係解析表 (DSM)

クラス、インタフェース、パッケージを対象に、要素間の依存関係を表(DSM: Dependency Structure Matrix)として見える化します。
DSMは、モデル編集と同時に自動更新されるため、モデルを作成、修正しながら構造の問題点をチェックできます。
このプラグインを使うことで、依存関係が集中している要素や循環参照を発見でき、チームでのレビューや個人の自己レビューにも役立ちます。DSMは「M PLUS」という別プラグインでも対応しています。

概要

  • 最新バージョン:1.4.2 (2022/11/30公開)
  • 対応エディション: astah* professional, astah UML 8.4以降
  • 旧バージョン: ダウンロード
  • 開発者: 株式会社チェンジビジョン
  • サポート:本プラグインはサポートサービスの対象外です
  • ライセンス : Apache2.0
  • 使用許諾: astah使用許諾契約書 第7条(特記事項) astah* Plug-In に適用される追加条項適用

  • インストール


    1. 上記Downloadボタンから dsm-x.x.x.jar ファイルをダウンロードします。
    2. .jar ファイルを、astah*図上にドラッグ&ドロップします。
    3. プラグイン概要のダイアログが表示されるので[はい]を選択します。
    4. 次に表示されるメッセージに従ってastah*を再起動します。
      astahプラグイン
    5. 図を開いて、astah*画面右下(拡張ビュー)に[DSM]タブが表示されていれば、インストールは完了です。
      astah, 要素官依存関係解析表, DSM
    6. 拡張ビューが開かない場合は、メインメニューから[表示] - [拡張ビューの表示/非表示]を選択してください。
      拡張ビュー

    リファレンス

    対象とする要素


    DSMタブで検出・表示する要素は次の通りです。

    astah, 要素官依存関係解析表, DSM

    • クラス(インタフェース、アクター、Entity、BusinessEntity、Boundary、Control、BusinessWorker)
    • パッケージ(サブシステム、モデル)


    依存とみなす関係


    DSMタブでは次の関係が依存として検出、表示されます。

    要素名 備考
    関連 誘導不可能は単方向依存として扱います
    関連(集約) コンテナから要素への単方向依存として扱います
    関連(コンポジション) コンテナから要素への単方向依存として扱います
    依存、使用依存、実現、テンプレートバインディング
    汎化 サブクラスからスーパークラスへの依存として扱います
    実現 Implementクラスからインタフェースへの依存として扱います
    パッケージの依存関係 パッケージに含まれる要素はコンテナパッケージに依存するが、 マトリクスが見づらくなるため、セルに依存数を出力しません


    表示内容


    DSMタブでは以下のルールでセルの内容を表示しています。改善候補を目立たせることで、意図しない依存関係を明らかにし、改善を促します。

    • セルには、行側の要素から列側の要素に対する依存数を表示します。
    • 依存の内容によってセルの色が [赤・ピンク・黄] で表示されます。
    • 白は特に改善候補のないセルを表し、同じ要素の交点は灰色で示されます。
    依存の内容 備考
    循環参照(相互参照)がある要素間のセル デッドロックやデータの未開放の発生、モジューラビリティが低下する可能性があります
    間接的な循環参照がある要素間のセル ピンク 循環参照と同様の問題が発生する可能性があります
    5つ以上の要素から依存される要素の全カラムの背景色 黄色 責務が肥大している可能性があります。該当要素の変更時に、影響範囲が広くなる可能性があります


    パッケージ選択コンボボックス


    パッケージ選択コンボボックスでは、DSMに表示する要素の名前空間を「全て」、またはプロジェクト内の各パッケージから指定できます。

    DSMのコンボボックス


    各ボタンの説明


    DSMのオプション
    ボタン名 説明
    モデル更新時に、自動的に表を更新 自動的に表を更新 モデルの更新時に、自動的にDSMタブの内容も更新します (デフォルト: ON)
    タブの更新 タブの更新 [更新]ボタンをクリックして、DSM上の表示を更新します
    Microsoft Excelにエクスポート Excelにエクスポート [Excelにエクスポート]ボタンをクリックして、DSMをExcelに出力します (詳しく見る)


    ■ 注意事項 ■


    DSMの表示要素が100を超える場合は、下記の警告メッセージが表示されます。
    「DSMに表示する要素数が100を超えます。パフォーマンス低下が予想されます。不要なパッケージを閉じることでパフォーマンスが改善されます。実行しますか?」




    利用方法


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

    1. 次のようなクラス図を用意します。(クラス図の作成方法は、こちらを参照)
    2. DSMのクラス図
    3. [DSM]タブをクリックするとDSMが開きます。色の付いたセルは、リファレンスで紹介した依存関係の改善候補を示しています。
      (色分けのルールはこちら)
    4. DSMタブ
    5. まず、黄色セルが多く目に着きますね。セルが黄色になっていることから、Service2クラスに依存が集中していることが分かります。
      意図せずこのような依存関係になっている場合、クラスの責務が肥大している可能性があります。
      (ユーティリティクラスやコンポーネントの窓口となるインターフェースには、多くの場合、意図的に依存が集中します。)
      ここでは、Service2クラスを「Service2クラス」と「Service4クラス」に分割し、依存関係を分散することで解消しましょう。
    6. 依存関係集中の解消クラス図
    7. Service2クラスを分割すると、DSMタブで依存の集中を示す黄色のセルが白くなりました。
    8. 依存関係集中の解消DSMタブ
    9. 次は、赤色のセルに取り組みましょう。
      Service4クラスとService3クラスの交わるセルが赤くなっていて、循環参照であることが分かります。
      意図せずこのような依存関係になっている場合、データやインスタンスが開放されない(デッドロックやメモリリーク)問題や、モジュールの再利用性が低下するという問題につながります。
      このような依存関係を解消する方法は、設計指針によって異なります。
      今回は、循環参照が解決されたこととし、Serviceクラス3からServiceクラス4の依存関係を除去します。
    10. 循環参照の解消クラス図
    11. DSMタブで、循環参照を表わす赤色のセルが白に変わりました。
    12. 循環参照の解消DSMタブ
    13. 最後に、ピンク色のセルを解消しましょう。
      Service3クラス、Data4クラス、Data5クラスが、間接的に循環参照になっている(交わるセルがピンクになっている)ことがわかります。
      意図せずこのような依存関係になっている場合、循環参照と同じ問題につながる可能性があります。
      今回は、Data5クラスからService3クラスへの依存の方向が逆であることに気付いたものとして、Data5クラスからServiceクラス3への依存関係を、逆方向にします。
    14. 間接的な循環参照の解消クラス図
    15. 循環参照を表わしていたピンクのセルが白に変わりました。
    16. 間接的な循環参照の解消DSMタブ

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



    DSMをMicrosoft Excelにエクスポートする

    1. [Excelにエクスポート]ボタンをクリックします。
    2. Excelにエクスポートボタン
    3. エクスポートダイアログが表示されます。[生成]ボタンをクリックするとDSMタブの内容が出力されます。
    4. エクスポート画面
    5. 「作成したドキュメントを自動的に開く」チェックボックスにチェックがある場合、Excelに出力した後、そのファイルを開きます。
    6. 出力されたExcel画面


    旧バージョンのダウンロード

    対応エディション リリース日 バージョン ダウンロード
    astah* professional、UML
    6.6.0 - 8.3
    2019.4.11 1.3.5 Download