Может ли кто-нибудь показать мне, как выглядит хорошая матрица зависимостей, и указать, почему?

Я хотел бы начать использовать DSM, но не знаю, как начать.

Как выглядит хорошая матрица зависимостей и почему? Как это работает?

Ответ 1

В этой статье блога " Определить шаблоны структуры кода без усилий" объясняется, как использовать матрицу структуры зависимостей для идентификации шаблонов структуры кода. Снимки экрана сделаны с помощью Матрицы структуры зависимостей инструмента NDepend. Вот несколько шаблонов:

Многоуровневый код (код без цикла, безусловно, самая крутая вещь, которую DSM может показать вам с первого взгляда)
alt text

Код с циклами зависимостей
alt text

Высокая когезия/низкая связь
alt text

Голодный абонент
alt text

Популярная Калли
alt text

Взаимная связь
alt text

Объект данных
alt text

Ответ 2

Эрик Дорненбург дает лучшее описание Я видел, в том числе некоторые хорошие примеры того, как механизмы графика могут выявлять структурные проблемы. Вкратце:

  • как отмечали другие, что-либо выше диагонали указывает цикл, который по существу означает, что ваши границы "нечеткие" (не чистые).
  • маленькие квадраты (ну, нижние треугольники) по диагонали == хорошо, если компоненты сгруппированы в соответствии с иерархией
  • с другой стороны, сильно взвешенные строки или столбцы == возможные проблемы: либо
    • rows: у вас есть компонент/группа, от которых зависят многие другие (возможно, она пытается обслуживать слишком много функций) или
    • : у вас есть компонент/группа, которая зависит от многих других (возможно, она пытается позаботиться обо всем, а не делегировать)

Ответ 3

Перечислите подсистемы на оси X и Y в том же порядке. Отметьте "O" по диагонали. Подсистемы, зависящие от самих себя, не имеют смысл. Двигайтесь вертикально вниз по матрице. Если эта подсистема зависит от согласованной горизонтальной подсистемы, отметьте X.

Хороший переносит подсистемы для отображения паттернов, которые могут ведут к хорошему рефакторингу.

У меня нет ни одной удобной. К сожалению.

Ответ 4

Одной из наиболее ценных функций DSM является определение циклов, например, между проектами или пакетами. Цикл отображается в верхней правой части матрицы. См. Эту страницу для более подробной информации: http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix