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

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

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

Ответы [ 4 ]

11 голосов
/ 01 сентября 2010

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

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

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

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

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

Популярные Callee
alt text

Взаимное сцепление
alt text

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

2 голосов
/ 29 августа 2010

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

  • , как уже упоминали другие, все, что выше диагонали, указывает на цикл, что, по сути, означает, что ваши границы являются «нечеткими» (не чистыми)треугольники) вдоль диагонали == хорошо, если компоненты сгруппированы в соответствии с иерархией
  • , с другой стороны, тяжело взвешенные строки или столбцы == возможные проблемы: либо
    • строк: у вас естькомпонент / группа, от которой зависит множество других (возможно, она пытается обслуживать слишком много функций) или
    • столбцы: у вас есть компонент / группа, которая зависит от множества других (возможно, она пытается позаботиться обо всемсам, вместо делегирования)
1 голос
/ 21 августа 2010

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

1 голос
/ 21 августа 2010

Вывести подсистемы по осям X и Y в том же порядке. Отметьте «О» по диагонали. Подсистемы в зависимости от самих себя не имеет смысл. Идите вертикально вниз по матрице. Если эта подсистема зависит от соответствующей горизонтальной подсистемы, отметьте X.

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

У меня нет одной под рукой, хотя. К сожалению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...